Chromium Code Reviews| 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..dfbf0e081a4f147a16affddef27f16ac2a28bf55 100644 |
| --- a/chrome/browser/engagement/site_engagement_score.cc |
| +++ b/chrome/browser/engagement/site_engagement_score.cc |
| @@ -14,7 +14,10 @@ |
| #include "base/values.h" |
| #include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
| #include "chrome/browser/engagement/site_engagement_metrics.h" |
| +#include "chrome/browser/permissions/permission_manager.h" |
|
benwells
2017/03/08 04:19:32
is this include used?
dominickn
2017/03/08 04:44:52
It was, but that was unfeasible. Removed!
|
| #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 +91,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 +160,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 +342,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 +373,22 @@ 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_, origin_, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
| + std::string()) == CONTENT_SETTING_ALLOW) { |
| + bonus += GetNotificationPermissionPoints(); |
| + } |
| - return 0; |
| + return bonus; |
| } |
| void SiteEngagementScore::SetParamValuesForTesting() { |
| @@ -385,6 +405,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. |