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/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