| Index: services/preferences/public/cpp/tests/pref_observer_store_unittest.cc
|
| diff --git a/services/preferences/public/cpp/tests/pref_observer_store_unittest.cc b/services/preferences/public/cpp/tests/pref_observer_store_unittest.cc
|
| index b1fcb0453fa207ccaa39e270c8df4fddc8b50454..c9c7f78495506e5d7bad7dd38bf18b7fe9e57640 100644
|
| --- a/services/preferences/public/cpp/tests/pref_observer_store_unittest.cc
|
| +++ b/services/preferences/public/cpp/tests/pref_observer_store_unittest.cc
|
| @@ -33,9 +33,9 @@ class TestPreferenceManager : public prefs::mojom::PreferencesManager {
|
| bool set_preferences_called() { return set_preferences_called_; }
|
|
|
| // prefs::mojom::TestPreferenceManager:
|
| - void AddObserver(const std::vector<std::string>& preferences,
|
| - prefs::mojom::PreferencesObserverPtr client) override;
|
| + void AddObserver(prefs::mojom::PreferencesObserverPtr client) override;
|
| void SetPreferences(const base::DictionaryValue& preferences) override;
|
| + void Subscribe(const std::vector<std::string>& preferences) override;
|
|
|
| private:
|
| bool add_observer_called_;
|
| @@ -47,11 +47,8 @@ class TestPreferenceManager : public prefs::mojom::PreferencesManager {
|
| };
|
|
|
| void TestPreferenceManager::AddObserver(
|
| - const std::vector<std::string>& preferences,
|
| prefs::mojom::PreferencesObserverPtr client) {
|
| add_observer_called_ = true;
|
| - last_preference_set_.clear();
|
| - last_preference_set_.insert(preferences.begin(), preferences.end());
|
| }
|
|
|
| void TestPreferenceManager::SetPreferences(
|
| @@ -59,6 +56,13 @@ void TestPreferenceManager::SetPreferences(
|
| set_preferences_called_ = true;
|
| }
|
|
|
| +void TestPreferenceManager::Subscribe(
|
| + const std::vector<std::string>& preferences) {
|
| + LOG(ERROR) << "JR Subscribe!!!\n";
|
| + last_preference_set_.clear();
|
| + last_preference_set_.insert(preferences.begin(), preferences.end());
|
| +}
|
| +
|
| } // namespace
|
|
|
| class PrefObserverStoreTest : public testing::Test {
|
| @@ -106,7 +110,7 @@ TEST_F(PrefObserverStoreTest, Initialization) {
|
| std::set<std::string> keys;
|
| const std::string key("hey");
|
| keys.insert(key);
|
| - store()->Init(keys);
|
| + store()->Subscribe(keys);
|
|
|
| EXPECT_FALSE(Initialized());
|
| EXPECT_FALSE(observer()->initialized);
|
| @@ -139,7 +143,7 @@ TEST_F(PrefObserverStoreTest, SetValueSilently) {
|
| std::set<std::string> keys;
|
| const std::string key("hey");
|
| keys.insert(key);
|
| - store()->Init(keys);
|
| + store()->Subscribe(keys);
|
|
|
| const int kValue = 42;
|
| base::FundamentalValue pref(kValue);
|
| @@ -155,7 +159,7 @@ TEST_F(PrefObserverStoreTest, ReportValueChanged) {
|
| std::set<std::string> keys;
|
| const std::string key("hey");
|
| keys.insert(key);
|
| - store()->Init(keys);
|
| + store()->Subscribe(keys);
|
|
|
| const int kValue = 42;
|
| base::FundamentalValue pref(kValue);
|
| @@ -178,7 +182,7 @@ TEST_F(PrefObserverStoreTest, MultipleKeyInitialization) {
|
| const std::string key2("listen");
|
| keys.insert(key1);
|
| keys.insert(key2);
|
| - store()->Init(keys);
|
| + store()->Subscribe(keys);
|
|
|
| EXPECT_FALSE(Initialized());
|
| EXPECT_FALSE(observer()->initialized);
|
| @@ -211,7 +215,7 @@ TEST_F(PrefObserverStoreTest, InvalidInitialization) {
|
| std::set<std::string> keys;
|
| const std::string key("hey");
|
| keys.insert(key);
|
| - store()->Init(keys);
|
| + store()->Subscribe(keys);
|
|
|
| const std::string kInvalidKey("look");
|
| const int kValue = 42;
|
| @@ -231,7 +235,7 @@ TEST_F(PrefObserverStoreTest, WriteToNestedPrefs) {
|
| const std::string key2("listen");
|
| keys.insert(key1);
|
| keys.insert(key2);
|
| - store()->Init(keys);
|
| + store()->Subscribe(keys);
|
|
|
| EXPECT_FALSE(Initialized());
|
| EXPECT_FALSE(observer()->initialized);
|
| @@ -292,7 +296,7 @@ TEST_F(PrefObserverStoreTest, UpdateOuterNestedPrefs) {
|
| const std::string key2("listen");
|
| keys.insert(key1);
|
| keys.insert(key2);
|
| - store()->Init(keys);
|
| + store()->Subscribe(keys);
|
|
|
| EXPECT_FALSE(Initialized());
|
| EXPECT_FALSE(observer()->initialized);
|
| @@ -333,3 +337,50 @@ TEST_F(PrefObserverStoreTest, UpdateOuterNestedPrefs) {
|
| EXPECT_EQ(1u, observer()->changed_keys.size());
|
| EXPECT_TRUE(manager()->set_preferences_called());
|
| }
|
| +
|
| +// Tests that a PrefObserverStore can subscribe multiple times to different
|
| +// keys.
|
| +TEST_F(PrefObserverStoreTest, MultipleSubscriptions) {
|
| + std::set<std::string> keys1;
|
| + const std::string key1("hey");
|
| + keys1.insert(key1);
|
| + store()->Subscribe(keys1);
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_NE(manager()->last_preference_set().end(),
|
| + manager()->last_preference_set().find(key1));
|
| +
|
| + std::set<std::string> keys2;
|
| + const std::string key2("listen");
|
| + keys2.insert(key2);
|
| + store()->Subscribe(keys2);
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_NE(manager()->last_preference_set().end(),
|
| + manager()->last_preference_set().find(key2));
|
| +}
|
| +
|
| +// Tests that multiple PrefStore::Observers can be added to a PrefObserverStore
|
| +// and that they are each notified of changes.
|
| +TEST_F(PrefObserverStoreTest, MultipleObservers) {
|
| + PrefStoreObserverMock observer2;
|
| + store()->AddObserver(&observer2);
|
| +
|
| + std::set<std::string> keys;
|
| + const std::string key("hey");
|
| + keys.insert(key);
|
| + store()->Subscribe(keys);
|
| +
|
| + const int kValue = 42;
|
| + base::FundamentalValue pref(kValue);
|
| + base::DictionaryValue prefs;
|
| + prefs.Set(key, pref.CreateDeepCopy());
|
| +
|
| + // PreferenceManager notifies of PreferencesChanged, completing
|
| + // initialization.
|
| + OnPreferencesChanged(prefs);
|
| + EXPECT_TRUE(observer()->initialized);
|
| + EXPECT_TRUE(observer2.initialized);
|
| + EXPECT_TRUE(observer()->initialization_success);
|
| + EXPECT_TRUE(observer2.initialization_success);
|
| + observer()->VerifyAndResetChangedKey(key);
|
| + observer2.VerifyAndResetChangedKey(key);
|
| +}
|
|
|