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

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

Issue 10836099: Support for promo_type. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: review feedback Created 8 years, 4 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/web_resource/notification_promo.cc
===================================================================
--- chrome/browser/web_resource/notification_promo.cc (revision 150023)
+++ chrome/browser/web_resource/notification_promo.cc (working copy)
@@ -105,6 +105,28 @@
}
}
+struct PromoMapEntry {
+ NotificationPromo::PromoType promo_type;
+ const char* promo_type_str;
+};
+
+const PromoMapEntry kPromoMap[] = {
+ { NotificationPromo::NO_PROMO, "" },
+ { NotificationPromo::NTP_NOTIFICATION_PROMO, "ntp_notification_promo" },
+ { NotificationPromo::BUBBLE_PROMO, "bubble_promo" },
+ { NotificationPromo::MOBILE_NTP_SYNC_PROMO, "mobile_ntp_sync_promo" },
+};
+
+// Convert PromoType to appropriate string.
+const char* PromoTypeToString(NotificationPromo::PromoType promo_type) {
+ for (size_t i = 0; i < arraysize(kPromoMap); ++i) {
+ if (kPromoMap[i].promo_type == promo_type)
+ return kPromoMap[i].promo_type_str;
+ }
+ NOTREACHED();
+ return "";
+}
+
// TODO(achuith): remove this in m23.
void ClearDeprecatedPrefs(PrefService* prefs) {
prefs->RegisterStringPref(prefs::kNtpPromoLine,
@@ -183,17 +205,13 @@
} // namespace
-const char NotificationPromo::kNtpNotificationPromoType[] =
- "ntp_notification_promo";
-const char NotificationPromo::kBubblePromoType[] = "bubble_promo";
-
NotificationPromo::NotificationPromo(Profile* profile)
: profile_(profile),
prefs_(profile_->GetPrefs()),
- promo_type_(kNtpNotificationPromoType),
+ promo_type_(NO_PROMO),
#if defined(OS_ANDROID)
promo_action_args_(new base::ListValue),
-#endif // defined(OS_ANDROID)
+#endif
start_(0.0),
end_(0.0),
num_groups_(kDefaultGroupSize),
@@ -213,17 +231,14 @@
NotificationPromo::~NotificationPromo() {}
-void NotificationPromo::InitFromJson(const DictionaryValue& json) {
+void NotificationPromo::InitFromJson(const DictionaryValue& json,
+ PromoType promo_type) {
+ promo_type_ = promo_type;
const ListValue* promo_list = NULL;
-#if !defined(OS_ANDROID)
- if (!json.GetList(promo_type_, &promo_list))
+ if (!json.GetList(PromoTypeToString(promo_type_), &promo_list)) {
+ LOG(ERROR) << "Malformed JSON: not " << PromoTypeToString(promo_type_);
return;
-#else
- if (!json.GetList("mobile_ntp_sync_promo", &promo_list)) {
- LOG(ERROR) << "Malfromed JSON: not a mobile_ntp_sync_promo";
- return;
}
-#endif // !defined(OS_ANDROID)
// No support for multiple promos yet. Only consider the first one.
const DictionaryValue* promo = NULL;
@@ -343,7 +358,7 @@
void NotificationPromo::CheckForNewNotification() {
NotificationPromo old_promo(profile_);
- old_promo.InitFromPrefs();
+ old_promo.InitFromPrefs(promo_type_);
const double old_start = old_promo.start_;
const double old_end = old_promo.end_;
const std::string old_promo_text = old_promo.promo_text_;
@@ -400,18 +415,19 @@
promo_list->Set(0, ntp_promo); // Only support 1 promo for now.
base::DictionaryValue promo_dict;
- promo_dict.Set(promo_type_, promo_list);
+ promo_dict.Set(PromoTypeToString(promo_type_), promo_list);
prefs_->Set(kPrefPromoObject, promo_dict);
}
-void NotificationPromo::InitFromPrefs() {
+void NotificationPromo::InitFromPrefs(PromoType promo_type) {
+ promo_type_ = promo_type;
const base::DictionaryValue* promo_dict =
prefs_->GetDictionary(kPrefPromoObject);
if (!promo_dict)
return;
const base::ListValue* promo_list(NULL);
- promo_dict->GetList(promo_type_, &promo_list);
+ promo_dict->GetList(PromoTypeToString(promo_type_), &promo_list);
if (!promo_list)
return;
@@ -458,21 +474,25 @@
IsGPlusRequired();
}
-void NotificationPromo::HandleClosed() {
+// static
+void NotificationPromo::HandleClosed(Profile* profile, PromoType promo_type) {
content::RecordAction(UserMetricsAction("NTPPromoClosed"));
- InitFromPrefs();
- if (!closed_) {
- closed_ = true;
- WritePrefs();
+ NotificationPromo promo(profile);
+ promo.InitFromPrefs(promo_type);
+ if (!promo.closed_) {
+ promo.closed_ = true;
+ promo.WritePrefs();
}
}
-bool NotificationPromo::HandleViewed() {
+// static
+bool NotificationPromo::HandleViewed(Profile* profile, PromoType promo_type) {
content::RecordAction(UserMetricsAction("NTPPromoShown"));
- InitFromPrefs();
- ++views_;
- WritePrefs();
- return ExceedsMaxViews();
+ NotificationPromo promo(profile);
+ promo.InitFromPrefs(promo_type);
+ ++promo.views_;
+ promo.WritePrefs();
+ return promo.ExceedsMaxViews();
}
bool NotificationPromo::ExceedsMaxGroup() const {
« no previous file with comments | « chrome/browser/web_resource/notification_promo.h ('k') | chrome/browser/web_resource/promo_resource_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698