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..9ffc525405ff1d5a81b631f416053800eb35c8a6 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,14 @@ 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() { |
| + // Note: This uses "hw.machine" instead of "hw.model" like the Mac code, |
|
Mark Mentovai
2017/05/04 21:11:33
You may want to bifurcate this so that it uses hw.
Alexei Svitkine (slow)
2017/05/04 21:23:14
Yuck. Done. Went with returning a fake "Simulator1
|
| + // because "hw.model" doesn't always return the right string on some devices. |
| + return GetSysctlValue("hw.machine"); |
| } |
| } // namespace base |