| // Copyright (c) 2012 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. |
| |
| #include "chrome/browser/web_resource/notification_promo_mobile_ntp.h" |
| |
| #include "base/values.h" |
| #include "chrome/browser/web_resource/notification_promo.h" |
| |
| NotificationPromoMobileNtp::NotificationPromoMobileNtp() |
| : valid_(false), |
| action_args_(NULL), |
| payload_(NULL) { |
| } |
| |
| NotificationPromoMobileNtp::~NotificationPromoMobileNtp() { |
| } |
| |
| bool NotificationPromoMobileNtp::InitFromPrefs() { |
| notification_promo_.InitFromPrefs(NotificationPromo::MOBILE_NTP_SYNC_PROMO); |
| return InitFromNotificationPromo(); |
| } |
| |
| bool NotificationPromoMobileNtp::InitFromJson( |
| const base::DictionaryValue& json) { |
| notification_promo_.InitFromJson( |
| json, NotificationPromo::MOBILE_NTP_SYNC_PROMO); |
| return InitFromNotificationPromo(); |
| } |
| |
| bool NotificationPromoMobileNtp::CanShow() const { |
| return valid() && notification_promo_.CanShow(); |
| } |
| |
| bool NotificationPromoMobileNtp::InitFromNotificationPromo() { |
| valid_ = false; |
| requires_mobile_only_sync_ = true; |
| requires_sync_ = true; |
| show_on_most_visited_ = false; |
| show_on_open_tabs_ = true; |
| show_as_virtual_computer_ = true; |
| action_args_ = NULL; |
| |
| // These fields are mandatory and must be specified in the promo. |
| payload_ = notification_promo_.promo_payload(); |
| if (!payload_ || |
| !payload_->GetString("promo_message_short", &text_) || |
| !payload_->GetString("promo_message_long", &text_long_) || |
| !payload_->GetString("promo_action_type", &action_type_) || |
| !payload_->GetList("promo_action_args", &action_args_) || |
| !action_args_) { |
| return false; |
| } |
| |
| // The rest of the fields are optional. |
| valid_ = true; |
| payload_->GetBoolean("promo_requires_mobile_only_sync", |
| &requires_mobile_only_sync_); |
| payload_->GetBoolean("promo_requires_sync", &requires_sync_); |
| payload_->GetBoolean("promo_show_on_most_visited", &show_on_most_visited_); |
| payload_->GetBoolean("promo_show_on_open_tabs", &show_on_open_tabs_); |
| payload_->GetBoolean("promo_show_as_virtual_computer", |
| &show_as_virtual_computer_); |
| payload_->GetString("promo_virtual_computer_title", &virtual_computer_title_); |
| payload_->GetString("promo_virtual_computer_lastsync", |
| &virtual_computer_lastsync_); |
| |
| return valid_; |
| } |