summaryrefslogtreecommitdiffstats
path: root/base/sys_info_mac.cc
diff options
context:
space:
mode:
authorjeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-24 16:37:13 +0000
committerjeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-24 16:37:13 +0000
commit71aa16c5feea0cdfb7bb306c414d0dd8e7f167ae (patch)
tree1b27e2cc4021b3241c1ecc736306a3aa47085713 /base/sys_info_mac.cc
parente537805e0f3c0d1559ec1db9d9d4d6d03642498f (diff)
downloadchromium_src-71aa16c5feea0cdfb7bb306c414d0dd8e7f167ae.zip
chromium_src-71aa16c5feea0cdfb7bb306c414d0dd8e7f167ae.tar.gz
chromium_src-71aa16c5feea0cdfb7bb306c414d0dd8e7f167ae.tar.bz2
Recommit r10259 after successful try server run.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10265 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/sys_info_mac.cc')
-rw-r--r--base/sys_info_mac.cc46
1 files changed, 46 insertions, 0 deletions
diff --git a/base/sys_info_mac.cc b/base/sys_info_mac.cc
new file mode 100644
index 0000000..cd93ce9
--- /dev/null
+++ b/base/sys_info_mac.cc
@@ -0,0 +1,46 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/sys_info.h"
+
+#include <CoreServices/CoreServices.h>
+
+namespace base {
+
+// static
+void SysInfo::OperatingSystemVersionNumbers(int32 *major_version,
+ int32 *minor_version,
+ int32 *bugfix_version) {
+ static bool is_initialized = false;
+ static int32 major_version_cached = 0;
+ static int32 minor_version_cached = 0;
+ static int32 bugfix_version_cached = 0;
+
+ if (!is_initialized) {
+ // Gestalt can't be called in the sandbox, so we cache its return value.
+ Gestalt(gestaltSystemVersionMajor,
+ reinterpret_cast<SInt32*>(&major_version_cached));
+ Gestalt(gestaltSystemVersionMinor,
+ reinterpret_cast<SInt32*>(&minor_version_cached));
+ Gestalt(gestaltSystemVersionBugFix,
+ reinterpret_cast<SInt32*>(&bugfix_version_cached));
+ is_initialized = true;
+ }
+
+ *major_version = major_version_cached;
+ *minor_version = minor_version_cached;
+ *bugfix_version = bugfix_version_cached;
+}
+
+// static
+void SysInfo::CacheSysInfo() {
+ // Due to startup time concerns [premature optimization?] we only cache values
+ // from functions we know to be called in the renderer & fail when the sandbox
+ // is enabled.
+ NumberOfProcessors();
+ int32 dummy;
+ OperatingSystemVersionNumbers(&dummy, &dummy, &dummy);
+}
+
+} // namespace base