From 2c7bad79daa4362c9a90b6b587345d24d6b34c54 Mon Sep 17 00:00:00 2001 From: Ilya Grechuhin Date: Fri, 2 Mar 2018 12:43:08 +0300 Subject: [PATCH] [device-model] [ios, platform] Added DeviceName & DeviceModel implementations. --- iphone/Maps/Common/AppInfo.mm | 110 ++---------------- platform/platform_ios.h | 86 ++++++++++++++ platform/platform_ios.mm | 22 ++-- xcode/common.xcconfig | 7 +- .../platform.xcodeproj/project.pbxproj | 2 + 5 files changed, 120 insertions(+), 107 deletions(-) create mode 100644 platform/platform_ios.h diff --git a/iphone/Maps/Common/AppInfo.mm b/iphone/Maps/Common/AppInfo.mm index c43b7ae847..54c2193ec0 100644 --- a/iphone/Maps/Common/AppInfo.mm +++ b/iphone/Maps/Common/AppInfo.mm @@ -1,98 +1,21 @@ #import "AppInfo.h" -#import -#import -#import -#import #import "MWMCommon.h" #import "SwiftBridge.h" +#include "platform/platform_ios.h" #include "platform/preferred_languages.hpp" #include "platform/settings.hpp" -extern string const kCountryCodeKey = "CountryCode"; -extern string const kUniqueIdKey = "UniqueId"; -extern string const kLanguageKey = "Language"; +#include + +#import +#import +#import namespace { -NSDictionary * const kDeviceModelsBeforeMetalDriver = @{ - @"i386": @"Simulator", - @"iPad1,1": @"iPad WiFi", - @"iPad1,2": @"iPad GSM", - @"iPad2,1": @"iPad 2 WiFi", - @"iPad2,2": @"iPad 2 CDMA", - @"iPad2,2": @"iPad 2 GSM", - @"iPad2,3": @"iPad 2 GSM EV-DO", - @"iPad2,4": @"iPad 2", - @"iPad2,5": @"iPad Mini WiFi", - @"iPad2,6": @"iPad Mini GSM", - @"iPad2,7": @"iPad Mini CDMA", - @"iPad3,1": @"iPad 3rd gen. WiFi", - @"iPad3,2": @"iPad 3rd gen. GSM", - @"iPad3,3": @"iPad 3rd gen. CDMA", - @"iPad3,4": @"iPad 4th gen. WiFi", - @"iPad3,5": @"iPad 4th gen. GSM", - @"iPad3,6": @"iPad 4th gen. CDMA", - @"iPad4,1": @"iPad Air WiFi", - @"iPad4,2": @"iPad Air GSM", - @"iPad4,3": @"iPad Air CDMA", - @"iPad4,4": @"iPad Mini 2nd gen. WiFi", - @"iPad4,5": @"iPad Mini 2nd gen. GSM", - @"iPad4,6": @"iPad Mini 2nd gen. CDMA", - @"iPad5,3": @"iPad Air 2 WiFi", - @"iPad5,4": @"iPad Air 2 GSM", - @"iPhone1,1": @"iPhone", - @"iPhone1,2": @"iPhone 3G", - @"iPhone2,1": @"iPhone 3GS", - @"iPhone3,1": @"iPhone 4 GSM", - @"iPhone3,2": @"iPhone 4 CDMA", - @"iPhone3,3": @"iPhone 4 GSM EV-DO", - @"iPhone4,1": @"iPhone 4S", - @"iPhone4,2": @"iPhone 4S", - @"iPhone4,3": @"iPhone 4S", - @"iPhone5,1": @"iPhone 5", - @"iPhone5,2": @"iPhone 5", - @"iPhone5,3": @"iPhone 5c", - @"iPhone5,4": @"iPhone 5c", - @"iPhone6,1": @"iPhone 5s", - @"iPhone6,2": @"iPhone 5s", - @"iPhone7,1": @"iPhone 6 Plus", - @"iPhone7,2": @"iPhone 6", - @"iPod1,1": @"iPod Touch", - @"iPod2,1": @"iPod Touch 2nd gen.", - @"iPod3,1": @"iPod Touch 3rd gen.", - @"iPod4,1": @"iPod Touch 4th gen.", - @"iPod5,1": @"iPod Touch 5th gen.", - @"x86_64": @"Simulator" -}; - -NSDictionary * const kDeviceModelsWithiOS10MetalDriver = @{ - @"iPad6,3": @"iPad Pro (9.7 inch) WiFi", - @"iPad6,4": @"iPad Pro (9.7 inch) GSM", - @"iPad6,7": @"iPad Pro (12.9 inch) WiFi", - @"iPad6,8": @"iPad Pro (12.9 inch) GSM", - @"iPhone8,1": @"iPhone 6s", - @"iPhone8,2": @"iPhone 6s Plus", - @"iPhone8,4": @"iPhone SE" -}; -NSDictionary * const kDeviceModelsWithMetalDriver = @{ - @"iPad6,11": @"iPad 5th gen. WiFi", - @"iPad6,12": @"iPad 5th gen. GSM", - @"iPad7,1": @"iPad Pro (12.9 inch) 2nd gen. WiFi", - @"iPad7,2": @"iPad Pro (12.9 inch) 2nd gen. GSM", - @"iPad7,3": @"iPad Pro (10.5-inch) WiFi", - @"iPad7,4": @"iPad Pro (10.5-inch) GSM", - @"iPhone9,1": @"iPhone 7", - @"iPhone9,3": @"iPhone 7", - @"iPhone9,2": @"iPhone 7 Plus", - @"iPhone9,4": @"iPhone 7 Plus", - @"iPhone10,1": @"iPhone 8", - @"iPhone10,2": @"iPhone 8 Plus", - @"iPhone10,3": @"iPhone X", - @"iPhone10,4": @"iPhone 8", - @"iPhone10,5": @"iPhone 8 Plus", - @"iPhone10,6": @"iPhone X", -}; +string const kCountryCodeKey = "CountryCode"; +string const kUniqueIdKey = "UniqueId"; } // namespace @interface AppInfo () @@ -249,18 +172,7 @@ NSDictionary * const kDeviceModelsWithMetalDriver = @{ - (NSString *)deviceModel { if (!_deviceModel) - { - struct utsname systemInfo; - uname(&systemInfo); - NSString * machine = @(systemInfo.machine); - _deviceModel = kDeviceModelsBeforeMetalDriver[machine]; - if (!_deviceModel) - _deviceModel = kDeviceModelsWithiOS10MetalDriver[machine]; - if (!_deviceModel) - _deviceModel = kDeviceModelsWithMetalDriver[machine]; - else - _deviceModel = machine; - } + _deviceModel = @(GetPlatform().DeviceModel().c_str()); return _deviceModel; } @@ -269,9 +181,9 @@ NSDictionary * const kDeviceModelsWithMetalDriver = @{ struct utsname systemInfo; uname(&systemInfo); NSString * machine = @(systemInfo.machine); - if (kDeviceModelsBeforeMetalDriver[machine] != nil) + if (platform::kDeviceModelsBeforeMetalDriver[machine] != nil) return MWMOpenGLDriverRegular; - if (kDeviceModelsWithiOS10MetalDriver[machine] != nil) + if (platform::kDeviceModelsWithiOS10MetalDriver[machine] != nil) { if (isIOSVersionLessThan(10)) return MWMOpenGLDriverRegular; diff --git a/platform/platform_ios.h b/platform/platform_ios.h new file mode 100644 index 0000000000..a4359971ac --- /dev/null +++ b/platform/platform_ios.h @@ -0,0 +1,86 @@ +#pragma once + +#include "platform/platform.hpp" + +#import + +namespace platform +{ +NSDictionary * const kDeviceModelsBeforeMetalDriver = @{ + @"i386" : @"Simulator", + @"iPad1,1" : @"iPad WiFi", + @"iPad1,2" : @"iPad GSM", + @"iPad2,1" : @"iPad 2 WiFi", + @"iPad2,2" : @"iPad 2 CDMA", + @"iPad2,2" : @"iPad 2 GSM", + @"iPad2,3" : @"iPad 2 GSM EV-DO", + @"iPad2,4" : @"iPad 2", + @"iPad2,5" : @"iPad Mini WiFi", + @"iPad2,6" : @"iPad Mini GSM", + @"iPad2,7" : @"iPad Mini CDMA", + @"iPad3,1" : @"iPad 3rd gen. WiFi", + @"iPad3,2" : @"iPad 3rd gen. GSM", + @"iPad3,3" : @"iPad 3rd gen. CDMA", + @"iPad3,4" : @"iPad 4th gen. WiFi", + @"iPad3,5" : @"iPad 4th gen. GSM", + @"iPad3,6" : @"iPad 4th gen. CDMA", + @"iPad4,1" : @"iPad Air WiFi", + @"iPad4,2" : @"iPad Air GSM", + @"iPad4,3" : @"iPad Air CDMA", + @"iPad4,4" : @"iPad Mini 2nd gen. WiFi", + @"iPad4,5" : @"iPad Mini 2nd gen. GSM", + @"iPad4,6" : @"iPad Mini 2nd gen. CDMA", + @"iPad5,3" : @"iPad Air 2 WiFi", + @"iPad5,4" : @"iPad Air 2 GSM", + @"iPhone1,1" : @"iPhone", + @"iPhone1,2" : @"iPhone 3G", + @"iPhone2,1" : @"iPhone 3GS", + @"iPhone3,1" : @"iPhone 4 GSM", + @"iPhone3,2" : @"iPhone 4 CDMA", + @"iPhone3,3" : @"iPhone 4 GSM EV-DO", + @"iPhone4,1" : @"iPhone 4S", + @"iPhone4,2" : @"iPhone 4S", + @"iPhone4,3" : @"iPhone 4S", + @"iPhone5,1" : @"iPhone 5", + @"iPhone5,2" : @"iPhone 5", + @"iPhone5,3" : @"iPhone 5c", + @"iPhone5,4" : @"iPhone 5c", + @"iPhone6,1" : @"iPhone 5s", + @"iPhone6,2" : @"iPhone 5s", + @"iPhone7,1" : @"iPhone 6 Plus", + @"iPhone7,2" : @"iPhone 6", + @"iPod1,1" : @"iPod Touch", + @"iPod2,1" : @"iPod Touch 2nd gen.", + @"iPod3,1" : @"iPod Touch 3rd gen.", + @"iPod4,1" : @"iPod Touch 4th gen.", + @"iPod5,1" : @"iPod Touch 5th gen.", + @"x86_64" : @"Simulator" +}; +NSDictionary * const kDeviceModelsWithiOS10MetalDriver = @{ + @"iPad6,3" : @"iPad Pro (9.7 inch) WiFi", + @"iPad6,4" : @"iPad Pro (9.7 inch) GSM", + @"iPad6,7" : @"iPad Pro (12.9 inch) WiFi", + @"iPad6,8" : @"iPad Pro (12.9 inch) GSM", + @"iPhone8,1" : @"iPhone 6s", + @"iPhone8,2" : @"iPhone 6s Plus", + @"iPhone8,4" : @"iPhone SE" +}; +NSDictionary * const kDeviceModelsWithMetalDriver = @{ + @"iPad6,11" : @"iPad 5th gen. WiFi", + @"iPad6,12" : @"iPad 5th gen. GSM", + @"iPad7,1" : @"iPad Pro (12.9 inch) 2nd gen. WiFi", + @"iPad7,2" : @"iPad Pro (12.9 inch) 2nd gen. GSM", + @"iPad7,3" : @"iPad Pro (10.5-inch) WiFi", + @"iPad7,4" : @"iPad Pro (10.5-inch) GSM", + @"iPhone9,1" : @"iPhone 7", + @"iPhone9,3" : @"iPhone 7", + @"iPhone9,2" : @"iPhone 7 Plus", + @"iPhone9,4" : @"iPhone 7 Plus", + @"iPhone10,1" : @"iPhone 8", + @"iPhone10,2" : @"iPhone 8 Plus", + @"iPhone10,3" : @"iPhone X", + @"iPhone10,4" : @"iPhone 8", + @"iPhone10,5" : @"iPhone 8 Plus", + @"iPhone10,6" : @"iPhone X", +}; +} // platform diff --git a/platform/platform_ios.mm b/platform/platform_ios.mm index ff1d11a8bb..3ccb148043 100644 --- a/platform/platform_ios.mm +++ b/platform/platform_ios.mm @@ -1,7 +1,7 @@ +#include "platform/platform_ios.h" #include "platform/constants.hpp" #include "platform/gui_thread.hpp" #include "platform/measurement_utils.hpp" -#include "platform/platform.hpp" #include "platform/platform_unix_impl.hpp" #include "platform/settings.hpp" @@ -19,6 +19,7 @@ #include #include #include +#include #include #import "iphone/Maps/Common/MWMCommon.h" @@ -26,8 +27,8 @@ #import "3party/Alohalytics/src/alohalytics_objc.h" #import -#import #import +#import #import Platform::Platform() @@ -143,14 +144,21 @@ string Platform::GetMemoryInfo() const return ss.str(); } -string Platform::DeviceName() const -{ - return OMIM_OS_NAME; -} +string Platform::DeviceName() const { return UIDevice.currentDevice.name.UTF8String; } string Platform::DeviceModel() const { - return {}; + struct utsname systemInfo; + uname(&systemInfo); + NSString * machine = @(systemInfo.machine); + NSString * deviceModel = platform::kDeviceModelsBeforeMetalDriver[machine]; + if (!deviceModel) + deviceModel = platform::kDeviceModelsWithiOS10MetalDriver[machine]; + if (!deviceModel) + deviceModel = platform::kDeviceModelsWithMetalDriver[machine]; + else + deviceModel = machine; + return deviceModel.UTF8String; } void Platform::RunOnGuiThread(base::TaskLoop::Task && task) diff --git a/xcode/common.xcconfig b/xcode/common.xcconfig index 82db8d895f..c61ec0626b 100644 --- a/xcode/common.xcconfig +++ b/xcode/common.xcconfig @@ -20,6 +20,7 @@ OTHER_LDFLAGS[sdk=macosx*] = -framework Cocoa -framework IOKit -framework OpenGL OTHER_LDFLAGS[sdk=iphone*] = -framework AdSupport -framework CoreGraphics -framework Foundation -framework IOKit -framework OpenGLES -framework SystemConfiguration -framework UIKit -framework CFNetwork -ObjC // Warnings settings +CLANG_WARN_ASSIGN_ENUM = YES CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES CLANG_WARN_BOOL_CONVERSION = YES CLANG_WARN_COMMA = YES @@ -45,21 +46,25 @@ CLANG_WARN_UNREACHABLE_CODE = YES CLANG_WARN__DUPLICATE_METHOD_MATCH = YES ENABLE_TESTABILITY = YES GCC_WARN_64_TO_32_BIT_CONVERSION = YES +GCC_WARN_ABOUT_MISSING_NEWLINE = YES GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR GCC_WARN_STRICT_SELECTOR_MATCH = YES GCC_WARN_UNDECLARED_SELECTOR = YES GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE GCC_WARN_UNUSED_FUNCTION = YES GCC_WARN_UNUSED_VARIABLE = YES -GCC_WARN_ABOUT_MISSING_NEWLINE = YES // Build options ALWAYS_SEARCH_USER_PATHS = NO +CLANG_ADDRESS_SANITIZER_CONTAINER_OVERFLOW = YES CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES CLANG_CXX_LANGUAGE_STANDARD = c++14 CLANG_ENABLE_MODULES = YES CLANG_ENABLE_OBJC_ARC = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_INTEGER = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Developer +COMPILER_INDEX_STORE_ENABLE = YES DEBUG_INFORMATION_FORMAT = dwarf ENABLE_BITCODE = YES ENABLE_STRICT_OBJC_MSGSEND = YES diff --git a/xcode/platform/platform.xcodeproj/project.pbxproj b/xcode/platform/platform.xcodeproj/project.pbxproj index de5660d70b..450dce5ad6 100644 --- a/xcode/platform/platform.xcodeproj/project.pbxproj +++ b/xcode/platform/platform.xcodeproj/project.pbxproj @@ -117,6 +117,7 @@ 341EEFCC2022F9A900D5DBE4 /* Alamofire.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Alamofire.framework; path = ../../iphone/Maps/3party/Carthage/Build/iOS/Alamofire.framework; sourceTree = ""; }; 341EEFCE2022FCB000D5DBE4 /* platform-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "platform-Bridging-Header.h"; sourceTree = ""; }; 341EEFCF2022FCB000D5DBE4 /* http_uploader_apple.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = http_uploader_apple.swift; sourceTree = ""; }; + 344D8A2E204945D000CF532F /* platform_ios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = platform_ios.h; sourceTree = ""; }; 34513AF71DCB37C100471BDA /* marketing_service_ios.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = marketing_service_ios.mm; sourceTree = ""; }; 34513AF81DCB37C100471BDA /* marketing_service.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = marketing_service.cpp; sourceTree = ""; }; 34513AF91DCB37C100471BDA /* marketing_service.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = marketing_service.hpp; sourceTree = ""; }; @@ -389,6 +390,7 @@ 67AB92DB1B7B3D7300AB5194 /* mwm_version.hpp */, 3DE8B98E1DEC3115000E6083 /* network_policy.hpp */, 675343981A3F5D5A00A0A8C3 /* platform_android.cpp */, + 344D8A2E204945D000CF532F /* platform_ios.h */, 670E8C741BB318AB00094197 /* platform_ios.mm */, 6753439A1A3F5D5A00A0A8C3 /* platform_linux.cpp */, 6753439B1A3F5D5A00A0A8C3 /* platform_mac.mm */,