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

Unified Diff: services/preferences/persistent_pref_store_impl_unittest.cc

Issue 2777483002: Pref service: Add initial support for pref registration. (Closed)
Patch Set: rebase Created 3 years, 9 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
Index: services/preferences/persistent_pref_store_impl_unittest.cc
diff --git a/services/preferences/persistent_pref_store_impl_unittest.cc b/services/preferences/persistent_pref_store_impl_unittest.cc
index e4267cef1a413931d34d3b70b3c7322b31461333..6537ea0c1f4743f1c4c0170aecd0045b867f58cd 100644
--- a/services/preferences/persistent_pref_store_impl_unittest.cc
+++ b/services/preferences/persistent_pref_store_impl_unittest.cc
@@ -91,6 +91,7 @@ class InitializationMockPersistentPrefStore : public InMemoryPrefStore {
};
constexpr char kKey[] = "path.to.key";
+constexpr char kOtherKey[] = "path.to.other_key";
class PersistentPrefStoreImplTest : public testing::Test {
public:
@@ -114,9 +115,13 @@ class PersistentPrefStoreImplTest : public testing::Test {
pref_store_ = CreateConnection();
}
- scoped_refptr<PersistentPrefStore> CreateConnection() {
- return make_scoped_refptr(
- new PersistentPrefStoreClient(impl_->CreateConnection()));
+ scoped_refptr<PersistentPrefStore> CreateConnection(
+ PersistentPrefStoreImpl::ObservedPrefs observed_prefs =
+ PersistentPrefStoreImpl::ObservedPrefs()) {
+ if (observed_prefs.empty())
+ observed_prefs.insert({kKey, kOtherKey});
+ return make_scoped_refptr(new PersistentPrefStoreClient(
+ impl_->CreateConnection(std::move(observed_prefs))));
}
PersistentPrefStore* pref_store() { return pref_store_.get(); }
@@ -220,6 +225,33 @@ TEST_F(PersistentPrefStoreImplTest, WriteObservedByOtherClient) {
EXPECT_TRUE(value.Equals(output));
}
+TEST_F(PersistentPrefStoreImplTest, UnregisteredPrefNotObservedByOtherClient) {
+ auto backing_pref_store = make_scoped_refptr(new InMemoryPrefStore());
+ CreateImpl(backing_pref_store);
+ EXPECT_TRUE(pref_store()->IsInitializationComplete());
+
+ PersistentPrefStoreImpl::ObservedPrefs observed_prefs;
+ observed_prefs.insert(kKey);
+
+ auto other_pref_store = CreateConnection(std::move(observed_prefs));
+ EXPECT_TRUE(other_pref_store->IsInitializationComplete());
+
+ pref_store()->SetValue(kOtherKey, base::MakeUnique<base::Value>(123), 0);
+ pref_store()->SetValue(kKey, base::MakeUnique<base::Value>("value"), 0);
+
+ PrefStoreObserverMock observer;
+ other_pref_store->AddObserver(&observer);
+ base::RunLoop run_loop;
+ EXPECT_CALL(observer, OnPrefValueChanged(kOtherKey)).Times(0);
+ EXPECT_CALL(observer, OnPrefValueChanged(kKey))
+ .Times(1)
+ .WillOnce(WithoutArgs(Invoke([&run_loop]() { run_loop.Quit(); })));
+ run_loop.Run();
+ other_pref_store->RemoveObserver(&observer);
+
+ EXPECT_FALSE(other_pref_store->GetValue(kOtherKey, nullptr));
+}
+
TEST_F(PersistentPrefStoreImplTest,
WriteWithoutPathExpansionObservedByOtherClient) {
auto backing_pref_store = make_scoped_refptr(new InMemoryPrefStore());
« no previous file with comments | « services/preferences/persistent_pref_store_impl.cc ('k') | services/preferences/pref_service_factory_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698