Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(378)

Unified Diff: base/sys_info_ios.mm

Issue 2860663005: Implement SysInfo::HardwareModelName() on iOS. (Closed)
Patch Set: Use different simulator macro. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/sys_info.cc ('k') | base/sys_info_mac.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/sys_info_ios.mm
diff --git a/base/sys_info_ios.mm b/base/sys_info_ios.mm
index 9a329b9f0924bbdefce908cd51de4a6488c574f0..5fc2eb97b6ece1a81a9549ea97cade0c3c4077ec 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_OS_SIMULATOR
+ // 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
« no previous file with comments | « base/sys_info.cc ('k') | base/sys_info_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698