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

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

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

Powered by Google App Engine
This is Rietveld 408576698