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

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

Issue 2778733003: Pref service: delete old implementation (Closed)
Patch Set: Fix missed merge 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/public/cpp/tests/pref_client_store_unittest.cc
diff --git a/services/preferences/public/cpp/tests/pref_client_store_unittest.cc b/services/preferences/public/cpp/tests/pref_client_store_unittest.cc
deleted file mode 100644
index a044b0317a86645596f809befa5fe3af97f96777..0000000000000000000000000000000000000000
--- a/services/preferences/public/cpp/tests/pref_client_store_unittest.cc
+++ /dev/null
@@ -1,410 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "services/preferences/public/cpp/pref_client_store.h"
-
-#include "base/macros.h"
-#include "base/memory/ptr_util.h"
-#include "base/message_loop/message_loop.h"
-#include "base/run_loop.h"
-#include "base/values.h"
-#include "components/prefs/pref_store_observer_mock.h"
-#include "services/preferences/public/interfaces/preferences.mojom.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace {
-
-// Test implmentation of prefs::mojom::PreferenceManager which simply tracks
-// calls. Allows for testing to be done in process, without mojo IPC.
-class TestPreferenceService : public prefs::mojom::PreferencesService {
- public:
- TestPreferenceService(
- mojo::InterfaceRequest<prefs::mojom::PreferencesService> request)
- : set_preferences_called_(false), binding_(this, std::move(request)) {}
- ~TestPreferenceService() override {}
-
- const std::set<std::string>& last_preference_set() {
- return last_preference_set_;
- }
- bool set_preferences_called() { return set_preferences_called_; }
-
- // prefs::mojom::TestPreferenceService:
- void SetPreferences(
- std::unique_ptr<base::DictionaryValue> preferences) override;
- void Subscribe(const std::vector<std::string>& preferences) override;
-
- private:
- std::set<std::string> last_preference_set_;
- bool set_preferences_called_;
- mojo::Binding<prefs::mojom::PreferencesService> binding_;
-
- DISALLOW_COPY_AND_ASSIGN(TestPreferenceService);
-};
-
-void TestPreferenceService::SetPreferences(
- std::unique_ptr<base::DictionaryValue> preferences) {
- set_preferences_called_ = true;
-}
-
-void TestPreferenceService::Subscribe(
- const std::vector<std::string>& preferences) {
- last_preference_set_.clear();
- last_preference_set_.insert(preferences.begin(), preferences.end());
-}
-
-// Test implementation of prefs::mojom::PreferencesServiceFactory which simply
-// creates the TestPreferenceService used for testing.
-class TestPreferenceFactory : public prefs::mojom::PreferencesServiceFactory {
- public:
- TestPreferenceFactory(
- mojo::InterfaceRequest<prefs::mojom::PreferencesServiceFactory> request)
- : binding_(this, std::move(request)) {}
- ~TestPreferenceFactory() override {}
-
- TestPreferenceService* service() { return service_.get(); }
-
- void Create(prefs::mojom::PreferencesServiceClientPtr observer,
- prefs::mojom::PreferencesServiceRequest service) override;
-
- private:
- mojo::Binding<prefs::mojom::PreferencesServiceFactory> binding_;
- std::unique_ptr<TestPreferenceService> service_;
-
- DISALLOW_COPY_AND_ASSIGN(TestPreferenceFactory);
-};
-
-void TestPreferenceFactory::Create(
- prefs::mojom::PreferencesServiceClientPtr observer,
- prefs::mojom::PreferencesServiceRequest service) {
- service_.reset(new TestPreferenceService(std::move(service)));
-}
-
-} // namespace
-
-namespace preferences {
-
-class PrefClientStoreTest : public testing::Test {
- public:
- PrefClientStoreTest() {}
- ~PrefClientStoreTest() override {}
-
- TestPreferenceService* service() { return factory_->service(); }
- PrefStoreObserverMock* observer() { return &observer_; }
- PrefClientStore* store() { return store_.get(); }
-
- bool Initialized() { return store_->initialized_; }
- void OnPreferencesChanged(const base::DictionaryValue& preferences) {
- store_->OnPreferencesChanged(preferences.CreateDeepCopy());
- }
-
- // testing::Test:
- void SetUp() override;
- void TearDown() override;
-
- private:
- scoped_refptr<PrefClientStore> store_;
- prefs::mojom::PreferencesServiceFactoryPtr factory_proxy_;
- std::unique_ptr<TestPreferenceFactory> factory_;
- PrefStoreObserverMock observer_;
- // Required by mojo binding code within PrefClientStore.
- base::MessageLoop message_loop_;
-
- DISALLOW_COPY_AND_ASSIGN(PrefClientStoreTest);
-};
-
-void PrefClientStoreTest::SetUp() {
- factory_.reset(new TestPreferenceFactory(mojo::MakeRequest(&factory_proxy_)));
- store_ = new PrefClientStore(std::move(factory_proxy_));
- base::RunLoop().RunUntilIdle();
- store_->AddObserver(&observer_);
-}
-
-void PrefClientStoreTest::TearDown() {
- store_->RemoveObserver(&observer_);
-}
-
-// Tests that observers are notified upon the completion of initialization, and
-// that values become available.
-TEST_F(PrefClientStoreTest, Initialization) {
- std::set<std::string> keys;
- const std::string key("hey");
- keys.insert(key);
- store()->Subscribe(keys);
-
- EXPECT_FALSE(Initialized());
- EXPECT_FALSE(observer()->initialized);
-
- const int kValue = 42;
- base::Value pref(kValue);
- base::DictionaryValue prefs;
- prefs.Set(key, pref.CreateDeepCopy());
-
- // PreferenceManager notifies of PreferencesChanged, completing
- // initialization.
- OnPreferencesChanged(prefs);
- EXPECT_TRUE(Initialized());
- EXPECT_TRUE(observer()->initialized);
- EXPECT_TRUE(observer()->initialization_success);
- observer()->VerifyAndResetChangedKey(key);
-
- const base::Value* value = nullptr;
- int actual_value;
- EXPECT_TRUE(store()->GetValue(key, &value));
- EXPECT_NE(nullptr, value);
- EXPECT_TRUE(value->GetAsInteger(&actual_value));
- EXPECT_EQ(kValue, actual_value);
- EXPECT_FALSE(service()->set_preferences_called());
-}
-
-// Tests that values set silently are also set on the preference service, but
-// that no observers are notified.
-TEST_F(PrefClientStoreTest, SetValueSilently) {
- std::set<std::string> keys;
- const std::string key("hey");
- keys.insert(key);
- store()->Subscribe(keys);
-
- const int kValue = 42;
- base::Value pref(kValue);
- store()->SetValueSilently(key, pref.CreateDeepCopy(), 0);
- base::RunLoop().RunUntilIdle();
- EXPECT_TRUE(service()->set_preferences_called());
- EXPECT_TRUE(observer()->changed_keys.empty());
-}
-
-// Test that reporting values changed notifies observers, and the preference
-// service.
-TEST_F(PrefClientStoreTest, ReportValueChanged) {
- std::set<std::string> keys;
- const std::string key("hey");
- keys.insert(key);
- store()->Subscribe(keys);
-
- const int kValue = 42;
- base::Value pref(kValue);
- base::DictionaryValue prefs;
- prefs.Set(key, pref.CreateDeepCopy());
- OnPreferencesChanged(prefs);
- observer()->changed_keys.clear();
-
- store()->ReportValueChanged(key, 0);
- base::RunLoop().RunUntilIdle();
- EXPECT_TRUE(service()->set_preferences_called());
- observer()->VerifyAndResetChangedKey(key);
-}
-
-// Test that when initialized with multiple keys, that observers receive a
-// notification for each key.
-TEST_F(PrefClientStoreTest, MultipleKeyInitialization) {
- std::set<std::string> keys;
- const std::string key1("hey");
- const std::string key2("listen");
- keys.insert(key1);
- keys.insert(key2);
- store()->Subscribe(keys);
-
- EXPECT_FALSE(Initialized());
- EXPECT_FALSE(observer()->initialized);
-
- const int kValue = 42;
- base::Value pref1(kValue);
- const std::string kStringValue("look");
- base::Value pref2(kStringValue);
-
- base::DictionaryValue prefs;
- prefs.Set(key1, pref1.CreateDeepCopy());
- prefs.Set(key2, pref2.CreateDeepCopy());
-
- // The observer should be notified of all keys set.
- OnPreferencesChanged(prefs);
- EXPECT_TRUE(Initialized());
- EXPECT_TRUE(observer()->initialized);
- EXPECT_EQ(2u, observer()->changed_keys.size());
- EXPECT_NE(observer()->changed_keys.end(),
- std::find(observer()->changed_keys.begin(),
- observer()->changed_keys.end(), key1));
- EXPECT_NE(observer()->changed_keys.end(),
- std::find(observer()->changed_keys.begin(),
- observer()->changed_keys.end(), key2));
-}
-
-// Tests that if OnPreferencesChanged is received with invalid keys, that they
-// are ignored.
-TEST_F(PrefClientStoreTest, InvalidInitialization) {
- std::set<std::string> keys;
- const std::string key("hey");
- keys.insert(key);
- store()->Subscribe(keys);
-
- const std::string kInvalidKey("look");
- const int kValue = 42;
- base::Value pref(kValue);
- base::DictionaryValue prefs;
- prefs.Set(kInvalidKey, pref.CreateDeepCopy());
-
- OnPreferencesChanged(prefs);
- EXPECT_TRUE(observer()->changed_keys.empty());
-}
-
-// Tests that when tracking preferences which nest other DictionaryValues, that
-// modifications to the nested values properly notify the observer.
-TEST_F(PrefClientStoreTest, WriteToNestedPrefs) {
- std::set<std::string> keys;
- const std::string key1("hey");
- const std::string key2("listen");
- keys.insert(key1);
- keys.insert(key2);
- store()->Subscribe(keys);
-
- EXPECT_FALSE(Initialized());
- EXPECT_FALSE(observer()->initialized);
-
- const std::string sub_key1("look");
- const int kValue1 = 42;
- base::Value pref1(kValue1);
- base::DictionaryValue sub_dictionary1;
- sub_dictionary1.Set(sub_key1, pref1.CreateDeepCopy());
-
- const std::string sub_key2("Watch out!\n");
- const int kValue2 = 1337;
- base::Value pref2(kValue2);
- base::DictionaryValue sub_dictionary2;
- sub_dictionary2.Set(sub_key2, pref2.CreateDeepCopy());
-
- base::DictionaryValue prefs;
- prefs.Set(key1, sub_dictionary1.CreateDeepCopy());
- prefs.Set(key2, sub_dictionary2.CreateDeepCopy());
-
- // Initialize with the nested dictionaries
- OnPreferencesChanged(prefs);
- EXPECT_TRUE(Initialized());
- EXPECT_TRUE(observer()->initialized);
- EXPECT_EQ(2u, observer()->changed_keys.size());
- EXPECT_NE(observer()->changed_keys.end(),
- std::find(observer()->changed_keys.begin(),
- observer()->changed_keys.end(), key1));
- EXPECT_NE(observer()->changed_keys.end(),
- std::find(observer()->changed_keys.begin(),
- observer()->changed_keys.end(), key2));
-
- // Change an item within the nested dictionary
- base::Value* result = nullptr;
- store()->GetMutableValue(key1, &result);
- EXPECT_EQ(base::Value::Type::DICTIONARY, result->GetType());
- EXPECT_TRUE(result->Equals(&sub_dictionary1));
-
- base::DictionaryValue* dictionary_result = nullptr;
- result->GetAsDictionary(&dictionary_result);
- EXPECT_NE(nullptr, dictionary_result);
-
- const std::string sub_key3("????");
- const int kValue3 = 9001;
- base::Value pref3(kValue3);
- dictionary_result->Set(sub_key3, pref3.CreateDeepCopy());
-
- observer()->changed_keys.clear();
- store()->ReportValueChanged(key1, 0);
- EXPECT_EQ(1u, observer()->changed_keys.size());
-}
-
-// Tests that when tracking preferences that nest other DictionaryValues, that
-// changes to the tracked keys properly notify the service and observer.
-TEST_F(PrefClientStoreTest, UpdateOuterNestedPrefs) {
- std::set<std::string> keys;
- const std::string key1("hey");
- const std::string key2("listen");
- keys.insert(key1);
- keys.insert(key2);
- store()->Subscribe(keys);
-
- EXPECT_FALSE(Initialized());
- EXPECT_FALSE(observer()->initialized);
-
- const std::string sub_key1("look");
- const int kValue1 = 42;
- base::Value pref1(kValue1);
- base::DictionaryValue sub_dictionary1;
- sub_dictionary1.Set(sub_key1, pref1.CreateDeepCopy());
-
- const std::string sub_key2("Watch out!\n");
- const int kValue2 = 1337;
- base::Value pref2(kValue2);
- base::DictionaryValue sub_dictionary2;
- sub_dictionary2.Set(sub_key2, pref2.CreateDeepCopy());
-
- base::DictionaryValue prefs;
- prefs.Set(key1, sub_dictionary1.CreateDeepCopy());
- prefs.Set(key2, sub_dictionary2.CreateDeepCopy());
-
- // Initialize with the nested dictionaries
- OnPreferencesChanged(prefs);
- EXPECT_TRUE(Initialized());
- EXPECT_TRUE(observer()->initialized);
- EXPECT_EQ(2u, observer()->changed_keys.size());
- EXPECT_NE(observer()->changed_keys.end(),
- std::find(observer()->changed_keys.begin(),
- observer()->changed_keys.end(), key1));
- EXPECT_NE(observer()->changed_keys.end(),
- std::find(observer()->changed_keys.begin(),
- observer()->changed_keys.end(), key2));
-
- observer()->changed_keys.clear();
- const int kValue3 = 9001;
- base::Value pref3(kValue3);
- store()->SetValue(key1, pref3.CreateDeepCopy(), 0);
- base::RunLoop().RunUntilIdle();
- EXPECT_EQ(1u, observer()->changed_keys.size());
- EXPECT_TRUE(service()->set_preferences_called());
-}
-
-// Tests that a PrefClientStore can subscribe multiple times to different
-// keys.
-TEST_F(PrefClientStoreTest, MultipleSubscriptions) {
- std::set<std::string> keys1;
- const std::string key1("hey");
- keys1.insert(key1);
- store()->Subscribe(keys1);
- base::RunLoop().RunUntilIdle();
- EXPECT_NE(service()->last_preference_set().end(),
- service()->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(service()->last_preference_set().end(),
- service()->last_preference_set().find(key2));
-}
-
-// Tests that multiple PrefStore::Observers can be added to a PrefClientStore
-// and that they are each notified of changes.
-TEST_F(PrefClientStoreTest, 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::Value 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);
-
- store()->RemoveObserver(&observer2);
-}
-
-} // namespace preferences
« no previous file with comments | « services/preferences/public/cpp/tests/BUILD.gn ('k') | services/preferences/public/interfaces/preferences.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698