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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 public: | 74 public: |
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, base::MakeUnique<base::Value>(14), |
85 base::MakeUnique<base::FundamentalValue>(14), nullptr); | 85 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, base::MakeUnique<base::Value>(123), |
184 base::MakeUnique<base::FundamentalValue>(123), nullptr); | 184 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, base::MakeUnique<base::Value>(123), |
187 base::MakeUnique<base::FundamentalValue>(123), nullptr); | 187 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, base::MakeUnique<base::Value>(456), |
206 base::MakeUnique<base::FundamentalValue>(456), nullptr); | 206 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, base::MakeUnique<base::Value>(456), |
209 base::MakeUnique<base::FundamentalValue>(456), nullptr); | 209 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, base::MakeUnique<base::Value>(789), |
232 base::MakeUnique<base::FundamentalValue>(789), nullptr); | 232 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, base::MakeUnique<base::Value>(789), |
235 base::MakeUnique<base::FundamentalValue>(789), nullptr); | 235 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), nullptr); |
267 nullptr); | |
268 PolicyMap policy_map; | 267 PolicyMap policy_map; |
269 policy_map.CopyFrom(previous_policy_map); | 268 policy_map.CopyFrom(previous_policy_map); |
270 policy_map.Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 269 policy_map.Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
271 POLICY_SOURCE_CLOUD, | 270 POLICY_SOURCE_CLOUD, |
272 base::MakeUnique<base::StringValue>("value"), nullptr); | 271 base::MakeUnique<base::StringValue>("value"), nullptr); |
273 | 272 |
274 std::unique_ptr<PolicyBundle> bundle(new PolicyBundle()); | 273 std::unique_ptr<PolicyBundle> bundle(new PolicyBundle()); |
275 // The initial setup includes a policy for chrome that is now changing. | 274 // The initial setup includes a policy for chrome that is now changing. |
276 bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 275 bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
277 .CopyFrom(policy_map); | 276 .CopyFrom(policy_map); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
338 | 337 |
339 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &chrome_observer); | 338 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &chrome_observer); |
340 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS, | 339 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS, |
341 &extension_observer); | 340 &extension_observer); |
342 } | 341 } |
343 | 342 |
344 TEST_F(PolicyServiceTest, ObserverChangesPolicy) { | 343 TEST_F(PolicyServiceTest, ObserverChangesPolicy) { |
345 ChangePolicyObserver observer(&provider0_); | 344 ChangePolicyObserver observer(&provider0_); |
346 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &observer); | 345 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &observer); |
347 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 346 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
348 POLICY_SOURCE_CLOUD, | 347 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(123), |
349 base::MakeUnique<base::FundamentalValue>(123), nullptr); | 348 nullptr); |
350 policy0_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 349 policy0_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
351 POLICY_SOURCE_CLOUD, | 350 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(1234), |
352 base::MakeUnique<base::FundamentalValue>(1234), nullptr); | 351 nullptr); |
353 // Should not crash. | 352 // Should not crash. |
354 provider0_.UpdateChromePolicy(policy0_); | 353 provider0_.UpdateChromePolicy(policy0_); |
355 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &observer); | 354 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &observer); |
356 EXPECT_TRUE(observer.observer_invoked()); | 355 EXPECT_TRUE(observer.observer_invoked()); |
357 } | 356 } |
358 | 357 |
359 TEST_F(PolicyServiceTest, Priorities) { | 358 TEST_F(PolicyServiceTest, Priorities) { |
360 PolicyMap expected; | 359 PolicyMap expected; |
361 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 360 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
362 POLICY_SOURCE_ENTERPRISE_DEFAULT, | 361 POLICY_SOURCE_ENTERPRISE_DEFAULT, |
363 base::MakeUnique<base::FundamentalValue>(13), nullptr); | 362 base::MakeUnique<base::Value>(13), nullptr); |
364 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 363 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
365 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(0), | 364 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(0), nullptr); |
366 nullptr); | |
367 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 365 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
368 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(0), | 366 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(0), nullptr); |
369 nullptr); | |
370 policy1_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 367 policy1_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
371 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(1), | 368 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(1), nullptr); |
372 nullptr); | |
373 policy2_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 369 policy2_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
374 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(2), | 370 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(2), nullptr); |
375 nullptr); | |
376 provider0_.UpdateChromePolicy(policy0_); | 371 provider0_.UpdateChromePolicy(policy0_); |
377 provider1_.UpdateChromePolicy(policy1_); | 372 provider1_.UpdateChromePolicy(policy1_); |
378 provider2_.UpdateChromePolicy(policy2_); | 373 provider2_.UpdateChromePolicy(policy2_); |
379 EXPECT_TRUE(VerifyPolicies( | 374 EXPECT_TRUE(VerifyPolicies( |
380 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); | 375 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); |
381 | 376 |
382 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 377 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
383 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(1), | 378 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(1), nullptr); |
384 nullptr); | |
385 policy0_.Erase("aaa"); | 379 policy0_.Erase("aaa"); |
386 provider0_.UpdateChromePolicy(policy0_); | 380 provider0_.UpdateChromePolicy(policy0_); |
387 EXPECT_TRUE(VerifyPolicies( | 381 EXPECT_TRUE(VerifyPolicies( |
388 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); | 382 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); |
389 | 383 |
390 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 384 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
391 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(2), | 385 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(2), nullptr); |
392 nullptr); | |
393 policy1_.Set("aaa", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, | 386 policy1_.Set("aaa", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, |
394 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(1), | 387 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(1), nullptr); |
395 nullptr); | |
396 provider1_.UpdateChromePolicy(policy1_); | 388 provider1_.UpdateChromePolicy(policy1_); |
397 EXPECT_TRUE(VerifyPolicies( | 389 EXPECT_TRUE(VerifyPolicies( |
398 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); | 390 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()), expected)); |
399 } | 391 } |
400 | 392 |
401 TEST_F(PolicyServiceTest, PolicyChangeRegistrar) { | 393 TEST_F(PolicyServiceTest, PolicyChangeRegistrar) { |
402 std::unique_ptr<PolicyChangeRegistrar> registrar(new PolicyChangeRegistrar( | 394 std::unique_ptr<PolicyChangeRegistrar> registrar(new PolicyChangeRegistrar( |
403 policy_service_.get(), | 395 policy_service_.get(), |
404 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))); | 396 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))); |
405 | 397 |
406 // Starting to observe existing policies doesn't trigger a notification. | 398 // Starting to observe existing policies doesn't trigger a notification. |
407 EXPECT_CALL(*this, OnPolicyValueUpdated(_, _)).Times(0); | 399 EXPECT_CALL(*this, OnPolicyValueUpdated(_, _)).Times(0); |
408 registrar->Observe("pre", base::Bind( | 400 registrar->Observe("pre", base::Bind( |
409 &PolicyServiceTest::OnPolicyValueUpdated, | 401 &PolicyServiceTest::OnPolicyValueUpdated, |
410 base::Unretained(this))); | 402 base::Unretained(this))); |
411 registrar->Observe("aaa", base::Bind( | 403 registrar->Observe("aaa", base::Bind( |
412 &PolicyServiceTest::OnPolicyValueUpdated, | 404 &PolicyServiceTest::OnPolicyValueUpdated, |
413 base::Unretained(this))); | 405 base::Unretained(this))); |
414 RunUntilIdle(); | 406 RunUntilIdle(); |
415 Mock::VerifyAndClearExpectations(this); | 407 Mock::VerifyAndClearExpectations(this); |
416 | 408 |
417 // Changing it now triggers a notification. | 409 // Changing it now triggers a notification. |
418 base::FundamentalValue kValue0(0); | 410 base::Value kValue0(0); |
419 EXPECT_CALL(*this, OnPolicyValueUpdated(NULL, ValueEquals(&kValue0))); | 411 EXPECT_CALL(*this, OnPolicyValueUpdated(NULL, ValueEquals(&kValue0))); |
420 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 412 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
421 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); | 413 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); |
422 provider0_.UpdateChromePolicy(policy0_); | 414 provider0_.UpdateChromePolicy(policy0_); |
423 Mock::VerifyAndClearExpectations(this); | 415 Mock::VerifyAndClearExpectations(this); |
424 | 416 |
425 // Changing other values doesn't trigger a notification. | 417 // Changing other values doesn't trigger a notification. |
426 EXPECT_CALL(*this, OnPolicyValueUpdated(_, _)).Times(0); | 418 EXPECT_CALL(*this, OnPolicyValueUpdated(_, _)).Times(0); |
427 policy0_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 419 policy0_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
428 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); | 420 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); |
429 provider0_.UpdateChromePolicy(policy0_); | 421 provider0_.UpdateChromePolicy(policy0_); |
430 Mock::VerifyAndClearExpectations(this); | 422 Mock::VerifyAndClearExpectations(this); |
431 | 423 |
432 // Modifying the value triggers a notification. | 424 // Modifying the value triggers a notification. |
433 base::FundamentalValue kValue1(1); | 425 base::Value kValue1(1); |
434 EXPECT_CALL(*this, OnPolicyValueUpdated(ValueEquals(&kValue0), | 426 EXPECT_CALL(*this, OnPolicyValueUpdated(ValueEquals(&kValue0), |
435 ValueEquals(&kValue1))); | 427 ValueEquals(&kValue1))); |
436 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 428 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
437 POLICY_SOURCE_CLOUD, kValue1.CreateDeepCopy(), nullptr); | 429 POLICY_SOURCE_CLOUD, kValue1.CreateDeepCopy(), nullptr); |
438 provider0_.UpdateChromePolicy(policy0_); | 430 provider0_.UpdateChromePolicy(policy0_); |
439 Mock::VerifyAndClearExpectations(this); | 431 Mock::VerifyAndClearExpectations(this); |
440 | 432 |
441 // Removing the value triggers a notification. | 433 // Removing the value triggers a notification. |
442 EXPECT_CALL(*this, OnPolicyValueUpdated(ValueEquals(&kValue1), NULL)); | 434 EXPECT_CALL(*this, OnPolicyValueUpdated(ValueEquals(&kValue1), NULL)); |
443 policy0_.Erase("aaa"); | 435 policy0_.Erase("aaa"); |
(...skipping 19 matching lines...) Expand all Loading... |
463 | 455 |
464 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); | 456 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); |
465 policy_service_->RefreshPolicies(base::Bind( | 457 policy_service_->RefreshPolicies(base::Bind( |
466 &PolicyServiceTest::OnPolicyRefresh, | 458 &PolicyServiceTest::OnPolicyRefresh, |
467 base::Unretained(this))); | 459 base::Unretained(this))); |
468 // Let any queued observer tasks run. | 460 // Let any queued observer tasks run. |
469 RunUntilIdle(); | 461 RunUntilIdle(); |
470 Mock::VerifyAndClearExpectations(this); | 462 Mock::VerifyAndClearExpectations(this); |
471 | 463 |
472 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); | 464 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); |
473 base::FundamentalValue kValue0(0); | 465 base::Value kValue0(0); |
474 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 466 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
475 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); | 467 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); |
476 provider0_.UpdateChromePolicy(policy0_); | 468 provider0_.UpdateChromePolicy(policy0_); |
477 Mock::VerifyAndClearExpectations(this); | 469 Mock::VerifyAndClearExpectations(this); |
478 | 470 |
479 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); | 471 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); |
480 base::FundamentalValue kValue1(1); | 472 base::Value kValue1(1); |
481 policy1_.Set("aaa", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, | 473 policy1_.Set("aaa", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, |
482 POLICY_SOURCE_CLOUD, kValue1.CreateDeepCopy(), nullptr); | 474 POLICY_SOURCE_CLOUD, kValue1.CreateDeepCopy(), nullptr); |
483 provider1_.UpdateChromePolicy(policy1_); | 475 provider1_.UpdateChromePolicy(policy1_); |
484 Mock::VerifyAndClearExpectations(this); | 476 Mock::VerifyAndClearExpectations(this); |
485 | 477 |
486 // A provider can refresh more than once after a RefreshPolicies call, but | 478 // A provider can refresh more than once after a RefreshPolicies call, but |
487 // OnPolicyRefresh should be triggered only after all providers are | 479 // OnPolicyRefresh should be triggered only after all providers are |
488 // refreshed. | 480 // refreshed. |
489 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); | 481 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); |
490 policy1_.Set("bbb", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, | 482 policy1_.Set("bbb", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, |
(...skipping 11 matching lines...) Expand all Loading... |
502 Mock::VerifyAndClearExpectations(this); | 494 Mock::VerifyAndClearExpectations(this); |
503 | 495 |
504 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); | 496 EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); |
505 policy2_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 497 policy2_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
506 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); | 498 POLICY_SOURCE_CLOUD, kValue0.CreateDeepCopy(), nullptr); |
507 provider2_.UpdateChromePolicy(policy2_); | 499 provider2_.UpdateChromePolicy(policy2_); |
508 Mock::VerifyAndClearExpectations(this); | 500 Mock::VerifyAndClearExpectations(this); |
509 | 501 |
510 // Providers 0 and 1 must reload again. | 502 // Providers 0 and 1 must reload again. |
511 EXPECT_CALL(*this, OnPolicyRefresh()).Times(2); | 503 EXPECT_CALL(*this, OnPolicyRefresh()).Times(2); |
512 base::FundamentalValue kValue2(2); | 504 base::Value kValue2(2); |
513 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 505 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
514 POLICY_SOURCE_CLOUD, kValue2.CreateDeepCopy(), nullptr); | 506 POLICY_SOURCE_CLOUD, kValue2.CreateDeepCopy(), nullptr); |
515 provider0_.UpdateChromePolicy(policy0_); | 507 provider0_.UpdateChromePolicy(policy0_); |
516 provider1_.UpdateChromePolicy(policy1_); | 508 provider1_.UpdateChromePolicy(policy1_); |
517 Mock::VerifyAndClearExpectations(this); | 509 Mock::VerifyAndClearExpectations(this); |
518 | 510 |
519 const PolicyMap& policies = policy_service_->GetPolicies( | 511 const PolicyMap& policies = policy_service_->GetPolicies( |
520 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())); | 512 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())); |
521 EXPECT_TRUE(base::Value::Equals(&kValue2, policies.GetValue("aaa"))); | 513 EXPECT_TRUE(base::Value::Equals(&kValue2, policies.GetValue("aaa"))); |
522 EXPECT_TRUE(base::Value::Equals(&kValue0, policies.GetValue("bbb"))); | 514 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, SeparateProxyPoliciesMerging) { | 657 TEST_F(PolicyServiceTest, SeparateProxyPoliciesMerging) { |
666 const PolicyNamespace chrome_namespace(POLICY_DOMAIN_CHROME, std::string()); | 658 const PolicyNamespace chrome_namespace(POLICY_DOMAIN_CHROME, std::string()); |
667 const PolicyNamespace extension_namespace(POLICY_DOMAIN_EXTENSIONS, "xyz"); | 659 const PolicyNamespace extension_namespace(POLICY_DOMAIN_EXTENSIONS, "xyz"); |
668 | 660 |
669 std::unique_ptr<PolicyBundle> policy_bundle(new PolicyBundle()); | 661 std::unique_ptr<PolicyBundle> policy_bundle(new PolicyBundle()); |
670 PolicyMap& policy_map = policy_bundle->Get(chrome_namespace); | 662 PolicyMap& policy_map = policy_bundle->Get(chrome_namespace); |
671 // Individual proxy policy values in the Chrome namespace should be collected | 663 // Individual proxy policy values in the Chrome namespace should be collected |
672 // into a dictionary. | 664 // into a dictionary. |
673 policy_map.Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, | 665 policy_map.Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, |
674 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, | 666 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, |
675 base::MakeUnique<base::FundamentalValue>(3), nullptr); | 667 base::MakeUnique<base::Value>(3), nullptr); |
676 | 668 |
677 // Both these policies should be ignored, since there's a higher priority | 669 // Both these policies should be ignored, since there's a higher priority |
678 // policy available. | 670 // policy available. |
679 policy_map.Set(key::kProxyMode, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, | 671 policy_map.Set(key::kProxyMode, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, |
680 POLICY_SOURCE_CLOUD, | 672 POLICY_SOURCE_CLOUD, |
681 base::MakeUnique<base::StringValue>("pac_script"), nullptr); | 673 base::MakeUnique<base::StringValue>("pac_script"), nullptr); |
682 policy_map.Set(key::kProxyPacUrl, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, | 674 policy_map.Set(key::kProxyPacUrl, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, |
683 POLICY_SOURCE_CLOUD, base::MakeUnique<base::StringValue>( | 675 POLICY_SOURCE_CLOUD, base::MakeUnique<base::StringValue>( |
684 "http://example.com/wpad.dat"), | 676 "http://example.com/wpad.dat"), |
685 nullptr); | 677 nullptr); |
686 | 678 |
687 // Add a value to a non-Chrome namespace. | 679 // Add a value to a non-Chrome namespace. |
688 policy_bundle->Get(extension_namespace) | 680 policy_bundle->Get(extension_namespace) |
689 .Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 681 .Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
690 POLICY_SOURCE_CLOUD, base::MakeUnique<base::FundamentalValue>(3), | 682 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>(3), nullptr); |
691 nullptr); | |
692 | 683 |
693 // The resulting Chrome namespace map should have the collected policy. | 684 // The resulting Chrome namespace map should have the collected policy. |
694 PolicyMap expected_chrome; | 685 PolicyMap expected_chrome; |
695 std::unique_ptr<base::DictionaryValue> expected_value( | 686 std::unique_ptr<base::DictionaryValue> expected_value( |
696 new base::DictionaryValue); | 687 new base::DictionaryValue); |
697 expected_value->SetInteger(key::kProxyServerMode, 3); | 688 expected_value->SetInteger(key::kProxyServerMode, 3); |
698 expected_chrome.Set(key::kProxySettings, POLICY_LEVEL_MANDATORY, | 689 expected_chrome.Set(key::kProxySettings, POLICY_LEVEL_MANDATORY, |
699 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, | 690 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, |
700 std::move(expected_value), nullptr); | 691 std::move(expected_value), nullptr); |
701 | 692 |
702 // The resulting Extensions namespace map shouldn't have been modified. | 693 // The resulting Extensions namespace map shouldn't have been modified. |
703 PolicyMap expected_extension; | 694 PolicyMap expected_extension; |
704 expected_extension.Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, | 695 expected_extension.Set(key::kProxyServerMode, POLICY_LEVEL_MANDATORY, |
705 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, | 696 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, |
706 base::MakeUnique<base::FundamentalValue>(3), nullptr); | 697 base::MakeUnique<base::Value>(3), nullptr); |
707 | 698 |
708 provider0_.UpdatePolicy(std::move(policy_bundle)); | 699 provider0_.UpdatePolicy(std::move(policy_bundle)); |
709 RunUntilIdle(); | 700 RunUntilIdle(); |
710 | 701 |
711 EXPECT_TRUE(VerifyPolicies(chrome_namespace, expected_chrome)); | 702 EXPECT_TRUE(VerifyPolicies(chrome_namespace, expected_chrome)); |
712 EXPECT_TRUE(VerifyPolicies(extension_namespace, expected_extension)); | 703 EXPECT_TRUE(VerifyPolicies(extension_namespace, expected_extension)); |
713 } | 704 } |
714 | 705 |
715 } // namespace policy | 706 } // namespace policy |
OLD | NEW |