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 328a66473c26643fab502cb3db50c9d2e89b9a80..21fb8aecd743a2560206cf7f3cc5837deada0333 100644 |
--- a/chrome/browser/engagement/site_engagement_service_unittest.cc |
+++ b/chrome/browser/engagement/site_engagement_service_unittest.cc |
@@ -29,6 +29,7 @@ |
#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" |
@@ -187,7 +188,31 @@ class SiteEngagementServiceTest : public ChromeRenderViewHostTestHarness { |
EXPECT_NEAR(expected, actual, kMaxRoundingDeviation); |
} |
+ void CheckScoreFromSettingsOnThread( |
calamity
2016/09/13 04:14:37
Does this actually send things to a different thre
dominickn
2016/09/13 04:42:14
I think if I set the thread options as REAL_IO_THR
calamity
2016/09/13 06:33:34
Ah cool.
|
+ 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, |
+ quit_closure); |
+ } |
+ |
base::ScopedTempDir temp_dir_; |
}; |
@@ -1514,3 +1539,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); |
+} |