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

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

Issue 1919383005: Small cleanup of SiteEngagementService. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address nit + rebase Created 4 years, 7 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
« no previous file with comments | « chrome/browser/engagement/site_engagement_service.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 3d88eaba661ebfea12a1b66a50108843de37db0b..90a775911d50e4113224fb2f620154ce4173d3e1 100644
--- a/chrome/browser/engagement/site_engagement_service.cc
+++ b/chrome/browser/engagement/site_engagement_service.cc
@@ -51,24 +51,6 @@ std::unique_ptr<ContentSettingsForOneType> GetEngagementContentSettings(
return engagement_settings;
}
-std::unique_ptr<base::DictionaryValue> GetScoreDictForOrigin(
- HostContentSettingsMap* settings,
- const GURL& origin_url) {
- if (!settings)
- return std::unique_ptr<base::DictionaryValue>();
-
- std::unique_ptr<base::Value> value = settings->GetWebsiteSetting(
- origin_url, origin_url, CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT,
- std::string(), NULL);
- if (!value.get())
- return base::WrapUnique(new base::DictionaryValue());
-
- if (!value->IsType(base::Value::TYPE_DICTIONARY))
- return base::WrapUnique(new base::DictionaryValue());
-
- return base::WrapUnique(static_cast<base::DictionaryValue*>(value.release()));
-}
-
// Only accept a navigation event for engagement if it is one of:
// a. direct typed navigation
// b. clicking on an omnibox suggestion brought up by typing a keyword
@@ -173,16 +155,13 @@ std::map<GURL, double> SiteEngagementService::GetScoreMap() const {
if (!origin.is_valid())
continue;
- std::unique_ptr<base::DictionaryValue> score_dict =
- GetScoreDictForOrigin(settings_map, origin);
- SiteEngagementScore score(clock_.get(), *score_dict);
- score_map[origin] = score.GetScore();
+ score_map[origin] = GetScore(origin);
}
return score_map;
}
-bool SiteEngagementService::IsBootstrapped() {
+bool SiteEngagementService::IsBootstrapped() const {
return GetTotalEngagementPoints() >=
SiteEngagementScore::GetBootstrapPoints();
}
@@ -210,15 +189,13 @@ bool SiteEngagementService::IsEngagementAtLeast(
}
void SiteEngagementService::ResetScoreForURL(const GURL& url, double score) {
- ResetScoreAndAccessTimesForURL(url, score, nullptr);
+ SiteEngagementScore engagement_score = CreateEngagementScore(url);
+ engagement_score.Reset(score, clock_->Now());
+ engagement_score.Commit();
}
void SiteEngagementService::SetLastShortcutLaunchTime(const GURL& url) {
- HostContentSettingsMap* settings_map =
- HostContentSettingsMapFactory::GetForProfile(profile_);
- std::unique_ptr<base::DictionaryValue> score_dict =
- GetScoreDictForOrigin(settings_map, url);
- SiteEngagementScore score(clock_.get(), *score_dict);
+ SiteEngagementScore score = CreateEngagementScore(url);
// Record the number of days since the last launch in UMA. If the user's clock
// has changed back in time, set this to 0.
@@ -232,21 +209,11 @@ void SiteEngagementService::SetLastShortcutLaunchTime(const GURL& url) {
SiteEngagementMetrics::ENGAGEMENT_WEBAPP_SHORTCUT_LAUNCH);
score.set_last_shortcut_launch_time(now);
- if (score.UpdateScoreDict(score_dict.get())) {
- settings_map->SetWebsiteSettingDefaultScope(
- url, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(),
- score_dict.release());
- }
+ score.Commit();
}
double SiteEngagementService::GetScore(const GURL& url) const {
- HostContentSettingsMap* settings_map =
- HostContentSettingsMapFactory::GetForProfile(profile_);
- std::unique_ptr<base::DictionaryValue> score_dict =
- GetScoreDictForOrigin(settings_map, url);
- SiteEngagementScore score(clock_.get(), *score_dict);
-
- return score.GetScore();
+ return CreateEngagementScore(url).GetScore();
}
double SiteEngagementService::GetTotalEngagementPoints() const {
@@ -270,18 +237,10 @@ SiteEngagementService::SiteEngagementService(Profile* profile,
}
void SiteEngagementService::AddPoints(const GURL& url, double points) {
- HostContentSettingsMap* settings_map =
- HostContentSettingsMapFactory::GetForProfile(profile_);
- std::unique_ptr<base::DictionaryValue> score_dict =
- GetScoreDictForOrigin(settings_map, url);
- SiteEngagementScore score(clock_.get(), *score_dict);
+ SiteEngagementScore score = CreateEngagementScore(url);
score.AddPoints(points);
- if (score.UpdateScoreDict(score_dict.get())) {
- settings_map->SetWebsiteSettingDefaultScope(
- url, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(),
- score_dict.release());
- }
+ score.Commit();
}
void SiteEngagementService::AfterStartupTask() {
@@ -297,13 +256,8 @@ void SiteEngagementService::CleanupEngagementScores() {
for (const auto& site : *engagement_settings) {
GURL origin(site.primary_pattern.ToString());
- if (origin.is_valid()) {
- std::unique_ptr<base::DictionaryValue> score_dict =
- GetScoreDictForOrigin(settings_map, origin);
- SiteEngagementScore score(clock_.get(), *score_dict);
- if (score.GetScore() != 0)
+ if (origin.is_valid() && GetScore(origin) != 0)
continue;
- }
settings_map->SetWebsiteSettingDefaultScope(
origin, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(),
@@ -412,6 +366,20 @@ void SiteEngagementService::OnURLsDeleted(
weak_factory_.GetWeakPtr(), hs, origins, expired));
}
+const SiteEngagementScore SiteEngagementService::CreateEngagementScore(
+ const GURL& origin) const {
+ return SiteEngagementScore(
+ clock_.get(), origin,
+ HostContentSettingsMapFactory::GetForProfile(profile_));
+}
+
+SiteEngagementScore SiteEngagementService::CreateEngagementScore(
+ const GURL& origin) {
+ return SiteEngagementScore(
+ clock_.get(), origin,
+ HostContentSettingsMapFactory::GetForProfile(profile_));
+}
+
int SiteEngagementService::OriginsWithMaxDailyEngagement() const {
HostContentSettingsMap* settings_map =
HostContentSettingsMapFactory::GetForProfile(profile_);
@@ -426,10 +394,7 @@ int SiteEngagementService::OriginsWithMaxDailyEngagement() const {
if (!origin.is_valid())
continue;
- std::unique_ptr<base::DictionaryValue> score_dict =
- GetScoreDictForOrigin(settings_map, origin);
- SiteEngagementScore score(clock_.get(), *score_dict);
- if (score.MaxPointsPerDayAdded())
+ if (CreateEngagementScore(origin).MaxPointsPerDayAdded())
++total_origins;
}
@@ -462,6 +427,11 @@ void SiteEngagementService::GetCountsAndLastVisitForOriginsComplete(
for (const auto& origin_to_count : remaining_origins) {
GURL origin = origin_to_count.first;
+ // It appears that the history service occasionally sends bad URLs to us.
+ // See crbug.com/612881.
+ if (!origin.is_valid())
+ continue;
+
int remaining = origin_to_count.second.first;
base::Time last_visit = origin_to_count.second.second;
int deleted = deleted_origins.count(origin);
@@ -496,40 +466,17 @@ void SiteEngagementService::GetCountsAndLastVisitForOriginsComplete(
undecay = periods * SiteEngagementScore::GetDecayPoints();
}
- double score =
- std::min(SiteEngagementScore::kMaxPoints,
- (proportion_remaining * GetScore(origin)) + undecay);
- ResetScoreAndAccessTimesForURL(origin, score, &last_visit);
- }
-}
-
-void SiteEngagementService::ResetScoreAndAccessTimesForURL(
- const GURL& url, double score, const base::Time* updated_time) {
- // It appears that the history service occassionally sends bad URLs to us.
- // See crbug.com/612881.
- if (!url.is_valid())
- return;
-
- DCHECK_GE(score, 0);
- DCHECK_LE(score, SiteEngagementScore::kMaxPoints);
+ SiteEngagementScore engagement_score = CreateEngagementScore(origin);
- HostContentSettingsMap* settings_map =
- HostContentSettingsMapFactory::GetForProfile(profile_);
- std::unique_ptr<base::DictionaryValue> score_dict =
- GetScoreDictForOrigin(settings_map, url);
- SiteEngagementScore engagement_score(clock_.get(), *score_dict);
-
- engagement_score.Reset(score, updated_time);
- if (score == 0) {
- settings_map->SetWebsiteSettingDefaultScope(
- url, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(),
- nullptr);
- return;
- }
+ double score = std::min(
+ SiteEngagementScore::kMaxPoints,
+ (proportion_remaining * engagement_score.GetScore()) + undecay);
+ engagement_score.Reset(score, last_visit);
+ if (!engagement_score.last_shortcut_launch_time().is_null()
+ && engagement_score.last_shortcut_launch_time() > last_visit) {
+ engagement_score.set_last_shortcut_launch_time(last_visit);
+ }
- if (engagement_score.UpdateScoreDict(score_dict.get())) {
- settings_map->SetWebsiteSettingDefaultScope(
- url, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(),
- score_dict.release());
+ engagement_score.Commit();
}
}
« no previous file with comments | « chrome/browser/engagement/site_engagement_service.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698