Chromium Code Reviews| 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 3780227d8785054211d8ef993c99ce054c036b3b..f4ca599441ceb8a992d3f27e1c5095e8d2aeb291 100644 |
| --- a/chrome/browser/engagement/site_engagement_service.cc |
| +++ b/chrome/browser/engagement/site_engagement_service.cc |
| @@ -167,9 +167,8 @@ bool SiteEngagementService::IsBootstrapped() const { |
| SiteEngagementScore::GetBootstrapPoints(); |
| } |
| -bool SiteEngagementService::IsEngagementAtLeast( |
| - const GURL& url, |
| - EngagementLevel level) const { |
| +bool SiteEngagementService::IsEngagementAtLeast(const GURL& url, |
| + EngagementLevel level) const { |
| DCHECK_LT(SiteEngagementScore::GetMediumEngagementBoundary(), |
| SiteEngagementScore::GetHighEngagementBoundary()); |
| double score = GetScore(url); |
| @@ -189,6 +188,14 @@ bool SiteEngagementService::IsEngagementAtLeast( |
| return false; |
| } |
| +void SiteEngagementService::AddObserver(SiteEngagementObserver* observer) { |
| + observer_list_.AddObserver(observer); |
| +} |
| + |
| +void SiteEngagementService::RemoveObserver(SiteEngagementObserver* observer) { |
| + observer_list_.RemoveObserver(observer); |
| +} |
| + |
| void SiteEngagementService::ResetScoreForURL(const GURL& url, double score) { |
| SiteEngagementScore engagement_score = CreateEngagementScore(url); |
| engagement_score.Reset(score, clock_->Now()); |
| @@ -251,14 +258,14 @@ void SiteEngagementService::AfterStartupTask() { |
| void SiteEngagementService::CleanupEngagementScores() { |
| HostContentSettingsMap* settings_map = |
| - HostContentSettingsMapFactory::GetForProfile(profile_); |
| + HostContentSettingsMapFactory::GetForProfile(profile_); |
| std::unique_ptr<ContentSettingsForOneType> engagement_settings = |
| GetEngagementContentSettings(settings_map); |
| for (const auto& site : *engagement_settings) { |
| GURL origin(site.primary_pattern.ToString()); |
| if (origin.is_valid() && GetScore(origin) != 0) |
| - continue; |
| + continue; |
| settings_map->SetWebsiteSettingDefaultScope( |
| origin, GURL(), CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, std::string(), |
| @@ -276,8 +283,9 @@ void SiteEngagementService::RecordMetrics() { |
| int origins_with_max_engagement = OriginsWithMaxEngagement(score_map); |
| int total_origins = score_map.size(); |
| int percent_origins_with_max_engagement = |
| - (total_origins == 0 ? 0 : (origins_with_max_engagement * 100) / |
| - total_origins); |
| + (total_origins == 0 |
| + ? 0 |
| + : (origins_with_max_engagement * 100) / total_origins); |
| double total_engagement = GetTotalEngagementPoints(); |
| double mean_engagement = |
| @@ -321,34 +329,47 @@ double SiteEngagementService::GetMedianEngagement( |
| } |
| void SiteEngagementService::HandleMediaPlaying( |
| - content::WebContents* web_contents, bool is_hidden) { |
| + content::WebContents* web_contents, |
| + bool is_hidden) { |
| + const GURL& url = web_contents->GetVisibleURL(); |
| SiteEngagementMetrics::RecordEngagement( |
| is_hidden ? SiteEngagementMetrics::ENGAGEMENT_MEDIA_HIDDEN |
| : SiteEngagementMetrics::ENGAGEMENT_MEDIA_VISIBLE); |
| - AddPoints(web_contents->GetVisibleURL(), |
| - is_hidden ? SiteEngagementScore::GetHiddenMediaPoints() |
| - : SiteEngagementScore::GetVisibleMediaPoints()); |
| + AddPoints(url, is_hidden ? SiteEngagementScore::GetHiddenMediaPoints() |
| + : SiteEngagementScore::GetVisibleMediaPoints()); |
| + |
| RecordMetrics(); |
| + FOR_EACH_OBSERVER( |
| + SiteEngagementObserver, observer_list_, |
| + OnEngagementIncreased(web_contents, url, GetScore(url), is_hidden)); |
| } |
| void SiteEngagementService::HandleNavigation(content::WebContents* web_contents, |
| ui::PageTransition transition) { |
| if (IsEngagementNavigation(transition)) { |
| + const GURL& url = web_contents->GetLastCommittedURL(); |
| SiteEngagementMetrics::RecordEngagement( |
| SiteEngagementMetrics::ENGAGEMENT_NAVIGATION); |
| - AddPoints(web_contents->GetLastCommittedURL(), |
| - SiteEngagementScore::GetNavigationPoints()); |
| + AddPoints(url, SiteEngagementScore::GetNavigationPoints()); |
| + |
| RecordMetrics(); |
| + FOR_EACH_OBSERVER( |
| + SiteEngagementObserver, observer_list_, |
| + OnEngagementIncreased(web_contents, url, GetScore(url), false)); |
|
benwells
2016/06/11 09:31:23
Is this always not hidden? What about if the navig
dominickn
2016/06/11 15:05:50
The assumption right now is that navigation engage
|
| } |
| } |
| void SiteEngagementService::HandleUserInput( |
| content::WebContents* web_contents, |
| SiteEngagementMetrics::EngagementType type) { |
| + const GURL& url = web_contents->GetVisibleURL(); |
| SiteEngagementMetrics::RecordEngagement(type); |
| - AddPoints(web_contents->GetVisibleURL(), |
| - SiteEngagementScore::GetUserInputPoints()); |
| + AddPoints(url, SiteEngagementScore::GetUserInputPoints()); |
| + |
| RecordMetrics(); |
| + FOR_EACH_OBSERVER( |
| + SiteEngagementObserver, observer_list_, |
| + OnEngagementIncreased(web_contents, url, GetScore(url), false)); |
| } |
| void SiteEngagementService::OnURLsDeleted( |
| @@ -421,7 +442,6 @@ void SiteEngagementService::GetCountsAndLastVisitForOriginsComplete( |
| const std::multiset<GURL>& deleted_origins, |
| bool expired, |
| const history::OriginCountAndLastVisitMap& remaining_origins) { |
| - |
| // The most in-the-past option in the Clear Browsing Dialog aside from "all |
| // time" is 4 weeks ago. Set the last updated date to 4 weeks ago for origins |
| // where we can't find a valid last visit date. |
| @@ -465,8 +485,8 @@ void SiteEngagementService::GetCountsAndLastVisitForOriginsComplete( |
| int undecay = 0; |
| int days_since_engagement = (now - last_visit).InDays(); |
| if (days_since_engagement > 0) { |
| - int periods = days_since_engagement / |
| - SiteEngagementScore::GetDecayPeriodInDays(); |
| + int periods = |
| + days_since_engagement / SiteEngagementScore::GetDecayPeriodInDays(); |
| undecay = periods * SiteEngagementScore::GetDecayPoints(); |
| } |
| @@ -476,8 +496,8 @@ void SiteEngagementService::GetCountsAndLastVisitForOriginsComplete( |
| 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) { |
| + 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); |
| } |