Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(320)

Unified Diff: ios/chrome/browser/metrics/previous_session_info_unittest.mm

Issue 1207353005: [iOS] Upstream some stability code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ios/chrome/browser/metrics/previous_session_info.mm ('k') | ios/chrome/browser/pref_names.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/metrics/previous_session_info_unittest.mm
diff --git a/ios/chrome/browser/metrics/previous_session_info_unittest.mm b/ios/chrome/browser/metrics/previous_session_info_unittest.mm
new file mode 100644
index 0000000000000000000000000000000000000000..1ab97c8931f5640408e059d3ac497da3cf2da935
--- /dev/null
+++ b/ios/chrome/browser/metrics/previous_session_info_unittest.mm
@@ -0,0 +1,189 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ios/chrome/browser/metrics/previous_session_info.h"
+
+#include "base/strings/sys_string_conversions.h"
+#include "ios/public/provider/chrome/browser/chrome_browser_provider.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/gtest_mac.h"
+
+namespace {
+
+// Key in the UserDefaults for a boolean value keeping track of memory warnings.
+NSString* const kDidSeeMemoryWarningShortlyBeforeTerminating =
+ @"DidSeeMemoryWarning";
+
+// Key in the NSUserDefaults for a string value that stores the version of the
+// last session.
+NSString* const kLastRanVersion = @"LastRanVersion";
+
+TEST(PreviousSessionInfoTest, InitializationWithEmptyDefaults) {
+ [PreviousSessionInfo resetSharedInstanceForTesting];
+ NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+ [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating];
+ [defaults removeObjectForKey:kLastRanVersion];
+
+ // Instantiate the PreviousSessionInfo sharedInstance.
+ PreviousSessionInfo* sharedInstance = [PreviousSessionInfo sharedInstance];
+
+ // Checks the default values.
+ EXPECT_FALSE([sharedInstance didSeeMemoryWarningShortlyBeforeTerminating]);
+ EXPECT_TRUE([sharedInstance isFirstSessionAfterUpgrade]);
+}
+
+TEST(PreviousSessionInfoTest, InitializationWithSameVersionNoMemoryWarning) {
+ [PreviousSessionInfo resetSharedInstanceForTesting];
+ NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+ [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating];
+ [defaults removeObjectForKey:kLastRanVersion];
+
+ // Set the current version as the last ran version.
+ NSString* currentVersion = base::SysUTF8ToNSString(
+ ios::GetChromeBrowserProvider()->GetVersionNumber());
+ [defaults setObject:currentVersion forKey:kLastRanVersion];
+
+ // Instantiate the PreviousSessionInfo sharedInstance.
+ PreviousSessionInfo* sharedInstance = [PreviousSessionInfo sharedInstance];
+
+ // Checks the values.
+ EXPECT_FALSE([sharedInstance didSeeMemoryWarningShortlyBeforeTerminating]);
+ EXPECT_FALSE([sharedInstance isFirstSessionAfterUpgrade]);
+}
+
+TEST(PreviousSessionInfoTest, InitializationWithSameVersionMemoryWarning) {
+ [PreviousSessionInfo resetSharedInstanceForTesting];
+ NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+ [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating];
+ [defaults removeObjectForKey:kLastRanVersion];
+
+ // Set the current version as the last ran version.
+ NSString* currentVersion = base::SysUTF8ToNSString(
+ ios::GetChromeBrowserProvider()->GetVersionNumber());
+ [defaults setObject:currentVersion forKey:kLastRanVersion];
+
+ // Set the memory warning flag as a previous session would have.
+ [defaults setBool:YES forKey:kDidSeeMemoryWarningShortlyBeforeTerminating];
+
+ // Instantiate the PreviousSessionInfo sharedInstance.
+ PreviousSessionInfo* sharedInstance = [PreviousSessionInfo sharedInstance];
+
+ // Checks the values.
+ EXPECT_TRUE([sharedInstance didSeeMemoryWarningShortlyBeforeTerminating]);
+ EXPECT_FALSE([sharedInstance isFirstSessionAfterUpgrade]);
+}
+
+TEST(PreviousSessionInfoTest, InitializationDifferentVersionNoMemoryWarning) {
+ [PreviousSessionInfo resetSharedInstanceForTesting];
+ NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+ [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating];
+ [defaults removeObjectForKey:kLastRanVersion];
+
+ // Set the current version as the last ran version.
+ [defaults setObject:@"Fake Version" forKey:kLastRanVersion];
+
+ // Instantiate the PreviousSessionInfo sharedInstance.
+ PreviousSessionInfo* sharedInstance = [PreviousSessionInfo sharedInstance];
+
+ // Checks the values.
+ EXPECT_FALSE([sharedInstance didSeeMemoryWarningShortlyBeforeTerminating]);
+ EXPECT_TRUE([sharedInstance isFirstSessionAfterUpgrade]);
+}
+
+TEST(PreviousSessionInfoTest, InitializationDifferentVersionMemoryWarning) {
+ [PreviousSessionInfo resetSharedInstanceForTesting];
+ NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+ [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating];
+ [defaults removeObjectForKey:kLastRanVersion];
+
+ // Set the current version as the last ran version.
+ [defaults setObject:@"Fake Version" forKey:kLastRanVersion];
+
+ // Set the memory warning flag as a previous session would have.
+ [defaults setBool:YES forKey:kDidSeeMemoryWarningShortlyBeforeTerminating];
+
+ // Instantiate the PreviousSessionInfo sharedInstance.
+ PreviousSessionInfo* sharedInstance = [PreviousSessionInfo sharedInstance];
+
+ // Checks the values.
+ EXPECT_TRUE([sharedInstance didSeeMemoryWarningShortlyBeforeTerminating]);
+ EXPECT_TRUE([sharedInstance isFirstSessionAfterUpgrade]);
+}
+
+TEST(PreviousSessionInfoTest, BeginRecordingCurrentSession) {
+ [PreviousSessionInfo resetSharedInstanceForTesting];
+ NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+ [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating];
+ [defaults removeObjectForKey:kLastRanVersion];
+
+ // Set the memory warning flag as a previous session would have.
+ [defaults setBool:YES forKey:kDidSeeMemoryWarningShortlyBeforeTerminating];
+
+ [[PreviousSessionInfo sharedInstance] beginRecordingCurrentSession];
+
+ // Check that the version has been updated.
+ EXPECT_NSEQ(base::SysUTF8ToNSString(
+ ios::GetChromeBrowserProvider()->GetVersionNumber()),
+ [defaults stringForKey:kLastRanVersion]);
+
+ // Check that the memory warning flag has been reset.
+ EXPECT_FALSE(
+ [defaults boolForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]);
+}
+
+TEST(PreviousSessionInfoTest, SetMemoryWarningFlagNoOpUntilRecordingBegins) {
+ [PreviousSessionInfo resetSharedInstanceForTesting];
+ NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+ [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating];
+ [defaults removeObjectForKey:kLastRanVersion];
+
+ // Call the flag setter.
+ [[PreviousSessionInfo sharedInstance] setMemoryWarningFlag];
+
+ EXPECT_FALSE(
+ [defaults boolForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]);
+}
+
+TEST(PreviousSessionInfoTest, ResetMemoryWarningFlagNoOpUntilRecordingBegins) {
+ [PreviousSessionInfo resetSharedInstanceForTesting];
+ NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+ [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating];
+ [defaults removeObjectForKey:kLastRanVersion];
+
+ // Set the memory warning flag as a previous session would have.
+ [defaults setBool:YES forKey:kDidSeeMemoryWarningShortlyBeforeTerminating];
+
+ // Call the memory warning flag resetter.
+ [[PreviousSessionInfo sharedInstance] resetMemoryWarningFlag];
+
+ EXPECT_TRUE(
+ [defaults boolForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]);
+}
+
+TEST(PreviousSessionInfoTest, MemoryWarningFlagMethodsAfterRecordingBegins) {
+ [PreviousSessionInfo resetSharedInstanceForTesting];
+ NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+ [defaults removeObjectForKey:kDidSeeMemoryWarningShortlyBeforeTerminating];
+ [defaults removeObjectForKey:kLastRanVersion];
+
+ // Launch the recording of the session.
+ [[PreviousSessionInfo sharedInstance] beginRecordingCurrentSession];
+
+ EXPECT_FALSE(
+ [defaults boolForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]);
+
+ // Call the memory warning flag setter.
+ [[PreviousSessionInfo sharedInstance] setMemoryWarningFlag];
+
+ EXPECT_TRUE(
+ [defaults boolForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]);
+
+ // Call the memory warning flag resetter.
+ [[PreviousSessionInfo sharedInstance] resetMemoryWarningFlag];
+
+ EXPECT_FALSE(
+ [defaults boolForKey:kDidSeeMemoryWarningShortlyBeforeTerminating]);
+}
+
+} // namespace
« no previous file with comments | « ios/chrome/browser/metrics/previous_session_info.mm ('k') | ios/chrome/browser/pref_names.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698