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

Side by Side Diff: base/prefs/public/pref_change_registrar_unittest.cc

Issue 11345008: Remove content::NotificationObserver dependency from most Prefs code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "base/prefs/public/pref_change_registrar.h" 5 #include "base/prefs/public/pref_change_registrar.h"
6 #include "base/prefs/public/pref_observer.h"
6 #include "chrome/common/chrome_notification_types.h" 7 #include "chrome/common/chrome_notification_types.h"
7 #include "chrome/common/pref_names.h" 8 #include "chrome/common/pref_names.h"
8 #include "chrome/test/base/testing_pref_service.h" 9 #include "chrome/test/base/testing_pref_service.h"
9 #include "content/public/browser/notification_details.h" 10 #include "content/public/browser/notification_details.h"
10 #include "content/public/browser/notification_source.h" 11 #include "content/public/browser/notification_source.h"
11 #include "content/public/browser/notification_types.h" 12 #include "content/public/browser/notification_types.h"
12 #include "content/public/test/mock_notification_observer.h" 13 #include "content/public/test/mock_notification_observer.h"
13 #include "testing/gmock/include/gmock/gmock.h" 14 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
15 16
16 using testing::Mock; 17 using testing::Mock;
17 using testing::Eq; 18 using testing::Eq;
18 19
19 namespace { 20 namespace {
20 21
22 // TODO(joi): Use PrefObserverMock once it moves to base/prefs/.
23 class MockPrefObserver : public PrefObserver {
24 public:
25 virtual ~MockPrefObserver() {}
26
27 MOCK_METHOD2(OnPreferenceChanged, void(PrefServiceBase*, const std::string&));
28 };
29
21 // A mock provider that allows us to capture pref observer changes. 30 // A mock provider that allows us to capture pref observer changes.
22 class MockPrefService : public TestingPrefService { 31 class MockPrefService : public TestingPrefService {
23 public: 32 public:
24 MockPrefService() {} 33 MockPrefService() {}
25 virtual ~MockPrefService() {} 34 virtual ~MockPrefService() {}
26 35
27 MOCK_METHOD2(AddPrefObserver, 36 MOCK_METHOD2(AddPrefObserver,
28 void(const char*, content::NotificationObserver*)); 37 void(const char*, PrefObserver*));
29 MOCK_METHOD2(RemovePrefObserver, 38 MOCK_METHOD2(RemovePrefObserver,
30 void(const char*, content::NotificationObserver*)); 39 void(const char*, PrefObserver*));
31 }; 40 };
32 41
33 } // namespace 42 } // namespace
34 43
35 class PrefChangeRegistrarTest : public testing::Test { 44 class PrefChangeRegistrarTest : public testing::Test {
36 public: 45 public:
37 PrefChangeRegistrarTest() {} 46 PrefChangeRegistrarTest() {}
38 virtual ~PrefChangeRegistrarTest() {} 47 virtual ~PrefChangeRegistrarTest() {}
39 48
40 protected: 49 protected:
41 virtual void SetUp(); 50 virtual void SetUp();
42 51
43 content::NotificationObserver* observer() const { return observer_.get(); } 52 PrefObserver* observer() const { return observer_.get(); }
44 MockPrefService* service() const { return service_.get(); } 53 MockPrefService* service() const { return service_.get(); }
45 54
46 private: 55 private:
47 scoped_ptr<MockPrefService> service_; 56 scoped_ptr<MockPrefService> service_;
48 scoped_ptr<content::MockNotificationObserver> observer_; 57 scoped_ptr<MockPrefObserver> observer_;
49 }; 58 };
50 59
51 void PrefChangeRegistrarTest::SetUp() { 60 void PrefChangeRegistrarTest::SetUp() {
52 service_.reset(new MockPrefService()); 61 service_.reset(new MockPrefService());
53 observer_.reset(new content::MockNotificationObserver()); 62 observer_.reset(new MockPrefObserver());
54 } 63 }
55 64
56 TEST_F(PrefChangeRegistrarTest, AddAndRemove) { 65 TEST_F(PrefChangeRegistrarTest, AddAndRemove) {
57 PrefChangeRegistrar registrar; 66 PrefChangeRegistrar registrar;
58 registrar.Init(service()); 67 registrar.Init(service());
59 68
60 // Test adding. 69 // Test adding.
61 EXPECT_CALL(*service(), 70 EXPECT_CALL(*service(),
62 AddPrefObserver(Eq(std::string("test.pref.1")), observer())); 71 AddPrefObserver(Eq(std::string("test.pref.1")), observer()));
63 EXPECT_CALL(*service(), 72 EXPECT_CALL(*service(),
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 PrefService::UNSYNCABLE_PREF); 139 PrefService::UNSYNCABLE_PREF);
131 pref_service_->RegisterBooleanPref(prefs::kHomePageIsNewTabPage, 140 pref_service_->RegisterBooleanPref(prefs::kHomePageIsNewTabPage,
132 false, 141 false,
133 PrefService::UNSYNCABLE_PREF); 142 PrefService::UNSYNCABLE_PREF);
134 pref_service_->RegisterStringPref(prefs::kApplicationLocale, 143 pref_service_->RegisterStringPref(prefs::kApplicationLocale,
135 "", 144 "",
136 PrefService::UNSYNCABLE_PREF); 145 PrefService::UNSYNCABLE_PREF);
137 } 146 }
138 147
139 PrefChangeRegistrar* CreatePrefChangeRegistrar( 148 PrefChangeRegistrar* CreatePrefChangeRegistrar(
140 content::NotificationObserver* observer) { 149 PrefObserver* observer) {
141 PrefChangeRegistrar* pref_set = new PrefChangeRegistrar(); 150 PrefChangeRegistrar* pref_set = new PrefChangeRegistrar();
142 pref_set->Init(pref_service_.get()); 151 pref_set->Init(pref_service_.get());
143 pref_set->Add(prefs::kHomePage, observer); 152 pref_set->Add(prefs::kHomePage, observer);
144 pref_set->Add(prefs::kHomePageIsNewTabPage, observer); 153 pref_set->Add(prefs::kHomePageIsNewTabPage, observer);
145 return pref_set; 154 return pref_set;
146 } 155 }
147 156
148 scoped_ptr<TestingPrefService> pref_service_; 157 scoped_ptr<TestingPrefService> pref_service_;
149 }; 158 };
150 159
(...skipping 22 matching lines...) Expand all
173 MATCHER_P(PrefNameDetails, name, "details references named preference") { 182 MATCHER_P(PrefNameDetails, name, "details references named preference") {
174 std::string* pstr = 183 std::string* pstr =
175 reinterpret_cast<const content::Details<std::string>&>(arg).ptr(); 184 reinterpret_cast<const content::Details<std::string>&>(arg).ptr();
176 return pstr && *pstr == name; 185 return pstr && *pstr == name;
177 } 186 }
178 187
179 TEST_F(ObserveSetOfPreferencesTest, Observe) { 188 TEST_F(ObserveSetOfPreferencesTest, Observe) {
180 using testing::_; 189 using testing::_;
181 using testing::Mock; 190 using testing::Mock;
182 191
183 content::MockNotificationObserver observer; 192 MockPrefObserver observer;
184 scoped_ptr<PrefChangeRegistrar> pref_set( 193 scoped_ptr<PrefChangeRegistrar> pref_set(
185 CreatePrefChangeRegistrar(&observer)); 194 CreatePrefChangeRegistrar(&observer));
186 195
187 EXPECT_CALL(observer, 196 EXPECT_CALL(observer, OnPreferenceChanged(pref_service_.get(),
188 Observe(int(chrome::NOTIFICATION_PREF_CHANGED), 197 prefs::kHomePage));
189 content::Source<PrefService>(pref_service_.get()),
190 PrefNameDetails(prefs::kHomePage)));
191 pref_service_->SetUserPref(prefs::kHomePage, 198 pref_service_->SetUserPref(prefs::kHomePage,
192 Value::CreateStringValue("http://crbug.com")); 199 Value::CreateStringValue("http://crbug.com"));
193 Mock::VerifyAndClearExpectations(&observer); 200 Mock::VerifyAndClearExpectations(&observer);
194 201
195 EXPECT_CALL(observer, 202 EXPECT_CALL(observer, OnPreferenceChanged(pref_service_.get(),
196 Observe(int(chrome::NOTIFICATION_PREF_CHANGED), 203 prefs::kHomePageIsNewTabPage));
197 content::Source<PrefService>(pref_service_.get()),
198 PrefNameDetails(prefs::kHomePageIsNewTabPage)));
199 pref_service_->SetUserPref(prefs::kHomePageIsNewTabPage, 204 pref_service_->SetUserPref(prefs::kHomePageIsNewTabPage,
200 Value::CreateBooleanValue(true)); 205 Value::CreateBooleanValue(true));
201 Mock::VerifyAndClearExpectations(&observer); 206 Mock::VerifyAndClearExpectations(&observer);
202 207
203 EXPECT_CALL(observer, Observe(_, _, _)).Times(0); 208 EXPECT_CALL(observer, OnPreferenceChanged(_, _)).Times(0);
204 pref_service_->SetUserPref(prefs::kApplicationLocale, 209 pref_service_->SetUserPref(prefs::kApplicationLocale,
205 Value::CreateStringValue("en_US.utf8")); 210 Value::CreateStringValue("en_US.utf8"));
206 Mock::VerifyAndClearExpectations(&observer); 211 Mock::VerifyAndClearExpectations(&observer);
207 } 212 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698