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 d9cae365b7f3a54a93f55aeec95321fef01a458d..a9493061cb627949e173049aacbfb36e85223116 100644 |
--- a/chrome/browser/engagement/site_engagement_score.cc |
+++ b/chrome/browser/engagement/site_engagement_score.cc |
@@ -15,6 +15,8 @@ |
#include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
#include "chrome/browser/engagement/site_engagement_metrics.h" |
#include "components/content_settings/core/browser/host_content_settings_map.h" |
+#include "components/content_settings/core/common/content_settings.h" |
+#include "components/content_settings/core/common/content_settings_types.h" |
#include "components/variations/variations_associated_data.h" |
namespace { |
@@ -88,6 +90,8 @@ SiteEngagementScore::ParamValues SiteEngagementScore::BuildParamValues() { |
param_values[MAX_DECAYS_PER_SCORE] = {"max_decays_per_score", 4}; |
param_values[LAST_ENGAGEMENT_GRACE_PERIOD_IN_HOURS] = { |
"last_engagement_grace_period_in_hours", 1}; |
+ param_values[NOTIFICATION_PERMISSION_POINTS] = { |
+ "notification_permission_points", 5}; |
return param_values; |
} |
@@ -155,6 +159,10 @@ double SiteEngagementScore::GetLastEngagementGracePeriodInHours() { |
return GetParamValues()[LAST_ENGAGEMENT_GRACE_PERIOD_IN_HOURS].second; |
} |
+double SiteEngagementScore::GetNotificationPermissionPoints() { |
+ return GetParamValues()[NOTIFICATION_PERMISSION_POINTS].second; |
+} |
+ |
// static |
void SiteEngagementScore::UpdateFromVariations(const char* param_name) { |
double param_vals[MAX_VARIATION]; |
@@ -333,7 +341,8 @@ SiteEngagementScore::SiteEngagementScore( |
last_engagement_time_(), |
last_shortcut_launch_time_(), |
score_dict_(score_dict.release()), |
- origin_(origin) { |
+ origin_(origin), |
+ settings_map_(nullptr) { |
if (!score_dict_) |
return; |
@@ -363,12 +372,21 @@ double SiteEngagementScore::DecayedScore() const { |
} |
double SiteEngagementScore::BonusScore() const { |
+ double bonus = 0; |
int days_since_shortcut_launch = |
(clock_->Now() - last_shortcut_launch_time_).InDays(); |
if (days_since_shortcut_launch <= kMaxDaysSinceShortcutLaunch) |
- return GetWebAppInstalledPoints(); |
+ bonus += GetWebAppInstalledPoints(); |
+ |
+ // 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(); |
+ } |
- return 0; |
+ return bonus; |
} |
void SiteEngagementScore::SetParamValuesForTesting() { |
@@ -385,6 +403,7 @@ void SiteEngagementScore::SetParamValuesForTesting() { |
GetParamValues()[HIGH_ENGAGEMENT_BOUNDARY].second = 50; |
GetParamValues()[MAX_DECAYS_PER_SCORE].second = 1; |
GetParamValues()[LAST_ENGAGEMENT_GRACE_PERIOD_IN_HOURS].second = 72; |
+ GetParamValues()[NOTIFICATION_PERMISSION_POINTS].second = 5; |
// This is set to values that avoid interference with tests and are set when |
// testing these features. |