| 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 "base/thread_task_runner_handle.h" | 10 #include "base/thread_task_runner_handle.h" |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 | 123 |
| 124 // The initial call to AddSiteListsChangedCallback will call | 124 // The initial call to AddSiteListsChangedCallback will call |
| 125 // OnSiteListsChanged(), so we balance it out by calling Wait(). | 125 // OnSiteListsChanged(), so we balance it out by calling Wait(). |
| 126 Wait(); | 126 Wait(); |
| 127 } | 127 } |
| 128 | 128 |
| 129 const std::vector<scoped_refptr<SupervisedUserSiteList>>& site_lists() { | 129 const std::vector<scoped_refptr<SupervisedUserSiteList>>& site_lists() { |
| 130 return site_lists_; | 130 return site_lists_; |
| 131 } | 131 } |
| 132 | 132 |
| 133 const std::vector<SupervisedUserSiteList::Site>& sites() { | |
| 134 return sites_; | |
| 135 } | |
| 136 | |
| 137 private: | 133 private: |
| 138 void OnSiteListsChanged( | 134 void OnSiteListsChanged( |
| 139 const std::vector<scoped_refptr<SupervisedUserSiteList>>& site_lists) { | 135 const std::vector<scoped_refptr<SupervisedUserSiteList>>& site_lists) { |
| 140 site_lists_ = site_lists; | 136 site_lists_ = site_lists; |
| 141 sites_.clear(); | |
| 142 for (const scoped_refptr<SupervisedUserSiteList>& site_list : site_lists) { | |
| 143 const std::vector<SupervisedUserSiteList::Site>& sites = | |
| 144 site_list->sites(); | |
| 145 sites_.insert(sites_.end(), sites.begin(), sites.end()); | |
| 146 } | |
| 147 | 137 |
| 148 QuitRunLoop(); | 138 QuitRunLoop(); |
| 149 } | 139 } |
| 150 | 140 |
| 151 std::vector<scoped_refptr<SupervisedUserSiteList>> site_lists_; | 141 std::vector<scoped_refptr<SupervisedUserSiteList>> site_lists_; |
| 152 std::vector<SupervisedUserSiteList::Site> sites_; | |
| 153 | 142 |
| 154 DISALLOW_COPY_AND_ASSIGN(SiteListObserver); | 143 DISALLOW_COPY_AND_ASSIGN(SiteListObserver); |
| 155 }; | 144 }; |
| 156 | 145 |
| 157 class AsyncResultHolder { | 146 class AsyncResultHolder { |
| 158 public: | 147 public: |
| 159 AsyncResultHolder() : result_(false) {} | 148 AsyncResultHolder() : result_(false) {} |
| 160 ~AsyncResultHolder() {} | 149 ~AsyncResultHolder() {} |
| 161 | 150 |
| 162 void SetResult(bool result) { | 151 void SetResult(bool result) { |
| (...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 503 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 492 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
| 504 url_filter->GetFilteringBehaviorForURL(url)); | 493 url_filter->GetFilteringBehaviorForURL(url)); |
| 505 } | 494 } |
| 506 | 495 |
| 507 TEST_F(SupervisedUserServiceExtensionTest, InstallContentPacks) { | 496 TEST_F(SupervisedUserServiceExtensionTest, InstallContentPacks) { |
| 508 SupervisedUserService* supervised_user_service = | 497 SupervisedUserService* supervised_user_service = |
| 509 SupervisedUserServiceFactory::GetForProfile(profile_.get()); | 498 SupervisedUserServiceFactory::GetForProfile(profile_.get()); |
| 510 SupervisedUserURLFilter* url_filter = | 499 SupervisedUserURLFilter* url_filter = |
| 511 supervised_user_service->GetURLFilterForUIThread(); | 500 supervised_user_service->GetURLFilterForUIThread(); |
| 512 | 501 |
| 513 GURL example_url("http://example.com"); | 502 const base::string16 title1 = base::ASCIIToUTF16("Title 1"); |
| 503 const base::string16 title2 = base::ASCIIToUTF16("Title 2"); |
| 504 |
| 505 GURL youtube_url("http://www.youtube.com"); |
| 514 GURL moose_url("http://moose.org"); | 506 GURL moose_url("http://moose.org"); |
| 515 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 507 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
| 516 url_filter->GetFilteringBehaviorForURL(example_url)); | 508 url_filter->GetFilteringBehaviorForURL(youtube_url)); |
| 517 | 509 |
| 518 profile_->GetPrefs()->SetInteger( | 510 profile_->GetPrefs()->SetInteger( |
| 519 prefs::kDefaultSupervisedUserFilteringBehavior, | 511 prefs::kDefaultSupervisedUserFilteringBehavior, |
| 520 SupervisedUserURLFilter::BLOCK); | 512 SupervisedUserURLFilter::BLOCK); |
| 521 EXPECT_EQ(SupervisedUserURLFilter::BLOCK, | 513 EXPECT_EQ(SupervisedUserURLFilter::BLOCK, |
| 522 url_filter->GetFilteringBehaviorForURL(example_url)); | 514 url_filter->GetFilteringBehaviorForURL(youtube_url)); |
| 523 | 515 |
| 524 profile_->GetPrefs()->SetInteger( | 516 profile_->GetPrefs()->SetInteger( |
| 525 prefs::kDefaultSupervisedUserFilteringBehavior, | 517 prefs::kDefaultSupervisedUserFilteringBehavior, |
| 526 SupervisedUserURLFilter::WARN); | 518 SupervisedUserURLFilter::WARN); |
| 527 EXPECT_EQ(SupervisedUserURLFilter::WARN, | 519 EXPECT_EQ(SupervisedUserURLFilter::WARN, |
| 528 url_filter->GetFilteringBehaviorForURL(example_url)); | 520 url_filter->GetFilteringBehaviorForURL(youtube_url)); |
| 529 | 521 |
| 530 // Load a whitelist. | 522 // Load a whitelist. |
| 531 base::FilePath test_data_dir; | 523 base::FilePath test_data_dir; |
| 532 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir)); | 524 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir)); |
| 533 SupervisedUserWhitelistService* whitelist_service = | 525 SupervisedUserWhitelistService* whitelist_service = |
| 534 supervised_user_service->GetWhitelistService(); | 526 supervised_user_service->GetWhitelistService(); |
| 535 base::FilePath whitelist_path = | 527 base::FilePath whitelist_path = |
| 536 test_data_dir.AppendASCII("whitelists/content_pack/site_list.json"); | 528 test_data_dir.AppendASCII("whitelists/content_pack/site_list.json"); |
| 537 whitelist_service->LoadWhitelistForTesting("aaaa", whitelist_path); | 529 whitelist_service->LoadWhitelistForTesting("aaaa", title1, whitelist_path); |
| 538 site_list_observer_.Wait(); | 530 site_list_observer_.Wait(); |
| 539 | 531 |
| 540 ASSERT_EQ(1u, site_list_observer_.site_lists().size()); | 532 ASSERT_EQ(1u, site_list_observer_.site_lists().size()); |
| 541 ASSERT_EQ(3u, site_list_observer_.sites().size()); | 533 EXPECT_EQ(title1, site_list_observer_.site_lists()[0]->title()); |
| 542 EXPECT_EQ(base::ASCIIToUTF16("YouTube"), site_list_observer_.sites()[0].name); | 534 EXPECT_EQ(youtube_url, site_list_observer_.site_lists()[0]->entry_point()); |
| 543 EXPECT_EQ(base::ASCIIToUTF16("Homestar Runner"), | |
| 544 site_list_observer_.sites()[1].name); | |
| 545 EXPECT_EQ(base::string16(), site_list_observer_.sites()[2].name); | |
| 546 | 535 |
| 547 url_filter_observer_.Wait(); | 536 url_filter_observer_.Wait(); |
| 548 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 537 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
| 549 url_filter->GetFilteringBehaviorForURL(example_url)); | 538 url_filter->GetFilteringBehaviorForURL(youtube_url)); |
| 550 EXPECT_EQ(SupervisedUserURLFilter::WARN, | 539 EXPECT_EQ(SupervisedUserURLFilter::WARN, |
| 551 url_filter->GetFilteringBehaviorForURL(moose_url)); | 540 url_filter->GetFilteringBehaviorForURL(moose_url)); |
| 552 | 541 |
| 553 // Load a second whitelist. | 542 // Load a second whitelist. |
| 554 whitelist_path = | 543 whitelist_path = |
| 555 test_data_dir.AppendASCII("whitelists/content_pack_2/site_list.json"); | 544 test_data_dir.AppendASCII("whitelists/content_pack_2/site_list.json"); |
| 556 whitelist_service->LoadWhitelistForTesting("bbbb", whitelist_path); | 545 whitelist_service->LoadWhitelistForTesting("bbbb", title2, whitelist_path); |
| 557 site_list_observer_.Wait(); | 546 site_list_observer_.Wait(); |
| 558 | 547 |
| 559 ASSERT_EQ(2u, site_list_observer_.site_lists().size()); | 548 ASSERT_EQ(2u, site_list_observer_.site_lists().size()); |
| 560 ASSERT_EQ(4u, site_list_observer_.sites().size()); | 549 EXPECT_EQ(title1, site_list_observer_.site_lists()[0]->title()); |
| 561 | 550 EXPECT_EQ(youtube_url, site_list_observer_.site_lists()[0]->entry_point()); |
| 562 // The site lists might be returned in any order, so we put them into a set. | 551 EXPECT_EQ(title2, site_list_observer_.site_lists()[1]->title()); |
| 563 std::set<std::string> site_names; | 552 EXPECT_TRUE(site_list_observer_.site_lists()[1]->entry_point().is_empty()); |
| 564 for (const SupervisedUserSiteList::Site& site : site_list_observer_.sites()) | |
| 565 site_names.insert(base::UTF16ToUTF8(site.name)); | |
| 566 EXPECT_EQ(1u, site_names.count("YouTube")); | |
| 567 EXPECT_EQ(1u, site_names.count("Homestar Runner")); | |
| 568 EXPECT_EQ(1u, site_names.count(std::string())); | |
| 569 EXPECT_EQ(1u, site_names.count("Moose")); | |
| 570 | 553 |
| 571 url_filter_observer_.Wait(); | 554 url_filter_observer_.Wait(); |
| 572 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 555 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
| 573 url_filter->GetFilteringBehaviorForURL(example_url)); | 556 url_filter->GetFilteringBehaviorForURL(youtube_url)); |
| 574 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 557 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
| 575 url_filter->GetFilteringBehaviorForURL(moose_url)); | 558 url_filter->GetFilteringBehaviorForURL(moose_url)); |
| 576 | 559 |
| 577 // Unload the first whitelist. | 560 // Unload the first whitelist. |
| 578 whitelist_service->UnloadWhitelist("aaaa"); | 561 whitelist_service->UnloadWhitelist("aaaa"); |
| 579 site_list_observer_.Wait(); | 562 site_list_observer_.Wait(); |
| 580 | 563 |
| 581 ASSERT_EQ(1u, site_list_observer_.site_lists().size()); | 564 ASSERT_EQ(1u, site_list_observer_.site_lists().size()); |
| 582 ASSERT_EQ(1u, site_list_observer_.sites().size()); | 565 EXPECT_EQ(title2, site_list_observer_.site_lists()[0]->title()); |
| 583 EXPECT_EQ(base::ASCIIToUTF16("Moose"), site_list_observer_.sites()[0].name); | 566 EXPECT_TRUE(site_list_observer_.site_lists()[0]->entry_point().is_empty()); |
| 584 | 567 |
| 585 url_filter_observer_.Wait(); | 568 url_filter_observer_.Wait(); |
| 586 EXPECT_EQ(SupervisedUserURLFilter::WARN, | 569 EXPECT_EQ(SupervisedUserURLFilter::WARN, |
| 587 url_filter->GetFilteringBehaviorForURL(example_url)); | 570 url_filter->GetFilteringBehaviorForURL(youtube_url)); |
| 588 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 571 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
| 589 url_filter->GetFilteringBehaviorForURL(moose_url)); | 572 url_filter->GetFilteringBehaviorForURL(moose_url)); |
| 590 } | 573 } |
| 591 #endif // defined(ENABLE_EXTENSIONS) | 574 #endif // defined(ENABLE_EXTENSIONS) |
| OLD | NEW |