| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 
|  | 2 // Use of this source code is governed by a BSD-style license that can be | 
|  | 3 // found in the LICENSE file. | 
|  | 4 | 
|  | 5 #include "ios/chrome/browser/metrics/previous_session_info.h" | 
|  | 6 | 
|  | 7 #include "base/strings/sys_string_conversions.h" | 
|  | 8 #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" | 
|  | 9 #include "testing/gtest/include/gtest/gtest.h" | 
|  | 10 #include "testing/gtest_mac.h" | 
|  | 11 | 
|  | 12 namespace { | 
|  | 13 | 
|  | 14 // Key in the UserDefaults for a boolean value keeping track of memory warnings. | 
|  | 15 NSString* const kDidSeeMemoryWarningShortlyBeforeTerminating = | 
|  | 16     @"DidSeeMemoryWarning"; | 
|  | 17 | 
|  | 18 // Key in the NSUserDefaults for a string value that stores the version of the | 
|  | 19 // last session. | 
|  | 20 NSString* const kLastRanVersion = @"LastRanVersion"; | 
|  | 21 | 
|  | 22 TEST(PreviousSessionInfoTest, InitializationWithEmptyDefaults) { | 
|  | 23   [PreviousSessionInfo resetSharedInstanceForTesting]; | 
|  | 24   NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | 
|  | 25   [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]; | 
|  | 26   [defaults removeObjectForKey:kLastRanVersion]; | 
|  | 27 | 
|  | 28   // Instantiate the PreviousSessionInfo sharedInstance. | 
|  | 29   PreviousSessionInfo* sharedInstance = [PreviousSessionInfo sharedInstance]; | 
|  | 30 | 
|  | 31   // Checks the default values. | 
|  | 32   EXPECT_FALSE([sharedInstance didSeeMemoryWarningShortlyBeforeTerminating]); | 
|  | 33   EXPECT_TRUE([sharedInstance isFirstSessionAfterUpgrade]); | 
|  | 34 } | 
|  | 35 | 
|  | 36 TEST(PreviousSessionInfoTest, InitializationWithSameVersionNoMemoryWarning) { | 
|  | 37   [PreviousSessionInfo resetSharedInstanceForTesting]; | 
|  | 38   NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | 
|  | 39   [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]; | 
|  | 40   [defaults removeObjectForKey:kLastRanVersion]; | 
|  | 41 | 
|  | 42   // Set the current version as the last ran version. | 
|  | 43   NSString* currentVersion = base::SysUTF8ToNSString( | 
|  | 44       ios::GetChromeBrowserProvider()->GetVersionNumber()); | 
|  | 45   [defaults setObject:currentVersion forKey:kLastRanVersion]; | 
|  | 46 | 
|  | 47   // Instantiate the PreviousSessionInfo sharedInstance. | 
|  | 48   PreviousSessionInfo* sharedInstance = [PreviousSessionInfo sharedInstance]; | 
|  | 49 | 
|  | 50   // Checks the values. | 
|  | 51   EXPECT_FALSE([sharedInstance didSeeMemoryWarningShortlyBeforeTerminating]); | 
|  | 52   EXPECT_FALSE([sharedInstance isFirstSessionAfterUpgrade]); | 
|  | 53 } | 
|  | 54 | 
|  | 55 TEST(PreviousSessionInfoTest, InitializationWithSameVersionMemoryWarning) { | 
|  | 56   [PreviousSessionInfo resetSharedInstanceForTesting]; | 
|  | 57   NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | 
|  | 58   [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]; | 
|  | 59   [defaults removeObjectForKey:kLastRanVersion]; | 
|  | 60 | 
|  | 61   // Set the current version as the last ran version. | 
|  | 62   NSString* currentVersion = base::SysUTF8ToNSString( | 
|  | 63       ios::GetChromeBrowserProvider()->GetVersionNumber()); | 
|  | 64   [defaults setObject:currentVersion forKey:kLastRanVersion]; | 
|  | 65 | 
|  | 66   // Set the memory warning flag as a previous session would have. | 
|  | 67   [defaults setBool:YES forKey:kDidSeeMemoryWarningShortlyBeforeTerminating]; | 
|  | 68 | 
|  | 69   // Instantiate the PreviousSessionInfo sharedInstance. | 
|  | 70   PreviousSessionInfo* sharedInstance = [PreviousSessionInfo sharedInstance]; | 
|  | 71 | 
|  | 72   // Checks the values. | 
|  | 73   EXPECT_TRUE([sharedInstance didSeeMemoryWarningShortlyBeforeTerminating]); | 
|  | 74   EXPECT_FALSE([sharedInstance isFirstSessionAfterUpgrade]); | 
|  | 75 } | 
|  | 76 | 
|  | 77 TEST(PreviousSessionInfoTest, InitializationDifferentVersionNoMemoryWarning) { | 
|  | 78   [PreviousSessionInfo resetSharedInstanceForTesting]; | 
|  | 79   NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | 
|  | 80   [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]; | 
|  | 81   [defaults removeObjectForKey:kLastRanVersion]; | 
|  | 82 | 
|  | 83   // Set the current version as the last ran version. | 
|  | 84   [defaults setObject:@"Fake Version" forKey:kLastRanVersion]; | 
|  | 85 | 
|  | 86   // Instantiate the PreviousSessionInfo sharedInstance. | 
|  | 87   PreviousSessionInfo* sharedInstance = [PreviousSessionInfo sharedInstance]; | 
|  | 88 | 
|  | 89   // Checks the values. | 
|  | 90   EXPECT_FALSE([sharedInstance didSeeMemoryWarningShortlyBeforeTerminating]); | 
|  | 91   EXPECT_TRUE([sharedInstance isFirstSessionAfterUpgrade]); | 
|  | 92 } | 
|  | 93 | 
|  | 94 TEST(PreviousSessionInfoTest, InitializationDifferentVersionMemoryWarning) { | 
|  | 95   [PreviousSessionInfo resetSharedInstanceForTesting]; | 
|  | 96   NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | 
|  | 97   [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]; | 
|  | 98   [defaults removeObjectForKey:kLastRanVersion]; | 
|  | 99 | 
|  | 100   // Set the current version as the last ran version. | 
|  | 101   [defaults setObject:@"Fake Version" forKey:kLastRanVersion]; | 
|  | 102 | 
|  | 103   // Set the memory warning flag as a previous session would have. | 
|  | 104   [defaults setBool:YES forKey:kDidSeeMemoryWarningShortlyBeforeTerminating]; | 
|  | 105 | 
|  | 106   // Instantiate the PreviousSessionInfo sharedInstance. | 
|  | 107   PreviousSessionInfo* sharedInstance = [PreviousSessionInfo sharedInstance]; | 
|  | 108 | 
|  | 109   // Checks the values. | 
|  | 110   EXPECT_TRUE([sharedInstance didSeeMemoryWarningShortlyBeforeTerminating]); | 
|  | 111   EXPECT_TRUE([sharedInstance isFirstSessionAfterUpgrade]); | 
|  | 112 } | 
|  | 113 | 
|  | 114 TEST(PreviousSessionInfoTest, BeginRecordingCurrentSession) { | 
|  | 115   [PreviousSessionInfo resetSharedInstanceForTesting]; | 
|  | 116   NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | 
|  | 117   [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]; | 
|  | 118   [defaults removeObjectForKey:kLastRanVersion]; | 
|  | 119 | 
|  | 120   // Set the memory warning flag as a previous session would have. | 
|  | 121   [defaults setBool:YES forKey:kDidSeeMemoryWarningShortlyBeforeTerminating]; | 
|  | 122 | 
|  | 123   [[PreviousSessionInfo sharedInstance] beginRecordingCurrentSession]; | 
|  | 124 | 
|  | 125   // Check that the version has been updated. | 
|  | 126   EXPECT_NSEQ(base::SysUTF8ToNSString( | 
|  | 127                   ios::GetChromeBrowserProvider()->GetVersionNumber()), | 
|  | 128               [defaults stringForKey:kLastRanVersion]); | 
|  | 129 | 
|  | 130   // Check that the memory warning flag has been reset. | 
|  | 131   EXPECT_FALSE( | 
|  | 132       [defaults boolForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]); | 
|  | 133 } | 
|  | 134 | 
|  | 135 TEST(PreviousSessionInfoTest, SetMemoryWarningFlagNoOpUntilRecordingBegins) { | 
|  | 136   [PreviousSessionInfo resetSharedInstanceForTesting]; | 
|  | 137   NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | 
|  | 138   [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]; | 
|  | 139   [defaults removeObjectForKey:kLastRanVersion]; | 
|  | 140 | 
|  | 141   // Call the flag setter. | 
|  | 142   [[PreviousSessionInfo sharedInstance] setMemoryWarningFlag]; | 
|  | 143 | 
|  | 144   EXPECT_FALSE( | 
|  | 145       [defaults boolForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]); | 
|  | 146 } | 
|  | 147 | 
|  | 148 TEST(PreviousSessionInfoTest, ResetMemoryWarningFlagNoOpUntilRecordingBegins) { | 
|  | 149   [PreviousSessionInfo resetSharedInstanceForTesting]; | 
|  | 150   NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | 
|  | 151   [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]; | 
|  | 152   [defaults removeObjectForKey:kLastRanVersion]; | 
|  | 153 | 
|  | 154   // Set the memory warning flag as a previous session would have. | 
|  | 155   [defaults setBool:YES forKey:kDidSeeMemoryWarningShortlyBeforeTerminating]; | 
|  | 156 | 
|  | 157   // Call the memory warning flag resetter. | 
|  | 158   [[PreviousSessionInfo sharedInstance] resetMemoryWarningFlag]; | 
|  | 159 | 
|  | 160   EXPECT_TRUE( | 
|  | 161       [defaults boolForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]); | 
|  | 162 } | 
|  | 163 | 
|  | 164 TEST(PreviousSessionInfoTest, MemoryWarningFlagMethodsAfterRecordingBegins) { | 
|  | 165   [PreviousSessionInfo resetSharedInstanceForTesting]; | 
|  | 166   NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | 
|  | 167   [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]; | 
|  | 168   [defaults removeObjectForKey:kLastRanVersion]; | 
|  | 169 | 
|  | 170   // Launch the recording of the session. | 
|  | 171   [[PreviousSessionInfo sharedInstance] beginRecordingCurrentSession]; | 
|  | 172 | 
|  | 173   EXPECT_FALSE( | 
|  | 174       [defaults boolForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]); | 
|  | 175 | 
|  | 176   // Call the memory warning flag setter. | 
|  | 177   [[PreviousSessionInfo sharedInstance] setMemoryWarningFlag]; | 
|  | 178 | 
|  | 179   EXPECT_TRUE( | 
|  | 180       [defaults boolForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]); | 
|  | 181 | 
|  | 182   // Call the memory warning flag resetter. | 
|  | 183   [[PreviousSessionInfo sharedInstance] resetMemoryWarningFlag]; | 
|  | 184 | 
|  | 185   EXPECT_FALSE( | 
|  | 186       [defaults boolForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]); | 
|  | 187 } | 
|  | 188 | 
|  | 189 }  // namespace | 
| OLD | NEW | 
|---|