Index: components/prefs/overlay_user_pref_store_unittest.cc |
diff --git a/components/prefs/overlay_user_pref_store_unittest.cc b/components/prefs/overlay_user_pref_store_unittest.cc |
index d722aeab6e01002dd4276c81c96c0db751a833c5..20cdb1730fb3fdd74143d4442f54bdb75ef09577 100644 |
--- a/components/prefs/overlay_user_pref_store_unittest.cc |
+++ b/components/prefs/overlay_user_pref_store_unittest.cc |
@@ -19,9 +19,11 @@ namespace { |
const char kBrowserWindowPlacement[] = "browser.window_placement"; |
const char kShowBookmarkBar[] = "bookmark_bar.show_on_all_tabs"; |
+const char kSharedKey[] = "sync_promo.show_on_first_run_allowed"; |
const char* const overlay_key = kBrowserWindowPlacement; |
const char* const regular_key = kShowBookmarkBar; |
+const char* const shared_key = kSharedKey; |
// With the removal of the kWebKitGlobalXXX prefs, we'll no longer have real |
// prefs using the overlay pref store, so make up keys here. |
const char mapped_overlay_key[] = "test.per_tab.javascript_enabled"; |
@@ -35,6 +37,7 @@ class OverlayUserPrefStoreTest : public testing::Test { |
: underlay_(new TestingPrefStore()), |
overlay_(new OverlayUserPrefStore(underlay_.get())) { |
overlay_->RegisterOverlayPref(overlay_key); |
+ overlay_->RegisterOverlayPref(shared_key); |
overlay_->RegisterOverlayPref(mapped_overlay_key, mapped_underlay_key); |
} |
@@ -309,4 +312,42 @@ TEST_F(OverlayUserPrefStoreTest, ClearMutableValues) { |
EXPECT_TRUE(base::FundamentalValue(42).Equals(value)); |
} |
+TEST_F(OverlayUserPrefStoreTest, GetValues) { |
+ // To check merge behavior, create underlay and overlay so each has a key the |
+ // other doesn't have and they have one key in common. |
+ underlay_->SetValue(regular_key, base::WrapUnique(new FundamentalValue(42)), |
+ WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); |
+ overlay_->SetValue(overlay_key, base::WrapUnique(new FundamentalValue(43)), |
+ WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); |
+ underlay_->SetValue(shared_key, base::WrapUnique(new FundamentalValue(42)), |
+ WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); |
+ overlay_->SetValue(shared_key, base::WrapUnique(new FundamentalValue(43)), |
+ WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); |
+ underlay_->SetValue(mapped_underlay_key, |
+ base::WrapUnique(new FundamentalValue(42)), |
+ WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); |
+ overlay_->SetValue(mapped_overlay_key, |
+ base::WrapUnique(new FundamentalValue(43)), |
+ WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); |
+ |
+ auto values = overlay_->GetValues(); |
+ const Value* value = nullptr; |
+ // Check that an overlay preference is returned. |
+ ASSERT_TRUE(values->Get(overlay_key, &value)); |
+ EXPECT_TRUE(base::FundamentalValue(43).Equals(value)); |
+ |
+ // Check that an underlay preference is returned. |
+ ASSERT_TRUE(values->Get(regular_key, &value)); |
+ EXPECT_TRUE(base::FundamentalValue(42).Equals(value)); |
+ |
+ // Check that the overlay is preferred. |
+ ASSERT_TRUE(values->Get(shared_key, &value)); |
+ EXPECT_TRUE(base::FundamentalValue(43).Equals(value)); |
+ |
+ // Check that mapping works. |
+ ASSERT_TRUE(values->Get(mapped_overlay_key, &value)); |
+ EXPECT_TRUE(base::FundamentalValue(43).Equals(value)); |
+ EXPECT_FALSE(values->Get(mapped_underlay_key, &value)); |
+} |
+ |
} // namespace base |