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

Side by Side Diff: services/preferences/public/cpp/tests/pref_observer_store_unittest.cc

Issue 2635093002: Switch Preferences to use Factory (Closed)
Patch Set: Missed test Created 3 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "services/preferences/public/cpp/pref_observer_store.h" 5 #include "services/preferences/public/cpp/pref_observer_store.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
11 #include "base/values.h" 11 #include "base/values.h"
12 #include "components/prefs/pref_store_observer_mock.h" 12 #include "components/prefs/pref_store_observer_mock.h"
13 #include "services/preferences/public/interfaces/preferences.mojom.h" 13 #include "services/preferences/public/interfaces/preferences.mojom.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 namespace { 16 namespace {
17 17
18 // Test implmentation of prefs::mojom::PreferenceManager which simply tracks 18 // Test implmentation of prefs::mojom::PreferenceManager which simply tracks
19 // calls. Allows for testing to be done in process, without mojo IPC. 19 // calls. Allows for testing to be done in process, without mojo IPC.
20 class TestPreferenceManager : public prefs::mojom::PreferencesManager { 20 class TestPreferenceManager : public prefs::mojom::PreferencesManager {
21 public: 21 public:
22 TestPreferenceManager( 22 TestPreferenceManager(
23 mojo::InterfaceRequest<prefs::mojom::PreferencesManager> request) 23 mojo::InterfaceRequest<prefs::mojom::PreferencesManager> request)
24 : add_observer_called_(false), 24 : set_preferences_called_(false), binding_(this, std::move(request)) {}
25 set_preferences_called_(false),
26 binding_(this, std::move(request)) {}
27 ~TestPreferenceManager() override {} 25 ~TestPreferenceManager() override {}
28 26
29 bool add_observer_called() { return add_observer_called_; }
30 const std::set<std::string>& last_preference_set() { 27 const std::set<std::string>& last_preference_set() {
31 return last_preference_set_; 28 return last_preference_set_;
32 } 29 }
33 bool set_preferences_called() { return set_preferences_called_; } 30 bool set_preferences_called() { return set_preferences_called_; }
34 31
35 // prefs::mojom::TestPreferenceManager: 32 // prefs::mojom::TestPreferenceManager:
36 void AddObserver(prefs::mojom::PreferencesObserverPtr client) override;
37 void SetPreferences( 33 void SetPreferences(
38 std::unique_ptr<base::DictionaryValue> preferences) override; 34 std::unique_ptr<base::DictionaryValue> preferences) override;
39 void Subscribe(const std::vector<std::string>& preferences) override; 35 void Subscribe(const std::vector<std::string>& preferences) override;
40 36
41 private: 37 private:
42 bool add_observer_called_;
43 std::set<std::string> last_preference_set_; 38 std::set<std::string> last_preference_set_;
44 bool set_preferences_called_; 39 bool set_preferences_called_;
45 mojo::Binding<PreferencesManager> binding_; 40 mojo::Binding<prefs::mojom::PreferencesManager> binding_;
46 41
47 DISALLOW_COPY_AND_ASSIGN(TestPreferenceManager); 42 DISALLOW_COPY_AND_ASSIGN(TestPreferenceManager);
48 }; 43 };
49 44
50 void TestPreferenceManager::AddObserver(
51 prefs::mojom::PreferencesObserverPtr client) {
52 add_observer_called_ = true;
53 }
54
55 void TestPreferenceManager::SetPreferences( 45 void TestPreferenceManager::SetPreferences(
56 std::unique_ptr<base::DictionaryValue> preferences) { 46 std::unique_ptr<base::DictionaryValue> preferences) {
57 set_preferences_called_ = true; 47 set_preferences_called_ = true;
58 } 48 }
59 49
60 void TestPreferenceManager::Subscribe( 50 void TestPreferenceManager::Subscribe(
61 const std::vector<std::string>& preferences) { 51 const std::vector<std::string>& preferences) {
62 last_preference_set_.clear(); 52 last_preference_set_.clear();
63 last_preference_set_.insert(preferences.begin(), preferences.end()); 53 last_preference_set_.insert(preferences.begin(), preferences.end());
64 } 54 }
65 55
56 // Test implementation of prefs::mojom::PreferencesFactory which simply creates
57 // the TestPreferenceManager used for testing.
58 class TestPreferenceFactory : public prefs::mojom::PreferencesFactory {
59 public:
60 TestPreferenceFactory(
61 mojo::InterfaceRequest<prefs::mojom::PreferencesFactory> request)
62 : binding_(this, std::move(request)) {}
63 ~TestPreferenceFactory() override {}
64
65 TestPreferenceManager* manager() { return manager_.get(); }
66
67 void Create(prefs::mojom::PreferencesObserverPtr observer,
68 prefs::mojom::PreferencesManagerRequest manager) override;
69
70 private:
71 mojo::Binding<prefs::mojom::PreferencesFactory> binding_;
72 std::unique_ptr<TestPreferenceManager> manager_;
73
74 DISALLOW_COPY_AND_ASSIGN(TestPreferenceFactory);
75 };
76
77 void TestPreferenceFactory::Create(
78 prefs::mojom::PreferencesObserverPtr observer,
79 prefs::mojom::PreferencesManagerRequest manager) {
80 manager_.reset(new TestPreferenceManager(std::move(manager)));
81 }
82
66 } // namespace 83 } // namespace
67 84
68 namespace preferences { 85 namespace preferences {
69 86
70 class PrefObserverStoreTest : public testing::Test { 87 class PrefObserverStoreTest : public testing::Test {
71 public: 88 public:
72 PrefObserverStoreTest() {} 89 PrefObserverStoreTest() {}
73 ~PrefObserverStoreTest() override {} 90 ~PrefObserverStoreTest() override {}
74 91
75 TestPreferenceManager* manager() { return manager_.get(); } 92 TestPreferenceManager* manager() { return factory_->manager(); }
76 PrefStoreObserverMock* observer() { return &observer_; } 93 PrefStoreObserverMock* observer() { return &observer_; }
77 PrefObserverStore* store() { return store_.get(); } 94 PrefObserverStore* store() { return store_.get(); }
78 95
79 bool Initialized() { return store_->initialized_; } 96 bool Initialized() { return store_->initialized_; }
80 void OnPreferencesChanged(const base::DictionaryValue& preferences) { 97 void OnPreferencesChanged(const base::DictionaryValue& preferences) {
81 store_->OnPreferencesChanged(preferences.CreateDeepCopy()); 98 store_->OnPreferencesChanged(preferences.CreateDeepCopy());
82 } 99 }
83 100
84 // testing::Test: 101 // testing::Test:
85 void SetUp() override; 102 void SetUp() override;
86 void TearDown() override; 103 void TearDown() override;
87 104
88 private: 105 private:
89 scoped_refptr<PrefObserverStore> store_; 106 scoped_refptr<PrefObserverStore> store_;
90 prefs::mojom::PreferencesManagerPtr proxy_; 107 prefs::mojom::PreferencesFactoryPtr factory_proxy_;
91 std::unique_ptr<TestPreferenceManager> manager_; 108 std::unique_ptr<TestPreferenceFactory> factory_;
92 PrefStoreObserverMock observer_; 109 PrefStoreObserverMock observer_;
93 // Required by mojo binding code within PrefObserverStore. 110 // Required by mojo binding code within PrefObserverStore.
94 base::MessageLoop message_loop_; 111 base::MessageLoop message_loop_;
95 112
96 DISALLOW_COPY_AND_ASSIGN(PrefObserverStoreTest); 113 DISALLOW_COPY_AND_ASSIGN(PrefObserverStoreTest);
97 }; 114 };
98 115
99 void PrefObserverStoreTest::SetUp() { 116 void PrefObserverStoreTest::SetUp() {
100 manager_.reset(new TestPreferenceManager(mojo::MakeRequest(&proxy_))); 117 factory_.reset(new TestPreferenceFactory(mojo::MakeRequest(&factory_proxy_)));
101 store_ = new PrefObserverStore(std::move(proxy_)); 118 store_ = new PrefObserverStore(std::move(factory_proxy_));
119 base::RunLoop().RunUntilIdle();
102 store_->AddObserver(&observer_); 120 store_->AddObserver(&observer_);
103 } 121 }
104 122
105 void PrefObserverStoreTest::TearDown() { 123 void PrefObserverStoreTest::TearDown() {
106 store_->RemoveObserver(&observer_); 124 store_->RemoveObserver(&observer_);
107 } 125 }
108 126
109 // Tests that observers are notified upon the completion of initialization, and 127 // Tests that observers are notified upon the completion of initialization, and
110 // that values become available. 128 // that values become available.
111 TEST_F(PrefObserverStoreTest, Initialization) { 129 TEST_F(PrefObserverStoreTest, Initialization) {
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 EXPECT_TRUE(observer2.initialized); 401 EXPECT_TRUE(observer2.initialized);
384 EXPECT_TRUE(observer()->initialization_success); 402 EXPECT_TRUE(observer()->initialization_success);
385 EXPECT_TRUE(observer2.initialization_success); 403 EXPECT_TRUE(observer2.initialization_success);
386 observer()->VerifyAndResetChangedKey(key); 404 observer()->VerifyAndResetChangedKey(key);
387 observer2.VerifyAndResetChangedKey(key); 405 observer2.VerifyAndResetChangedKey(key);
388 406
389 store()->RemoveObserver(&observer2); 407 store()->RemoveObserver(&observer2);
390 } 408 }
391 409
392 } // namespace preferences 410 } // namespace preferences
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698