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 <memory> | 7 #include <memory> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 explicit ChangePolicyObserver(MockConfigurationPolicyProvider* provider) | 75 explicit ChangePolicyObserver(MockConfigurationPolicyProvider* provider) |
76 : provider_(provider), | 76 : provider_(provider), |
77 observer_invoked_(false) {} | 77 observer_invoked_(false) {} |
78 | 78 |
79 void OnPolicyUpdated(const PolicyNamespace&, | 79 void OnPolicyUpdated(const PolicyNamespace&, |
80 const PolicyMap& previous, | 80 const PolicyMap& previous, |
81 const PolicyMap& current) override { | 81 const PolicyMap& current) override { |
82 PolicyMap new_policy; | 82 PolicyMap new_policy; |
83 new_policy.Set("foo", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 83 new_policy.Set("foo", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
84 POLICY_SOURCE_CLOUD, | 84 POLICY_SOURCE_CLOUD, |
85 base::MakeUnique<base::FundamentalValue>(14), nullptr); | 85 base::MakeUnique<base::Value>(14), nullptr); |
86 provider_->UpdateChromePolicy(new_policy); | 86 provider_->UpdateChromePolicy(new_policy); |
87 observer_invoked_ = true; | 87 observer_invoked_ = true; |
88 } | 88 } |
89 | 89 |
90 bool observer_invoked() const { return observer_invoked_; } | 90 bool observer_invoked() const { return observer_invoked_; } |
91 | 91 |
92 private: | 92 private: |
93 MockConfigurationPolicyProvider* provider_; | 93 MockConfigurationPolicyProvider* provider_; |
94 bool observer_invoked_; | 94 bool observer_invoked_; |
95 }; | 95 }; |
(...skipping 10 matching lines...) Expand all Loading... |
106 .WillRepeatedly(Return(true)); | 106 .WillRepeatedly(Return(true)); |
107 EXPECT_CALL(provider2_, IsInitializationComplete(_)) | 107 EXPECT_CALL(provider2_, IsInitializationComplete(_)) |
108 .WillRepeatedly(Return(true)); | 108 .WillRepeatedly(Return(true)); |
109 | 109 |
110 provider0_.Init(); | 110 provider0_.Init(); |
111 provider1_.Init(); | 111 provider1_.Init(); |
112 provider2_.Init(); | 112 provider2_.Init(); |
113 | 113 |
114 policy0_.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 114 policy0_.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
115 POLICY_SOURCE_ENTERPRISE_DEFAULT, | 115 POLICY_SOURCE_ENTERPRISE_DEFAULT, |
116 base::MakeUnique<base::FundamentalValue>(13), nullptr); | 116 base::MakeUnique<base::Value>(13), nullptr); |
117 provider0_.UpdateChromePolicy(policy0_); | 117 provider0_.UpdateChromePolicy(policy0_); |
118 | 118 |
119 PolicyServiceImpl::Providers providers; | 119 PolicyServiceImpl::Providers providers; |
120 providers.push_back(&provider0_); | 120 providers.push_back(&provider0_); |
121 providers.push_back(&provider1_); | 121 providers.push_back(&provider1_); |
122 providers.push_back(&provider2_); | 122 providers.push_back(&provider2_); |
123 policy_service_.reset(new PolicyServiceImpl(providers)); | 123 policy_service_.reset(new PolicyServiceImpl(providers)); |
124 } | 124 } |
125 | 125 |
126 void TearDown() override { | 126 void TearDown() override { |
(...skipping 29 matching lines...) Expand all Loading... |
156 std::unique_ptr<PolicyServiceImpl> policy_service_; | 156 std::unique_ptr<PolicyServiceImpl> policy_service_; |
157 | 157 |
158 private: | 158 private: |
159 DISALLOW_COPY_AND_ASSIGN(PolicyServiceTest); | 159 DISALLOW_COPY_AND_ASSIGN(PolicyServiceTest); |
160 }; | 160 }; |
161 | 161 |
162 TEST_F(PolicyServiceTest, LoadsPoliciesBeforeProvidersRefresh) { | 162 TEST_F(PolicyServiceTest, LoadsPoliciesBeforeProvidersRefresh) { |
163 PolicyMap expected; | 163 PolicyMap expected; |
164 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 164 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
165 POLICY_SOURCE_ENTERPRISE_DEFAULT, | 165 POLICY_SOURCE_ENTERPRISE_DEFAULT, |
166 base::MakeUnique<base::FundamentalValue>(13), nullptr); | 166 base::MakeUnique<base::Value>(13), nullptr); |
167 EXPECT_TRUE(VerifyPolicies( | 167 EXPECT_TRUE(VerifyPolicies( |
168 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); | 168 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); |
169 } | 169 } |
170 | 170 |
171 TEST_F(PolicyServiceTest, NotifyObservers) { | 171 TEST_F(PolicyServiceTest, NotifyObservers) { |
172 MockPolicyServiceObserver observer; | 172 MockPolicyServiceObserver observer; |
173 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &observer); | 173 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &observer); |
174 | 174 |
175 PolicyMap expectedPrevious; | 175 PolicyMap expectedPrevious; |
176 expectedPrevious.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 176 expectedPrevious.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
177 POLICY_SOURCE_ENTERPRISE_DEFAULT, | 177 POLICY_SOURCE_ENTERPRISE_DEFAULT, |
178 base::MakeUnique<base::FundamentalValue>(13), nullptr); | 178 base::MakeUnique<base::Value>(13), nullptr); |
179 | 179 |
180 PolicyMap expectedCurrent; | 180 PolicyMap expectedCurrent; |
181 expectedCurrent.CopyFrom(expectedPrevious); | 181 expectedCurrent.CopyFrom(expectedPrevious); |
182 expectedCurrent.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 182 expectedCurrent.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
183 POLICY_SOURCE_CLOUD, | 183 POLICY_SOURCE_CLOUD, |
184 base::MakeUnique<base::FundamentalValue>(123), nullptr); | 184 base::MakeUnique<base::Value>(123), nullptr); |
185 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 185 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
186 POLICY_SOURCE_CLOUD, | 186 POLICY_SOURCE_CLOUD, |
187 base::MakeUnique<base::FundamentalValue>(123), nullptr); | 187 base::MakeUnique<base::Value>(123), nullptr); |
188 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME, | 188 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME, |
189 std::string()), | 189 std::string()), |
190 PolicyEquals(&expectedPrevious), | 190 PolicyEquals(&expectedPrevious), |
191 PolicyEquals(&expectedCurrent))); | 191 PolicyEquals(&expectedCurrent))); |
192 provider0_.UpdateChromePolicy(policy0_); | 192 provider0_.UpdateChromePolicy(policy0_); |
193 Mock::VerifyAndClearExpectations(&observer); | 193 Mock::VerifyAndClearExpectations(&observer); |
194 | 194 |
195 // No changes. | 195 // No changes. |
196 EXPECT_CALL(observer, OnPolicyUpdated(_, _, _)).Times(0); | 196 EXPECT_CALL(observer, OnPolicyUpdated(_, _, _)).Times(0); |
197 provider0_.UpdateChromePolicy(policy0_); | 197 provider0_.UpdateChromePolicy(policy0_); |
198 Mock::VerifyAndClearExpectations(&observer); | 198 Mock::VerifyAndClearExpectations(&observer); |
199 EXPECT_TRUE(VerifyPolicies( | 199 EXPECT_TRUE(VerifyPolicies( |
200 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expectedCurrent)); | 200 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expectedCurrent)); |
201 | 201 |
202 // New policy. | 202 // New policy. |
203 expectedPrevious.CopyFrom(expectedCurrent); | 203 expectedPrevious.CopyFrom(expectedCurrent); |
204 expectedCurrent.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 204 expectedCurrent.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
205 POLICY_SOURCE_CLOUD, | 205 POLICY_SOURCE_CLOUD, |
206 base::MakeUnique<base::FundamentalValue>(456), nullptr); | 206 base::MakeUnique<base::Value>(456), nullptr); |
207 policy0_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 207 policy0_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
208 POLICY_SOURCE_CLOUD, | 208 POLICY_SOURCE_CLOUD, |
209 base::MakeUnique<base::FundamentalValue>(456), nullptr); | 209 base::MakeUnique<base::Value>(456), nullptr); |
210 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME, | 210 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME, |
211 std::string()), | 211 std::string()), |
212 PolicyEquals(&expectedPrevious), | 212 PolicyEquals(&expectedPrevious), |
213 PolicyEquals(&expectedCurrent))); | 213 PolicyEquals(&expectedCurrent))); |
214 provider0_.UpdateChromePolicy(policy0_); | 214 provider0_.UpdateChromePolicy(policy0_); |
215 Mock::VerifyAndClearExpectations(&observer); | 215 Mock::VerifyAndClearExpectations(&observer); |
216 | 216 |
217 // Removed policy. | 217 // Removed policy. |
218 expectedPrevious.CopyFrom(expectedCurrent); | 218 expectedPrevious.CopyFrom(expectedCurrent); |
219 expectedCurrent.Erase("bbb"); | 219 expectedCurrent.Erase("bbb"); |
220 policy0_.Erase("bbb"); | 220 policy0_.Erase("bbb"); |
221 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME, | 221 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME, |
222 std::string()), | 222 std::string()), |
223 PolicyEquals(&expectedPrevious), | 223 PolicyEquals(&expectedPrevious), |
224 PolicyEquals(&expectedCurrent))); | 224 PolicyEquals(&expectedCurrent))); |
225 provider0_.UpdateChromePolicy(policy0_); | 225 provider0_.UpdateChromePolicy(policy0_); |
226 Mock::VerifyAndClearExpectations(&observer); | 226 Mock::VerifyAndClearExpectations(&observer); |
227 | 227 |
228 // Changed policy. | 228 // Changed policy. |
229 expectedPrevious.CopyFrom(expectedCurrent); | 229 expectedPrevious.CopyFrom(expectedCurrent); |
230 expectedCurrent.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 230 expectedCurrent.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
231 POLICY_SOURCE_CLOUD, | 231 POLICY_SOURCE_CLOUD, |
232 base::MakeUnique<base::FundamentalValue>(789), nullptr); | 232 base::MakeUnique<base::Value>(789), nullptr); |
233 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 233 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
234 POLICY_SOURCE_CLOUD, | 234 POLICY_SOURCE_CLOUD, |
235 base::MakeUnique<base::FundamentalValue>(789), nullptr); | 235 base::MakeUnique<base::Value>(789), nullptr); |
236 | 236 |
237 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME, | 237 EXPECT_CALL(observer, OnPolicyUpdated(PolicyNamespace(POLICY_DOMAIN_CHROME, |
238 std::string()), | 238 std::string()), |
239 PolicyEquals(&expectedPrevious), | 239 PolicyEquals(&expectedPrevious), |
240 PolicyEquals(&expectedCurrent))); | 240 PolicyEquals(&expectedCurrent))); |
241 provider0_.UpdateChromePolicy(policy0_); | 241 provider0_.UpdateChromePolicy(policy0_); |
242 Mock::VerifyAndClearExpectations(&observer); | 242 Mock::VerifyAndClearExpectations(&observer); |
243 | 243 |
244 // No changes again. | 244 // No changes again. |
245 EXPECT_CALL(observer, OnPolicyUpdated(_, _, _)).Times(0); | 245 EXPECT_CALL(observer, OnPolicyUpdated(_, _, _)).Times(0); |
(...skipping 10 matching lines...) Expand all Loading... |
256 const std::string kExtension1("extension-1"); | 256 const std::string kExtension1("extension-1"); |
257 const std::string kExtension2("extension-2"); | 257 const std::string kExtension2("extension-2"); |
258 MockPolicyServiceObserver chrome_observer; | 258 MockPolicyServiceObserver chrome_observer; |
259 MockPolicyServiceObserver extension_observer; | 259 MockPolicyServiceObserver extension_observer; |
260 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &chrome_observer); | 260 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &chrome_observer); |
261 policy_service_->AddObserver(POLICY_DOMAIN_EXTENSIONS, &extension_observer); | 261 policy_service_->AddObserver(POLICY_DOMAIN_EXTENSIONS, &extension_observer); |
262 | 262 |
263 PolicyMap previous_policy_map; | 263 PolicyMap previous_policy_map; |
264 previous_policy_map.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 264 previous_policy_map.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
265 POLICY_SOURCE_ENTERPRISE_DEFAULT, | 265 POLICY_SOURCE_ENTERPRISE_DEFAULT, |
266 base::MakeUnique<base::FundamentalValue>(13), | 266 base::MakeUnique<base::Value>(13), |
267 nullptr); | 267 nullptr); |
268 PolicyMap policy_map; | 268 PolicyMap policy_map; |
269 policy_map.CopyFrom(previous_policy_map); | 269 policy_map.CopyFrom(previous_policy_map); |
270 policy_map.Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 270 policy_map.Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
271 POLICY_SOURCE_CLOUD, | 271 POLICY_SOURCE_CLOUD, |
272 base::MakeUnique<base::StringValue>("value"), nullptr); | 272 base::MakeUnique<base::StringValue>("value"), nullptr); |
273 | 273 |
274 std::unique_ptr<PolicyBundle> bundle(new PolicyBundle()); | 274 std::unique_ptr<PolicyBundle> bundle(new PolicyBundle()); |
275 // The initial setup includes a policy for chrome that is now changing. | 275 // The initial setup includes a policy for chrome that is now changing. |
276 bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 276 bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &chrome_observer); | 339 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &chrome_observer); |
340 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS, | 340 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS, |
341 &extension_observer); | 341 &extension_observer); |
342 } | 342 } |
343 | 343 |
344 TEST_F(PolicyServiceTest, ObserverChangesPolicy) { | 344 TEST_F(PolicyServiceTest, ObserverChangesPolicy) { |
345 ChangePolicyObserver observer(&provider0_); | 345 ChangePolicyObserver observer(&provider0_); |
346 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &observer); | 346 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &observer); |
347 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 347 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
348 POLICY_SOURCE_CLOUD, | 348 POLICY_SOURCE_CLOUD, |
349 base::MakeUnique<base::FundamentalValue>(123), nullptr); | 349 base::MakeUnique<base::Value>(123), nullptr); |
350 policy0_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 350 policy0_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
351 POLICY_SOURCE_CLOUD, | 351 POLICY_SOURCE_CLOUD, |
352 base::MakeUnique<base::FundamentalValue>(1234), nullptr); | 352 base::MakeUnique<base::Value>(1234), nullptr); |
353 // Should not crash. | 353 // Should not crash. |
354 provider0_.UpdateChromePolicy(policy0_); | 354 provider0_.UpdateChromePolicy(policy0_); |
355 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &observer); | 355 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &observer); |
356 EXPECT_TRUE(observer.observer_invoked()); | 356 EXPECT_TRUE(observer.observer_invoked()); |
357 } | 357 } |
358 | 358 |
359 TEST_F(PolicyServiceTest, Priorities) { | 359 TEST_F(PolicyServiceTest, Priorities) { |
360 PolicyMap expected; | 360 PolicyMap expected; |
361 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 361 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
362 POLICY_SOURCE_ENTERPRISE_DEFAULT, | 362 POLICY_SOURCE_ENTERPRISE_DEFAULT, |
363 base::MakeUnique<base::FundamentalValue>(13), nullptr); | 363 base::MakeUnique<base::Value>(13), nullptr); |
364 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 364 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
365 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(0), | 365 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(0), |
366 nullptr); | 366 nullptr); |
367 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 367 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
368 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(0), | 368 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(0), |
369 nullptr); | 369 nullptr); |
370 policy1_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 370 policy1_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
371 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(1), | 371 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(1), |
372 nullptr); | 372 nullptr); |
373 policy2_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 373 policy2_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
374 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(2), | 374 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(2), |
375 nullptr); | 375 nullptr); |
376 provider0_.UpdateChromePolicy(policy0_); | 376 provider0_.UpdateChromePolicy(policy0_); |
377 provider1_.UpdateChromePolicy(policy1_); | 377 provider1_.UpdateChromePolicy(policy1_); |
378 provider2_.UpdateChromePolicy(policy2_); | 378 provider2_.UpdateChromePolicy(policy2_); |
379 EXPECT_TRUE(VerifyPolicies( | 379 EXPECT_TRUE(VerifyPolicies( |
380 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); | 380 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); |
381 | 381 |
382 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 382 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
383 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(1), | 383 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(1), |
384 nullptr); | 384 nullptr); |
385 policy0_.Erase("aaa"); | 385 policy0_.Erase("aaa"); |
386 provider0_.UpdateChromePolicy(policy0_); | 386 provider0_.UpdateChromePolicy(policy0_); |
387 EXPECT_TRUE(VerifyPolicies( | 387 EXPECT_TRUE(VerifyPolicies( |
388 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); | 388 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); |
389 | 389 |
390 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 390 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
391 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(2), | 391 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(2), |
392 nullptr); | 392 nullptr); |
393 policy1_.Set("aaa", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, | 393 policy1_.Set("aaa", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, |
394 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(1), | 394 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(1), |
395 nullptr); | 395 nullptr); |
396 provider1_.UpdateChromePolicy(policy1_); | 396 provider1_.UpdateChromePolicy(policy1_); |
397 EXPECT_TRUE(VerifyPolicies( | 397 EXPECT_TRUE(VerifyPolicies( |
398 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); | 398 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); |
399 } | 399 } |
400 | 400 |
401 TEST_F(PolicyServiceTest, PolicyChangeRegistrar) { | 401 TEST_F(PolicyServiceTest, PolicyChangeRegistrar) { |
402 std::unique_ptr<PolicyChangeRegistrar> registrar(new PolicyChangeRegistrar( | 402 std::unique_ptr<PolicyChangeRegistrar> registrar(new PolicyChangeRegistrar( |
403 policy_service_.get(), | 403 policy_service_.get(), |
404 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))); | 404 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))); |
405 | 405 |
406 // Starting to observe existing policies doesn't trigger a notification. | 406 // Starting to observe existing policies doesn't trigger a notification. |
407 EXPECT_CALL(*this, OnPolicyValueUpdated(_, _)).Times(0); | 407 EXPECT_CALL(*this, OnPolicyValueUpdated(_, _)).Times(0); |
408 registrar->Observe("pre", base::Bind( | 408 registrar->Observe("pre", base::Bind( |
409 &PolicyServiceTest::OnPolicyValueUpdated, | 409 &PolicyServiceTest::OnPolicyValueUpdated, |
410 base::Unretained(this))); | 410 base::Unretained(this))); |
411 registrar->Observe("aaa", base::Bind( | 411 registrar->Observe("aaa", base::Bind( |
412 &PolicyServiceTest::OnPolicyValueUpdated, | 412 &PolicyServiceTest::OnPolicyValueUpdated, |
413 base::Unretained(this))); | 413 base::Unretained(this))); |
414 RunUntilIdle(); | 414 RunUntilIdle(); |
415 Mock::VerifyAndClearExpectations(this); | 415 Mock::VerifyAndClearExpectations(this); |
416 | 416 |
417 // Changing it now triggers a notification. | 417 // Changing it now triggers a notification. |
418 base::FundamentalValue kValue0(0); | 418 base::Value kValue0(0); |
419 EXPECT_CALL(*this, OnPolicyValueUpdated(NULL, ValueEquals(&kValue0))); | 419 EXPECT_CALL(*this, OnPolicyValueUpdated(NULL, ValueEquals(&kValue0))); |
420 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 420 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
421 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); | 421 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); |
422 provider0_.UpdateChromePolicy(policy0_); | 422 provider0_.UpdateChromePolicy(policy0_); |
423 Mock::VerifyAndClearExpectations(this); | 423 Mock::VerifyAndClearExpectations(this); |
424 | 424 |
425 // Changing other values doesn't trigger a notification. | 425 // Changing other values doesn't trigger a notification. |
426 EXPECT_CALL(*this, OnPolicyValueUpdated(_, _)).Times(0); | 426 EXPECT_CALL(*this, OnPolicyValueUpdated(_, _)).Times(0); |
427 policy0_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 427 policy0_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
428 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); | 428 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); |
429 provider0_.UpdateChromePolicy(policy0_); | 429 provider0_.UpdateChromePolicy(policy0_); |
430 Mock::VerifyAndClearExpectations(this); | 430 Mock::VerifyAndClearExpectations(this); |
431 | 431 |
432 // Modifying the value triggers a notification. | 432 // Modifying the value triggers a notification. |
433 base::FundamentalValue kValue1(1); | 433 base::Value kValue1(1); |
434 EXPECT_CALL(*this, OnPolicyValueUpdated(ValueEquals(&kValue0), | 434 EXPECT_CALL(*this, OnPolicyValueUpdated(ValueEquals(&kValue0), |
435 ValueEquals(&kValue1))); | 435 ValueEquals(&kValue1))); |
436 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 436 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
437 POLICY_SOURCE_CLOUD, kValue1.CreateDeepCopy(), nullptr); | 437 POLICY_SOURCE_CLOUD, kValue1.CreateDeepCopy(), nullptr); |
438 provider0_.UpdateChromePolicy(policy0_); | 438 provider0_.UpdateChromePolicy(policy0_); |
439 Mock::VerifyAndClearExpectations(this); | 439 Mock::VerifyAndClearExpectations(this); |
440 | 440 |
441 // Removing the value triggers a notification. | 441 // Removing the value triggers a notification. |
442 EXPECT_CALL(*this, OnPolicyValueUpdated(ValueEquals(&kValue1), NULL)); | 442 EXPECT_CALL(*this, OnPolicyValueUpdated(ValueEquals(&kValue1), NULL)); |
443 policy0_.Erase("aaa"); | 443 policy0_.Erase("aaa"); |
(...skipping 19 matching lines...) Expand all Loading... |
463 | 463 |
464 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); | 464 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); |
465 policy_service_->RefreshPolicies(base::Bind( | 465 policy_service_->RefreshPolicies(base::Bind( |
466 &PolicyServiceTest::OnPolicyRefresh, | 466 &PolicyServiceTest::OnPolicyRefresh, |
467 base::Unretained(this))); | 467 base::Unretained(this))); |
468 // Let any queued observer tasks run. | 468 // Let any queued observer tasks run. |
469 RunUntilIdle(); | 469 RunUntilIdle(); |
470 Mock::VerifyAndClearExpectations(this); | 470 Mock::VerifyAndClearExpectations(this); |
471 | 471 |
472 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); | 472 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); |
473 base::FundamentalValue kValue0(0); | 473 base::Value kValue0(0); |
474 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 474 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
475 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); | 475 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); |
476 provider0_.UpdateChromePolicy(policy0_); | 476 provider0_.UpdateChromePolicy(policy0_); |
477 Mock::VerifyAndClearExpectations(this); | 477 Mock::VerifyAndClearExpectations(this); |
478 | 478 |
479 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); | 479 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); |
480 base::FundamentalValue kValue1(1); | 480 base::Value kValue1(1); |
481 policy1_.Set("aaa", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, | 481 policy1_.Set("aaa", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, |
482 POLICY_SOURCE_CLOUD, kValue1.CreateDeepCopy(), nullptr); | 482 POLICY_SOURCE_CLOUD, kValue1.CreateDeepCopy(), nullptr); |
483 provider1_.UpdateChromePolicy(policy1_); | 483 provider1_.UpdateChromePolicy(policy1_); |
484 Mock::VerifyAndClearExpectations(this); | 484 Mock::VerifyAndClearExpectations(this); |
485 | 485 |
486 // A provider can refresh more than once after a RefreshPolicies call, but | 486 // A provider can refresh more than once after a RefreshPolicies call, but |
487 // OnPolicyRefresh should be triggered only after all providers are | 487 // OnPolicyRefresh should be triggered only after all providers are |
488 // refreshed. | 488 // refreshed. |
489 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); | 489 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); |
490 policy1_.Set("bbb", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, | 490 policy1_.Set("bbb", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, |
(...skipping 11 matching lines...) Expand all Loading... |
502 Mock::VerifyAndClearExpectations(this); | 502 Mock::VerifyAndClearExpectations(this); |
503 | 503 |
504 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); | 504 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); |
505 policy2_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 505 policy2_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
506 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); | 506 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); |
507 provider2_.UpdateChromePolicy(policy2_); | 507 provider2_.UpdateChromePolicy(policy2_); |
508 Mock::VerifyAndClearExpectations(this); | 508 Mock::VerifyAndClearExpectations(this); |
509 | 509 |
510 // Providers 0 and 1 must reload again. | 510 // Providers 0 and 1 must reload again. |
511 EXPECT_CALL(*this, OnPolicyRefresh()).Times(2); | 511 EXPECT_CALL(*this, OnPolicyRefresh()).Times(2); |
512 base::FundamentalValue kValue2(2); | 512 base::Value kValue2(2); |
513 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 513 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
514 POLICY_SOURCE_CLOUD, kValue2.CreateDeepCopy(), nullptr); | 514 POLICY_SOURCE_CLOUD, kValue2.CreateDeepCopy(), nullptr); |
515 provider0_.UpdateChromePolicy(policy0_); | 515 provider0_.UpdateChromePolicy(policy0_); |
516 provider1_.UpdateChromePolicy(policy1_); | 516 provider1_.UpdateChromePolicy(policy1_); |
517 Mock::VerifyAndClearExpectations(this); | 517 Mock::VerifyAndClearExpectations(this); |
518 | 518 |
519 const PolicyMap& policies = policy_service_->GetPolicies( | 519 const PolicyMap& policies = policy_service_->GetPolicies( |
520 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())); | 520 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())); |
521 EXPECT_TRUE(base::Value::Equals(&kValue2, policies.GetValue("aaa"))); | 521 EXPECT_TRUE(base::Value::Equals(&kValue2, policies.GetValue("aaa"))); |
522 EXPECT_TRUE(base::Value::Equals(&kValue0, policies.GetValue("bbb"))); | 522 EXPECT_TRUE(base::Value::Equals(&kValue0, policies.GetValue("bbb"))); |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
665 TEST_F(PolicyServiceTest, FixDeprecatedPolicies) { | 665 TEST_F(PolicyServiceTest, FixDeprecatedPolicies) { |
666 const PolicyNamespace chrome_namespace(POLICY_DOMAIN_CHROME, std::string()); | 666 const PolicyNamespace chrome_namespace(POLICY_DOMAIN_CHROME, std::string()); |
667 const PolicyNamespace extension_namespace(POLICY_DOMAIN_EXTENSIONS, "xyz"); | 667 const PolicyNamespace extension_namespace(POLICY_DOMAIN_EXTENSIONS, "xyz"); |
668 | 668 |
669 std::unique_ptr<PolicyBundle> policy_bundle(new PolicyBundle()); | 669 std::unique_ptr<PolicyBundle> policy_bundle(new PolicyBundle()); |
670 PolicyMap& policy_map = policy_bundle->Get(chrome_namespace); | 670 PolicyMap& policy_map = policy_bundle->Get(chrome_namespace); |
671 // Individual proxy policy values in the Chrome namespace should be collected | 671 // Individual proxy policy values in the Chrome namespace should be collected |
672 // into a dictionary. | 672 // into a dictionary. |
673 policy_map.Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, | 673 policy_map.Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, |
674 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, | 674 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, |
675 base::MakeUnique<base::FundamentalValue>(3), nullptr); | 675 base::MakeUnique<base::Value>(3), nullptr); |
676 | 676 |
677 // Both these policies should be ignored, since there's a higher priority | 677 // Both these policies should be ignored, since there's a higher priority |
678 // policy available. | 678 // policy available. |
679 policy_map.Set(key::kProxyMode, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, | 679 policy_map.Set(key::kProxyMode, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, |
680 POLICY_SOURCE_CLOUD, | 680 POLICY_SOURCE_CLOUD, |
681 base::MakeUnique<base::StringValue>("pac_script"), nullptr); | 681 base::MakeUnique<base::StringValue>("pac_script"), nullptr); |
682 policy_map.Set(key::kProxyPacUrl, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, | 682 policy_map.Set(key::kProxyPacUrl, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, |
683 POLICY_SOURCE_CLOUD, base::MakeUnique<base::StringValue>( | 683 POLICY_SOURCE_CLOUD, base::MakeUnique<base::StringValue>( |
684 "http://example.com/wpad.dat"), | 684 "http://example.com/wpad.dat"), |
685 nullptr); | 685 nullptr); |
686 | 686 |
687 // Add a value to a non-Chrome namespace. | 687 // Add a value to a non-Chrome namespace. |
688 policy_bundle->Get(extension_namespace) | 688 policy_bundle->Get(extension_namespace) |
689 .Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 689 .Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
690 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(3), | 690 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(3), |
691 nullptr); | 691 nullptr); |
692 | 692 |
693 // The resulting Chrome namespace map should have the collected policy. | 693 // The resulting Chrome namespace map should have the collected policy. |
694 PolicyMap expected_chrome; | 694 PolicyMap expected_chrome; |
695 std::unique_ptr<base::DictionaryValue> expected_value( | 695 std::unique_ptr<base::DictionaryValue> expected_value( |
696 new base::DictionaryValue); | 696 new base::DictionaryValue); |
697 expected_value->SetInteger(key::kProxyServerMode, 3); | 697 expected_value->SetInteger(key::kProxyServerMode, 3); |
698 expected_chrome.Set(key::kProxySettings, POLICY_LEVEL_MANDATORY, | 698 expected_chrome.Set(key::kProxySettings, POLICY_LEVEL_MANDATORY, |
699 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, | 699 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, |
700 std::move(expected_value), nullptr); | 700 std::move(expected_value), nullptr); |
701 | 701 |
702 // The resulting Extensions namespace map shouldn't have been modified. | 702 // The resulting Extensions namespace map shouldn't have been modified. |
703 PolicyMap expected_extension; | 703 PolicyMap expected_extension; |
704 expected_extension.Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, | 704 expected_extension.Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, |
705 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, | 705 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, |
706 base::MakeUnique<base::FundamentalValue>(3), nullptr); | 706 base::MakeUnique<base::Value>(3), nullptr); |
707 | 707 |
708 provider0_.UpdatePolicy(std::move(policy_bundle)); | 708 provider0_.UpdatePolicy(std::move(policy_bundle)); |
709 RunUntilIdle(); | 709 RunUntilIdle(); |
710 | 710 |
711 EXPECT_TRUE(VerifyPolicies(chrome_namespace, expected_chrome)); | 711 EXPECT_TRUE(VerifyPolicies(chrome_namespace, expected_chrome)); |
712 EXPECT_TRUE(VerifyPolicies(extension_namespace, expected_extension)); | 712 EXPECT_TRUE(VerifyPolicies(extension_namespace, expected_extension)); |
713 } | 713 } |
714 | 714 |
715 } // namespace policy | 715 } // namespace policy |
OLD | NEW |