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

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

Issue 11368098: Draft change to use base::Closure instead of PrefObserver in PrefChangeRegistrar. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Respond to review comments. 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
« no previous file with comments | « base/prefs/public/pref_change_registrar.cc ('k') | chrome/browser/api/prefs/pref_member.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "base/prefs/public/pref_observer.h"
7 #include "chrome/common/chrome_notification_types.h" 7 #include "chrome/common/chrome_notification_types.h"
8 #include "chrome/common/pref_names.h" 8 #include "chrome/common/pref_names.h"
9 #include "chrome/test/base/testing_pref_service.h" 9 #include "chrome/test/base/testing_pref_service.h"
10 #include "content/public/browser/notification_details.h" 10 #include "content/public/browser/notification_details.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 service_.reset(new MockPrefService()); 61 service_.reset(new MockPrefService());
62 observer_.reset(new MockPrefObserver()); 62 observer_.reset(new MockPrefObserver());
63 } 63 }
64 64
65 TEST_F(PrefChangeRegistrarTest, AddAndRemove) { 65 TEST_F(PrefChangeRegistrarTest, AddAndRemove) {
66 PrefChangeRegistrar registrar; 66 PrefChangeRegistrar registrar;
67 registrar.Init(service()); 67 registrar.Init(service());
68 68
69 // Test adding. 69 // Test adding.
70 EXPECT_CALL(*service(), 70 EXPECT_CALL(*service(),
71 AddPrefObserver(Eq(std::string("test.pref.1")), observer())); 71 AddPrefObserver(Eq(std::string("test.pref.1")), &registrar));
72 EXPECT_CALL(*service(), 72 EXPECT_CALL(*service(),
73 AddPrefObserver(Eq(std::string("test.pref.2")), observer())); 73 AddPrefObserver(Eq(std::string("test.pref.2")), &registrar));
74 registrar.Add("test.pref.1", observer()); 74 registrar.Add("test.pref.1", observer());
75 registrar.Add("test.pref.2", observer()); 75 registrar.Add("test.pref.2", observer());
76 EXPECT_FALSE(registrar.IsEmpty()); 76 EXPECT_FALSE(registrar.IsEmpty());
77 77
78 // Test removing. 78 // Test removing.
79 Mock::VerifyAndClearExpectations(service()); 79 Mock::VerifyAndClearExpectations(service());
80 EXPECT_CALL(*service(), 80 EXPECT_CALL(*service(),
81 RemovePrefObserver(Eq(std::string("test.pref.1")), observer())); 81 RemovePrefObserver(Eq(std::string("test.pref.1")), &registrar));
82 EXPECT_CALL(*service(), 82 EXPECT_CALL(*service(),
83 RemovePrefObserver(Eq(std::string("test.pref.2")), observer())); 83 RemovePrefObserver(Eq(std::string("test.pref.2")), &registrar));
84 registrar.Remove("test.pref.1", observer()); 84 registrar.Remove("test.pref.1");
85 registrar.Remove("test.pref.2", observer()); 85 registrar.Remove("test.pref.2");
86 EXPECT_TRUE(registrar.IsEmpty()); 86 EXPECT_TRUE(registrar.IsEmpty());
87 87
88 // Explicitly check the expectations now to make sure that the Removes 88 // Explicitly check the expectations now to make sure that the Removes
89 // worked (rather than the registrar destructor doing the work). 89 // worked (rather than the registrar destructor doing the work).
90 Mock::VerifyAndClearExpectations(service()); 90 Mock::VerifyAndClearExpectations(service());
91 } 91 }
92 92
93 TEST_F(PrefChangeRegistrarTest, AutoRemove) { 93 TEST_F(PrefChangeRegistrarTest, AutoRemove) {
94 PrefChangeRegistrar registrar; 94 PrefChangeRegistrar registrar;
95 registrar.Init(service()); 95 registrar.Init(service());
96 96
97 // Setup of auto-remove. 97 // Setup of auto-remove.
98 EXPECT_CALL(*service(), 98 EXPECT_CALL(*service(),
99 AddPrefObserver(Eq(std::string("test.pref.1")), observer())); 99 AddPrefObserver(Eq(std::string("test.pref.1")), &registrar));
100 registrar.Add("test.pref.1", observer()); 100 registrar.Add("test.pref.1", observer());
101 Mock::VerifyAndClearExpectations(service()); 101 Mock::VerifyAndClearExpectations(service());
102 EXPECT_FALSE(registrar.IsEmpty()); 102 EXPECT_FALSE(registrar.IsEmpty());
103 103
104 // Test auto-removing. 104 // Test auto-removing.
105 EXPECT_CALL(*service(), 105 EXPECT_CALL(*service(),
106 RemovePrefObserver(Eq(std::string("test.pref.1")), observer())); 106 RemovePrefObserver(Eq(std::string("test.pref.1")), &registrar));
107 } 107 }
108 108
109 TEST_F(PrefChangeRegistrarTest, RemoveAll) { 109 TEST_F(PrefChangeRegistrarTest, RemoveAll) {
110 PrefChangeRegistrar registrar; 110 PrefChangeRegistrar registrar;
111 registrar.Init(service()); 111 registrar.Init(service());
112 112
113 EXPECT_CALL(*service(), 113 EXPECT_CALL(*service(),
114 AddPrefObserver(Eq(std::string("test.pref.1")), observer())); 114 AddPrefObserver(Eq(std::string("test.pref.1")), &registrar));
115 EXPECT_CALL(*service(), 115 EXPECT_CALL(*service(),
116 AddPrefObserver(Eq(std::string("test.pref.2")), observer())); 116 AddPrefObserver(Eq(std::string("test.pref.2")), &registrar));
117 registrar.Add("test.pref.1", observer()); 117 registrar.Add("test.pref.1", observer());
118 registrar.Add("test.pref.2", observer()); 118 registrar.Add("test.pref.2", observer());
119 Mock::VerifyAndClearExpectations(service()); 119 Mock::VerifyAndClearExpectations(service());
120 120
121 EXPECT_CALL(*service(), 121 EXPECT_CALL(*service(),
122 RemovePrefObserver(Eq(std::string("test.pref.1")), observer())); 122 RemovePrefObserver(Eq(std::string("test.pref.1")), &registrar));
123 EXPECT_CALL(*service(), 123 EXPECT_CALL(*service(),
124 RemovePrefObserver(Eq(std::string("test.pref.2")), observer())); 124 RemovePrefObserver(Eq(std::string("test.pref.2")), &registrar));
125 registrar.RemoveAll(); 125 registrar.RemoveAll();
126 EXPECT_TRUE(registrar.IsEmpty()); 126 EXPECT_TRUE(registrar.IsEmpty());
127 127
128 // Explicitly check the expectations now to make sure that the RemoveAll 128 // Explicitly check the expectations now to make sure that the RemoveAll
129 // worked (rather than the registrar destructor doing the work). 129 // worked (rather than the registrar destructor doing the work).
130 Mock::VerifyAndClearExpectations(service()); 130 Mock::VerifyAndClearExpectations(service());
131 } 131 }
132 132
133 class ObserveSetOfPreferencesTest : public testing::Test { 133 class ObserveSetOfPreferencesTest : public testing::Test,
134 public PrefObserver {
134 public: 135 public:
135 virtual void SetUp() { 136 virtual void SetUp() {
136 pref_service_.reset(new TestingPrefService); 137 pref_service_.reset(new TestingPrefService);
137 pref_service_->RegisterStringPref(prefs::kHomePage, 138 pref_service_->RegisterStringPref(prefs::kHomePage,
138 "http://google.com", 139 "http://google.com",
139 PrefService::UNSYNCABLE_PREF); 140 PrefService::UNSYNCABLE_PREF);
140 pref_service_->RegisterBooleanPref(prefs::kHomePageIsNewTabPage, 141 pref_service_->RegisterBooleanPref(prefs::kHomePageIsNewTabPage,
141 false, 142 false,
142 PrefService::UNSYNCABLE_PREF); 143 PrefService::UNSYNCABLE_PREF);
143 pref_service_->RegisterStringPref(prefs::kApplicationLocale, 144 pref_service_->RegisterStringPref(prefs::kApplicationLocale,
144 "", 145 "",
145 PrefService::UNSYNCABLE_PREF); 146 PrefService::UNSYNCABLE_PREF);
146 } 147 }
147 148
148 PrefChangeRegistrar* CreatePrefChangeRegistrar( 149 PrefChangeRegistrar* CreatePrefChangeRegistrar(
149 PrefObserver* observer) { 150 PrefObserver* observer) {
151 if (!observer)
152 observer = this;
150 PrefChangeRegistrar* pref_set = new PrefChangeRegistrar(); 153 PrefChangeRegistrar* pref_set = new PrefChangeRegistrar();
151 pref_set->Init(pref_service_.get()); 154 pref_set->Init(pref_service_.get());
152 pref_set->Add(prefs::kHomePage, observer); 155 pref_set->Add(prefs::kHomePage, observer);
153 pref_set->Add(prefs::kHomePageIsNewTabPage, observer); 156 pref_set->Add(prefs::kHomePageIsNewTabPage, observer);
154 return pref_set; 157 return pref_set;
155 } 158 }
156 159
160 // PrefObserver (used to enable NULL as parameter to
161 // CreatePrefChangeRegistrar above).
162 virtual void OnPreferenceChanged(PrefServiceBase* service,
163 const std::string& pref_name) OVERRIDE {
164 }
165
157 scoped_ptr<TestingPrefService> pref_service_; 166 scoped_ptr<TestingPrefService> pref_service_;
158 }; 167 };
159 168
160 TEST_F(ObserveSetOfPreferencesTest, IsObserved) { 169 TEST_F(ObserveSetOfPreferencesTest, IsObserved) {
161 scoped_ptr<PrefChangeRegistrar> pref_set(CreatePrefChangeRegistrar(NULL)); 170 scoped_ptr<PrefChangeRegistrar> pref_set(CreatePrefChangeRegistrar(NULL));
162 EXPECT_TRUE(pref_set->IsObserved(prefs::kHomePage)); 171 EXPECT_TRUE(pref_set->IsObserved(prefs::kHomePage));
163 EXPECT_TRUE(pref_set->IsObserved(prefs::kHomePageIsNewTabPage)); 172 EXPECT_TRUE(pref_set->IsObserved(prefs::kHomePageIsNewTabPage));
164 EXPECT_FALSE(pref_set->IsObserved(prefs::kApplicationLocale)); 173 EXPECT_FALSE(pref_set->IsObserved(prefs::kApplicationLocale));
165 } 174 }
166 175
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 prefs::kHomePageIsNewTabPage)); 212 prefs::kHomePageIsNewTabPage));
204 pref_service_->SetUserPref(prefs::kHomePageIsNewTabPage, 213 pref_service_->SetUserPref(prefs::kHomePageIsNewTabPage,
205 Value::CreateBooleanValue(true)); 214 Value::CreateBooleanValue(true));
206 Mock::VerifyAndClearExpectations(&observer); 215 Mock::VerifyAndClearExpectations(&observer);
207 216
208 EXPECT_CALL(observer, OnPreferenceChanged(_, _)).Times(0); 217 EXPECT_CALL(observer, OnPreferenceChanged(_, _)).Times(0);
209 pref_service_->SetUserPref(prefs::kApplicationLocale, 218 pref_service_->SetUserPref(prefs::kApplicationLocale,
210 Value::CreateStringValue("en_US.utf8")); 219 Value::CreateStringValue("en_US.utf8"));
211 Mock::VerifyAndClearExpectations(&observer); 220 Mock::VerifyAndClearExpectations(&observer);
212 } 221 }
OLDNEW
« no previous file with comments | « base/prefs/public/pref_change_registrar.cc ('k') | chrome/browser/api/prefs/pref_member.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698