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

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

Issue 11667006: Create a list of policy changes before notifying observers (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix lint error/merge to ToT Created 8 years 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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 base::Value::CreateStringValue(value)); 59 base::Value::CreateStringValue(value));
60 policy_map->Set(kDiffLevelPolicy, level, scope, 60 policy_map->Set(kDiffLevelPolicy, level, scope,
61 base::Value::CreateStringValue(value)); 61 base::Value::CreateStringValue(value));
62 policy_map = &bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension); 62 policy_map = &bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension);
63 policy_map->Set(kSameLevelPolicy, POLICY_LEVEL_MANDATORY, 63 policy_map->Set(kSameLevelPolicy, POLICY_LEVEL_MANDATORY,
64 POLICY_SCOPE_USER, base::Value::CreateStringValue(value)); 64 POLICY_SCOPE_USER, base::Value::CreateStringValue(value));
65 policy_map->Set(kDiffLevelPolicy, level, scope, 65 policy_map->Set(kDiffLevelPolicy, level, scope,
66 base::Value::CreateStringValue(value)); 66 base::Value::CreateStringValue(value));
67 } 67 }
68 68
69 // Observer class that changes the policy in the passed provider when the
70 // callback is invoked.
71 class ChangePolicyObserver : public PolicyService::Observer {
Joao da Silva 2012/12/22 21:42:00 Suggestion: the MockPolicyServiceObserver class ab
Andrew T Wilson (Slow) 2013/01/04 15:54:48 Apparently we're trying to get rid of ACTION_P: ht
72 public:
73 explicit ChangePolicyObserver(MockConfigurationPolicyProvider* provider)
74 : provider_(provider) {}
75
76 virtual void OnPolicyUpdated(PolicyDomain domain,
77 const std::string& ns,
78 const PolicyMap& previous,
79 const PolicyMap& current) {
Joao da Silva 2012/12/22 21:42:00 OVERRIDE
Andrew T Wilson (Slow) 2013/01/04 15:54:48 Done.
80 PolicyMap new_policy;
81 new_policy.Set("foo", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
82 base::Value::CreateIntegerValue(14));
83 provider_->UpdateChromePolicy(new_policy);
84 }
85
86 private:
87 MockConfigurationPolicyProvider* provider_;
88 };
89
69 } // namespace 90 } // namespace
70 91
71 class PolicyServiceTest : public testing::Test { 92 class PolicyServiceTest : public testing::Test {
72 public: 93 public:
73 PolicyServiceTest() {} 94 PolicyServiceTest() {}
74 95
75 virtual void SetUp() OVERRIDE { 96 virtual void SetUp() OVERRIDE {
76 EXPECT_CALL(provider0_, IsInitializationComplete()) 97 EXPECT_CALL(provider0_, IsInitializationComplete())
77 .WillRepeatedly(Return(true)); 98 .WillRepeatedly(Return(true));
78 EXPECT_CALL(provider1_, IsInitializationComplete()) 99 EXPECT_CALL(provider1_, IsInitializationComplete())
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 PolicyEquals(&policy_map))); 289 PolicyEquals(&policy_map)));
269 provider0_.UpdatePolicy(bundle.Pass()); 290 provider0_.UpdatePolicy(bundle.Pass());
270 Mock::VerifyAndClearExpectations(&chrome_observer); 291 Mock::VerifyAndClearExpectations(&chrome_observer);
271 Mock::VerifyAndClearExpectations(&extension_observer); 292 Mock::VerifyAndClearExpectations(&extension_observer);
272 293
273 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &chrome_observer); 294 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &chrome_observer);
274 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS, 295 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS,
275 &extension_observer); 296 &extension_observer);
276 } 297 }
277 298
299 TEST_F(PolicyServiceTest, ObserverChangesPolicy) {
300 ChangePolicyObserver observer(&provider0_);
301 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &observer);
302 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
303 base::Value::CreateIntegerValue(123));
304 policy0_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
305 base::Value::CreateIntegerValue(1234));
306 // Should not crash.
307 provider0_.UpdateChromePolicy(policy0_);
308 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &observer);
309 }
310
278 TEST_F(PolicyServiceTest, Priorities) { 311 TEST_F(PolicyServiceTest, Priorities) {
279 PolicyMap expected; 312 PolicyMap expected;
280 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 313 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
281 base::Value::CreateIntegerValue(13)); 314 base::Value::CreateIntegerValue(13));
282 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 315 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
283 base::Value::CreateIntegerValue(0)); 316 base::Value::CreateIntegerValue(0));
284 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 317 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
285 base::Value::CreateIntegerValue(0)); 318 base::Value::CreateIntegerValue(0));
286 policy1_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 319 policy1_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
287 base::Value::CreateIntegerValue(1)); 320 base::Value::CreateIntegerValue(1));
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 // level/scope combination takes precedence, on every namespace. 495 // level/scope combination takes precedence, on every namespace.
463 expected.Set(kDiffLevelPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, 496 expected.Set(kDiffLevelPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
464 base::Value::CreateStringValue("bundle2")); 497 base::Value::CreateStringValue("bundle2"));
465 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_CHROME, "") 498 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_CHROME, "")
466 .Equals(expected)); 499 .Equals(expected));
467 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_EXTENSIONS, kExtension) 500 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_EXTENSIONS, kExtension)
468 .Equals(expected)); 501 .Equals(expected));
469 } 502 }
470 503
471 } // namespace policy 504 } // namespace policy
OLDNEW
« chrome/browser/policy/policy_service_impl.cc ('K') | « chrome/browser/policy/policy_service_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698