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

Unified Diff: base/sys_info_mac.mm

Issue 1842213002: Mac: Avoid deprecated use of ::Gestalt() in base/sys_info_mac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@20160329-Mac-DeploymentTarget
Patch Set: clearer Created 4 years, 9 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_mac.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/sys_info_mac.mm
diff --git a/base/sys_info_mac.cc b/base/sys_info_mac.mm
similarity index 65%
rename from base/sys_info_mac.cc
rename to base/sys_info_mac.mm
index ff1ec5c1e69bb8b1cdce2eb08fc1db703c780402..a2903a27fc6ab2559aeca9ea3c51e1452cbcdd0b 100644
--- a/base/sys_info_mac.cc
+++ b/base/sys_info_mac.mm
@@ -1,4 +1,4 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2016 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.
@@ -6,6 +6,7 @@
#include <ApplicationServices/ApplicationServices.h>
#include <CoreServices/CoreServices.h>
+#import <Foundation/Foundation.h>
#include <mach/mach_host.h>
#include <mach/mach_init.h>
#include <stddef.h>
@@ -14,7 +15,9 @@
#include <sys/types.h>
#include "base/logging.h"
+#include "base/mac/mac_util.h"
#include "base/mac/scoped_mach_port.h"
+#import "base/mac/sdk_forward_declarations.h"
#include "base/macros.h"
#include "base/strings/stringprintf.h"
@@ -36,12 +39,29 @@ std::string SysInfo::OperatingSystemVersion() {
void SysInfo::OperatingSystemVersionNumbers(int32_t* major_version,
int32_t* minor_version,
int32_t* bugfix_version) {
- Gestalt(gestaltSystemVersionMajor,
- reinterpret_cast<SInt32*>(major_version));
- Gestalt(gestaltSystemVersionMinor,
- reinterpret_cast<SInt32*>(minor_version));
- Gestalt(gestaltSystemVersionBugFix,
- reinterpret_cast<SInt32*>(bugfix_version));
+ NSProcessInfo* processInfo = [NSProcessInfo processInfo];
+ if ([processInfo respondsToSelector:@selector(operatingSystemVersion)]) {
+ NSOperatingSystemVersion version = [processInfo operatingSystemVersion];
+ *major_version = version.majorVersion;
+ *minor_version = version.minorVersion;
+ *bugfix_version = version.patchVersion;
+ } else {
+ // -[NSProcessInfo operatingSystemVersion] is documented available in 10.10.
+ // It's also available via a private API since 10.9.2. For the remaining
+ // cases in 10.9, rely on ::Gestalt(..). Since this code is only needed for
+ // 10.9.0 and 10.9.1 and uses the recommended replacement thereafter,
+ // suppress the warning for this fallback case.
+ DCHECK(base::mac::IsOSMavericks());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ Gestalt(gestaltSystemVersionMajor,
+ reinterpret_cast<SInt32*>(major_version));
+ Gestalt(gestaltSystemVersionMinor,
+ reinterpret_cast<SInt32*>(minor_version));
+ Gestalt(gestaltSystemVersionBugFix,
+ reinterpret_cast<SInt32*>(bugfix_version));
+#pragma clang diagnostic pop
+ }
}
// static
« no previous file with comments | « base/sys_info_mac.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698