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

Unified Diff: services/preferences/public/cpp/tests/pref_observer_store_unittest.cc

Issue 2474653003: PreferencesManager (Closed)
Patch Set: DLOG error states Created 4 years 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/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..2170309fdb9a2c924ab9637602638bb7fdcef790 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,8 +56,16 @@ void TestPreferenceManager::SetPreferences(
set_preferences_called_ = true;
}
+void TestPreferenceManager::Subscribe(
+ const std::vector<std::string>& preferences) {
+ last_preference_set_.clear();
+ last_preference_set_.insert(preferences.begin(), preferences.end());
+}
+
} // namespace
+namespace preferences {
+
class PrefObserverStoreTest : public testing::Test {
public:
PrefObserverStoreTest() {}
@@ -106,7 +111,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 +144,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 +160,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 +183,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 +216,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 +236,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 +297,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 +338,52 @@ 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);
+}
+
+} // namespace preferences

Powered by Google App Engine
This is Rietveld 408576698