OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "ios/chrome/browser/install_time_util.h" | 5 #include "ios/chrome/browser/install_time_util.h" |
6 | 6 |
7 #include <Foundation/Foundation.h> | 7 #include <Foundation/Foundation.h> |
| 8 #include <stdint.h> |
8 | 9 |
9 #include "base/mac/foundation_util.h" | 10 #include "base/mac/foundation_util.h" |
10 | 11 |
11 namespace { | 12 namespace { |
12 | 13 |
13 NSString* const kInstallationTimeKey = @"omaha.InstallationTime"; | 14 NSString* const kInstallationTimeKey = @"omaha.InstallationTime"; |
14 | 15 |
15 // Returns the installation time of the application: this is the time the | 16 // Returns the installation time of the application: this is the time the |
16 // application was first installed, not the time the last version was installed. | 17 // application was first installed, not the time the last version was installed. |
17 // If the installation time is unknown, returns a base::Time corresponding to | 18 // If the installation time is unknown, returns a base::Time corresponding to |
18 // |kUnknownInstallDate|. | 19 // |kUnknownInstallDate|. |
19 // To be noted: this value is reset if the application is uninstalled. | 20 // To be noted: this value is reset if the application is uninstalled. |
20 base::Time GetNSUserDefaultsInstallationTime() { | 21 base::Time GetNSUserDefaultsInstallationTime() { |
21 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | 22 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; |
22 CFAbsoluteTime time = [defaults doubleForKey:kInstallationTimeKey]; | 23 CFAbsoluteTime time = [defaults doubleForKey:kInstallationTimeKey]; |
23 if (time == 0.0) | 24 if (time == 0.0) |
24 return base::Time(); | 25 return base::Time(); |
25 return base::Time::FromCFAbsoluteTime(time); | 26 return base::Time::FromCFAbsoluteTime(time); |
26 } | 27 } |
27 | 28 |
28 } // namespace | 29 } // namespace |
29 | 30 |
30 namespace install_time_util { | 31 namespace install_time_util { |
31 | 32 |
32 // 2 is used because 0 is a magic value for Time, and 1 was the pre-M29 value | 33 // 2 is used because 0 is a magic value for Time, and 1 was the pre-M29 value |
33 // which was migrated to a specific date (crbug.com/270124). | 34 // which was migrated to a specific date (crbug.com/270124). |
34 const int64 kUnknownInstallDate = 2; | 35 const int64_t kUnknownInstallDate = 2; |
35 | 36 |
36 base::Time ComputeInstallationTime(bool is_first_run) { | 37 base::Time ComputeInstallationTime(bool is_first_run) { |
37 return ComputeInstallationTimeInternal(is_first_run, | 38 return ComputeInstallationTimeInternal(is_first_run, |
38 GetNSUserDefaultsInstallationTime()); | 39 GetNSUserDefaultsInstallationTime()); |
39 } | 40 } |
40 | 41 |
41 base::Time ComputeInstallationTimeInternal( | 42 base::Time ComputeInstallationTimeInternal( |
42 bool is_first_run, | 43 bool is_first_run, |
43 base::Time ns_user_defaults_install_time) { | 44 base::Time ns_user_defaults_install_time) { |
44 if (is_first_run) | 45 if (is_first_run) |
45 return base::Time::Now(); | 46 return base::Time::Now(); |
46 | 47 |
47 if (ns_user_defaults_install_time.is_null()) | 48 if (ns_user_defaults_install_time.is_null()) |
48 return base::Time::FromTimeT(kUnknownInstallDate); | 49 return base::Time::FromTimeT(kUnknownInstallDate); |
49 | 50 |
50 return ns_user_defaults_install_time; | 51 return ns_user_defaults_install_time; |
51 } | 52 } |
52 | 53 |
53 } // namespace install_time_util | 54 } // namespace install_time_util |
OLD | NEW |