| Index: chrome/browser/engagement/site_engagement_service.h
|
| diff --git a/chrome/browser/engagement/site_engagement_service.h b/chrome/browser/engagement/site_engagement_service.h
|
| index 1d733322e887cced1264f0a6ac062984c06b8a99..1c0d9857d2935ad3deea2c5fe919e5f00e726122 100644
|
| --- a/chrome/browser/engagement/site_engagement_service.h
|
| +++ b/chrome/browser/engagement/site_engagement_service.h
|
| @@ -12,8 +12,10 @@
|
| #include "base/gtest_prod_util.h"
|
| #include "base/macros.h"
|
| #include "base/memory/weak_ptr.h"
|
| +#include "base/observer_list.h"
|
| #include "base/time/time.h"
|
| #include "chrome/browser/engagement/site_engagement_metrics.h"
|
| +#include "chrome/browser/engagement/site_engagement_observer.h"
|
| #include "components/history/core/browser/history_service_observer.h"
|
| #include "components/keyed_service/core/keyed_service.h"
|
| #include "ui/base/page_transition_types.h"
|
| @@ -109,6 +111,7 @@ class SiteEngagementService : public KeyedService,
|
| double GetTotalEngagementPoints() const override;
|
|
|
| private:
|
| + friend class SiteEngagementObserver;
|
| FRIEND_TEST_ALL_PREFIXES(SiteEngagementServiceTest, CheckHistograms);
|
| FRIEND_TEST_ALL_PREFIXES(SiteEngagementServiceTest, CleanupEngagementScores);
|
| FRIEND_TEST_ALL_PREFIXES(SiteEngagementServiceTest, ClearHistoryForURLs);
|
| @@ -120,6 +123,7 @@ class SiteEngagementService : public KeyedService,
|
| CleanupOriginsOnHistoryDeletion);
|
| FRIEND_TEST_ALL_PREFIXES(SiteEngagementServiceTest, IsBootstrapped);
|
| FRIEND_TEST_ALL_PREFIXES(SiteEngagementServiceTest, EngagementLevel);
|
| + FRIEND_TEST_ALL_PREFIXES(SiteEngagementServiceTest, Observers);
|
| FRIEND_TEST_ALL_PREFIXES(SiteEngagementServiceTest, ScoreDecayHistograms);
|
| FRIEND_TEST_ALL_PREFIXES(AppBannerSettingsHelperTest, SiteEngagementTrigger);
|
|
|
| @@ -139,6 +143,9 @@ class SiteEngagementService : public KeyedService,
|
| // Returns the median engagement score of all recorded origins.
|
| double GetMedianEngagement(const std::map<GURL, double>& score_map) const;
|
|
|
| + // Returns the minimum engagement score corresponding to |level|.
|
| + double GetScoreForEngagementLevel(EngagementLevel level) const;
|
| +
|
| // Update the engagement score of the origin matching |url| for media playing.
|
| // The points awarded are discounted if the media is being played in a non-
|
| // visible tab.
|
| @@ -172,6 +179,10 @@ class SiteEngagementService : public KeyedService,
|
| bool expired,
|
| const history::OriginCountAndLastVisitMap& remaining_origin_counts);
|
|
|
| + // Add and remove observers of this service.
|
| + void AddObserver(SiteEngagementObserver* observer);
|
| + void RemoveObserver(SiteEngagementObserver* observer);
|
| +
|
| // Resets the engagement score for |url| to |score|, and sets the last
|
| // engagement time and last shortcut launch time (if it is non-null) to
|
| // |updated_time|. Clears daily limits.
|
| @@ -191,6 +202,10 @@ class SiteEngagementService : public KeyedService,
|
| // upload.
|
| base::Time last_metrics_time_;
|
|
|
| + // A list of observers. When any origin registers an engagement-increasing
|
| + // event, each observer's OnEngagementIncreased method will be called.
|
| + base::ObserverList<SiteEngagementObserver> observer_list_;
|
| +
|
| base::WeakPtrFactory<SiteEngagementService> weak_factory_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(SiteEngagementService);
|
|
|