Modifies SDK and iOS detection for helper method that needs iOS 9+
BUG=NONE
R=tkchin@webrtc.org
Review URL: https://codereview.webrtc.org/1746023002 .
Cr-Commit-Position: refs/heads/master@{#11861}
diff --git a/webrtc/modules/audio_device/ios/audio_device_ios.mm b/webrtc/modules/audio_device/ios/audio_device_ios.mm
index 2551dad..4390f49 100644
--- a/webrtc/modules/audio_device/ios/audio_device_ios.mm
+++ b/webrtc/modules/audio_device/ios/audio_device_ios.mm
@@ -262,14 +262,17 @@
LOG(LS_INFO) << "LogDeviceInfo";
@autoreleasepool {
LOG(LS_INFO) << " system name: " << ios::GetSystemName();
- LOG(LS_INFO) << " system version: " << ios::GetSystemVersion();
+ LOG(LS_INFO) << " system version 1(2): " << ios::GetSystemVersionAsString();
+ LOG(LS_INFO) << " system version 2(2): " << ios::GetSystemVersion();
LOG(LS_INFO) << " device type: " << ios::GetDeviceType();
LOG(LS_INFO) << " device name: " << ios::GetDeviceName();
LOG(LS_INFO) << " process name: " << ios::GetProcessName();
LOG(LS_INFO) << " process ID: " << ios::GetProcessID();
LOG(LS_INFO) << " OS version: " << ios::GetOSVersionString();
LOG(LS_INFO) << " processing cores: " << ios::GetProcessorCount();
+#if defined(__IPHONE_9_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0
LOG(LS_INFO) << " low power mode: " << ios::GetLowPowerModeEnabled();
+#endif
}
}
#endif // !defined(NDEBUG)
diff --git a/webrtc/modules/utility/include/helpers_ios.h b/webrtc/modules/utility/include/helpers_ios.h
index d3f788f..1b692f1 100644
--- a/webrtc/modules/utility/include/helpers_ios.h
+++ b/webrtc/modules/utility/include/helpers_ios.h
@@ -37,11 +37,12 @@
// Returns the current name of the operating system.
std::string GetSystemName();
-// Returns the current version of the operating system.
-std::string GetSystemVersion();
+// Returns the current version of the operating system as a string.
+std::string GetSystemVersionAsString();
-// Returns the version of the operating system as a floating point value.
-float GetSystemVersionAsFloat();
+// Returns the version of the operating system in double representation.
+// Uses a cached value of the system version.
+double GetSystemVersion();
// Returns the device type.
// Examples: ”iPhone” and ”iPod touch”.
diff --git a/webrtc/modules/utility/source/helpers_ios.mm b/webrtc/modules/utility/source/helpers_ios.mm
index a312f03..3d7567b 100644
--- a/webrtc/modules/utility/source/helpers_ios.mm
+++ b/webrtc/modules/utility/source/helpers_ios.mm
@@ -23,6 +23,10 @@
namespace webrtc {
namespace ios {
+bool isOperatingSystemAtLeastVersion(double version) {
+ return GetSystemVersion() >= version;
+}
+
// Internal helper method used by GetDeviceName() to return device name.
const char* LookUpRealName(const char* raw_name) {
// Lookup table which maps raw device names to real (human readable) names.
@@ -126,14 +130,18 @@
return StdStringFromNSString(osName);
}
-std::string GetSystemVersion() {
+std::string GetSystemVersionAsString() {
NSString* osVersion = [[UIDevice currentDevice] systemVersion];
return StdStringFromNSString(osVersion);
}
-float GetSystemVersionAsFloat() {
- NSString* osVersion = [[UIDevice currentDevice] systemVersion];
- return osVersion.floatValue;
+double GetSystemVersion() {
+ static dispatch_once_t once_token;
+ static double system_version;
+ dispatch_once(&once_token, ^{
+ system_version = [UIDevice currentDevice].systemVersion.doubleValue;
+ });
+ return system_version;
}
std::string GetDeviceType() {
@@ -169,14 +177,17 @@
return [NSProcessInfo processInfo].processorCount;
}
+#if defined(__IPHONE_9_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0
bool GetLowPowerModeEnabled() {
- NSProcessInfo* info = [NSProcessInfo processInfo];
- // lowPoweredModeEnabled is only available on iOS9+.
- if ([info respondsToSelector:@selector(lowPoweredModeEnabled)]) {
- return info.lowPowerModeEnabled;
+ if (isOperatingSystemAtLeastVersion(9.0)) {
+ // lowPoweredModeEnabled is only available on iOS9+.
+ return [NSProcessInfo processInfo].lowPowerModeEnabled;
}
+ LOG(LS_WARNING) << "webrtc::ios::GetLowPowerModeEnabled() is not "
+ "supported. Requires at least iOS 9.0";
return false;
}
+#endif
} // namespace ios
} // namespace webrtc