OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |