Chromium Code Reviews| Index: chrome/browser/engagement/site_engagement_service_unittest.cc |
| diff --git a/chrome/browser/engagement/site_engagement_service_unittest.cc b/chrome/browser/engagement/site_engagement_service_unittest.cc |
| index c2538dabb10d680fe7bbdd9593d74c0e6fa40797..9e37314497501db902672ec2fb4ed6c8d35fa36a 100644 |
| --- a/chrome/browser/engagement/site_engagement_service_unittest.cc |
| +++ b/chrome/browser/engagement/site_engagement_service_unittest.cc |
| @@ -29,9 +29,11 @@ |
| #include "components/history/core/browser/history_service.h" |
| #include "components/history/core/test/test_history_database.h" |
| #include "components/prefs/pref_service.h" |
| +#include "content/public/browser/browser_thread.h" |
| #include "content/public/browser/navigation_entry.h" |
| #include "content/public/browser/page_navigator.h" |
| #include "content/public/browser/web_contents.h" |
| +#include "content/public/test/test_browser_thread_bundle.h" |
| #include "content/public/test/web_contents_tester.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| @@ -144,6 +146,11 @@ class ObserverTester : public SiteEngagementObserver { |
| class SiteEngagementServiceTest : public ChromeRenderViewHostTestHarness { |
| public: |
| + SiteEngagementServiceTest() : ChromeRenderViewHostTestHarness() { |
| + SetThreadBundleOptions(content::TestBrowserThreadBundle::REAL_IO_THREAD | |
| + content::TestBrowserThreadBundle::REAL_DB_THREAD); |
| + } |
| + |
| void SetUp() override { |
| ChromeRenderViewHostTestHarness::SetUp(); |
| ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
| @@ -187,7 +194,31 @@ class SiteEngagementServiceTest : public ChromeRenderViewHostTestHarness { |
| EXPECT_NEAR(expected, actual, kMaxRoundingDeviation); |
| } |
| + void CheckScoreFromSettingsOnThread( |
| + content::BrowserThread::ID thread_id, |
| + HostContentSettingsMap* settings_map, |
| + const GURL& url, |
| + double expected_score) { |
| + base::RunLoop run_loop; |
| + content::BrowserThread::PostTask( |
| + thread_id, FROM_HERE, |
| + base::Bind(&SiteEngagementServiceTest::CheckScoreFromSettings, |
| + base::Unretained(this), settings_map, url, expected_score, |
| + run_loop.QuitClosure())); |
| + run_loop.Run(); |
| + } |
| + |
| private: |
| + void CheckScoreFromSettings(HostContentSettingsMap* settings_map, |
| + const GURL& url, |
| + double expected_score, |
| + const base::Closure& quit_closure) { |
| + EXPECT_EQ(expected_score, |
| + SiteEngagementService::GetScoreFromSettings(settings_map, url)); |
| + content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, |
|
Bernhard Bauer
2016/09/15 09:05:15
You can also use PostTaskAndReply here.
dominickn
2016/09/15 12:16:00
Done.
|
| + quit_closure); |
| + } |
| + |
| base::ScopedTempDir temp_dir_; |
| }; |
| @@ -1514,3 +1545,65 @@ TEST_F(SiteEngagementServiceTest, IncognitoEngagementService) { |
| EXPECT_EQ(2, incognito_service->GetScore(url4)); |
| EXPECT_EQ(2, service->GetScore(url4)); |
| } |
| + |
| +TEST_F(SiteEngagementServiceTest, GetScoreFromSettings) { |
| + GURL url1("http://www.google.com/"); |
| + GURL url2("https://www.google.com/"); |
| + |
| + HostContentSettingsMap* settings_map = |
| + HostContentSettingsMapFactory::GetForProfile(profile()); |
| + HostContentSettingsMap* incognito_settings_map = |
| + HostContentSettingsMapFactory::GetForProfile( |
| + profile()->GetOffTheRecordProfile()); |
| + |
| + // All scores are 0 to start. |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::IO, settings_map, url1, |
| + 0); |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::FILE, settings_map, |
| + url2, 0); |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::FILE, |
| + incognito_settings_map, url1, 0); |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::IO, |
| + incognito_settings_map, url2, 0); |
| + |
| + SiteEngagementService* service = SiteEngagementService::Get(profile()); |
| + ASSERT_TRUE(service); |
| + service->AddPoints(url1, 1); |
| + service->AddPoints(url2, 2); |
| + |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::FILE, settings_map, |
| + url1, 1); |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::IO, settings_map, url2, |
| + 2); |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::FILE, |
| + incognito_settings_map, url1, 1); |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::IO, |
| + incognito_settings_map, url2, 2); |
| + |
| + SiteEngagementService* incognito_service = |
| + SiteEngagementService::Get(profile()->GetOffTheRecordProfile()); |
| + ASSERT_TRUE(incognito_service); |
| + incognito_service->AddPoints(url1, 3); |
| + incognito_service->AddPoints(url2, 1); |
| + |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::IO, |
| + incognito_settings_map, url1, 4); |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::FILE, |
| + incognito_settings_map, url2, 3); |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::FILE, settings_map, |
| + url1, 1); |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::IO, settings_map, url2, |
| + 2); |
| + |
| + service->AddPoints(url1, 2); |
| + service->AddPoints(url2, 1); |
| + |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::IO, |
| + incognito_settings_map, url1, 4); |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::FILE, |
| + incognito_settings_map, url2, 3); |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::IO, settings_map, url1, |
| + 3); |
| + CheckScoreFromSettingsOnThread(content::BrowserThread::FILE, settings_map, |
| + url2, 3); |
| +} |