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 77a1c5f0a86193f0255ee64f5b5d89d3743e6bd6..be9587503423b1ebd1b33e03f48c9ec38f65fdab 100644 |
--- a/chrome/browser/engagement/site_engagement_service.h |
+++ b/chrome/browser/engagement/site_engagement_service.h |
@@ -27,6 +27,7 @@ class HistoryService; |
} |
class GURL; |
+class HostContentSettingsMap; |
class Profile; |
class SiteEngagementScore { |
@@ -105,16 +106,9 @@ class SiteEngagementScore { |
double Score() const; |
void AddPoints(double points); |
- // Resets the score to |points| and resets the daily point limit. If |
- // |updated_time| is non-null, sets the last engagement time and last |
- // shortcut launch time (if it is non-null) to |updated_time|. Otherwise, last |
- // engagement time is set to the current time and last shortcut launch time is |
- // left unchanged. |
- // TODO(calamity): Ideally, all SiteEngagementScore methods should take a |
- // base::Time argument like this one does rather than each Score hold a |
- // pointer to a base::Clock. Then SiteEngagementScore doesn't need to worry |
- // about clock vending. See crbug.com/604305 |
- void Reset(double points, const base::Time* updated_time); |
+ // Resets the score to |points|, resets the daily point limit and sets the |
+ // last engagement time to |last_engagement_time|. |
+ void Reset(double points, const base::Time last_engagement_time); |
// Returns true if the maximum number of points today has been added. |
bool MaxPointsPerDayAdded() const; |
@@ -291,9 +285,36 @@ class SiteEngagementService : public KeyedService, |
FRIEND_TEST_ALL_PREFIXES(AppBannerSettingsHelperTest, SiteEngagementTrigger); |
FRIEND_TEST_ALL_PREFIXES(ImportantSitesUtilTest, NotificationsThenEngagement); |
+ class ScopedEngagementScore { |
+ public: |
+ ScopedEngagementScore(HostContentSettingsMap* settings_map, |
+ const GURL& url, |
+ base::Clock* clock, |
+ bool update); |
+ ~ScopedEngagementScore(); |
+ |
+ SiteEngagementScore* get() { return &score_; } |
+ |
+ private: |
+ std::unique_ptr<base::DictionaryValue> score_dict_; |
+ SiteEngagementScore score_; |
+ bool update_; |
+ GURL url_; |
+ |
+ HostContentSettingsMap* settings_map_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ScopedEngagementScore); |
+ }; |
+ |
// Only used in tests. |
SiteEngagementService(Profile* profile, std::unique_ptr<base::Clock> clock); |
+ std::unique_ptr<ScopedEngagementScore> GetEngagementScore(const GURL& url, |
+ bool update); |
dominickn
2016/05/02 21:13:49
I don't really like this ScopedEngagementScore.
-
|
+ |
+ std::unique_ptr<ScopedEngagementScore> GetEngagementScore( |
+ const GURL& url) const; |
+ |
// Adds the specified number of points to the given origin, respecting the |
// maximum limits for the day and overall. |
void AddPoints(const GURL& url, double points); |
@@ -313,17 +334,19 @@ class SiteEngagementService : public KeyedService, |
int OriginsWithMaxEngagement(const std::map<GURL, double>& score_map) const; |
void GetCountsAndLastVisitForOriginsComplete( |
- history::HistoryService* history_service, |
- const std::multiset<GURL>& deleted_url_origins, |
- bool expired, |
- const history::OriginCountAndLastVisitMap& remaining_origin_counts); |
+ history::HistoryService* history_service, |
+ const std::multiset<GURL>& deleted_url_origins, |
+ bool expired, |
+ const history::OriginCountAndLastVisitMap& remaining_origin_counts); |
// 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. |
- void ResetScoreAndAccessTimesForURL(const GURL& url, |
- double score, |
- const base::Time* updated_time); |
+ // engagement time and last shortcut launch time (if it is non-null). Clears |
+ // daily maximum point limits. |
+ void ResetScoreAndAccessTimesForURL( |
+ const GURL& url, |
+ double score, |
+ const base::Time last_engagement_time, |
+ const base::Time* last_shortcut_launch_time); |
dominickn
2016/05/02 21:13:49
Having one argument be the raw time and a second a
|
Profile* profile_; |