Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 #if defined(WEBRTC_IOS) | 11 #if defined(WEBRTC_IOS) |
| 12 | 12 |
| 13 #import <AVFoundation/AVFoundation.h> | 13 #import <AVFoundation/AVFoundation.h> |
| 14 #import <Foundation/Foundation.h> | 14 #import <Foundation/Foundation.h> |
| 15 #import <sys/sysctl.h> | 15 #import <sys/sysctl.h> |
| 16 #import <UIKit/UIKit.h> | 16 #import <UIKit/UIKit.h> |
| 17 | 17 |
| 18 #include "webrtc/base/checks.h" | 18 #include "webrtc/base/checks.h" |
| 19 #include "webrtc/base/logging.h" | 19 #include "webrtc/base/logging.h" |
| 20 #include "webrtc/base/scoped_ptr.h" | 20 #include "webrtc/base/scoped_ptr.h" |
| 21 #include "webrtc/modules/utility/include/helpers_ios.h" | 21 #include "webrtc/modules/utility/include/helpers_ios.h" |
| 22 | 22 |
| 23 namespace webrtc { | 23 namespace webrtc { |
| 24 namespace ios { | 24 namespace ios { |
| 25 | 25 |
| 26 // Internal helper method used by GetDeviceName() to return device name. | |
| 27 const char* LookUpRealName(const char* raw_name) { | |
| 28 // Lookup table which maps raw device names to real (human readable) names. | |
| 29 struct { | |
| 30 const char* raw_name; | |
| 31 const char* real_name; | |
| 32 } device_names[] = { | |
| 33 {"iPhone1,1", "iPhone 1G"}, | |
| 34 {"iPhone1,2", "iPhone 3G"}, | |
| 35 {"iPhone2,1", "iPhone 3GS"}, | |
| 36 {"iPhone3,1", "iPhone 4"}, | |
| 37 {"iPhone3,3", "Verizon iPhone 4"}, | |
| 38 {"iPhone4,1", "iPhone 4S"}, | |
| 39 {"iPhone5,1", "iPhone 5 (GSM)"}, | |
| 40 {"iPhone5,2", "iPhone 5 (GSM+CDMA)"}, | |
| 41 {"iPhone5,3", "iPhone 5c (GSM)"}, | |
| 42 {"iPhone5,4", "iPhone 5c (GSM+CDMA)"}, | |
| 43 {"iPhone6,1", "iPhone 5s (GSM)"}, | |
| 44 {"iPhone6,2", "iPhone 5s (GSM+CDMA)"}, | |
| 45 {"iPhone7,1", "iPhone 6 Plus"}, | |
| 46 {"iPhone7,2", "iPhone 6"}, | |
| 47 {"iPhone8,1", "iPhone 6s"}, | |
| 48 {"iPhone8,2", "iPhone 6s Plus"}, | |
| 49 {"iPod1,1", "iPod Touch 1G"}, | |
| 50 {"iPod2,1", "iPod Touch 2G"}, | |
| 51 {"iPod3,1", "iPod Touch 3G"}, | |
| 52 {"iPod4,1", "iPod Touch 4G"}, | |
| 53 {"iPod5,1", "iPod Touch 5G"}, | |
| 54 {"iPad1,1", "iPad"}, | |
| 55 {"iPad2,1", "iPad 2 (WiFi)"}, | |
| 56 {"iPad2,2", "iPad 2 (GSM)"}, | |
| 57 {"iPad2,3", "iPad 2 (CDMA)"}, | |
| 58 {"iPad2,4", "iPad 2 (WiFi)"}, | |
| 59 {"iPad2,5", "iPad Mini (WiFi)"}, | |
| 60 {"iPad2,6", "iPad Mini (GSM)"}, | |
| 61 {"iPad2,7", "iPad Mini (GSM+CDMA)"}, | |
| 62 {"iPad3,1", "iPad 3 (WiFi)"}, | |
| 63 {"iPad3,2", "iPad 3 (GSM+CDMA)"}, | |
| 64 {"iPad3,3", "iPad 3 (GSM)"}, | |
| 65 {"iPad3,4", "iPad 4 (WiFi)"}, | |
| 66 {"iPad3,5", "iPad 4 (GSM)"}, | |
| 67 {"iPad3,6", "iPad 4 (GSM+CDMA)"}, | |
| 68 {"iPad4,1", "iPad Air (WiFi)"}, | |
| 69 {"iPad4,2", "iPad Air (Cellular)"}, | |
| 70 {"iPad4,4", "iPad mini 2G (WiFi)"}, | |
| 71 {"iPad4,5", "iPad mini 2G (Cellular)"}, | |
| 72 {"i386", "Simulator"}, | |
| 73 {"x86_64", "Simulator"}, | |
| 74 }; | |
| 75 | |
| 76 for (auto& d : device_names) { | |
| 77 if (strcmp(d.raw_name, raw_name) == 0) | |
| 78 return d.real_name; | |
| 79 } | |
| 80 LOG(LS_WARNING) << "Failed to find device name (" << raw_name << ")"; | |
| 81 return ""; | |
| 82 } | |
| 83 | |
| 26 // TODO(henrika): move to shared location. | 84 // TODO(henrika): move to shared location. |
| 27 // See https://code.google.com/p/webrtc/issues/detail?id=4773 for details. | 85 // See https://code.google.com/p/webrtc/issues/detail?id=4773 for details. |
| 28 NSString* NSStringFromStdString(const std::string& stdString) { | 86 NSString* NSStringFromStdString(const std::string& stdString) { |
| 29 // std::string may contain null termination character so we construct | 87 // std::string may contain null termination character so we construct |
| 30 // using length. | 88 // using length. |
| 31 return [[NSString alloc] initWithBytes:stdString.data() | 89 return [[NSString alloc] initWithBytes:stdString.data() |
| 32 length:stdString.length() | 90 length:stdString.length() |
| 33 encoding:NSUTF8StringEncoding]; | 91 encoding:NSUTF8StringEncoding]; |
| 34 } | 92 } |
| 35 | 93 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 82 NSString* deviceModel = [[UIDevice currentDevice] model]; | 140 NSString* deviceModel = [[UIDevice currentDevice] model]; |
| 83 return StdStringFromNSString(deviceModel); | 141 return StdStringFromNSString(deviceModel); |
| 84 } | 142 } |
| 85 | 143 |
| 86 std::string GetDeviceName() { | 144 std::string GetDeviceName() { |
| 87 size_t size; | 145 size_t size; |
| 88 sysctlbyname("hw.machine", NULL, &size, NULL, 0); | 146 sysctlbyname("hw.machine", NULL, &size, NULL, 0); |
| 89 rtc::scoped_ptr<char[]> machine; | 147 rtc::scoped_ptr<char[]> machine; |
| 90 machine.reset(new char[size]); | 148 machine.reset(new char[size]); |
| 91 sysctlbyname("hw.machine", machine.get(), &size, NULL, 0); | 149 sysctlbyname("hw.machine", machine.get(), &size, NULL, 0); |
| 92 std::string raw_name(machine.get()); | 150 return std::string(LookUpRealName(machine.get())); |
| 93 if (!raw_name.compare("iPhone1,1")) | 151 } |
| 94 return std::string("iPhone 1G"); | 152 |
| 95 if (!raw_name.compare("iPhone1,2")) | 153 std::string GetProcessName() { |
| 96 return std::string("iPhone 3G"); | 154 NSString* processName = [NSProcessInfo processInfo].processName; |
|
tkchin_webrtc
2016/02/23 17:39:27
The conversion to std::string seems unneeded becau
henrika_webrtc
2016/02/24 11:52:47
Filed https://bugs.chromium.org/p/webrtc/issues/de
| |
| 97 if (!raw_name.compare("iPhone2,1")) | 155 return StdStringFromNSString(processName); |
| 98 return std::string("iPhone 3GS"); | 156 } |
| 99 if (!raw_name.compare("iPhone3,1")) | 157 |
| 100 return std::string("iPhone 4"); | 158 int GetProcessID() { |
| 101 if (!raw_name.compare("iPhone3,3")) | 159 return [NSProcessInfo processInfo].processIdentifier; |
| 102 return std::string("Verizon iPhone 4"); | 160 } |
| 103 if (!raw_name.compare("iPhone4,1")) | 161 |
| 104 return std::string("iPhone 4S"); | 162 std::string GetOSVersionString() { |
| 105 if (!raw_name.compare("iPhone5,1")) | 163 NSString* osVersion = |
| 106 return std::string("iPhone 5 (GSM)"); | 164 [NSProcessInfo processInfo].operatingSystemVersionString; |
| 107 if (!raw_name.compare("iPhone5,2")) | 165 return StdStringFromNSString(osVersion); |
| 108 return std::string("iPhone 5 (GSM+CDMA)"); | 166 } |
| 109 if (!raw_name.compare("iPhone5,3")) | 167 |
| 110 return std::string("iPhone 5c (GSM)"); | 168 int GetProcessorCount() { |
| 111 if (!raw_name.compare("iPhone5,4")) | 169 return [NSProcessInfo processInfo].processorCount; |
| 112 return std::string("iPhone 5c (GSM+CDMA)"); | 170 } |
| 113 if (!raw_name.compare("iPhone6,1")) | 171 |
| 114 return std::string("iPhone 5s (GSM)"); | 172 bool GetLowPowerModeEnabled() { |
| 115 if (!raw_name.compare("iPhone6,2")) | 173 return [NSProcessInfo processInfo].lowPowerModeEnabled; |
| 116 return std::string("iPhone 5s (GSM+CDMA)"); | |
| 117 if (!raw_name.compare("iPhone7,1")) | |
| 118 return std::string("iPhone 6 Plus"); | |
| 119 if (!raw_name.compare("iPhone7,2")) | |
| 120 return std::string("iPhone 6"); | |
| 121 if (!raw_name.compare("iPhone8,1")) | |
| 122 return std::string("iPhone 6s"); | |
| 123 if (!raw_name.compare("iPhone8,2")) | |
| 124 return std::string("iPhone 6s Plus"); | |
| 125 if (!raw_name.compare("iPod1,1")) | |
| 126 return std::string("iPod Touch 1G"); | |
| 127 if (!raw_name.compare("iPod2,1")) | |
| 128 return std::string("iPod Touch 2G"); | |
| 129 if (!raw_name.compare("iPod3,1")) | |
| 130 return std::string("iPod Touch 3G"); | |
| 131 if (!raw_name.compare("iPod4,1")) | |
| 132 return std::string("iPod Touch 4G"); | |
| 133 if (!raw_name.compare("iPod5,1")) | |
| 134 return std::string("iPod Touch 5G"); | |
| 135 if (!raw_name.compare("iPad1,1")) | |
| 136 return std::string("iPad"); | |
| 137 if (!raw_name.compare("iPad2,1")) | |
| 138 return std::string("iPad 2 (WiFi)"); | |
| 139 if (!raw_name.compare("iPad2,2")) | |
| 140 return std::string("iPad 2 (GSM)"); | |
| 141 if (!raw_name.compare("iPad2,3")) | |
| 142 return std::string("iPad 2 (CDMA)"); | |
| 143 if (!raw_name.compare("iPad2,4")) | |
| 144 return std::string("iPad 2 (WiFi)"); | |
| 145 if (!raw_name.compare("iPad2,5")) | |
| 146 return std::string("iPad Mini (WiFi)"); | |
| 147 if (!raw_name.compare("iPad2,6")) | |
| 148 return std::string("iPad Mini (GSM)"); | |
| 149 if (!raw_name.compare("iPad2,7")) | |
| 150 return std::string("iPad Mini (GSM+CDMA)"); | |
| 151 if (!raw_name.compare("iPad3,1")) | |
| 152 return std::string("iPad 3 (WiFi)"); | |
| 153 if (!raw_name.compare("iPad3,2")) | |
| 154 return std::string("iPad 3 (GSM+CDMA)"); | |
| 155 if (!raw_name.compare("iPad3,3")) | |
| 156 return std::string("iPad 3 (GSM)"); | |
| 157 if (!raw_name.compare("iPad3,4")) | |
| 158 return std::string("iPad 4 (WiFi)"); | |
| 159 if (!raw_name.compare("iPad3,5")) | |
| 160 return std::string("iPad 4 (GSM)"); | |
| 161 if (!raw_name.compare("iPad3,6")) | |
| 162 return std::string("iPad 4 (GSM+CDMA)"); | |
| 163 if (!raw_name.compare("iPad4,1")) | |
| 164 return std::string("iPad Air (WiFi)"); | |
| 165 if (!raw_name.compare("iPad4,2")) | |
| 166 return std::string("iPad Air (Cellular)"); | |
| 167 if (!raw_name.compare("iPad4,4")) | |
| 168 return std::string("iPad mini 2G (WiFi)"); | |
| 169 if (!raw_name.compare("iPad4,5")) | |
| 170 return std::string("iPad mini 2G (Cellular)"); | |
| 171 if (!raw_name.compare("i386")) | |
| 172 return std::string("Simulator"); | |
| 173 if (!raw_name.compare("x86_64")) | |
| 174 return std::string("Simulator"); | |
| 175 LOG(LS_WARNING) << "Failed to find device name (" << raw_name << ")"; | |
| 176 return raw_name; | |
| 177 } | 174 } |
| 178 | 175 |
| 179 } // namespace ios | 176 } // namespace ios |
| 180 } // namespace webrtc | 177 } // namespace webrtc |
| 181 | 178 |
| 182 #endif // defined(WEBRTC_IOS) | 179 #endif // defined(WEBRTC_IOS) |
| OLD | NEW |