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 "chrome/browser/policy/user_policy_cache.h" | 5 #include "chrome/browser/policy/user_policy_cache.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/bind.h" | |
11 #include "base/callback.h" | |
10 #include "base/file_util.h" | 12 #include "base/file_util.h" |
11 #include "base/message_loop.h" | 13 #include "base/message_loop.h" |
12 #include "base/scoped_temp_dir.h" | 14 #include "base/scoped_temp_dir.h" |
13 #include "base/values.h" | 15 #include "base/values.h" |
14 #include "chrome/browser/policy/proto/cloud_policy.pb.h" | 16 #include "chrome/browser/policy/proto/cloud_policy.pb.h" |
15 #include "chrome/browser/policy/proto/device_management_backend.pb.h" | 17 #include "chrome/browser/policy/proto/device_management_backend.pb.h" |
16 #include "chrome/browser/policy/proto/device_management_local.pb.h" | 18 #include "chrome/browser/policy/proto/device_management_local.pb.h" |
17 #include "chrome/browser/policy/proto/old_generic_format.pb.h" | 19 #include "chrome/browser/policy/proto/old_generic_format.pb.h" |
18 #include "content/test/test_browser_thread.h" | 20 #include "content/test/test_browser_thread.h" |
19 #include "policy/policy_constants.h" | 21 #include "policy/policy_constants.h" |
20 #include "testing/gmock/include/gmock/gmock.h" | 22 #include "testing/gmock/include/gmock/gmock.h" |
21 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
22 | 24 |
23 using content::BrowserThread; | 25 using content::BrowserThread; |
24 using testing::_; | 26 using testing::_; |
25 | 27 |
26 namespace em = enterprise_management; | 28 namespace em = enterprise_management; |
27 | 29 |
30 namespace { | |
31 | |
32 // Used to verify if a callback was invoked or not. | |
33 void SetTrue(bool* flag) { | |
Mattias Nissler (ping if slow)
2012/02/16 10:24:11
Use a MOCK_METHOD on UserPolicyCacheTest instead?
| |
34 *flag = true; | |
35 } | |
36 | |
37 } // namespace | |
38 | |
28 namespace policy { | 39 namespace policy { |
29 | 40 |
30 // Decodes a CloudPolicySettings object into a PolicyMap. | 41 // Decodes a CloudPolicySettings object into a PolicyMap. |
31 // The implementation is generated code in policy/cloud_policy_generated.cc. | 42 // The implementation is generated code in policy/cloud_policy_generated.cc. |
32 void DecodePolicy(const em::CloudPolicySettings& policy, | 43 void DecodePolicy(const em::CloudPolicySettings& policy, |
33 PolicyMap* policies); | 44 PolicyMap* policies); |
34 | 45 |
35 // The implementations of these methods are in cloud_policy_generated.cc. | 46 // The implementations of these methods are in cloud_policy_generated.cc. |
36 Value* DecodeIntegerValue(google::protobuf::int64 value); | 47 Value* DecodeIntegerValue(google::protobuf::int64 value); |
37 ListValue* DecodeStringList(const em::StringList& string_list); | 48 ListValue* DecodeStringList(const em::StringList& string_list); |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
198 string_list.add_entries("ponies"); | 209 string_list.add_entries("ponies"); |
199 string_list.add_entries("more ponies"); | 210 string_list.add_entries("more ponies"); |
200 scoped_ptr<ListValue> decoded(DecodeStringList(string_list)); | 211 scoped_ptr<ListValue> decoded(DecodeStringList(string_list)); |
201 ListValue expected; | 212 ListValue expected; |
202 expected.Append(Value::CreateStringValue("ponies")); | 213 expected.Append(Value::CreateStringValue("ponies")); |
203 expected.Append(Value::CreateStringValue("more ponies")); | 214 expected.Append(Value::CreateStringValue("more ponies")); |
204 EXPECT_TRUE(decoded->Equals(&expected)); | 215 EXPECT_TRUE(decoded->Equals(&expected)); |
205 } | 216 } |
206 | 217 |
207 TEST_F(UserPolicyCacheTest, Empty) { | 218 TEST_F(UserPolicyCacheTest, Empty) { |
208 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 219 UserPolicyCache cache(test_file(), false, base::Closure()); |
209 PolicyMap empty; | 220 PolicyMap empty; |
210 EXPECT_TRUE(empty.Equals(*cache.policy())); | 221 EXPECT_TRUE(empty.Equals(*cache.policy())); |
211 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 222 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
212 } | 223 } |
213 | 224 |
214 TEST_F(UserPolicyCacheTest, LoadNoFile) { | 225 TEST_F(UserPolicyCacheTest, LoadNoFile) { |
215 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 226 UserPolicyCache cache(test_file(), false, base::Closure()); |
216 cache.Load(); | 227 cache.Load(); |
217 loop_.RunAllPending(); | 228 loop_.RunAllPending(); |
218 PolicyMap empty; | 229 PolicyMap empty; |
219 EXPECT_TRUE(empty.Equals(*cache.policy())); | 230 EXPECT_TRUE(empty.Equals(*cache.policy())); |
220 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 231 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
221 } | 232 } |
222 | 233 |
223 TEST_F(UserPolicyCacheTest, RejectFuture) { | 234 TEST_F(UserPolicyCacheTest, RejectFuture) { |
224 scoped_ptr<em::PolicyFetchResponse> policy_response( | 235 scoped_ptr<em::PolicyFetchResponse> policy_response( |
225 CreateHomepagePolicy("", base::Time::NowFromSystemTime() + | 236 CreateHomepagePolicy("", base::Time::NowFromSystemTime() + |
226 base::TimeDelta::FromMinutes(5), | 237 base::TimeDelta::FromMinutes(5), |
227 em::PolicyOptions::MANDATORY)); | 238 em::PolicyOptions::MANDATORY)); |
228 WritePolicy(*policy_response); | 239 WritePolicy(*policy_response); |
229 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 240 UserPolicyCache cache(test_file(), false, base::Closure()); |
230 cache.Load(); | 241 cache.Load(); |
231 loop_.RunAllPending(); | 242 loop_.RunAllPending(); |
232 PolicyMap empty; | 243 PolicyMap empty; |
233 EXPECT_TRUE(empty.Equals(*cache.policy())); | 244 EXPECT_TRUE(empty.Equals(*cache.policy())); |
234 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 245 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
235 } | 246 } |
236 | 247 |
237 TEST_F(UserPolicyCacheTest, LoadWithFile) { | 248 TEST_F(UserPolicyCacheTest, LoadWithFile) { |
238 scoped_ptr<em::PolicyFetchResponse> policy_response( | 249 scoped_ptr<em::PolicyFetchResponse> policy_response( |
239 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), | 250 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), |
240 em::PolicyOptions::MANDATORY)); | 251 em::PolicyOptions::MANDATORY)); |
241 WritePolicy(*policy_response); | 252 WritePolicy(*policy_response); |
242 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 253 UserPolicyCache cache(test_file(), false, base::Closure()); |
243 cache.Load(); | 254 cache.Load(); |
244 loop_.RunAllPending(); | 255 loop_.RunAllPending(); |
245 PolicyMap empty; | 256 PolicyMap empty; |
246 EXPECT_TRUE(empty.Equals(*cache.policy())); | 257 EXPECT_TRUE(empty.Equals(*cache.policy())); |
247 EXPECT_NE(base::Time(), cache.last_policy_refresh_time()); | 258 EXPECT_NE(base::Time(), cache.last_policy_refresh_time()); |
248 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time()); | 259 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time()); |
249 } | 260 } |
250 | 261 |
251 TEST_F(UserPolicyCacheTest, LoadWithData) { | 262 TEST_F(UserPolicyCacheTest, LoadWithData) { |
252 scoped_ptr<em::PolicyFetchResponse> policy( | 263 scoped_ptr<em::PolicyFetchResponse> policy( |
253 CreateHomepagePolicy("http://www.example.com", | 264 CreateHomepagePolicy("http://www.example.com", |
254 base::Time::NowFromSystemTime(), | 265 base::Time::NowFromSystemTime(), |
255 em::PolicyOptions::MANDATORY)); | 266 em::PolicyOptions::MANDATORY)); |
256 WritePolicy(*policy); | 267 WritePolicy(*policy); |
257 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 268 UserPolicyCache cache(test_file(), false, base::Closure()); |
258 cache.Load(); | 269 cache.Load(); |
259 loop_.RunAllPending(); | 270 loop_.RunAllPending(); |
260 PolicyMap expected; | 271 PolicyMap expected; |
261 expected.Set(key::kHomepageLocation, | 272 expected.Set(key::kHomepageLocation, |
262 POLICY_LEVEL_MANDATORY, | 273 POLICY_LEVEL_MANDATORY, |
263 POLICY_SCOPE_USER, | 274 POLICY_SCOPE_USER, |
264 Value::CreateStringValue("http://www.example.com")); | 275 Value::CreateStringValue("http://www.example.com")); |
265 EXPECT_TRUE(expected.Equals(*cache.policy())); | 276 EXPECT_TRUE(expected.Equals(*cache.policy())); |
266 } | 277 } |
267 | 278 |
268 TEST_F(UserPolicyCacheTest, SetPolicy) { | 279 TEST_F(UserPolicyCacheTest, SetPolicy) { |
269 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 280 UserPolicyCache cache(test_file(), false, base::Closure()); |
270 em::PolicyFetchResponse* policy = | 281 em::PolicyFetchResponse* policy = |
271 CreateHomepagePolicy("http://www.example.com", | 282 CreateHomepagePolicy("http://www.example.com", |
272 base::Time::NowFromSystemTime(), | 283 base::Time::NowFromSystemTime(), |
273 em::PolicyOptions::MANDATORY); | 284 em::PolicyOptions::MANDATORY); |
274 SetPolicy(&cache, policy); | 285 SetPolicy(&cache, policy); |
275 em::PolicyFetchResponse* policy2 = | 286 em::PolicyFetchResponse* policy2 = |
276 CreateHomepagePolicy("http://www.example.com", | 287 CreateHomepagePolicy("http://www.example.com", |
277 base::Time::NowFromSystemTime(), | 288 base::Time::NowFromSystemTime(), |
278 em::PolicyOptions::MANDATORY); | 289 em::PolicyOptions::MANDATORY); |
279 SetPolicy(&cache, policy2); | 290 SetPolicy(&cache, policy2); |
280 PolicyMap expected; | 291 PolicyMap expected; |
281 expected.Set(key::kHomepageLocation, | 292 expected.Set(key::kHomepageLocation, |
282 POLICY_LEVEL_MANDATORY, | 293 POLICY_LEVEL_MANDATORY, |
283 POLICY_SCOPE_USER, | 294 POLICY_SCOPE_USER, |
284 Value::CreateStringValue("http://www.example.com")); | 295 Value::CreateStringValue("http://www.example.com")); |
285 EXPECT_TRUE(expected.Equals(*cache.policy())); | 296 EXPECT_TRUE(expected.Equals(*cache.policy())); |
286 policy = CreateHomepagePolicy("http://www.example.com", | 297 policy = CreateHomepagePolicy("http://www.example.com", |
287 base::Time::NowFromSystemTime(), | 298 base::Time::NowFromSystemTime(), |
288 em::PolicyOptions::RECOMMENDED); | 299 em::PolicyOptions::RECOMMENDED); |
289 SetPolicy(&cache, policy); | 300 SetPolicy(&cache, policy); |
290 expected.Set(key::kHomepageLocation, | 301 expected.Set(key::kHomepageLocation, |
291 POLICY_LEVEL_RECOMMENDED, | 302 POLICY_LEVEL_RECOMMENDED, |
292 POLICY_SCOPE_USER, | 303 POLICY_SCOPE_USER, |
293 Value::CreateStringValue("http://www.example.com")); | 304 Value::CreateStringValue("http://www.example.com")); |
294 EXPECT_TRUE(expected.Equals(*cache.policy())); | 305 EXPECT_TRUE(expected.Equals(*cache.policy())); |
295 } | 306 } |
296 | 307 |
297 TEST_F(UserPolicyCacheTest, ResetPolicy) { | 308 TEST_F(UserPolicyCacheTest, ResetPolicy) { |
298 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 309 UserPolicyCache cache(test_file(), false, base::Closure()); |
299 | 310 |
300 em::PolicyFetchResponse* policy = | 311 em::PolicyFetchResponse* policy = |
301 CreateHomepagePolicy("http://www.example.com", | 312 CreateHomepagePolicy("http://www.example.com", |
302 base::Time::NowFromSystemTime(), | 313 base::Time::NowFromSystemTime(), |
303 em::PolicyOptions::MANDATORY); | 314 em::PolicyOptions::MANDATORY); |
304 SetPolicy(&cache, policy); | 315 SetPolicy(&cache, policy); |
305 PolicyMap expected; | 316 PolicyMap expected; |
306 expected.Set(key::kHomepageLocation, | 317 expected.Set(key::kHomepageLocation, |
307 POLICY_LEVEL_MANDATORY, | 318 POLICY_LEVEL_MANDATORY, |
308 POLICY_SCOPE_USER, | 319 POLICY_SCOPE_USER, |
309 Value::CreateStringValue("http://www.example.com")); | 320 Value::CreateStringValue("http://www.example.com")); |
310 EXPECT_TRUE(expected.Equals(*cache.policy())); | 321 EXPECT_TRUE(expected.Equals(*cache.policy())); |
311 | 322 |
312 em::PolicyFetchResponse* empty_policy = | 323 em::PolicyFetchResponse* empty_policy = |
313 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), | 324 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), |
314 em::PolicyOptions::MANDATORY); | 325 em::PolicyOptions::MANDATORY); |
315 SetPolicy(&cache, empty_policy); | 326 SetPolicy(&cache, empty_policy); |
316 PolicyMap empty; | 327 PolicyMap empty; |
317 EXPECT_TRUE(empty.Equals(*cache.policy())); | 328 EXPECT_TRUE(empty.Equals(*cache.policy())); |
318 } | 329 } |
319 | 330 |
320 TEST_F(UserPolicyCacheTest, PersistPolicy) { | 331 TEST_F(UserPolicyCacheTest, PersistPolicy) { |
321 { | 332 { |
322 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 333 UserPolicyCache cache(test_file(), false, base::Closure()); |
323 scoped_ptr<em::PolicyFetchResponse> policy( | 334 scoped_ptr<em::PolicyFetchResponse> policy( |
324 CreateHomepagePolicy("http://www.example.com", | 335 CreateHomepagePolicy("http://www.example.com", |
325 base::Time::NowFromSystemTime(), | 336 base::Time::NowFromSystemTime(), |
326 em::PolicyOptions::MANDATORY)); | 337 em::PolicyOptions::MANDATORY)); |
327 cache.SetPolicy(*policy); | 338 cache.SetPolicy(*policy); |
328 } | 339 } |
329 | 340 |
330 loop_.RunAllPending(); | 341 loop_.RunAllPending(); |
331 | 342 |
332 EXPECT_TRUE(file_util::PathExists(test_file())); | 343 EXPECT_TRUE(file_util::PathExists(test_file())); |
333 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 344 UserPolicyCache cache(test_file(), false, base::Closure()); |
334 cache.Load(); | 345 cache.Load(); |
335 loop_.RunAllPending(); | 346 loop_.RunAllPending(); |
336 PolicyMap expected; | 347 PolicyMap expected; |
337 expected.Set(key::kHomepageLocation, | 348 expected.Set(key::kHomepageLocation, |
338 POLICY_LEVEL_MANDATORY, | 349 POLICY_LEVEL_MANDATORY, |
339 POLICY_SCOPE_USER, | 350 POLICY_SCOPE_USER, |
340 Value::CreateStringValue("http://www.example.com")); | 351 Value::CreateStringValue("http://www.example.com")); |
341 EXPECT_TRUE(expected.Equals(*cache.policy())); | 352 EXPECT_TRUE(expected.Equals(*cache.policy())); |
342 } | 353 } |
343 | 354 |
344 TEST_F(UserPolicyCacheTest, FreshPolicyOverride) { | 355 TEST_F(UserPolicyCacheTest, FreshPolicyOverride) { |
345 scoped_ptr<em::PolicyFetchResponse> policy( | 356 scoped_ptr<em::PolicyFetchResponse> policy( |
346 CreateHomepagePolicy("http://www.example.com", | 357 CreateHomepagePolicy("http://www.example.com", |
347 base::Time::NowFromSystemTime(), | 358 base::Time::NowFromSystemTime(), |
348 em::PolicyOptions::MANDATORY)); | 359 em::PolicyOptions::MANDATORY)); |
349 WritePolicy(*policy); | 360 WritePolicy(*policy); |
350 | 361 |
351 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 362 UserPolicyCache cache(test_file(), false, base::Closure()); |
352 em::PolicyFetchResponse* updated_policy = | 363 em::PolicyFetchResponse* updated_policy = |
353 CreateHomepagePolicy("http://www.chromium.org", | 364 CreateHomepagePolicy("http://www.chromium.org", |
354 base::Time::NowFromSystemTime(), | 365 base::Time::NowFromSystemTime(), |
355 em::PolicyOptions::MANDATORY); | 366 em::PolicyOptions::MANDATORY); |
356 SetPolicy(&cache, updated_policy); | 367 SetPolicy(&cache, updated_policy); |
357 | 368 |
358 cache.Load(); | 369 cache.Load(); |
359 loop_.RunAllPending(); | 370 loop_.RunAllPending(); |
360 PolicyMap expected; | 371 PolicyMap expected; |
361 expected.Set(key::kHomepageLocation, | 372 expected.Set(key::kHomepageLocation, |
362 POLICY_LEVEL_MANDATORY, | 373 POLICY_LEVEL_MANDATORY, |
363 POLICY_SCOPE_USER, | 374 POLICY_SCOPE_USER, |
364 Value::CreateStringValue("http://www.chromium.org")); | 375 Value::CreateStringValue("http://www.chromium.org")); |
365 EXPECT_TRUE(expected.Equals(*cache.policy())); | 376 EXPECT_TRUE(expected.Equals(*cache.policy())); |
366 } | 377 } |
367 | 378 |
368 TEST_F(UserPolicyCacheTest, SetReady) { | 379 TEST_F(UserPolicyCacheTest, SetReady) { |
369 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 380 UserPolicyCache cache(test_file(), false, base::Closure()); |
370 cache.AddObserver(&observer_); | 381 cache.AddObserver(&observer_); |
371 scoped_ptr<em::PolicyFetchResponse> policy( | 382 scoped_ptr<em::PolicyFetchResponse> policy( |
372 CreateHomepagePolicy("http://www.example.com", | 383 CreateHomepagePolicy("http://www.example.com", |
373 base::Time::NowFromSystemTime(), | 384 base::Time::NowFromSystemTime(), |
374 em::PolicyOptions::MANDATORY)); | 385 em::PolicyOptions::MANDATORY)); |
375 EXPECT_CALL(observer_, OnCacheUpdate(_)).Times(0); | 386 EXPECT_CALL(observer_, OnCacheUpdate(_)).Times(0); |
376 cache.SetPolicy(*policy); | 387 cache.SetPolicy(*policy); |
377 testing::Mock::VerifyAndClearExpectations(&observer_); | 388 testing::Mock::VerifyAndClearExpectations(&observer_); |
378 | 389 |
379 // Switching the cache to ready should send a notification. | 390 // Switching the cache to ready should send a notification. |
380 EXPECT_CALL(observer_, OnCacheUpdate(_)).Times(1); | 391 EXPECT_CALL(observer_, OnCacheUpdate(_)).Times(1); |
381 SetReady(&cache); | 392 SetReady(&cache); |
382 cache.RemoveObserver(&observer_); | 393 cache.RemoveObserver(&observer_); |
383 } | 394 } |
384 | 395 |
385 // Test case for the temporary support for GenericNamedValues in the | 396 // Test case for the temporary support for GenericNamedValues in the |
386 // CloudPolicySettings protobuf. Can be removed when this support is no longer | 397 // CloudPolicySettings protobuf. Can be removed when this support is no longer |
387 // required. | 398 // required. |
388 TEST_F(UserPolicyCacheTest, OldStylePolicy) { | 399 TEST_F(UserPolicyCacheTest, OldStylePolicy) { |
389 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 400 UserPolicyCache cache(test_file(), false, base::Closure()); |
390 em::PolicyFetchResponse* policy = new em::PolicyFetchResponse(); | 401 em::PolicyFetchResponse* policy = new em::PolicyFetchResponse(); |
391 em::PolicyData signed_response; | 402 em::PolicyData signed_response; |
392 em::LegacyChromeSettingsProto settings; | 403 em::LegacyChromeSettingsProto settings; |
393 em::GenericNamedValue* named_value = settings.add_named_value(); | 404 em::GenericNamedValue* named_value = settings.add_named_value(); |
394 named_value->set_name("HomepageLocation"); | 405 named_value->set_name("HomepageLocation"); |
395 em::GenericValue* value_container = named_value->mutable_value(); | 406 em::GenericValue* value_container = named_value->mutable_value(); |
396 value_container->set_value_type(em::GenericValue::VALUE_TYPE_STRING); | 407 value_container->set_value_type(em::GenericValue::VALUE_TYPE_STRING); |
397 value_container->set_string_value("http://www.example.com"); | 408 value_container->set_string_value("http://www.example.com"); |
398 EXPECT_TRUE( | 409 EXPECT_TRUE( |
399 settings.SerializeToString(signed_response.mutable_policy_value())); | 410 settings.SerializeToString(signed_response.mutable_policy_value())); |
(...skipping 16 matching lines...) Expand all Loading... | |
416 em::PolicyOptions::RECOMMENDED); | 427 em::PolicyOptions::RECOMMENDED); |
417 expected.Set(key::kHomepageLocation, | 428 expected.Set(key::kHomepageLocation, |
418 POLICY_LEVEL_RECOMMENDED, | 429 POLICY_LEVEL_RECOMMENDED, |
419 POLICY_SCOPE_USER, | 430 POLICY_SCOPE_USER, |
420 Value::CreateStringValue("http://www.example.com")); | 431 Value::CreateStringValue("http://www.example.com")); |
421 SetPolicy(&cache, policy); | 432 SetPolicy(&cache, policy); |
422 EXPECT_TRUE(expected.Equals(*cache.policy())); | 433 EXPECT_TRUE(expected.Equals(*cache.policy())); |
423 } | 434 } |
424 | 435 |
425 TEST_F(UserPolicyCacheTest, CheckReadyNoWaiting) { | 436 TEST_F(UserPolicyCacheTest, CheckReadyNoWaiting) { |
426 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 437 UserPolicyCache cache(test_file(), false, base::Closure()); |
427 EXPECT_FALSE(cache.IsReady()); | 438 EXPECT_FALSE(cache.IsReady()); |
428 cache.Load(); | 439 cache.Load(); |
429 loop_.RunAllPending(); | 440 loop_.RunAllPending(); |
430 EXPECT_TRUE(cache.IsReady()); | 441 EXPECT_TRUE(cache.IsReady()); |
431 } | 442 } |
432 | 443 |
433 TEST_F(UserPolicyCacheTest, CheckReadyWaitForFetch) { | 444 TEST_F(UserPolicyCacheTest, CheckReadyWaitForFetch) { |
434 UserPolicyCache cache(test_file(), true /* wait_for_policy_fetch */); | 445 bool ready_callback_was_invoked_ = false; |
446 UserPolicyCache cache(test_file(), | |
447 true, | |
448 base::Bind(SetTrue, &ready_callback_was_invoked_)); | |
435 EXPECT_FALSE(cache.IsReady()); | 449 EXPECT_FALSE(cache.IsReady()); |
450 EXPECT_FALSE(ready_callback_was_invoked_); | |
436 cache.Load(); | 451 cache.Load(); |
437 loop_.RunAllPending(); | 452 loop_.RunAllPending(); |
438 EXPECT_FALSE(cache.IsReady()); | 453 EXPECT_FALSE(cache.IsReady()); |
454 EXPECT_FALSE(ready_callback_was_invoked_); | |
439 cache.SetFetchingDone(); | 455 cache.SetFetchingDone(); |
440 EXPECT_TRUE(cache.IsReady()); | 456 EXPECT_TRUE(cache.IsReady()); |
457 EXPECT_TRUE(ready_callback_was_invoked_); | |
441 } | 458 } |
442 | 459 |
443 TEST_F(UserPolicyCacheTest, CheckReadyWaitForDisk) { | 460 TEST_F(UserPolicyCacheTest, CheckReadyWaitForDisk) { |
444 UserPolicyCache cache(test_file(), true /* wait_for_policy_fetch */); | 461 bool ready_callback_was_invoked_ = false; |
462 UserPolicyCache cache(test_file(), | |
463 true, | |
464 base::Bind(SetTrue, &ready_callback_was_invoked_)); | |
445 EXPECT_FALSE(cache.IsReady()); | 465 EXPECT_FALSE(cache.IsReady()); |
466 EXPECT_FALSE(ready_callback_was_invoked_); | |
446 cache.SetFetchingDone(); | 467 cache.SetFetchingDone(); |
447 EXPECT_FALSE(cache.IsReady()); | 468 EXPECT_FALSE(cache.IsReady()); |
469 EXPECT_FALSE(ready_callback_was_invoked_); | |
448 cache.Load(); | 470 cache.Load(); |
449 loop_.RunAllPending(); | 471 loop_.RunAllPending(); |
450 EXPECT_TRUE(cache.IsReady()); | 472 EXPECT_TRUE(cache.IsReady()); |
473 EXPECT_TRUE(ready_callback_was_invoked_); | |
451 } | 474 } |
452 | 475 |
453 } // namespace policy | 476 } // namespace policy |
OLD | NEW |