Index: sync/util/get_session_name_mac.mm |
diff --git a/sync/util/get_session_name_mac.mm b/sync/util/get_session_name_mac.mm |
index e7d29c46210d264d867ca4db58e28077292b40db..b8eb25e3e94d12f3842699e11211c793f2d7c22c 100644 |
--- a/sync/util/get_session_name_mac.mm |
+++ b/sync/util/get_session_name_mac.mm |
@@ -4,23 +4,22 @@ |
#include "sync/util/get_session_name_mac.h" |
-#import <Foundation/Foundation.h> |
#import <SystemConfiguration/SCDynamicStoreCopySpecific.h> |
-#include <sys/sysctl.h> // sysctlbyname() |
-#include "base/mac/foundation_util.h" |
-#include "base/mac/mac_util.h" |
-#include "base/memory/scoped_nsobject.h" |
-#include "base/string_util.h" |
-#include "base/sys_info.h" |
+#include "base/mac/scoped_cftyperef.h" |
#include "base/sys_string_conversions.h" |
namespace syncer { |
namespace internal { |
std::string GetHardwareModelName() { |
- NSHost* myHost = [NSHost currentHost]; |
- return base::SysNSStringToUTF8([myHost localizedName]); |
+ // Do not use NSHost currentHost, as it's very slow. http://crbug.com/138570 |
+ SCDynamicStoreContext context = { 0, NULL, NULL, NULL }; |
+ base::mac::ScopedCFTypeRef<SCDynamicStoreRef> store( |
+ SCDynamicStoreCreate(kCFAllocatorDefault, CFSTR("policy_subsystem"), |
+ NULL, &context)); |
+ CFStringRef machine_name = SCDynamicStoreCopyLocalHostName(store.get()); |
+ return base::SysCFStringRefToUTF8(machine_name); |
} |
} // namespace internal |