Chromium Code Reviews| Index: base/sys_info_ios.mm |
| diff --git a/base/sys_info_ios.mm b/base/sys_info_ios.mm |
| index 9a329b9f0924bbdefce908cd51de4a6488c574f0..77791a0d009c65073eee10606ec6d3db2fbcf24a 100644 |
| --- a/base/sys_info_ios.mm |
| +++ b/base/sys_info_ios.mm |
| @@ -20,6 +20,23 @@ |
| namespace base { |
| +namespace { |
| + |
| +// Queries sysctlbyname() for the given key and returns the value from the |
| +// system or the empty string on failure. |
| +std::string GetSysctlValue(const char* key_name) { |
| + char value[256]; |
| + size_t len = arraysize(value); |
| + if (sysctlbyname(key_name, &value, &len, nullptr, 0) == 0) { |
| + DCHECK_GE(len, 1u); |
| + DCHECK_EQ('\0', value[len - 1]); |
| + return std::string(value, len - 1); |
| + } |
| + return std::string(); |
| +} |
| + |
| +} // namespace |
| + |
| // static |
| std::string SysInfo::OperatingSystemName() { |
| static dispatch_once_t get_system_name_once; |
| @@ -94,11 +111,20 @@ int64_t SysInfo::AmountOfAvailablePhysicalMemory() { |
| // static |
| std::string SysInfo::CPUModelName() { |
| - char name[256]; |
| - size_t len = arraysize(name); |
| - if (sysctlbyname("machdep.cpu.brand_string", &name, &len, NULL, 0) == 0) |
| - return name; |
| - return std::string(); |
| + return GetSysctlValue("machdep.cpu.brand_string"); |
| +} |
| + |
| +// static |
| +std::string SysInfo::HardwareModelName() { |
| +#if TARGET_IPHONE_SIMULATOR |
|
Mark Mentovai
2017/05/04 21:33:45
Unless we’re using an old SDK that doesn’t have TA
Alexei Svitkine (slow)
2017/05/04 21:37:56
Done.
|
| + // On the simulator, "hw.machine" returns "i386" or "x86_64" which doesn't |
| + // match the expected format, so supply a fake string here. |
| + return "Simulator1,1"; |
| +#else |
| + // Note: This uses "hw.machine" instead of "hw.model" like the Mac code, |
| + // because "hw.model" doesn't always return the right string on some devices. |
| + return GetSysctlValue("hw.machine"); |
| +#endif |
| } |
| } // namespace base |