| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import <Foundation/Foundation.h> | 5 #import <UIKit/UIKit.h> |
| 6 | 6 |
| 7 #include "base/ios/device_util.h" | 7 #include "base/ios/device_util.h" |
| 8 #include "base/ios/ios_util.h" | 8 #include "base/ios/ios_util.h" |
| 9 #include "base/sys_string_conversions.h" | 9 #include "base/sys_string_conversions.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| 11 #include "testing/gtest_mac.h" | 11 #include "testing/gtest_mac.h" |
| 12 #include "testing/platform_test.h" | 12 #include "testing/platform_test.h" |
| 13 | 13 |
| 14 namespace { | 14 namespace { |
| 15 // The behavior of most of these utility functions depends on what they are run | 15 // The behavior of most of these utility functions depends on what they are run |
| 16 // on, so there is not much to unittest them. The APIs are run to make sure they | 16 // on, so there is not much to unittest them. The APIs are run to make sure they |
| 17 // don't choke. Additional checks are added for particular APIs when needed. | 17 // don't choke. Additional checks are added for particular APIs when needed. |
| 18 | 18 |
| 19 typedef PlatformTest DeviceUtilTest; | 19 typedef PlatformTest DeviceUtilTest; |
| 20 | 20 |
| 21 void CleanNSUserDefaultsForDeviceId() { |
| 22 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; |
| 23 [defaults removeObjectForKey:@"ChromeClientID"]; |
| 24 [defaults removeObjectForKey:@"ChromiumClientID"]; |
| 25 [defaults synchronize]; |
| 26 } |
| 27 |
| 21 TEST_F(DeviceUtilTest, GetPlatform) { | 28 TEST_F(DeviceUtilTest, GetPlatform) { |
| 22 GTEST_ASSERT_GT(ios::device_util::GetPlatform().length(), 0U); | 29 GTEST_ASSERT_GT(ios::device_util::GetPlatform().length(), 0U); |
| 23 } | 30 } |
| 24 | 31 |
| 25 TEST_F(DeviceUtilTest, IsRunningOnHighRamDevice) { | 32 TEST_F(DeviceUtilTest, IsRunningOnHighRamDevice) { |
| 26 ios::device_util::IsRunningOnHighRamDevice(); | 33 ios::device_util::IsRunningOnHighRamDevice(); |
| 27 } | 34 } |
| 28 | 35 |
| 29 TEST_F(DeviceUtilTest, IsSingleCoreDevice) { | 36 TEST_F(DeviceUtilTest, IsSingleCoreDevice) { |
| 30 ios::device_util::IsSingleCoreDevice(); | 37 ios::device_util::IsSingleCoreDevice(); |
| 31 } | 38 } |
| 32 | 39 |
| 33 TEST_F(DeviceUtilTest, GetMacAddress) { | 40 TEST_F(DeviceUtilTest, GetMacAddress) { |
| 34 GTEST_ASSERT_GT(ios::device_util::GetMacAddress("en0").length(), 0U); | 41 GTEST_ASSERT_GT(ios::device_util::GetMacAddress("en0").length(), 0U); |
| 35 } | 42 } |
| 36 | 43 |
| 37 TEST_F(DeviceUtilTest, GetRandomId) { | 44 TEST_F(DeviceUtilTest, GetRandomId) { |
| 38 GTEST_ASSERT_GT(ios::device_util::GetRandomId().length(), 0U); | 45 GTEST_ASSERT_GT(ios::device_util::GetRandomId().length(), 0U); |
| 39 } | 46 } |
| 40 | 47 |
| 41 TEST_F(DeviceUtilTest, GetDeviceIdentifier) { | 48 TEST_F(DeviceUtilTest, GetDeviceIdentifier) { |
| 49 CleanNSUserDefaultsForDeviceId(); |
| 50 |
| 42 std::string default_id = ios::device_util::GetDeviceIdentifier(NULL); | 51 std::string default_id = ios::device_util::GetDeviceIdentifier(NULL); |
| 43 std::string other_id = ios::device_util::GetDeviceIdentifier("ForTest"); | 52 std::string other_id = ios::device_util::GetDeviceIdentifier("ForTest"); |
| 44 EXPECT_NE(default_id, other_id); | 53 EXPECT_NE(default_id, other_id); |
| 45 | 54 |
| 46 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | 55 CleanNSUserDefaultsForDeviceId(); |
| 47 [defaults removeObjectForKey:@"ChromiumClientID"]; | |
| 48 [defaults synchronize]; | |
| 49 | 56 |
| 50 std::string new_default_id = ios::device_util::GetDeviceIdentifier(NULL); | 57 std::string new_default_id = ios::device_util::GetDeviceIdentifier(NULL); |
| 51 if (base::ios::IsRunningOnIOS6OrLater()) | 58 if (base::ios::IsRunningOnIOS6OrLater() && |
| 59 ![[[[UIDevice currentDevice] identifierForVendor] UUIDString] |
| 60 isEqualToString:@"00000000-0000-0000-0000-000000000000"]) { |
| 52 EXPECT_EQ(default_id, new_default_id); | 61 EXPECT_EQ(default_id, new_default_id); |
| 53 else | 62 } else { |
| 54 EXPECT_NE(default_id, new_default_id); | 63 EXPECT_NE(default_id, new_default_id); |
| 64 } |
| 65 |
| 66 CleanNSUserDefaultsForDeviceId(); |
| 67 } |
| 68 |
| 69 TEST_F(DeviceUtilTest, CheckMigration) { |
| 70 CleanNSUserDefaultsForDeviceId(); |
| 71 |
| 72 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; |
| 73 [defaults setObject:@"10000000-0000-0000-0000-000000000000" |
| 74 forKey:@"ChromeClientID"]; |
| 75 [defaults synchronize]; |
| 76 std::string expected_id = ios::device_util::GetDeviceIdentifier(NULL); |
| 77 [defaults removeObjectForKey:@"ChromeClientID"]; |
| 78 [defaults setObject:@"10000000-0000-0000-0000-000000000000" |
| 79 forKey:@"ChromiumClientID"]; |
| 80 [defaults synchronize]; |
| 81 std::string new_id = ios::device_util::GetDeviceIdentifier(NULL); |
| 82 EXPECT_EQ(expected_id, new_id); |
| 83 |
| 84 CleanNSUserDefaultsForDeviceId(); |
| 85 } |
| 86 |
| 87 TEST_F(DeviceUtilTest, CheckMigrationFromZero) { |
| 88 CleanNSUserDefaultsForDeviceId(); |
| 89 |
| 90 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; |
| 91 [defaults setObject:@"00000000-0000-0000-0000-000000000000" |
| 92 forKey:@"ChromeClientID"]; |
| 93 [defaults synchronize]; |
| 94 std::string zero_id = ios::device_util::GetDeviceIdentifier(NULL); |
| 95 [defaults removeObjectForKey:@"ChromeClientID"]; |
| 96 [defaults setObject:@"00000000-0000-0000-0000-000000000000" |
| 97 forKey:@"ChromiumClientID"]; |
| 98 [defaults synchronize]; |
| 99 std::string new_id = ios::device_util::GetDeviceIdentifier(NULL); |
| 100 EXPECT_NE(zero_id, new_id); |
| 101 |
| 102 CleanNSUserDefaultsForDeviceId(); |
| 55 } | 103 } |
| 56 | 104 |
| 57 } // namespace | 105 } // namespace |
| OLD | NEW |