| 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..7fd495f7e9a4b793f8121c8f3c6b653969e9a95f 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)));
|
| }
|
|
|
| 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)));
|
| }
|
| }
|
|
|
| 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)));
|
| }
|
|
|
| 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);
|
| }
|
|
|
|
|