| 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 |