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

Side by Side Diff: components/policy/core/common/policy_service_impl_unittest.cc

Issue 1350913006: Revert of Add source column to chrome://policy showing the origins of policies. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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 (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 "components/policy/core/common/policy_service_impl.h" 5 #include "components/policy/core/common/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/callback.h" 9 #include "base/callback.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/run_loop.h" 11 #include "base/run_loop.h"
12 #include "base/values.h" 12 #include "base/values.h"
13 #include "components/policy/core/common/external_data_fetcher.h" 13 #include "components/policy/core/common/external_data_fetcher.h"
14 #include "components/policy/core/common/mock_configuration_policy_provider.h" 14 #include "components/policy/core/common/mock_configuration_policy_provider.h"
15 #include "components/policy/core/common/mock_policy_service.h" 15 #include "components/policy/core/common/mock_policy_service.h"
16 #include "components/policy/core/common/policy_types.h"
17 #include "policy/policy_constants.h" 16 #include "policy/policy_constants.h"
18 #include "testing/gmock/include/gmock/gmock.h" 17 #include "testing/gmock/include/gmock/gmock.h"
19 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
20 19
21 using ::testing::AnyNumber; 20 using ::testing::AnyNumber;
22 using ::testing::Mock; 21 using ::testing::Mock;
23 using ::testing::Return; 22 using ::testing::Return;
24 using ::testing::_; 23 using ::testing::_;
25 24
26 namespace policy { 25 namespace policy {
(...skipping 19 matching lines...) Expand all
46 // Helper that fills |bundle| with test policies. 45 // Helper that fills |bundle| with test policies.
47 void AddTestPolicies(PolicyBundle* bundle, 46 void AddTestPolicies(PolicyBundle* bundle,
48 const char* value, 47 const char* value,
49 PolicyLevel level, 48 PolicyLevel level,
50 PolicyScope scope) { 49 PolicyScope scope) {
51 PolicyMap* policy_map = 50 PolicyMap* policy_map =
52 &bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())); 51 &bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()));
53 policy_map->Set(kSameLevelPolicy, 52 policy_map->Set(kSameLevelPolicy,
54 POLICY_LEVEL_MANDATORY, 53 POLICY_LEVEL_MANDATORY,
55 POLICY_SCOPE_USER, 54 POLICY_SCOPE_USER,
56 POLICY_SOURCE_ENTERPRISE_DEFAULT,
57 new base::StringValue(value), 55 new base::StringValue(value),
58 NULL); 56 NULL);
59 policy_map->Set( 57 policy_map->Set(
60 kDiffLevelPolicy, level, scope, POLICY_SOURCE_PLATFORM, 58 kDiffLevelPolicy, level, scope, new base::StringValue(value), NULL);
61 new base::StringValue(value), nullptr);
62 policy_map = 59 policy_map =
63 &bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension)); 60 &bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension));
64 policy_map->Set(kSameLevelPolicy, 61 policy_map->Set(kSameLevelPolicy,
65 POLICY_LEVEL_MANDATORY, 62 POLICY_LEVEL_MANDATORY,
66 POLICY_SCOPE_USER, 63 POLICY_SCOPE_USER,
67 POLICY_SOURCE_ENTERPRISE_DEFAULT,
68 new base::StringValue(value), 64 new base::StringValue(value),
69 NULL); 65 NULL);
70 policy_map->Set( 66 policy_map->Set(
71 kDiffLevelPolicy, level, scope, POLICY_SOURCE_PLATFORM, 67 kDiffLevelPolicy, level, scope, new base::StringValue(value), NULL);
72 new base::StringValue(value), nullptr);
73 } 68 }
74 69
75 // Observer class that changes the policy in the passed provider when the 70 // Observer class that changes the policy in the passed provider when the
76 // callback is invoked. 71 // callback is invoked.
77 class ChangePolicyObserver : public PolicyService::Observer { 72 class ChangePolicyObserver : public PolicyService::Observer {
78 public: 73 public:
79 explicit ChangePolicyObserver(MockConfigurationPolicyProvider* provider) 74 explicit ChangePolicyObserver(MockConfigurationPolicyProvider* provider)
80 : provider_(provider), 75 : provider_(provider),
81 observer_invoked_(false) {} 76 observer_invoked_(false) {}
82 77
83 void OnPolicyUpdated(const PolicyNamespace&, 78 void OnPolicyUpdated(const PolicyNamespace&,
84 const PolicyMap& previous, 79 const PolicyMap& previous,
85 const PolicyMap& current) override { 80 const PolicyMap& current) override {
86 PolicyMap new_policy; 81 PolicyMap new_policy;
87 new_policy.Set("foo", 82 new_policy.Set("foo",
88 POLICY_LEVEL_MANDATORY, 83 POLICY_LEVEL_MANDATORY,
89 POLICY_SCOPE_USER, 84 POLICY_SCOPE_USER,
90 POLICY_SOURCE_CLOUD,
91 new base::FundamentalValue(14), 85 new base::FundamentalValue(14),
92 NULL); 86 NULL);
93 provider_->UpdateChromePolicy(new_policy); 87 provider_->UpdateChromePolicy(new_policy);
94 observer_invoked_ = true; 88 observer_invoked_ = true;
95 } 89 }
96 90
97 bool observer_invoked() const { return observer_invoked_; } 91 bool observer_invoked() const { return observer_invoked_; }
98 92
99 private: 93 private:
100 MockConfigurationPolicyProvider* provider_; 94 MockConfigurationPolicyProvider* provider_;
(...skipping 13 matching lines...) Expand all
114 EXPECT_CALL(provider2_, IsInitializationComplete(_)) 108 EXPECT_CALL(provider2_, IsInitializationComplete(_))
115 .WillRepeatedly(Return(true)); 109 .WillRepeatedly(Return(true));
116 110
117 provider0_.Init(); 111 provider0_.Init();
118 provider1_.Init(); 112 provider1_.Init();
119 provider2_.Init(); 113 provider2_.Init();
120 114
121 policy0_.Set("pre", 115 policy0_.Set("pre",
122 POLICY_LEVEL_MANDATORY, 116 POLICY_LEVEL_MANDATORY,
123 POLICY_SCOPE_USER, 117 POLICY_SCOPE_USER,
124 POLICY_SOURCE_ENTERPRISE_DEFAULT,
125 new base::FundamentalValue(13), 118 new base::FundamentalValue(13),
126 NULL); 119 NULL);
127 provider0_.UpdateChromePolicy(policy0_); 120 provider0_.UpdateChromePolicy(policy0_);
128 121
129 PolicyServiceImpl::Providers providers; 122 PolicyServiceImpl::Providers providers;
130 providers.push_back(&provider0_); 123 providers.push_back(&provider0_);
131 providers.push_back(&provider1_); 124 providers.push_back(&provider1_);
132 providers.push_back(&provider2_); 125 providers.push_back(&provider2_);
133 policy_service_.reset(new PolicyServiceImpl(providers)); 126 policy_service_.reset(new PolicyServiceImpl(providers));
134 } 127 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 160
168 private: 161 private:
169 DISALLOW_COPY_AND_ASSIGN(PolicyServiceTest); 162 DISALLOW_COPY_AND_ASSIGN(PolicyServiceTest);
170 }; 163 };
171 164
172 TEST_F(PolicyServiceTest, LoadsPoliciesBeforeProvidersRefresh) { 165 TEST_F(PolicyServiceTest, LoadsPoliciesBeforeProvidersRefresh) {
173 PolicyMap expected; 166 PolicyMap expected;
174 expected.Set("pre", 167 expected.Set("pre",
175 POLICY_LEVEL_MANDATORY, 168 POLICY_LEVEL_MANDATORY,
176 POLICY_SCOPE_USER, 169 POLICY_SCOPE_USER,
177 POLICY_SOURCE_ENTERPRISE_DEFAULT,
178 new base::FundamentalValue(13), 170 new base::FundamentalValue(13),
179 NULL); 171 NULL);
180 EXPECT_TRUE(VerifyPolicies( 172 EXPECT_TRUE(VerifyPolicies(
181 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); 173 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected));
182 } 174 }
183 175
184 TEST_F(PolicyServiceTest, NotifyObservers) { 176 TEST_F(PolicyServiceTest, NotifyObservers) {
185 MockPolicyServiceObserver observer; 177 MockPolicyServiceObserver observer;
186 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &observer); 178 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &observer);
187 179
188 PolicyMap expectedPrevious; 180 PolicyMap expectedPrevious;
189 expectedPrevious.Set("pre", 181 expectedPrevious.Set("pre",
190 POLICY_LEVEL_MANDATORY, 182 POLICY_LEVEL_MANDATORY,
191 POLICY_SCOPE_USER, 183 POLICY_SCOPE_USER,
192 POLICY_SOURCE_ENTERPRISE_DEFAULT,
193 new base::FundamentalValue(13), 184 new base::FundamentalValue(13),
194 NULL); 185 NULL);
195 186
196 PolicyMap expectedCurrent; 187 PolicyMap expectedCurrent;
197 expectedCurrent.CopyFrom(expectedPrevious); 188 expectedCurrent.CopyFrom(expectedPrevious);
198 expectedCurrent.Set("aaa", 189 expectedCurrent.Set("aaa",
199 POLICY_LEVEL_MANDATORY, 190 POLICY_LEVEL_MANDATORY,
200 POLICY_SCOPE_USER, 191 POLICY_SCOPE_USER,
201 POLICY_SOURCE_CLOUD,
202 new base::FundamentalValue(123), 192 new base::FundamentalValue(123),
203 NULL); 193 NULL);
204 policy0_.Set("aaa", 194 policy0_.Set("aaa",
205 POLICY_LEVEL_MANDATORY, 195 POLICY_LEVEL_MANDATORY,
206 POLICY_SCOPE_USER, 196 POLICY_SCOPE_USER,
207 POLICY_SOURCE_CLOUD,
208 new base::FundamentalValue(123), 197 new base::FundamentalValue(123),
209 NULL); 198 NULL);
210 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME, 199 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME,
211 std::string()), 200 std::string()),
212 PolicyEquals(&expectedPrevious), 201 PolicyEquals(&expectedPrevious),
213 PolicyEquals(&expectedCurrent))); 202 PolicyEquals(&expectedCurrent)));
214 provider0_.UpdateChromePolicy(policy0_); 203 provider0_.UpdateChromePolicy(policy0_);
215 Mock::VerifyAndClearExpectations(&observer); 204 Mock::VerifyAndClearExpectations(&observer);
216 205
217 // No changes. 206 // No changes.
218 EXPECT_CALL(observer, OnPolicyUpdated(_, _, _)).Times(0); 207 EXPECT_CALL(observer, OnPolicyUpdated(_, _, _)).Times(0);
219 provider0_.UpdateChromePolicy(policy0_); 208 provider0_.UpdateChromePolicy(policy0_);
220 Mock::VerifyAndClearExpectations(&observer); 209 Mock::VerifyAndClearExpectations(&observer);
221 EXPECT_TRUE(VerifyPolicies( 210 EXPECT_TRUE(VerifyPolicies(
222 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expectedCurrent)); 211 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expectedCurrent));
223 212
224 // New policy. 213 // New policy.
225 expectedPrevious.CopyFrom(expectedCurrent); 214 expectedPrevious.CopyFrom(expectedCurrent);
226 expectedCurrent.Set("bbb", 215 expectedCurrent.Set("bbb",
227 POLICY_LEVEL_MANDATORY, 216 POLICY_LEVEL_MANDATORY,
228 POLICY_SCOPE_USER, 217 POLICY_SCOPE_USER,
229 POLICY_SOURCE_CLOUD,
230 new base::FundamentalValue(456), 218 new base::FundamentalValue(456),
231 NULL); 219 NULL);
232 policy0_.Set("bbb", 220 policy0_.Set("bbb",
233 POLICY_LEVEL_MANDATORY, 221 POLICY_LEVEL_MANDATORY,
234 POLICY_SCOPE_USER, 222 POLICY_SCOPE_USER,
235 POLICY_SOURCE_CLOUD,
236 new base::FundamentalValue(456), 223 new base::FundamentalValue(456),
237 NULL); 224 NULL);
238 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME, 225 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME,
239 std::string()), 226 std::string()),
240 PolicyEquals(&expectedPrevious), 227 PolicyEquals(&expectedPrevious),
241 PolicyEquals(&expectedCurrent))); 228 PolicyEquals(&expectedCurrent)));
242 provider0_.UpdateChromePolicy(policy0_); 229 provider0_.UpdateChromePolicy(policy0_);
243 Mock::VerifyAndClearExpectations(&observer); 230 Mock::VerifyAndClearExpectations(&observer);
244 231
245 // Removed policy. 232 // Removed policy.
246 expectedPrevious.CopyFrom(expectedCurrent); 233 expectedPrevious.CopyFrom(expectedCurrent);
247 expectedCurrent.Erase("bbb"); 234 expectedCurrent.Erase("bbb");
248 policy0_.Erase("bbb"); 235 policy0_.Erase("bbb");
249 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME, 236 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME,
250 std::string()), 237 std::string()),
251 PolicyEquals(&expectedPrevious), 238 PolicyEquals(&expectedPrevious),
252 PolicyEquals(&expectedCurrent))); 239 PolicyEquals(&expectedCurrent)));
253 provider0_.UpdateChromePolicy(policy0_); 240 provider0_.UpdateChromePolicy(policy0_);
254 Mock::VerifyAndClearExpectations(&observer); 241 Mock::VerifyAndClearExpectations(&observer);
255 242
256 // Changed policy. 243 // Changed policy.
257 expectedPrevious.CopyFrom(expectedCurrent); 244 expectedPrevious.CopyFrom(expectedCurrent);
258 expectedCurrent.Set("aaa", 245 expectedCurrent.Set("aaa",
259 POLICY_LEVEL_MANDATORY, 246 POLICY_LEVEL_MANDATORY,
260 POLICY_SCOPE_USER, 247 POLICY_SCOPE_USER,
261 POLICY_SOURCE_CLOUD,
262 new base::FundamentalValue(789), 248 new base::FundamentalValue(789),
263 NULL); 249 NULL);
264 policy0_.Set("aaa", 250 policy0_.Set("aaa",
265 POLICY_LEVEL_MANDATORY, 251 POLICY_LEVEL_MANDATORY,
266 POLICY_SCOPE_USER, 252 POLICY_SCOPE_USER,
267 POLICY_SOURCE_CLOUD,
268 new base::FundamentalValue(789), 253 new base::FundamentalValue(789),
269 NULL); 254 NULL);
270 255
271 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME, 256 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME,
272 std::string()), 257 std::string()),
273 PolicyEquals(&expectedPrevious), 258 PolicyEquals(&expectedPrevious),
274 PolicyEquals(&expectedCurrent))); 259 PolicyEquals(&expectedCurrent)));
275 provider0_.UpdateChromePolicy(policy0_); 260 provider0_.UpdateChromePolicy(policy0_);
276 Mock::VerifyAndClearExpectations(&observer); 261 Mock::VerifyAndClearExpectations(&observer);
277 262
(...skipping 13 matching lines...) Expand all
291 const std::string kExtension2("extension-2"); 276 const std::string kExtension2("extension-2");
292 MockPolicyServiceObserver chrome_observer; 277 MockPolicyServiceObserver chrome_observer;
293 MockPolicyServiceObserver extension_observer; 278 MockPolicyServiceObserver extension_observer;
294 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &chrome_observer); 279 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &chrome_observer);
295 policy_service_->AddObserver(POLICY_DOMAIN_EXTENSIONS, &extension_observer); 280 policy_service_->AddObserver(POLICY_DOMAIN_EXTENSIONS, &extension_observer);
296 281
297 PolicyMap previous_policy_map; 282 PolicyMap previous_policy_map;
298 previous_policy_map.Set("pre", 283 previous_policy_map.Set("pre",
299 POLICY_LEVEL_MANDATORY, 284 POLICY_LEVEL_MANDATORY,
300 POLICY_SCOPE_USER, 285 POLICY_SCOPE_USER,
301 POLICY_SOURCE_ENTERPRISE_DEFAULT,
302 new base::FundamentalValue(13), 286 new base::FundamentalValue(13),
303 NULL); 287 NULL);
304 PolicyMap policy_map; 288 PolicyMap policy_map;
305 policy_map.CopyFrom(previous_policy_map); 289 policy_map.CopyFrom(previous_policy_map);
306 policy_map.Set("policy", 290 policy_map.Set("policy",
307 POLICY_LEVEL_MANDATORY, 291 POLICY_LEVEL_MANDATORY,
308 POLICY_SCOPE_USER, 292 POLICY_SCOPE_USER,
309 POLICY_SOURCE_CLOUD,
310 new base::StringValue("value"), 293 new base::StringValue("value"),
311 NULL); 294 NULL);
312 295
313 scoped_ptr<PolicyBundle> bundle(new PolicyBundle()); 296 scoped_ptr<PolicyBundle> bundle(new PolicyBundle());
314 // The initial setup includes a policy for chrome that is now changing. 297 // The initial setup includes a policy for chrome that is now changing.
315 bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) 298 bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))
316 .CopyFrom(policy_map); 299 .CopyFrom(policy_map);
317 bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension0)) 300 bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension0))
318 .CopyFrom(policy_map); 301 .CopyFrom(policy_map);
319 bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension1)) 302 bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension1))
(...skipping 22 matching lines...) Expand all
342 325
343 // Chrome policy stays the same, kExtension0 is gone, kExtension1 changes, 326 // Chrome policy stays the same, kExtension0 is gone, kExtension1 changes,
344 // and kExtension2 is new. 327 // and kExtension2 is new.
345 previous_policy_map.CopyFrom(policy_map); 328 previous_policy_map.CopyFrom(policy_map);
346 bundle.reset(new PolicyBundle()); 329 bundle.reset(new PolicyBundle());
347 bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) 330 bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))
348 .CopyFrom(policy_map); 331 .CopyFrom(policy_map);
349 policy_map.Set("policy", 332 policy_map.Set("policy",
350 POLICY_LEVEL_MANDATORY, 333 POLICY_LEVEL_MANDATORY,
351 POLICY_SCOPE_USER, 334 POLICY_SCOPE_USER,
352 POLICY_SOURCE_CLOUD,
353 new base::StringValue("another value"), 335 new base::StringValue("another value"),
354 NULL); 336 NULL);
355 bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension1)) 337 bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension1))
356 .CopyFrom(policy_map); 338 .CopyFrom(policy_map);
357 bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension2)) 339 bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension2))
358 .CopyFrom(policy_map); 340 .CopyFrom(policy_map);
359 341
360 EXPECT_CALL(chrome_observer, OnPolicyUpdated(_, _, _)).Times(0); 342 EXPECT_CALL(chrome_observer, OnPolicyUpdated(_, _, _)).Times(0);
361 EXPECT_CALL( 343 EXPECT_CALL(
362 extension_observer, 344 extension_observer,
(...skipping 19 matching lines...) Expand all
382 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS, 364 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS,
383 &extension_observer); 365 &extension_observer);
384 } 366 }
385 367
386 TEST_F(PolicyServiceTest, ObserverChangesPolicy) { 368 TEST_F(PolicyServiceTest, ObserverChangesPolicy) {
387 ChangePolicyObserver observer(&provider0_); 369 ChangePolicyObserver observer(&provider0_);
388 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &observer); 370 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &observer);
389 policy0_.Set("aaa", 371 policy0_.Set("aaa",
390 POLICY_LEVEL_MANDATORY, 372 POLICY_LEVEL_MANDATORY,
391 POLICY_SCOPE_USER, 373 POLICY_SCOPE_USER,
392 POLICY_SOURCE_CLOUD,
393 new base::FundamentalValue(123), 374 new base::FundamentalValue(123),
394 NULL); 375 NULL);
395 policy0_.Set("bbb", 376 policy0_.Set("bbb",
396 POLICY_LEVEL_MANDATORY, 377 POLICY_LEVEL_MANDATORY,
397 POLICY_SCOPE_USER, 378 POLICY_SCOPE_USER,
398 POLICY_SOURCE_CLOUD,
399 new base::FundamentalValue(1234), 379 new base::FundamentalValue(1234),
400 NULL); 380 NULL);
401 // Should not crash. 381 // Should not crash.
402 provider0_.UpdateChromePolicy(policy0_); 382 provider0_.UpdateChromePolicy(policy0_);
403 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &observer); 383 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &observer);
404 EXPECT_TRUE(observer.observer_invoked()); 384 EXPECT_TRUE(observer.observer_invoked());
405 } 385 }
406 386
407 TEST_F(PolicyServiceTest, Priorities) { 387 TEST_F(PolicyServiceTest, Priorities) {
408 PolicyMap expected; 388 PolicyMap expected;
409 expected.Set("pre", 389 expected.Set("pre",
410 POLICY_LEVEL_MANDATORY, 390 POLICY_LEVEL_MANDATORY,
411 POLICY_SCOPE_USER, 391 POLICY_SCOPE_USER,
412 POLICY_SOURCE_ENTERPRISE_DEFAULT,
413 new base::FundamentalValue(13), 392 new base::FundamentalValue(13),
414 NULL); 393 NULL);
415 expected.Set("aaa", 394 expected.Set("aaa",
416 POLICY_LEVEL_MANDATORY, 395 POLICY_LEVEL_MANDATORY,
417 POLICY_SCOPE_USER, 396 POLICY_SCOPE_USER,
418 POLICY_SOURCE_CLOUD,
419 new base::FundamentalValue(0), 397 new base::FundamentalValue(0),
420 NULL); 398 NULL);
421 policy0_.Set("aaa", 399 policy0_.Set("aaa",
422 POLICY_LEVEL_MANDATORY, 400 POLICY_LEVEL_MANDATORY,
423 POLICY_SCOPE_USER, 401 POLICY_SCOPE_USER,
424 POLICY_SOURCE_CLOUD,
425 new base::FundamentalValue(0), 402 new base::FundamentalValue(0),
426 NULL); 403 NULL);
427 policy1_.Set("aaa", 404 policy1_.Set("aaa",
428 POLICY_LEVEL_MANDATORY, 405 POLICY_LEVEL_MANDATORY,
429 POLICY_SCOPE_USER, 406 POLICY_SCOPE_USER,
430 POLICY_SOURCE_CLOUD,
431 new base::FundamentalValue(1), 407 new base::FundamentalValue(1),
432 NULL); 408 NULL);
433 policy2_.Set("aaa", 409 policy2_.Set("aaa",
434 POLICY_LEVEL_MANDATORY, 410 POLICY_LEVEL_MANDATORY,
435 POLICY_SCOPE_USER, 411 POLICY_SCOPE_USER,
436 POLICY_SOURCE_CLOUD,
437 new base::FundamentalValue(2), 412 new base::FundamentalValue(2),
438 NULL); 413 NULL);
439 provider0_.UpdateChromePolicy(policy0_); 414 provider0_.UpdateChromePolicy(policy0_);
440 provider1_.UpdateChromePolicy(policy1_); 415 provider1_.UpdateChromePolicy(policy1_);
441 provider2_.UpdateChromePolicy(policy2_); 416 provider2_.UpdateChromePolicy(policy2_);
442 EXPECT_TRUE(VerifyPolicies( 417 EXPECT_TRUE(VerifyPolicies(
443 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); 418 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected));
444 419
445 expected.Set("aaa", 420 expected.Set("aaa",
446 POLICY_LEVEL_MANDATORY, 421 POLICY_LEVEL_MANDATORY,
447 POLICY_SCOPE_USER, 422 POLICY_SCOPE_USER,
448 POLICY_SOURCE_CLOUD,
449 new base::FundamentalValue(1), 423 new base::FundamentalValue(1),
450 NULL); 424 NULL);
451 policy0_.Erase("aaa"); 425 policy0_.Erase("aaa");
452 provider0_.UpdateChromePolicy(policy0_); 426 provider0_.UpdateChromePolicy(policy0_);
453 EXPECT_TRUE(VerifyPolicies( 427 EXPECT_TRUE(VerifyPolicies(
454 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); 428 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected));
455 429
456 expected.Set("aaa", 430 expected.Set("aaa",
457 POLICY_LEVEL_MANDATORY, 431 POLICY_LEVEL_MANDATORY,
458 POLICY_SCOPE_USER, 432 POLICY_SCOPE_USER,
459 POLICY_SOURCE_CLOUD,
460 new base::FundamentalValue(2), 433 new base::FundamentalValue(2),
461 NULL); 434 NULL);
462 policy1_.Set("aaa", 435 policy1_.Set("aaa",
463 POLICY_LEVEL_RECOMMENDED, 436 POLICY_LEVEL_RECOMMENDED,
464 POLICY_SCOPE_USER, 437 POLICY_SCOPE_USER,
465 POLICY_SOURCE_CLOUD,
466 new base::FundamentalValue(1), 438 new base::FundamentalValue(1),
467 NULL); 439 NULL);
468 provider1_.UpdateChromePolicy(policy1_); 440 provider1_.UpdateChromePolicy(policy1_);
469 EXPECT_TRUE(VerifyPolicies( 441 EXPECT_TRUE(VerifyPolicies(
470 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); 442 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected));
471 } 443 }
472 444
473 TEST_F(PolicyServiceTest, PolicyChangeRegistrar) { 445 TEST_F(PolicyServiceTest, PolicyChangeRegistrar) {
474 scoped_ptr<PolicyChangeRegistrar> registrar(new PolicyChangeRegistrar( 446 scoped_ptr<PolicyChangeRegistrar> registrar(new PolicyChangeRegistrar(
475 policy_service_.get(), 447 policy_service_.get(),
476 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))); 448 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())));
477 449
478 // Starting to observe existing policies doesn't trigger a notification. 450 // Starting to observe existing policies doesn't trigger a notification.
479 EXPECT_CALL(*this, OnPolicyValueUpdated(_, _)).Times(0); 451 EXPECT_CALL(*this, OnPolicyValueUpdated(_, _)).Times(0);
480 registrar->Observe("pre", base::Bind( 452 registrar->Observe("pre", base::Bind(
481 &PolicyServiceTest::OnPolicyValueUpdated, 453 &PolicyServiceTest::OnPolicyValueUpdated,
482 base::Unretained(this))); 454 base::Unretained(this)));
483 registrar->Observe("aaa", base::Bind( 455 registrar->Observe("aaa", base::Bind(
484 &PolicyServiceTest::OnPolicyValueUpdated, 456 &PolicyServiceTest::OnPolicyValueUpdated,
485 base::Unretained(this))); 457 base::Unretained(this)));
486 RunUntilIdle(); 458 RunUntilIdle();
487 Mock::VerifyAndClearExpectations(this); 459 Mock::VerifyAndClearExpectations(this);
488 460
489 // Changing it now triggers a notification. 461 // Changing it now triggers a notification.
490 base::FundamentalValue kValue0(0); 462 base::FundamentalValue kValue0(0);
491 EXPECT_CALL(*this, OnPolicyValueUpdated(NULL, ValueEquals(&kValue0))); 463 EXPECT_CALL(*this, OnPolicyValueUpdated(NULL, ValueEquals(&kValue0)));
492 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 464 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
493 POLICY_SOURCE_CLOUD, kValue0.DeepCopy(), nullptr); 465 kValue0.DeepCopy(), NULL);
494 provider0_.UpdateChromePolicy(policy0_); 466 provider0_.UpdateChromePolicy(policy0_);
495 Mock::VerifyAndClearExpectations(this); 467 Mock::VerifyAndClearExpectations(this);
496 468
497 // Changing other values doesn't trigger a notification. 469 // Changing other values doesn't trigger a notification.
498 EXPECT_CALL(*this, OnPolicyValueUpdated(_, _)).Times(0); 470 EXPECT_CALL(*this, OnPolicyValueUpdated(_, _)).Times(0);
499 policy0_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 471 policy0_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
500 POLICY_SOURCE_CLOUD, kValue0.DeepCopy(), nullptr); 472 kValue0.DeepCopy(), NULL);
501 provider0_.UpdateChromePolicy(policy0_); 473 provider0_.UpdateChromePolicy(policy0_);
502 Mock::VerifyAndClearExpectations(this); 474 Mock::VerifyAndClearExpectations(this);
503 475
504 // Modifying the value triggers a notification. 476 // Modifying the value triggers a notification.
505 base::FundamentalValue kValue1(1); 477 base::FundamentalValue kValue1(1);
506 EXPECT_CALL(*this, OnPolicyValueUpdated(ValueEquals(&kValue0), 478 EXPECT_CALL(*this, OnPolicyValueUpdated(ValueEquals(&kValue0),
507 ValueEquals(&kValue1))); 479 ValueEquals(&kValue1)));
508 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 480 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
509 POLICY_SOURCE_CLOUD, kValue1.DeepCopy(), nullptr); 481 kValue1.DeepCopy(), NULL);
510 provider0_.UpdateChromePolicy(policy0_); 482 provider0_.UpdateChromePolicy(policy0_);
511 Mock::VerifyAndClearExpectations(this); 483 Mock::VerifyAndClearExpectations(this);
512 484
513 // Removing the value triggers a notification. 485 // Removing the value triggers a notification.
514 EXPECT_CALL(*this, OnPolicyValueUpdated(ValueEquals(&kValue1), NULL)); 486 EXPECT_CALL(*this, OnPolicyValueUpdated(ValueEquals(&kValue1), NULL));
515 policy0_.Erase("aaa"); 487 policy0_.Erase("aaa");
516 provider0_.UpdateChromePolicy(policy0_); 488 provider0_.UpdateChromePolicy(policy0_);
517 Mock::VerifyAndClearExpectations(this); 489 Mock::VerifyAndClearExpectations(this);
518 490
519 // No more notifications after destroying the registrar. 491 // No more notifications after destroying the registrar.
520 EXPECT_CALL(*this, OnPolicyValueUpdated(_, _)).Times(0); 492 EXPECT_CALL(*this, OnPolicyValueUpdated(_, _)).Times(0);
521 registrar.reset(); 493 registrar.reset();
522 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 494 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
523 POLICY_SOURCE_CLOUD, kValue1.DeepCopy(), nullptr); 495 kValue1.DeepCopy(), NULL);
524 policy0_.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 496 policy0_.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
525 POLICY_SOURCE_ENTERPRISE_DEFAULT, kValue1.DeepCopy(), nullptr); 497 kValue1.DeepCopy(), NULL);
526 provider0_.UpdateChromePolicy(policy0_); 498 provider0_.UpdateChromePolicy(policy0_);
527 Mock::VerifyAndClearExpectations(this); 499 Mock::VerifyAndClearExpectations(this);
528 } 500 }
529 501
530 TEST_F(PolicyServiceTest, RefreshPolicies) { 502 TEST_F(PolicyServiceTest, RefreshPolicies) {
531 EXPECT_CALL(provider0_, RefreshPolicies()).Times(AnyNumber()); 503 EXPECT_CALL(provider0_, RefreshPolicies()).Times(AnyNumber());
532 EXPECT_CALL(provider1_, RefreshPolicies()).Times(AnyNumber()); 504 EXPECT_CALL(provider1_, RefreshPolicies()).Times(AnyNumber());
533 EXPECT_CALL(provider2_, RefreshPolicies()).Times(AnyNumber()); 505 EXPECT_CALL(provider2_, RefreshPolicies()).Times(AnyNumber());
534 506
535 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); 507 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0);
536 policy_service_->RefreshPolicies(base::Bind( 508 policy_service_->RefreshPolicies(base::Bind(
537 &PolicyServiceTest::OnPolicyRefresh, 509 &PolicyServiceTest::OnPolicyRefresh,
538 base::Unretained(this))); 510 base::Unretained(this)));
539 // Let any queued observer tasks run. 511 // Let any queued observer tasks run.
540 RunUntilIdle(); 512 RunUntilIdle();
541 Mock::VerifyAndClearExpectations(this); 513 Mock::VerifyAndClearExpectations(this);
542 514
543 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); 515 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0);
544 base::FundamentalValue kValue0(0); 516 base::FundamentalValue kValue0(0);
545 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 517 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
546 POLICY_SOURCE_CLOUD, kValue0.DeepCopy(), nullptr); 518 kValue0.DeepCopy(), NULL);
547 provider0_.UpdateChromePolicy(policy0_); 519 provider0_.UpdateChromePolicy(policy0_);
548 Mock::VerifyAndClearExpectations(this); 520 Mock::VerifyAndClearExpectations(this);
549 521
550 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); 522 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0);
551 base::FundamentalValue kValue1(1); 523 base::FundamentalValue kValue1(1);
552 policy1_.Set("aaa", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, 524 policy1_.Set("aaa", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER,
553 POLICY_SOURCE_CLOUD, kValue1.DeepCopy(), nullptr); 525 kValue1.DeepCopy(), NULL);
554 provider1_.UpdateChromePolicy(policy1_); 526 provider1_.UpdateChromePolicy(policy1_);
555 Mock::VerifyAndClearExpectations(this); 527 Mock::VerifyAndClearExpectations(this);
556 528
557 // A provider can refresh more than once after a RefreshPolicies call, but 529 // A provider can refresh more than once after a RefreshPolicies call, but
558 // OnPolicyRefresh should be triggered only after all providers are 530 // OnPolicyRefresh should be triggered only after all providers are
559 // refreshed. 531 // refreshed.
560 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); 532 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0);
561 policy1_.Set("bbb", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, 533 policy1_.Set("bbb", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER,
562 POLICY_SOURCE_CLOUD, kValue1.DeepCopy(), nullptr); 534 kValue1.DeepCopy(), NULL);
563 provider1_.UpdateChromePolicy(policy1_); 535 provider1_.UpdateChromePolicy(policy1_);
564 Mock::VerifyAndClearExpectations(this); 536 Mock::VerifyAndClearExpectations(this);
565 537
566 // If another RefreshPolicies() call happens while waiting for a previous 538 // If another RefreshPolicies() call happens while waiting for a previous
567 // one to complete, then all providers must refresh again. 539 // one to complete, then all providers must refresh again.
568 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); 540 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0);
569 policy_service_->RefreshPolicies(base::Bind( 541 policy_service_->RefreshPolicies(base::Bind(
570 &PolicyServiceTest::OnPolicyRefresh, 542 &PolicyServiceTest::OnPolicyRefresh,
571 base::Unretained(this))); 543 base::Unretained(this)));
572 RunUntilIdle(); 544 RunUntilIdle();
573 Mock::VerifyAndClearExpectations(this); 545 Mock::VerifyAndClearExpectations(this);
574 546
575 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); 547 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0);
576 policy2_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 548 policy2_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
577 POLICY_SOURCE_CLOUD, kValue0.DeepCopy(), nullptr); 549 kValue0.DeepCopy(), NULL);
578 provider2_.UpdateChromePolicy(policy2_); 550 provider2_.UpdateChromePolicy(policy2_);
579 Mock::VerifyAndClearExpectations(this); 551 Mock::VerifyAndClearExpectations(this);
580 552
581 // Providers 0 and 1 must reload again. 553 // Providers 0 and 1 must reload again.
582 EXPECT_CALL(*this, OnPolicyRefresh()).Times(2); 554 EXPECT_CALL(*this, OnPolicyRefresh()).Times(2);
583 base::FundamentalValue kValue2(2); 555 base::FundamentalValue kValue2(2);
584 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 556 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
585 POLICY_SOURCE_CLOUD, kValue2.DeepCopy(), nullptr); 557 kValue2.DeepCopy(), NULL);
586 provider0_.UpdateChromePolicy(policy0_); 558 provider0_.UpdateChromePolicy(policy0_);
587 provider1_.UpdateChromePolicy(policy1_); 559 provider1_.UpdateChromePolicy(policy1_);
588 Mock::VerifyAndClearExpectations(this); 560 Mock::VerifyAndClearExpectations(this);
589 561
590 const PolicyMap& policies = policy_service_->GetPolicies( 562 const PolicyMap& policies = policy_service_->GetPolicies(
591 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())); 563 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()));
592 EXPECT_TRUE(base::Value::Equals(&kValue2, policies.GetValue("aaa"))); 564 EXPECT_TRUE(base::Value::Equals(&kValue2, policies.GetValue("aaa")));
593 EXPECT_TRUE(base::Value::Equals(&kValue0, policies.GetValue("bbb"))); 565 EXPECT_TRUE(base::Value::Equals(&kValue0, policies.GetValue("bbb")));
594 } 566 }
595 567
(...skipping 13 matching lines...) Expand all
609 provider1_.UpdatePolicy(bundle1.Pass()); 581 provider1_.UpdatePolicy(bundle1.Pass());
610 provider2_.UpdatePolicy(bundle2.Pass()); 582 provider2_.UpdatePolicy(bundle2.Pass());
611 RunUntilIdle(); 583 RunUntilIdle();
612 584
613 PolicyMap expected; 585 PolicyMap expected;
614 // For policies of the same level and scope, the first provider takes 586 // For policies of the same level and scope, the first provider takes
615 // precedence, on every namespace. 587 // precedence, on every namespace.
616 expected.Set(kSameLevelPolicy, 588 expected.Set(kSameLevelPolicy,
617 POLICY_LEVEL_MANDATORY, 589 POLICY_LEVEL_MANDATORY,
618 POLICY_SCOPE_USER, 590 POLICY_SCOPE_USER,
619 POLICY_SOURCE_ENTERPRISE_DEFAULT,
620 new base::StringValue("bundle0"), 591 new base::StringValue("bundle0"),
621 NULL); 592 NULL);
622 // For policies with different levels and scopes, the highest priority 593 // For policies with different levels and scopes, the highest priority
623 // level/scope combination takes precedence, on every namespace. 594 // level/scope combination takes precedence, on every namespace.
624 expected.Set(kDiffLevelPolicy, 595 expected.Set(kDiffLevelPolicy,
625 POLICY_LEVEL_MANDATORY, 596 POLICY_LEVEL_MANDATORY,
626 POLICY_SCOPE_MACHINE, 597 POLICY_SCOPE_MACHINE,
627 POLICY_SOURCE_PLATFORM,
628 new base::StringValue("bundle2"), 598 new base::StringValue("bundle2"),
629 NULL); 599 NULL);
630 EXPECT_TRUE(policy_service_->GetPolicies( 600 EXPECT_TRUE(policy_service_->GetPolicies(
631 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())).Equals(expected)); 601 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())).Equals(expected));
632 EXPECT_TRUE(policy_service_->GetPolicies( 602 EXPECT_TRUE(policy_service_->GetPolicies(
633 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension)).Equals(expected)); 603 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, kExtension)).Equals(expected));
634 } 604 }
635 605
636 TEST_F(PolicyServiceTest, IsInitializationComplete) { 606 TEST_F(PolicyServiceTest, IsInitializationComplete) {
637 // |provider0| has all domains initialized. 607 // |provider0| has all domains initialized.
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 const PolicyNamespace chrome_namespace(POLICY_DOMAIN_CHROME, std::string()); 687 const PolicyNamespace chrome_namespace(POLICY_DOMAIN_CHROME, std::string());
718 const PolicyNamespace extension_namespace(POLICY_DOMAIN_EXTENSIONS, "xyz"); 688 const PolicyNamespace extension_namespace(POLICY_DOMAIN_EXTENSIONS, "xyz");
719 689
720 scoped_ptr<PolicyBundle> policy_bundle(new PolicyBundle()); 690 scoped_ptr<PolicyBundle> policy_bundle(new PolicyBundle());
721 PolicyMap& policy_map = policy_bundle->Get(chrome_namespace); 691 PolicyMap& policy_map = policy_bundle->Get(chrome_namespace);
722 // Individual proxy policy values in the Chrome namespace should be collected 692 // Individual proxy policy values in the Chrome namespace should be collected
723 // into a dictionary. 693 // into a dictionary.
724 policy_map.Set(key::kProxyServerMode, 694 policy_map.Set(key::kProxyServerMode,
725 POLICY_LEVEL_MANDATORY, 695 POLICY_LEVEL_MANDATORY,
726 POLICY_SCOPE_USER, 696 POLICY_SCOPE_USER,
727 POLICY_SOURCE_CLOUD,
728 new base::FundamentalValue(3), 697 new base::FundamentalValue(3),
729 NULL); 698 NULL);
730 699
731 // Both these policies should be ignored, since there's a higher priority 700 // Both these policies should be ignored, since there's a higher priority
732 // policy available. 701 // policy available.
733 policy_map.Set(key::kProxyMode, 702 policy_map.Set(key::kProxyMode,
734 POLICY_LEVEL_RECOMMENDED, 703 POLICY_LEVEL_RECOMMENDED,
735 POLICY_SCOPE_USER, 704 POLICY_SCOPE_USER,
736 POLICY_SOURCE_CLOUD,
737 new base::StringValue("pac_script"), 705 new base::StringValue("pac_script"),
738 NULL); 706 NULL);
739 policy_map.Set(key::kProxyPacUrl, 707 policy_map.Set(key::kProxyPacUrl,
740 POLICY_LEVEL_RECOMMENDED, 708 POLICY_LEVEL_RECOMMENDED,
741 POLICY_SCOPE_USER, 709 POLICY_SCOPE_USER,
742 POLICY_SOURCE_CLOUD,
743 new base::StringValue("http://example.com/wpad.dat"), 710 new base::StringValue("http://example.com/wpad.dat"),
744 NULL); 711 NULL);
745 712
746 // Add a value to a non-Chrome namespace. 713 // Add a value to a non-Chrome namespace.
747 policy_bundle->Get(extension_namespace).Set(key::kProxyServerMode, 714 policy_bundle->Get(extension_namespace).Set(key::kProxyServerMode,
748 POLICY_LEVEL_MANDATORY, 715 POLICY_LEVEL_MANDATORY,
749 POLICY_SCOPE_USER, 716 POLICY_SCOPE_USER,
750 POLICY_SOURCE_CLOUD,
751 new base::FundamentalValue(3), 717 new base::FundamentalValue(3),
752 NULL); 718 NULL);
753 719
754 // The resulting Chrome namespace map should have the collected policy. 720 // The resulting Chrome namespace map should have the collected policy.
755 PolicyMap expected_chrome; 721 PolicyMap expected_chrome;
756 scoped_ptr<base::DictionaryValue> expected_value(new base::DictionaryValue); 722 scoped_ptr<base::DictionaryValue> expected_value(new base::DictionaryValue);
757 expected_value->SetInteger(key::kProxyServerMode, 3); 723 expected_value->SetInteger(key::kProxyServerMode, 3);
758 expected_chrome.Set(key::kProxySettings, POLICY_LEVEL_MANDATORY, 724 expected_chrome.Set(key::kProxySettings, POLICY_LEVEL_MANDATORY,
759 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, 725 POLICY_SCOPE_USER, expected_value.release(), NULL);
760 expected_value.release(), nullptr);
761 726
762 // The resulting Extensions namespace map shouldn't have been modified. 727 // The resulting Extensions namespace map shouldn't have been modified.
763 PolicyMap expected_extension; 728 PolicyMap expected_extension;
764 expected_extension.Set(key::kProxyServerMode, 729 expected_extension.Set(key::kProxyServerMode,
765 POLICY_LEVEL_MANDATORY, 730 POLICY_LEVEL_MANDATORY,
766 POLICY_SCOPE_USER, 731 POLICY_SCOPE_USER,
767 POLICY_SOURCE_CLOUD,
768 new base::FundamentalValue(3), 732 new base::FundamentalValue(3),
769 NULL); 733 NULL);
770 734
771 provider0_.UpdatePolicy(policy_bundle.Pass()); 735 provider0_.UpdatePolicy(policy_bundle.Pass());
772 RunUntilIdle(); 736 RunUntilIdle();
773 737
774 EXPECT_TRUE(VerifyPolicies(chrome_namespace, expected_chrome)); 738 EXPECT_TRUE(VerifyPolicies(chrome_namespace, expected_chrome));
775 EXPECT_TRUE(VerifyPolicies(extension_namespace, expected_extension)); 739 EXPECT_TRUE(VerifyPolicies(extension_namespace, expected_extension));
776 } 740 }
777 741
778 } // namespace policy 742 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698