OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "base/path_service.h" | 6 #include "base/path_service.h" |
7 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
8 #include "base/prefs/scoped_user_pref_update.h" | 8 #include "base/prefs/scoped_user_pref_update.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "chrome/browser/chrome_notification_types.h" | 10 #include "chrome/browser/chrome_notification_types.h" |
(...skipping 28 matching lines...) Expand all Loading... |
39 #endif | 39 #endif |
40 | 40 |
41 using content::MessageLoopRunner; | 41 using content::MessageLoopRunner; |
42 | 42 |
43 namespace { | 43 namespace { |
44 | 44 |
45 void OnProfileDownloadedFail(const base::string16& full_name) { | 45 void OnProfileDownloadedFail(const base::string16& full_name) { |
46 ASSERT_TRUE(false) << "Profile download should not have succeeded."; | 46 ASSERT_TRUE(false) << "Profile download should not have succeeded."; |
47 } | 47 } |
48 | 48 |
49 class SupervisedUserURLFilterObserver : | 49 // Base class for helper objects that wait for certain events to happen. |
50 public SupervisedUserURLFilter::Observer { | 50 // This class will ensure that calls to QuitRunLoop() (triggered by a subclass) |
| 51 // are balanced with Wait() calls. |
| 52 class AsyncTestHelper { |
51 public: | 53 public: |
52 explicit SupervisedUserURLFilterObserver(SupervisedUserURLFilter* url_filter) | |
53 : url_filter_(url_filter) { | |
54 Reset(); | |
55 url_filter_->AddObserver(this); | |
56 } | |
57 | |
58 ~SupervisedUserURLFilterObserver() { | |
59 url_filter_->RemoveObserver(this); | |
60 } | |
61 | |
62 void Wait() { | 54 void Wait() { |
63 message_loop_runner_->Run(); | 55 run_loop_->Run(); |
64 Reset(); | 56 Reset(); |
65 } | 57 } |
66 | 58 |
67 // SupervisedUserURLFilter::Observer | 59 protected: |
68 void OnSiteListUpdated() override { message_loop_runner_->Quit(); } | 60 AsyncTestHelper() { |
| 61 // |quit_called_| will be initialized in Reset(). |
| 62 Reset(); |
| 63 } |
| 64 |
| 65 ~AsyncTestHelper() { |
| 66 EXPECT_FALSE(quit_called_); |
| 67 } |
| 68 |
| 69 void QuitRunLoop() { |
| 70 // QuitRunLoop() can not be called more than once between calls to Wait(). |
| 71 ASSERT_FALSE(quit_called_); |
| 72 quit_called_ = true; |
| 73 run_loop_->Quit(); |
| 74 } |
69 | 75 |
70 private: | 76 private: |
71 void Reset() { | 77 void Reset() { |
72 message_loop_runner_ = new MessageLoopRunner; | 78 quit_called_ = false; |
| 79 run_loop_.reset(new base::RunLoop); |
73 } | 80 } |
74 | 81 |
75 SupervisedUserURLFilter* url_filter_; | 82 scoped_ptr<base::RunLoop> run_loop_; |
76 scoped_refptr<MessageLoopRunner> message_loop_runner_; | 83 bool quit_called_; |
| 84 |
| 85 DISALLOW_COPY_AND_ASSIGN(AsyncTestHelper); |
| 86 }; |
| 87 |
| 88 class SupervisedUserURLFilterObserver |
| 89 : public AsyncTestHelper, |
| 90 public SupervisedUserURLFilter::Observer { |
| 91 public: |
| 92 SupervisedUserURLFilterObserver() : scoped_observer_(this) {} |
| 93 ~SupervisedUserURLFilterObserver() {} |
| 94 |
| 95 void Init(SupervisedUserURLFilter* url_filter) { |
| 96 scoped_observer_.Add(url_filter); |
| 97 } |
| 98 |
| 99 // SupervisedUserURLFilter::Observer |
| 100 void OnSiteListUpdated() override { |
| 101 QuitRunLoop(); |
| 102 } |
| 103 |
| 104 private: |
| 105 ScopedObserver<SupervisedUserURLFilter, SupervisedUserURLFilter::Observer> |
| 106 scoped_observer_; |
| 107 |
| 108 DISALLOW_COPY_AND_ASSIGN(SupervisedUserURLFilterObserver); |
| 109 }; |
| 110 |
| 111 class SiteListObserver : public AsyncTestHelper { |
| 112 public: |
| 113 SiteListObserver() {} |
| 114 ~SiteListObserver() {} |
| 115 |
| 116 void Init(SupervisedUserWhitelistService* service) { |
| 117 service->AddSiteListsChangedCallback(base::Bind( |
| 118 &SiteListObserver::OnSiteListsChanged, base::Unretained(this))); |
| 119 |
| 120 // The initial call to AddSiteListsChangedCallback will call |
| 121 // OnSiteListsChanged(), so we balance it out by calling Wait(). |
| 122 Wait(); |
| 123 } |
| 124 |
| 125 const std::vector<scoped_refptr<SupervisedUserSiteList>>& site_lists() { |
| 126 return site_lists_; |
| 127 } |
| 128 |
| 129 const std::vector<SupervisedUserSiteList::Site>& sites() { |
| 130 return sites_; |
| 131 } |
| 132 |
| 133 private: |
| 134 void OnSiteListsChanged( |
| 135 const std::vector<scoped_refptr<SupervisedUserSiteList>>& site_lists) { |
| 136 site_lists_ = site_lists; |
| 137 sites_.clear(); |
| 138 for (const scoped_refptr<SupervisedUserSiteList>& site_list : site_lists) { |
| 139 const std::vector<SupervisedUserSiteList::Site>& sites = |
| 140 site_list->sites(); |
| 141 sites_.insert(sites_.end(), sites.begin(), sites.end()); |
| 142 } |
| 143 |
| 144 QuitRunLoop(); |
| 145 } |
| 146 |
| 147 std::vector<scoped_refptr<SupervisedUserSiteList>> site_lists_; |
| 148 std::vector<SupervisedUserSiteList::Site> sites_; |
| 149 |
| 150 DISALLOW_COPY_AND_ASSIGN(SiteListObserver); |
77 }; | 151 }; |
78 | 152 |
79 class AsyncResultHolder { | 153 class AsyncResultHolder { |
80 public: | 154 public: |
81 AsyncResultHolder() : result_(false) {} | 155 AsyncResultHolder() : result_(false) {} |
82 ~AsyncResultHolder() {} | 156 ~AsyncResultHolder() {} |
83 | 157 |
84 void SetResult(bool result) { | 158 void SetResult(bool result) { |
85 result_ = result; | 159 result_ = result; |
86 run_loop_.Quit(); | 160 run_loop_.Quit(); |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
284 | 358 |
285 void SetUp() override { | 359 void SetUp() override { |
286 ExtensionServiceTestBase::SetUp(); | 360 ExtensionServiceTestBase::SetUp(); |
287 ExtensionServiceTestBase::ExtensionServiceInitParams params = | 361 ExtensionServiceTestBase::ExtensionServiceInitParams params = |
288 CreateDefaultInitParams(); | 362 CreateDefaultInitParams(); |
289 params.profile_is_supervised = is_supervised_; | 363 params.profile_is_supervised = is_supervised_; |
290 InitializeExtensionService(params); | 364 InitializeExtensionService(params); |
291 SupervisedUserService* service = | 365 SupervisedUserService* service = |
292 SupervisedUserServiceFactory::GetForProfile(profile_.get()); | 366 SupervisedUserServiceFactory::GetForProfile(profile_.get()); |
293 service->Init(); | 367 service->Init(); |
294 service->GetWhitelistService()->AddSiteListsChangedCallback( | 368 site_list_observer_.Init(service->GetWhitelistService()); |
295 base::Bind(&SupervisedUserServiceExtensionTestBase::OnSiteListsChanged, | 369 |
296 base::Unretained(this))); | 370 SupervisedUserURLFilter* url_filter = service->GetURLFilterForUIThread(); |
| 371 url_filter->SetBlockingTaskRunnerForTesting( |
| 372 base::MessageLoopProxy::current()); |
| 373 url_filter_observer_.Init(url_filter); |
| 374 |
| 375 // Wait for the initial update to finish. |
| 376 url_filter_observer_.Wait(); |
| 377 } |
| 378 |
| 379 void TearDown() override { |
| 380 // Flush the message loop, to ensure all posted tasks run. |
| 381 base::RunLoop().RunUntilIdle(); |
297 } | 382 } |
298 | 383 |
299 protected: | 384 protected: |
300 scoped_refptr<extensions::Extension> MakeThemeExtension() { | 385 scoped_refptr<extensions::Extension> MakeThemeExtension() { |
301 scoped_ptr<base::DictionaryValue> source(new base::DictionaryValue()); | 386 scoped_ptr<base::DictionaryValue> source(new base::DictionaryValue()); |
302 source->SetString(extensions::manifest_keys::kName, "Theme"); | 387 source->SetString(extensions::manifest_keys::kName, "Theme"); |
303 source->Set(extensions::manifest_keys::kTheme, new base::DictionaryValue()); | 388 source->Set(extensions::manifest_keys::kTheme, new base::DictionaryValue()); |
304 source->SetString(extensions::manifest_keys::kVersion, "1.0"); | 389 source->SetString(extensions::manifest_keys::kVersion, "1.0"); |
305 extensions::ExtensionBuilder builder; | 390 extensions::ExtensionBuilder builder; |
306 scoped_refptr<extensions::Extension> extension = | 391 scoped_refptr<extensions::Extension> extension = |
307 builder.SetManifest(source.Pass()).Build(); | 392 builder.SetManifest(source.Pass()).Build(); |
308 return extension; | 393 return extension; |
309 } | 394 } |
310 | 395 |
311 scoped_refptr<extensions::Extension> MakeExtension(bool by_custodian) { | 396 scoped_refptr<extensions::Extension> MakeExtension(bool by_custodian) { |
312 scoped_ptr<base::DictionaryValue> manifest = extensions::DictionaryBuilder() | 397 scoped_ptr<base::DictionaryValue> manifest = extensions::DictionaryBuilder() |
313 .Set(extensions::manifest_keys::kName, "Extension") | 398 .Set(extensions::manifest_keys::kName, "Extension") |
314 .Set(extensions::manifest_keys::kVersion, "1.0") | 399 .Set(extensions::manifest_keys::kVersion, "1.0") |
315 .Build(); | 400 .Build(); |
316 int creation_flags = extensions::Extension::NO_FLAGS; | 401 int creation_flags = extensions::Extension::NO_FLAGS; |
317 if (by_custodian) | 402 if (by_custodian) |
318 creation_flags |= extensions::Extension::WAS_INSTALLED_BY_CUSTODIAN; | 403 creation_flags |= extensions::Extension::WAS_INSTALLED_BY_CUSTODIAN; |
319 extensions::ExtensionBuilder builder; | 404 extensions::ExtensionBuilder builder; |
320 scoped_refptr<extensions::Extension> extension = | 405 scoped_refptr<extensions::Extension> extension = |
321 builder.SetManifest(manifest.Pass()).AddFlags(creation_flags).Build(); | 406 builder.SetManifest(manifest.Pass()).AddFlags(creation_flags).Build(); |
322 return extension; | 407 return extension; |
323 } | 408 } |
324 | 409 |
325 void OnSiteListsChanged( | |
326 const std::vector<scoped_refptr<SupervisedUserSiteList> >& site_lists) { | |
327 site_lists_ = site_lists; | |
328 sites_.clear(); | |
329 for (const scoped_refptr<SupervisedUserSiteList>& site_list : site_lists) { | |
330 const std::vector<SupervisedUserSiteList::Site>& sites = | |
331 site_list->sites(); | |
332 sites_.insert(sites_.end(), sites.begin(), sites.end()); | |
333 } | |
334 } | |
335 | |
336 bool is_supervised_; | 410 bool is_supervised_; |
337 extensions::ScopedCurrentChannel channel_; | 411 extensions::ScopedCurrentChannel channel_; |
338 std::vector<scoped_refptr<SupervisedUserSiteList> > site_lists_; | 412 SiteListObserver site_list_observer_; |
339 std::vector<SupervisedUserSiteList::Site> sites_; | 413 SupervisedUserURLFilterObserver url_filter_observer_; |
340 }; | 414 }; |
341 | 415 |
342 class SupervisedUserServiceExtensionTestUnsupervised | 416 class SupervisedUserServiceExtensionTestUnsupervised |
343 : public SupervisedUserServiceExtensionTestBase { | 417 : public SupervisedUserServiceExtensionTestBase { |
344 public: | 418 public: |
345 SupervisedUserServiceExtensionTestUnsupervised() | 419 SupervisedUserServiceExtensionTestUnsupervised() |
346 : SupervisedUserServiceExtensionTestBase(false) {} | 420 : SupervisedUserServiceExtensionTestBase(false) {} |
347 }; | 421 }; |
348 | 422 |
349 class SupervisedUserServiceExtensionTest | 423 class SupervisedUserServiceExtensionTest |
(...skipping 17 matching lines...) Expand all Loading... |
367 base::string16 error_2; | 441 base::string16 error_2; |
368 EXPECT_TRUE( | 442 EXPECT_TRUE( |
369 supervised_user_service->UserMayModifySettings(extension.get(), | 443 supervised_user_service->UserMayModifySettings(extension.get(), |
370 &error_2)); | 444 &error_2)); |
371 EXPECT_EQ(base::string16(), error_2); | 445 EXPECT_EQ(base::string16(), error_2); |
372 } | 446 } |
373 | 447 |
374 TEST_F(SupervisedUserServiceExtensionTest, ExtensionManagementPolicyProvider) { | 448 TEST_F(SupervisedUserServiceExtensionTest, ExtensionManagementPolicyProvider) { |
375 SupervisedUserService* supervised_user_service = | 449 SupervisedUserService* supervised_user_service = |
376 SupervisedUserServiceFactory::GetForProfile(profile_.get()); | 450 SupervisedUserServiceFactory::GetForProfile(profile_.get()); |
377 SupervisedUserURLFilterObserver observer( | |
378 supervised_user_service->GetURLFilterForUIThread()); | |
379 ASSERT_TRUE(profile_->IsSupervised()); | 451 ASSERT_TRUE(profile_->IsSupervised()); |
380 // Wait for the initial update to finish (otherwise we'll get leaks). | |
381 observer.Wait(); | |
382 | 452 |
383 // Check that a supervised user can install a theme. | 453 // Check that a supervised user can install a theme. |
384 scoped_refptr<extensions::Extension> theme = MakeThemeExtension(); | 454 scoped_refptr<extensions::Extension> theme = MakeThemeExtension(); |
385 base::string16 error_1; | 455 base::string16 error_1; |
386 EXPECT_TRUE(supervised_user_service->UserMayLoad(theme.get(), &error_1)); | 456 EXPECT_TRUE(supervised_user_service->UserMayLoad(theme.get(), &error_1)); |
387 EXPECT_TRUE(error_1.empty()); | 457 EXPECT_TRUE(error_1.empty()); |
388 EXPECT_TRUE( | 458 EXPECT_TRUE( |
389 supervised_user_service->UserMayModifySettings(theme.get(), &error_1)); | 459 supervised_user_service->UserMayModifySettings(theme.get(), &error_1)); |
390 EXPECT_TRUE(error_1.empty()); | 460 EXPECT_TRUE(error_1.empty()); |
391 | 461 |
(...skipping 25 matching lines...) Expand all Loading... |
417 EXPECT_FALSE(supervised_user_service->GetDebugPolicyProviderName().empty()); | 487 EXPECT_FALSE(supervised_user_service->GetDebugPolicyProviderName().empty()); |
418 #endif | 488 #endif |
419 } | 489 } |
420 | 490 |
421 TEST_F(SupervisedUserServiceExtensionTest, NoContentPacks) { | 491 TEST_F(SupervisedUserServiceExtensionTest, NoContentPacks) { |
422 SupervisedUserService* supervised_user_service = | 492 SupervisedUserService* supervised_user_service = |
423 SupervisedUserServiceFactory::GetForProfile(profile_.get()); | 493 SupervisedUserServiceFactory::GetForProfile(profile_.get()); |
424 SupervisedUserURLFilter* url_filter = | 494 SupervisedUserURLFilter* url_filter = |
425 supervised_user_service->GetURLFilterForUIThread(); | 495 supervised_user_service->GetURLFilterForUIThread(); |
426 | 496 |
| 497 // ASSERT_EQ instead of ASSERT_TRUE([...].empty()) so that the error |
| 498 // message contains the size in case of failure. |
| 499 ASSERT_EQ(0u, site_list_observer_.site_lists().size()); |
| 500 |
427 GURL url("http://youtube.com"); | 501 GURL url("http://youtube.com"); |
428 // ASSERT_EQ instead of ASSERT_TRUE(site_lists_.empty()) so that the error | |
429 // message contains the size in case of failure. | |
430 ASSERT_EQ(0u, site_lists_.size()); | |
431 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 502 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
432 url_filter->GetFilteringBehaviorForURL(url)); | 503 url_filter->GetFilteringBehaviorForURL(url)); |
433 } | 504 } |
434 | 505 |
435 TEST_F(SupervisedUserServiceExtensionTest, InstallContentPacks) { | 506 TEST_F(SupervisedUserServiceExtensionTest, InstallContentPacks) { |
436 SupervisedUserService* supervised_user_service = | 507 SupervisedUserService* supervised_user_service = |
437 SupervisedUserServiceFactory::GetForProfile(profile_.get()); | 508 SupervisedUserServiceFactory::GetForProfile(profile_.get()); |
438 SupervisedUserURLFilter* url_filter = | 509 SupervisedUserURLFilter* url_filter = |
439 supervised_user_service->GetURLFilterForUIThread(); | 510 supervised_user_service->GetURLFilterForUIThread(); |
440 SupervisedUserURLFilterObserver observer(url_filter); | |
441 observer.Wait(); | |
442 | 511 |
443 GURL example_url("http://example.com"); | 512 GURL example_url("http://example.com"); |
444 GURL moose_url("http://moose.org"); | 513 GURL moose_url("http://moose.org"); |
445 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 514 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
446 url_filter->GetFilteringBehaviorForURL(example_url)); | 515 url_filter->GetFilteringBehaviorForURL(example_url)); |
447 | 516 |
448 profile_->GetPrefs()->SetInteger( | 517 profile_->GetPrefs()->SetInteger( |
449 prefs::kDefaultSupervisedUserFilteringBehavior, | 518 prefs::kDefaultSupervisedUserFilteringBehavior, |
450 SupervisedUserURLFilter::BLOCK); | 519 SupervisedUserURLFilter::BLOCK); |
451 EXPECT_EQ(SupervisedUserURLFilter::BLOCK, | 520 EXPECT_EQ(SupervisedUserURLFilter::BLOCK, |
452 url_filter->GetFilteringBehaviorForURL(example_url)); | 521 url_filter->GetFilteringBehaviorForURL(example_url)); |
453 | 522 |
454 profile_->GetPrefs()->SetInteger( | 523 profile_->GetPrefs()->SetInteger( |
455 prefs::kDefaultSupervisedUserFilteringBehavior, | 524 prefs::kDefaultSupervisedUserFilteringBehavior, |
456 SupervisedUserURLFilter::WARN); | 525 SupervisedUserURLFilter::WARN); |
457 EXPECT_EQ(SupervisedUserURLFilter::WARN, | 526 EXPECT_EQ(SupervisedUserURLFilter::WARN, |
458 url_filter->GetFilteringBehaviorForURL(example_url)); | 527 url_filter->GetFilteringBehaviorForURL(example_url)); |
459 | 528 |
460 // Load a whitelist. | 529 // Load a whitelist. |
461 base::FilePath test_data_dir; | 530 base::FilePath test_data_dir; |
462 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir)); | 531 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir)); |
463 SupervisedUserWhitelistService* whitelist_service = | 532 SupervisedUserWhitelistService* whitelist_service = |
464 supervised_user_service->GetWhitelistService(); | 533 supervised_user_service->GetWhitelistService(); |
465 base::FilePath whitelist_path = | 534 base::FilePath whitelist_path = |
466 test_data_dir.AppendASCII("whitelists/content_pack/site_list.json"); | 535 test_data_dir.AppendASCII("whitelists/content_pack/site_list.json"); |
467 whitelist_service->LoadWhitelistForTesting("aaaa", whitelist_path); | 536 whitelist_service->LoadWhitelistForTesting("aaaa", whitelist_path); |
468 observer.Wait(); | 537 site_list_observer_.Wait(); |
469 | 538 |
470 ASSERT_EQ(1u, site_lists_.size()); | 539 ASSERT_EQ(1u, site_list_observer_.site_lists().size()); |
471 ASSERT_EQ(3u, sites_.size()); | 540 ASSERT_EQ(3u, site_list_observer_.sites().size()); |
472 EXPECT_EQ(base::ASCIIToUTF16("YouTube"), sites_[0].name); | 541 EXPECT_EQ(base::ASCIIToUTF16("YouTube"), site_list_observer_.sites()[0].name); |
473 EXPECT_EQ(base::ASCIIToUTF16("Homestar Runner"), sites_[1].name); | 542 EXPECT_EQ(base::ASCIIToUTF16("Homestar Runner"), |
474 EXPECT_EQ(base::string16(), sites_[2].name); | 543 site_list_observer_.sites()[1].name); |
| 544 EXPECT_EQ(base::string16(), site_list_observer_.sites()[2].name); |
475 | 545 |
| 546 url_filter_observer_.Wait(); |
476 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 547 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
477 url_filter->GetFilteringBehaviorForURL(example_url)); | 548 url_filter->GetFilteringBehaviorForURL(example_url)); |
478 EXPECT_EQ(SupervisedUserURLFilter::WARN, | 549 EXPECT_EQ(SupervisedUserURLFilter::WARN, |
479 url_filter->GetFilteringBehaviorForURL(moose_url)); | 550 url_filter->GetFilteringBehaviorForURL(moose_url)); |
480 | 551 |
481 // Load a second whitelist. | 552 // Load a second whitelist. |
482 whitelist_path = | 553 whitelist_path = |
483 test_data_dir.AppendASCII("whitelists/content_pack_2/site_list.json"); | 554 test_data_dir.AppendASCII("whitelists/content_pack_2/site_list.json"); |
484 whitelist_service->LoadWhitelistForTesting("bbbb", whitelist_path); | 555 whitelist_service->LoadWhitelistForTesting("bbbb", whitelist_path); |
485 observer.Wait(); | 556 site_list_observer_.Wait(); |
486 | 557 |
487 ASSERT_EQ(2u, site_lists_.size()); | 558 ASSERT_EQ(2u, site_list_observer_.site_lists().size()); |
488 ASSERT_EQ(4u, sites_.size()); | 559 ASSERT_EQ(4u, site_list_observer_.sites().size()); |
489 | 560 |
490 // The site lists might be returned in any order, so we put them into a set. | 561 // The site lists might be returned in any order, so we put them into a set. |
491 std::set<std::string> site_names; | 562 std::set<std::string> site_names; |
492 for (const SupervisedUserSiteList::Site& site : sites_) | 563 for (const SupervisedUserSiteList::Site& site : site_list_observer_.sites()) |
493 site_names.insert(base::UTF16ToUTF8(site.name)); | 564 site_names.insert(base::UTF16ToUTF8(site.name)); |
494 EXPECT_EQ(1u, site_names.count("YouTube")); | 565 EXPECT_EQ(1u, site_names.count("YouTube")); |
495 EXPECT_EQ(1u, site_names.count("Homestar Runner")); | 566 EXPECT_EQ(1u, site_names.count("Homestar Runner")); |
496 EXPECT_EQ(1u, site_names.count(std::string())); | 567 EXPECT_EQ(1u, site_names.count(std::string())); |
497 EXPECT_EQ(1u, site_names.count("Moose")); | 568 EXPECT_EQ(1u, site_names.count("Moose")); |
498 | 569 |
| 570 url_filter_observer_.Wait(); |
499 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 571 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
500 url_filter->GetFilteringBehaviorForURL(example_url)); | 572 url_filter->GetFilteringBehaviorForURL(example_url)); |
501 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 573 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
502 url_filter->GetFilteringBehaviorForURL(moose_url)); | 574 url_filter->GetFilteringBehaviorForURL(moose_url)); |
503 | 575 |
504 // Unload the first whitelist. | 576 // Unload the first whitelist. |
505 whitelist_service->UnloadWhitelist("aaaa"); | 577 whitelist_service->UnloadWhitelist("aaaa"); |
506 observer.Wait(); | 578 site_list_observer_.Wait(); |
507 | 579 |
508 ASSERT_EQ(1u, site_lists_.size()); | 580 ASSERT_EQ(1u, site_list_observer_.site_lists().size()); |
509 ASSERT_EQ(1u, sites_.size()); | 581 ASSERT_EQ(1u, site_list_observer_.sites().size()); |
510 EXPECT_EQ(base::ASCIIToUTF16("Moose"), sites_[0].name); | 582 EXPECT_EQ(base::ASCIIToUTF16("Moose"), site_list_observer_.sites()[0].name); |
511 | 583 |
| 584 url_filter_observer_.Wait(); |
512 EXPECT_EQ(SupervisedUserURLFilter::WARN, | 585 EXPECT_EQ(SupervisedUserURLFilter::WARN, |
513 url_filter->GetFilteringBehaviorForURL(example_url)); | 586 url_filter->GetFilteringBehaviorForURL(example_url)); |
514 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 587 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
515 url_filter->GetFilteringBehaviorForURL(moose_url)); | 588 url_filter->GetFilteringBehaviorForURL(moose_url)); |
516 } | 589 } |
517 #endif // defined(ENABLE_EXTENSIONS) | 590 #endif // defined(ENABLE_EXTENSIONS) |
OLD | NEW |