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 140cd01b1135e78e3b8eb5d14a60d6bff2f2cdfe..af456dc8410ded7a83e35e9aae6087fcdf077dd4 100644 |
--- a/chrome/browser/engagement/site_engagement_score.cc |
+++ b/chrome/browser/engagement/site_engagement_score.cc |
@@ -15,6 +15,10 @@ |
namespace { |
+// The smallest amount by which engagement is incremented. Updated if necessary |
+// in SiteEngagementScore::UpdateFromVariations. |
+double gMinimumEngagementIncrement = 0.01; |
+ |
// Delta within which to consider scores equal. |
const double kScoreDelta = 0.001; |
@@ -119,6 +123,10 @@ double SiteEngagementScore::GetHighEngagementBoundary() { |
return param_values[HIGH_ENGAGEMENT_BOUNDARY]; |
} |
+double SiteEngagementScore::GetMinimumEngagementIncrement() { |
+ return gMinimumEngagementIncrement; |
+} |
+ |
// static |
void SiteEngagementScore::UpdateFromVariations(const char* param_name) { |
double param_vals[MAX_VARIATION]; |
@@ -137,9 +145,17 @@ void SiteEngagementScore::UpdateFromVariations(const char* param_name) { |
} |
// Once we're sure everything is valid, assign the variation to the param |
- // values array. |
- for (int i = 0; i < MAX_VARIATION; ++i) |
+ // values array. Update the minimum engagement increment if it has changed. |
+ for (int i = 0; i < MAX_VARIATION; ++i) { |
SiteEngagementScore::param_values[i] = param_vals[i]; |
+ |
+ // If the value is one used to increment the site engagement score, update |
+ // the minimum engagement increment if necessary. |
+ if (i >= POINTS_INCREMENT_FIRST && i <= POINTS_INCREMENT_LAST && |
+ param_vals[i] < gMinimumEngagementIncrement) { |
+ gMinimumEngagementIncrement = param_vals[i]; |
+ } |
+ } |
} |
SiteEngagementScore::SiteEngagementScore(base::Clock* clock, |