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 |