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

Side by Side Diff: chrome/browser/policy/user_policy_cache_unittest.cc

Issue 9404011: Explicitly wait for user policy before completing login. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698