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

Unified Diff: chrome/browser/web_resource/notification_promo.cc

Issue 419033007: Limit the window of time a promo can be visible after first view. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 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
« no previous file with comments | « chrome/browser/web_resource/notification_promo.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/web_resource/notification_promo.cc
diff --git a/chrome/browser/web_resource/notification_promo.cc b/chrome/browser/web_resource/notification_promo.cc
index 0ddcdae9963febb6323a24a9dc8ffad66c13d32c..8999dd841c83bb3dae5704e217ec97c5c235a489 100644
--- a/chrome/browser/web_resource/notification_promo.cc
+++ b/chrome/browser/web_resource/notification_promo.cc
@@ -49,6 +49,8 @@ const char kPrefPromoIncrement[] = "increment";
const char kPrefPromoIncrementFrequency[] = "increment_frequency";
const char kPrefPromoIncrementMax[] = "increment_max";
const char kPrefPromoMaxViews[] = "max_views";
+const char kPrefPromoMaxSeconds[] = "max_seconds";
+const char kPrefPromoFirstViewTime[] = "first_view_time";
const char kPrefPromoGroup[] = "group";
const char kPrefPromoViews[] = "views";
const char kPrefPromoClosed[] = "closed";
@@ -199,6 +201,8 @@ NotificationPromo::NotificationPromo()
time_slice_(0),
max_group_(0),
max_views_(0),
+ max_seconds_(0),
+ first_view_time_(0),
group_(0),
views_(0),
closed_(false),
@@ -284,6 +288,9 @@ void NotificationPromo::InitFromJson(const base::DictionaryValue& json,
promo->GetInteger("max_views", &max_views_);
DVLOG(1) << "max_views_ " << max_views_;
+ promo->GetInteger("max_seconds", &max_seconds_);
+ DVLOG(1) << "max_seconds_ " << max_seconds_;
+
CheckForNewNotification();
}
@@ -341,6 +348,8 @@ void NotificationPromo::WritePrefs() {
ntp_promo->SetInteger(kPrefPromoIncrementMax, max_group_);
ntp_promo->SetInteger(kPrefPromoMaxViews, max_views_);
+ ntp_promo->SetInteger(kPrefPromoMaxSeconds, max_seconds_);
+ ntp_promo->SetDouble(kPrefPromoFirstViewTime, first_view_time_);
ntp_promo->SetInteger(kPrefPromoGroup, group_);
ntp_promo->SetInteger(kPrefPromoViews, views_);
@@ -388,6 +397,8 @@ void NotificationPromo::InitFromPrefs(PromoType promo_type) {
ntp_promo->GetInteger(kPrefPromoIncrementMax, &max_group_);
ntp_promo->GetInteger(kPrefPromoMaxViews, &max_views_);
+ ntp_promo->GetInteger(kPrefPromoMaxSeconds, &max_seconds_);
+ ntp_promo->GetDouble(kPrefPromoFirstViewTime, &first_view_time_);
ntp_promo->GetInteger(kPrefPromoGroup, &group_);
ntp_promo->GetInteger(kPrefPromoViews, &views_);
@@ -412,6 +423,7 @@ bool NotificationPromo::CanShow() const {
!promo_text_.empty() &&
!ExceedsMaxGroup() &&
!ExceedsMaxViews() &&
+ !ExceedsMaxSeconds() &&
CheckAppLauncher() &&
base::Time::FromDoubleT(StartTimeForGroup()) < base::Time::Now() &&
base::Time::FromDoubleT(EndTime()) > base::Time::Now();
@@ -434,8 +446,11 @@ bool NotificationPromo::HandleViewed(PromoType promo_type) {
NotificationPromo promo;
promo.InitFromPrefs(promo_type);
++promo.views_;
+ if (promo.first_view_time_ == 0) {
+ promo.first_view_time_ = base::Time::Now().ToDoubleT();
+ }
promo.WritePrefs();
- return promo.ExceedsMaxViews();
+ return promo.ExceedsMaxViews() || promo.ExceedsMaxSeconds();
}
bool NotificationPromo::ExceedsMaxGroup() const {
@@ -446,6 +461,15 @@ bool NotificationPromo::ExceedsMaxViews() const {
return (max_views_ == 0) ? false : views_ >= max_views_;
}
+bool NotificationPromo::ExceedsMaxSeconds() const {
+ if (max_seconds_ == 0 || first_view_time_ == 0)
+ return false;
+
+ const base::Time last_view_time = base::Time::FromDoubleT(first_view_time_) +
+ base::TimeDelta::FromSeconds(max_seconds_);
+ return last_view_time < base::Time::Now();
+}
+
// static
GURL NotificationPromo::PromoServerURL() {
GURL url(promo_server_url);
« no previous file with comments | « chrome/browser/web_resource/notification_promo.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698