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

Unified Diff: ios/chrome/browser/notification_promo_unittest.cc

Issue 2094523002: Add migration from old to new NTP Promo pref structure. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: edits Created 4 years, 6 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/notification_promo.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/notification_promo_unittest.cc
diff --git a/ios/chrome/browser/notification_promo_unittest.cc b/ios/chrome/browser/notification_promo_unittest.cc
index 642836a3d3478d7e1e1bd10159b019e49fc5d491..f2697966142c6a9f03009d2aab6ec658589797ed 100644
--- a/ios/chrome/browser/notification_promo_unittest.cc
+++ b/ios/chrome/browser/notification_promo_unittest.cc
@@ -288,6 +288,54 @@ class NotificationPromoTest : public testing::Test {
notification_promo_.WritePrefs();
}
+ // Tests that if data is saved in the old pref structure, it is successfully
+ // migrated to the new structure that supports saving multiple promos.
+ // TODO(crbug.com/623726) Remove this method when migration is no longer
+ // needed as most users have been upgraded to the new pref structure.
+ void TestMigrationOfOldPrefs() {
+ NotificationPromo promo(&local_state_);
+ promo.InitFromVariations();
+
+ // Pick values for each variable that is saved into old prefs structure.
+ double first_view_time = 2.0;
+ int views = max_views_ + 1;
+ bool closed = true;
+
+ // Save data into old prefs structure.
+ base::DictionaryValue* ntp_promo = new base::DictionaryValue;
+ ntp_promo->SetInteger("id", promo.promo_id_);
+ ntp_promo->SetDouble("first_view_time", first_view_time);
+ ntp_promo->SetInteger("views", views);
+ ntp_promo->SetBoolean("closed", true);
+
+ base::ListValue* promo_list = new base::ListValue;
+ promo_list->Set(0, ntp_promo);
+
+ std::string promo_list_key = "mobile_ntp_whats_new_promo";
+ std::string promo_dict_key = "ios.ntppromo";
+
+ base::DictionaryValue promo_dict;
+ promo_dict.Set(promo_list_key, promo_list);
+ local_state_.Set(promo_dict_key, promo_dict);
+
+ // Initialize promo and verify that its instance variables match the data
+ // saved in the old structure.
+ promo.InitFromPrefs(promo_type_);
+ EXPECT_EQ(first_view_time, promo.first_view_time_);
+ EXPECT_EQ(views, promo.views_);
+ EXPECT_EQ(closed, promo.closed_);
+ EXPECT_FALSE(promo.CanShow());
+
+ // Verify that old pref structure was cleared.
+ const base::DictionaryValue* current_promo_dict =
+ local_state_.GetDictionary(promo_dict_key);
+ // Do not continue further if no dictionary was found at the key in prefs.
+ ASSERT_TRUE(current_promo_dict);
+ const base::ListValue* current_promo_list = NULL;
+ current_promo_dict->GetList(promo_list_key, &current_promo_list);
+ EXPECT_FALSE(current_promo_list);
+ }
+
const NotificationPromo& promo() const { return notification_promo_; }
protected:
@@ -375,4 +423,28 @@ TEST_F(NotificationPromoTest, NotificationPromoFinchTest) {
TestFirstViewTimeRecorded();
}
+// TODO(crbug.com/623726) Remove this test case when migration is no longer
+// needed as most users have been upgraded to the new pref structure.
+TEST_F(NotificationPromoTest, NotificationPromoPrefMigrationTest) {
+ Init(
+ "{"
+ " \"start\":\"3 Aug 1999 9:26:06 GMT\","
+ " \"end\":\"$1\","
+ " \"promo_text\":\"What do you think of Chrome?\","
+ " \"payload\":"
+ " {"
+ " \"days_active\":7,"
+ " \"install_age_days\":21"
+ " },"
+ " \"max_views\":30,"
+ " \"max_seconds\":30,"
+ " \"promo_id\":0"
+ "}",
+ "What do you think of Chrome?",
+ 933672366, // unix epoch for 3 Aug 1999 9:26:06 GMT.
+ 0, 30, 30);
+ InitPromoFromVariations();
+ TestMigrationOfOldPrefs();
+}
+
} // namespace ios
« no previous file with comments | « ios/chrome/browser/notification_promo.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698