| 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 e18e9808a9fbda9d7871e3a90cb7d759a50293f1..776e41326c4474bd96e5917451750ccf2b6ff311 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"
|
| @@ -114,6 +116,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);
|
| @@ -125,6 +128,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);
|
|
|
| @@ -183,6 +187,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);
|
| +
|
| Profile* profile_;
|
|
|
| // The clock used to vend times.
|
| @@ -195,6 +203,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);
|
|
|