Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1322)

Unified Diff: chrome/browser/engagement/site_engagement_service.h

Issue 1986033002: Implement an observer interface for the site engagement service. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@site-engagement-refactor
Patch Set: Addressing reviewer comments Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
« no previous file with comments | « chrome/browser/engagement/site_engagement_score.h ('k') | chrome/browser/engagement/site_engagement_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698