Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(110)

Unified Diff: chrome/browser/engagement/site_engagement_service.cc

Issue 1338603002: Implement a site engagement score based on time-on-site. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove flaky input simulation tests and combine callback and timer testing Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/engagement/site_engagement_service.cc
diff --git a/chrome/browser/engagement/site_engagement_service.cc b/chrome/browser/engagement/site_engagement_service.cc
index d6a0186ee40d35d8f7a58be38740a91b05993b2a..5f0e2fc915717ca337c1793058497b30c62f07ed 100644
--- a/chrome/browser/engagement/site_engagement_service.cc
+++ b/chrome/browser/engagement/site_engagement_service.cc
@@ -58,7 +58,8 @@ const char* SiteEngagementScore::kLastEngagementTimeKey = "lastEngagementTime";
const double SiteEngagementScore::kMaxPoints = 100;
const double SiteEngagementScore::kMaxPointsPerDay = 5;
-const double SiteEngagementScore::kNavigationPoints = 1;
+const double SiteEngagementScore::kNavigationPoints = 0.5;
+const double SiteEngagementScore::kUserInputPoints = 0.05;
const int SiteEngagementScore::kDecayPeriodInDays = 7;
const double SiteEngagementScore::kDecayPoints = 5;
@@ -167,27 +168,16 @@ SiteEngagementService::SiteEngagementService(Profile* profile)
SiteEngagementService::~SiteEngagementService() {
}
-void SiteEngagementService::HandleNavigation(const GURL& url) {
- HostContentSettingsMap* settings_map =
- HostContentSettingsMapFactory::GetForProfile(profile_);
- scoped_ptr<base::DictionaryValue> score_dict =
- GetScoreDictForOrigin(settings_map, url);
- SiteEngagementScore score(&clock_, *score_dict);
-
- score.AddPoints(SiteEngagementScore::kNavigationPoints);
- if (score.UpdateScoreDict(score_dict.get())) {
- ContentSettingsPattern pattern(
- ContentSettingsPattern::FromURLNoWildcard(url));
- if (!pattern.IsValid())
- return;
+void SiteEngagementService::HandleNavigation(const GURL& url,
+ ui::PageTransition transition) {
+ AddPoints(url, SiteEngagementScore::kNavigationPoints);
+}
- settings_map->SetWebsiteSetting(pattern, ContentSettingsPattern::Wildcard(),
- CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT,
- std::string(), score_dict.release());
- }
+void SiteEngagementService::HandleUserInput(const GURL& url) {
+ AddPoints(url, SiteEngagementScore::kUserInputPoints);
}
-int SiteEngagementService::GetScore(const GURL& url) {
+double SiteEngagementService::GetScore(const GURL& url) {
HostContentSettingsMap* settings_map =
HostContentSettingsMapFactory::GetForProfile(profile_);
scoped_ptr<base::DictionaryValue> score_dict =
@@ -197,13 +187,13 @@ int SiteEngagementService::GetScore(const GURL& url) {
return score.Score();
}
-int SiteEngagementService::GetTotalEngagementPoints() {
+double SiteEngagementService::GetTotalEngagementPoints() {
HostContentSettingsMap* settings_map =
HostContentSettingsMapFactory::GetForProfile(profile_);
ContentSettingsForOneType engagement_settings;
settings_map->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT,
std::string(), &engagement_settings);
- int total_score = 0;
+ double total_score = 0;
for (const auto& site : engagement_settings) {
GURL origin(site.primary_pattern.ToString());
if (!origin.is_valid())
@@ -217,8 +207,8 @@ int SiteEngagementService::GetTotalEngagementPoints() {
return total_score;
}
-std::map<GURL, int> SiteEngagementService::GetScoreMap() {
- std::map<GURL, int> score_map;
+std::map<GURL, double> SiteEngagementService::GetScoreMap() {
+ std::map<GURL, double> score_map;
HostContentSettingsMap* settings_map =
HostContentSettingsMapFactory::GetForProfile(profile_);
ContentSettingsForOneType engagement_settings;
@@ -236,3 +226,23 @@ std::map<GURL, int> SiteEngagementService::GetScoreMap() {
}
return score_map;
}
+
+void SiteEngagementService::AddPoints(const GURL& url, double points) {
+ HostContentSettingsMap* settings_map =
+ HostContentSettingsMapFactory::GetForProfile(profile_);
+ scoped_ptr<base::DictionaryValue> score_dict =
+ GetScoreDictForOrigin(settings_map, url);
+ SiteEngagementScore score(&clock_, *score_dict);
+
+ score.AddPoints(points);
+ if (score.UpdateScoreDict(score_dict.get())) {
+ ContentSettingsPattern pattern(
+ ContentSettingsPattern::FromURLNoWildcard(url));
+ if (!pattern.IsValid())
+ return;
+
+ settings_map->SetWebsiteSetting(pattern, ContentSettingsPattern::Wildcard(),
+ CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT,
+ std::string(), score_dict.release());
+ }
+}
« no previous file with comments | « chrome/browser/engagement/site_engagement_service.h ('k') | chrome/browser/engagement/site_engagement_service_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698