| Index: ios/chrome/browser/ui/ntp/notification_promo_whats_new.h
|
| diff --git a/ios/chrome/browser/ui/ntp/notification_promo_whats_new.h b/ios/chrome/browser/ui/ntp/notification_promo_whats_new.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..31a74f300eab4065ca199200a9c1e0b9fa4b79c1
|
| --- /dev/null
|
| +++ b/ios/chrome/browser/ui/ntp/notification_promo_whats_new.h
|
| @@ -0,0 +1,113 @@
|
| +// Copyright (c) 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef IOS_CHROME_BROWSER_UI_NTP_NOTIFICATION_PROMO_WHATS_NEW_H_
|
| +#define IOS_CHROME_BROWSER_UI_NTP_NOTIFICATION_PROMO_WHATS_NEW_H_
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "base/macros.h"
|
| +#include "ios/chrome/browser/notification_promo.h"
|
| +#include "ios/public/provider/chrome/browser/images/whats_new_icon.h"
|
| +#include "url/gurl.h"
|
| +
|
| +namespace base {
|
| +class DictionaryValue;
|
| +}
|
| +
|
| +// Helper class for NotificationPromo that deals with mobile_ntp promos.
|
| +class NotificationPromoWhatsNew {
|
| + public:
|
| + explicit NotificationPromoWhatsNew(PrefService* local_state);
|
| + ~NotificationPromoWhatsNew();
|
| +
|
| + // Initialize from variations/prefs/JSON.
|
| + // Return true if the mobile NTP promotion is valid.
|
| + bool Init();
|
| +
|
| + // Used by experimental setting to always show a promo.
|
| + bool ClearAndInitFromJson(const base::DictionaryValue& json);
|
| +
|
| + // Return true if the promo is valid and can be shown.
|
| + bool CanShow() const;
|
| +
|
| + // Mark the promo as closed when the user dismisses it.
|
| + void HandleClosed();
|
| +
|
| + // Mark the promo as having been viewed.
|
| + void HandleViewed();
|
| +
|
| + bool valid() const { return valid_; }
|
| + const std::string& promo_type() { return promo_type_; }
|
| + const std::string& promo_text() { return promo_text_; }
|
| + const std::string& promo_name() { return promo_name_; }
|
| + WhatsNewIcon icon() { return icon_; }
|
| + bool IsURLPromo() const;
|
| + const GURL& url() { return url_; }
|
| + bool IsChromeCommand() const;
|
| + int command_id() { return command_id_; }
|
| +
|
| + private:
|
| + // Initialize the state and validity from the low-level notification_promo_.
|
| + bool InitFromNotificationPromo();
|
| +
|
| + // Inject a fake promo. The parameters are equivalent to the equivalent
|
| + // parameters that can be provided by the variations API. In addition, for
|
| + // some variations parameters that are not in this list, the following
|
| + // defaults are used: start: 1 Jan 1999 0:26:06 GMT,
|
| + // end: 1 Jan 2199 0:26:06 GMT, max_views: 20, max_seconds: 259200.
|
| + void InjectFakePromo(const std::string& promo_id,
|
| + const std::string& promo_text,
|
| + const std::string& promo_type,
|
| + const std::string& command,
|
| + const std::string& url,
|
| + const std::string& metric_name,
|
| + const std::string& icon);
|
| +
|
| + // Prefs service for promos.
|
| + PrefService* local_state_;
|
| +
|
| + // True if InitFromPrefs/JSON was called and all mandatory fields were found.
|
| + bool valid_;
|
| +
|
| + // Text of promo.
|
| + std::string promo_text_;
|
| +
|
| + // Type of whats new promo.
|
| + std::string promo_type_;
|
| +
|
| + // Name of promo.
|
| + std::string promo_name_;
|
| +
|
| + // Icon of promo.
|
| + WhatsNewIcon icon_;
|
| +
|
| + // The minimum number of seconds from installation before promo can be valid.
|
| + // E.g. Don't show the promo if installation was within N days.
|
| + int seconds_since_install_;
|
| +
|
| + // The duration after installation that the promo can be valid.
|
| + // E.g. Don't show the promo if installation was more than N days ago.
|
| + int max_seconds_since_install_;
|
| +
|
| + // If promo type is 'url'.
|
| + GURL url_;
|
| +
|
| + // If promo type is 'chrome_command'.
|
| + int command_id_;
|
| +
|
| + // Metric name to append
|
| + std::string metric_name_;
|
| +
|
| + // The lower-level notification promo.
|
| + ios::NotificationPromo notification_promo_;
|
| +
|
| + // Convert an icon name string to WhatsNewIcon.
|
| + WhatsNewIcon ParseIconName(const std::string& icon_name);
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(NotificationPromoWhatsNew);
|
| +};
|
| +
|
| +#endif // IOS_CHROME_BROWSER_UI_NTP_NOTIFICATION_PROMO_WHATS_NEW_H_
|
|
|