Index: chrome/browser/engagement/site_engagement_score.cc |
diff --git a/chrome/browser/engagement/site_engagement_score.cc b/chrome/browser/engagement/site_engagement_score.cc |
index 10fe452045ed6ec5b34dee916337b8735971a19e..cfedbf3bf702eb5564de18c9a162fecd2ab2f362 100644 |
--- a/chrome/browser/engagement/site_engagement_score.cc |
+++ b/chrome/browser/engagement/site_engagement_score.cc |
@@ -46,7 +46,7 @@ std::unique_ptr<base::DictionaryValue> GetScoreDictForSettings( |
std::unique_ptr<base::DictionaryValue> value = |
base::DictionaryValue::From(settings->GetWebsiteSetting( |
origin_url, origin_url, CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, |
- std::string(), NULL)); |
+ content_settings::ResourceIdentifier(), NULL)); |
if (value.get()) |
return value; |
@@ -270,8 +270,20 @@ void SiteEngagementScore::AddPoints(double points) { |
last_engagement_time_ = now; |
} |
-double SiteEngagementScore::GetScore() const { |
- return std::min(DecayedScore() + BonusScore(), kMaxPoints); |
+double SiteEngagementScore::GetTotalScore() const { |
+ return std::min( |
+ DecayedScore() + BonusIfShortcutLaunched() + BonusIfHasNotifications(), |
+ kMaxPoints); |
+} |
+ |
+mojom::SiteEngagementDetails SiteEngagementScore::GetDetails() const { |
+ mojom::SiteEngagementDetails engagement; |
+ engagement.origin = origin_; |
+ engagement.base_score = DecayedScore(); |
+ engagement.installed_bonus = BonusIfShortcutLaunched(); |
+ engagement.notifications_bonus = BonusIfHasNotifications(); |
+ engagement.total_score = GetTotalScore(); |
+ return engagement; |
} |
void SiteEngagementScore::Commit() { |
@@ -280,14 +292,14 @@ void SiteEngagementScore::Commit() { |
return; |
settings_map_->SetWebsiteSettingDefaultScope( |
- origin_, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(), |
- std::move(score_dict_)); |
+ origin_, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, |
+ content_settings::ResourceIdentifier(), std::move(score_dict_)); |
} |
blink::mojom::EngagementLevel SiteEngagementScore::GetEngagementLevel() const { |
DCHECK_LT(GetMediumEngagementBoundary(), GetHighEngagementBoundary()); |
- double score = GetScore(); |
+ double score = GetTotalScore(); |
if (score == 0) |
return blink::mojom::EngagementLevel::NONE; |
@@ -400,20 +412,23 @@ double SiteEngagementScore::DecayedScore() const { |
periods * GetDecayPoints()); |
} |
-double SiteEngagementScore::BonusScore() const { |
- double bonus = 0; |
+double SiteEngagementScore::BonusIfShortcutLaunched() const { |
int days_since_shortcut_launch = |
(clock_->Now() - last_shortcut_launch_time_).InDays(); |
if (days_since_shortcut_launch <= kMaxDaysSinceShortcutLaunch) |
- bonus += GetWebAppInstalledPoints(); |
+ return GetWebAppInstalledPoints(); |
+ return 0; |
+} |
+double SiteEngagementScore::BonusIfHasNotifications() const { |
// TODO(dominickn, raymes): call PermissionManager::GetPermissionStatus when |
// the PermissionManager is thread-safe. |
- if (settings_map_ && settings_map_->GetContentSetting( |
- origin_, GURL(), CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
- std::string()) == CONTENT_SETTING_ALLOW) { |
- bonus += GetNotificationPermissionPoints(); |
+ if (settings_map_ && |
+ settings_map_->GetContentSetting( |
+ origin_, GURL(), CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
+ content_settings::ResourceIdentifier()) == CONTENT_SETTING_ALLOW) { |
+ return GetNotificationPermissionPoints(); |
} |
- return bonus; |
+ return 0; |
} |