| Index: base/sys_info_mac.cc
|
| diff --git a/base/sys_info_mac.cc b/base/sys_info_mac.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6774871ece949d9ac611fb656fb08a5bd56e328c
|
| --- /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
|
|
|