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

Side by Side Diff: chrome/browser/policy/policy_service_impl_unittest.cc

Issue 10805057: Modified PolicyService to register observers by domain only, instead of domain and component. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed nit Created 8 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/policy/policy_service_impl.h" 5 #include "chrome/browser/policy/policy_service_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 118
119 TEST_F(PolicyServiceTest, LoadsPoliciesBeforeProvidersRefresh) { 119 TEST_F(PolicyServiceTest, LoadsPoliciesBeforeProvidersRefresh) {
120 PolicyMap expected; 120 PolicyMap expected;
121 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 121 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
122 base::Value::CreateIntegerValue(13)); 122 base::Value::CreateIntegerValue(13));
123 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 123 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected));
124 } 124 }
125 125
126 TEST_F(PolicyServiceTest, NotifyObservers) { 126 TEST_F(PolicyServiceTest, NotifyObservers) {
127 MockPolicyServiceObserver observer; 127 MockPolicyServiceObserver observer;
128 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, "", &observer); 128 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &observer);
129 129
130 PolicyMap expectedPrevious; 130 PolicyMap expectedPrevious;
131 expectedPrevious.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 131 expectedPrevious.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
132 base::Value::CreateIntegerValue(13)); 132 base::Value::CreateIntegerValue(13));
133 133
134 PolicyMap expectedCurrent; 134 PolicyMap expectedCurrent;
135 expectedCurrent.CopyFrom(expectedPrevious); 135 expectedCurrent.CopyFrom(expectedPrevious);
136 expectedCurrent.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 136 expectedCurrent.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
137 base::Value::CreateIntegerValue(123)); 137 base::Value::CreateIntegerValue(123));
138 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 138 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 PolicyEquals(&expectedCurrent))); 183 PolicyEquals(&expectedCurrent)));
184 provider0_.UpdateChromePolicy(policy0_); 184 provider0_.UpdateChromePolicy(policy0_);
185 Mock::VerifyAndClearExpectations(&observer); 185 Mock::VerifyAndClearExpectations(&observer);
186 186
187 // No changes again. 187 // No changes again.
188 EXPECT_CALL(observer, OnPolicyUpdated(_, _, _, _)).Times(0); 188 EXPECT_CALL(observer, OnPolicyUpdated(_, _, _, _)).Times(0);
189 provider0_.UpdateChromePolicy(policy0_); 189 provider0_.UpdateChromePolicy(policy0_);
190 Mock::VerifyAndClearExpectations(&observer); 190 Mock::VerifyAndClearExpectations(&observer);
191 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expectedCurrent)); 191 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expectedCurrent));
192 192
193 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, "", &observer); 193 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &observer);
194 } 194 }
195 195
196 TEST_F(PolicyServiceTest, NotifyObserversInMultipleNamespaces) { 196 TEST_F(PolicyServiceTest, NotifyObserversInMultipleNamespaces) {
197 const std::string kExtension0("extension-0"); 197 const std::string kExtension0("extension-0");
198 const std::string kExtension1("extension-1"); 198 const std::string kExtension1("extension-1");
199 const std::string kExtension2("extension-2"); 199 const std::string kExtension2("extension-2");
200 MockPolicyServiceObserver chrome_observer; 200 MockPolicyServiceObserver chrome_observer;
201 MockPolicyServiceObserver extension0_observer; 201 MockPolicyServiceObserver extension_observer;
202 MockPolicyServiceObserver extension1_observer; 202 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &chrome_observer);
203 MockPolicyServiceObserver extension2_observer; 203 policy_service_->AddObserver(POLICY_DOMAIN_EXTENSIONS, &extension_observer);
204 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, "", &chrome_observer);
205 policy_service_->AddObserver(POLICY_DOMAIN_EXTENSIONS, kExtension0,
206 &extension0_observer);
207 policy_service_->AddObserver(POLICY_DOMAIN_EXTENSIONS, kExtension1,
208 &extension1_observer);
209 policy_service_->AddObserver(POLICY_DOMAIN_EXTENSIONS, kExtension2,
210 &extension2_observer);
211 204
212 PolicyMap previous_policy_map; 205 PolicyMap previous_policy_map;
213 previous_policy_map.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 206 previous_policy_map.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
214 base::Value::CreateIntegerValue(13)); 207 base::Value::CreateIntegerValue(13));
215 PolicyMap policy_map; 208 PolicyMap policy_map;
216 policy_map.CopyFrom(previous_policy_map); 209 policy_map.CopyFrom(previous_policy_map);
217 policy_map.Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 210 policy_map.Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
218 base::Value::CreateStringValue("value")); 211 base::Value::CreateStringValue("value"));
219 212
220 scoped_ptr<PolicyBundle> bundle(new PolicyBundle()); 213 scoped_ptr<PolicyBundle> bundle(new PolicyBundle());
221 // The initial setup includes a policy for chrome that is now changing. 214 // The initial setup includes a policy for chrome that is now changing.
222 bundle->Get(POLICY_DOMAIN_CHROME, "").CopyFrom(policy_map); 215 bundle->Get(POLICY_DOMAIN_CHROME, "").CopyFrom(policy_map);
223 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension0).CopyFrom(policy_map); 216 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension0).CopyFrom(policy_map);
224 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension1).CopyFrom(policy_map); 217 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension1).CopyFrom(policy_map);
225 218
226 const PolicyMap kEmptyPolicyMap; 219 const PolicyMap kEmptyPolicyMap;
227 EXPECT_CALL(chrome_observer, 220 EXPECT_CALL(chrome_observer,
228 OnPolicyUpdated(POLICY_DOMAIN_CHROME, "", 221 OnPolicyUpdated(POLICY_DOMAIN_CHROME, "",
229 PolicyEquals(&previous_policy_map), 222 PolicyEquals(&previous_policy_map),
230 PolicyEquals(&policy_map))); 223 PolicyEquals(&policy_map)));
231 EXPECT_CALL(extension0_observer, 224 EXPECT_CALL(extension_observer,
232 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension0, 225 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension0,
233 PolicyEquals(&kEmptyPolicyMap), 226 PolicyEquals(&kEmptyPolicyMap),
234 PolicyEquals(&policy_map))); 227 PolicyEquals(&policy_map)));
235 EXPECT_CALL(extension1_observer, 228 EXPECT_CALL(extension_observer,
236 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension1, 229 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension1,
237 PolicyEquals(&kEmptyPolicyMap), 230 PolicyEquals(&kEmptyPolicyMap),
238 PolicyEquals(&policy_map))); 231 PolicyEquals(&policy_map)));
239 EXPECT_CALL(extension2_observer, OnPolicyUpdated(_, _, _, _)).Times(0);
240 provider0_.UpdatePolicy(bundle.Pass()); 232 provider0_.UpdatePolicy(bundle.Pass());
241 Mock::VerifyAndClearExpectations(&chrome_observer); 233 Mock::VerifyAndClearExpectations(&chrome_observer);
242 Mock::VerifyAndClearExpectations(&extension0_observer); 234 Mock::VerifyAndClearExpectations(&extension_observer);
243 Mock::VerifyAndClearExpectations(&extension1_observer);
244 Mock::VerifyAndClearExpectations(&extension2_observer);
245 235
246 // Chrome policy stays the same, kExtension0 is gone, kExtension1 changes, 236 // Chrome policy stays the same, kExtension0 is gone, kExtension1 changes,
247 // and kExtension2 is new. 237 // and kExtension2 is new.
248 previous_policy_map.CopyFrom(policy_map); 238 previous_policy_map.CopyFrom(policy_map);
249 bundle.reset(new PolicyBundle()); 239 bundle.reset(new PolicyBundle());
250 bundle->Get(POLICY_DOMAIN_CHROME, "").CopyFrom(policy_map); 240 bundle->Get(POLICY_DOMAIN_CHROME, "").CopyFrom(policy_map);
251 policy_map.Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 241 policy_map.Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
252 base::Value::CreateStringValue("another value")); 242 base::Value::CreateStringValue("another value"));
253 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension1).CopyFrom(policy_map); 243 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension1).CopyFrom(policy_map);
254 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension2).CopyFrom(policy_map); 244 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension2).CopyFrom(policy_map);
255 245
256 EXPECT_CALL(chrome_observer, OnPolicyUpdated(_, _, _, _)).Times(0); 246 EXPECT_CALL(chrome_observer, OnPolicyUpdated(_, _, _, _)).Times(0);
257 EXPECT_CALL(extension0_observer, 247 EXPECT_CALL(extension_observer,
258 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension0, 248 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension0,
259 PolicyEquals(&previous_policy_map), 249 PolicyEquals(&previous_policy_map),
260 PolicyEquals(&kEmptyPolicyMap))); 250 PolicyEquals(&kEmptyPolicyMap)));
261 EXPECT_CALL(extension1_observer, 251 EXPECT_CALL(extension_observer,
262 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension1, 252 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension1,
263 PolicyEquals(&previous_policy_map), 253 PolicyEquals(&previous_policy_map),
264 PolicyEquals(&policy_map))); 254 PolicyEquals(&policy_map)));
265 EXPECT_CALL(extension2_observer, 255 EXPECT_CALL(extension_observer,
266 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension2, 256 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension2,
267 PolicyEquals(&kEmptyPolicyMap), 257 PolicyEquals(&kEmptyPolicyMap),
268 PolicyEquals(&policy_map))); 258 PolicyEquals(&policy_map)));
269 provider0_.UpdatePolicy(bundle.Pass()); 259 provider0_.UpdatePolicy(bundle.Pass());
270 Mock::VerifyAndClearExpectations(&chrome_observer); 260 Mock::VerifyAndClearExpectations(&chrome_observer);
271 Mock::VerifyAndClearExpectations(&extension0_observer); 261 Mock::VerifyAndClearExpectations(&extension_observer);
272 Mock::VerifyAndClearExpectations(&extension1_observer);
273 Mock::VerifyAndClearExpectations(&extension2_observer);
274 262
275 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, "", &chrome_observer); 263 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &chrome_observer);
276 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS, kExtension0, 264 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS,
277 &extension0_observer); 265 &extension_observer);
278 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS, kExtension1,
279 &extension1_observer);
280 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS, kExtension2,
281 &extension2_observer);
282 } 266 }
283 267
284 TEST_F(PolicyServiceTest, Priorities) { 268 TEST_F(PolicyServiceTest, Priorities) {
285 PolicyMap expected; 269 PolicyMap expected;
286 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 270 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
287 base::Value::CreateIntegerValue(13)); 271 base::Value::CreateIntegerValue(13));
288 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 272 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
289 base::Value::CreateIntegerValue(0)); 273 base::Value::CreateIntegerValue(0));
290 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 274 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
291 base::Value::CreateIntegerValue(0)); 275 base::Value::CreateIntegerValue(0));
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 // level/scope combination takes precedence, on every namespace. 452 // level/scope combination takes precedence, on every namespace.
469 expected.Set(kDiffLevelPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, 453 expected.Set(kDiffLevelPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
470 base::Value::CreateStringValue("bundle2")); 454 base::Value::CreateStringValue("bundle2"));
471 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_CHROME, "") 455 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_CHROME, "")
472 .Equals(expected)); 456 .Equals(expected));
473 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_EXTENSIONS, kExtension) 457 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_EXTENSIONS, kExtension)
474 .Equals(expected)); 458 .Equals(expected));
475 } 459 }
476 460
477 } // namespace policy 461 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/policy/policy_service_impl.cc ('k') | chrome/browser/policy/policy_service_stub.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698