data_promo_notification.cc revision 868fa2fe829687343ffae624259930155e16dbd8
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/status/data_promo_notification.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell_window_ids.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/chromeos/network/network_observer.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/tray/system_tray.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/tray/system_tray_notifier.h"
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_registry_simple.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h"
14868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browser_process.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/cros/cros_library.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/cros/network_library.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/login/helper.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/mobile_config.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h"
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h"
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h"
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_list.h"
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h"
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/login/login_state.h"
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/generated_resources.h"
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/theme_resources.h"
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h"
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/resource/resource_bundle.h"
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/view.h"
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget.h"
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Time in milliseconds to delay showing of promo
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// notification when Chrome window is not on screen.
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int kPromoShowDelayMs = 10000;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int kNotificationCountPrefDefault = -1;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool GetBooleanPref(const char* pref_name) {
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Profile* profile = ProfileManager::GetDefaultProfileOrOffTheRecord();
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PrefService* prefs = profile->GetPrefs();
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return prefs->GetBoolean(pref_name);
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int GetIntegerLocalPref(const char* pref_name) {
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PrefService* prefs = g_browser_process->local_state();
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return prefs->GetInteger(pref_name);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetBooleanPref(const char* pref_name, bool value) {
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Profile* profile = ProfileManager::GetDefaultProfileOrOffTheRecord();
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PrefService* prefs = profile->GetPrefs();
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  prefs->SetBoolean(pref_name, value);
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetIntegerLocalPref(const char* pref_name, int value) {
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PrefService* prefs = g_browser_process->local_state();
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  prefs->SetInteger(pref_name, value);
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns prefs::kShow3gPromoNotification or false
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// if there's no active browser.
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ShouldShow3gPromoNotification() {
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetBooleanPref(prefs::kShow3gPromoNotification);
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetShow3gPromoNotification(bool value) {
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetBooleanPref(prefs::kShow3gPromoNotification, value);
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns prefs::kCarrierDealPromoShown which is number of times
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// carrier deal notification has been shown to users on this machine.
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int GetCarrierDealPromoShown() {
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetIntegerLocalPref(prefs::kCarrierDealPromoShown);
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetCarrierDealPromoShown(int value) {
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetIntegerLocalPref(prefs::kCarrierDealPromoShown, value);
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const chromeos::MobileConfig::Carrier* GetCarrier(
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    chromeos::NetworkLibrary* cros) {
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string carrier_id = cros->GetCellularHomeCarrierId();
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (carrier_id.empty()) {
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    LOG(ERROR) << "Empty carrier ID with a cellular connected.";
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return NULL;
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  chromeos::MobileConfig* config = chromeos::MobileConfig::GetInstance();
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!config->IsReady())
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return NULL;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return config->GetCarrier(carrier_id);
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const chromeos::MobileConfig::CarrierDeal* GetCarrierDeal(
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const chromeos::MobileConfig::Carrier* carrier) {
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const chromeos::MobileConfig::CarrierDeal* deal = carrier->GetDefaultDeal();
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (deal) {
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Check deal for validity.
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int carrier_deal_promo_pref = GetCarrierDealPromoShown();
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (carrier_deal_promo_pref >= deal->notification_count())
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return NULL;
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string locale = g_browser_process->GetApplicationLocale();
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    std::string deal_text = deal->GetLocalizedString(locale,
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                     "notification_text");
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (deal_text.empty())
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return NULL;
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return deal;
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos {
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)////////////////////////////////////////////////////////////////////////////////
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DataPromoNotification
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DataPromoNotification::DataPromoNotification()
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : check_for_promo_(true),
124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      weak_ptr_factory_(this) {
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DataPromoNotification::~DataPromoNotification() {
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CloseNotification();
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DataPromoNotification::RegisterPrefs(PrefRegistrySimple* registry) {
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Carrier deal notification shown count defaults to 0.
1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  registry->RegisterIntegerPref(prefs::kCarrierDealPromoShown, 0);
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DataPromoNotification::ShowOptionalMobileDataPromoNotification(
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    NetworkLibrary* cros,
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    views::View* host,
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ash::NetworkTrayDelegate* listener) {
140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Display one-time notification for regular users on first use
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // of Mobile Data connection or if there's a carrier deal defined
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // show that even if user has already seen generic promo.
143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (LoginState::Get()->IsUserAuthenticated() &&
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      check_for_promo_ &&
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      cros->cellular_connected() && !cros->ethernet_connected() &&
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      !cros->wifi_connected() && !cros->wimax_connected()) {
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    std::string deal_text;
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int carrier_deal_promo_pref = kNotificationCountPrefDefault;
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const MobileConfig::CarrierDeal* deal = NULL;
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const MobileConfig::Carrier* carrier = GetCarrier(cros);
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (carrier)
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      deal = GetCarrierDeal(carrier);
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    deal_info_url_.clear();
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    deal_topup_url_.clear();
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (deal) {
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      carrier_deal_promo_pref = GetCarrierDealPromoShown();
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string locale = g_browser_process->GetApplicationLocale();
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      deal_text = deal->GetLocalizedString(locale, "notification_text");
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      deal_info_url_ = deal->info_url();
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      deal_topup_url_ = carrier->top_up_url();
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } else if (!ShouldShow3gPromoNotification()) {
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      check_for_promo_ = false;
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return;
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const chromeos::CellularNetwork* cellular = cros->cellular_network();
1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    DCHECK(cellular);
1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // If we do not know the technology type, do not show the notification yet.
1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // The next NetworkLibrary Manager update should trigger it.
1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (cellular->network_technology() == NETWORK_TECHNOLOGY_UNKNOWN)
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return;
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    string16 message = l10n_util::GetStringUTF16(IDS_3G_NOTIFICATION_MESSAGE);
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!deal_text.empty())
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      message = UTF8ToUTF16(deal_text + "\n\n") + message;
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Use deal URL if it's defined or general "Network Settings" URL.
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int link_message_id;
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (deal_topup_url_.empty())
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      link_message_id = IDS_OFFLINE_NETWORK_SETTINGS;
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      link_message_id = IDS_STATUSBAR_NETWORK_VIEW_ACCOUNT;
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ash::NetworkObserver::NetworkType type =
1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        (cellular->network_technology() == NETWORK_TECHNOLOGY_LTE ||
1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)         cellular->network_technology() == NETWORK_TECHNOLOGY_LTE_ADVANCED)
1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        ? ash::NetworkObserver::NETWORK_CELLULAR_LTE
1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        : ash::NetworkObserver::NETWORK_CELLULAR;
1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    std::vector<string16> links;
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    links.push_back(l10n_util::GetStringUTF16(link_message_id));
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!deal_info_url_.empty())
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      links.push_back(l10n_util::GetStringUTF16(IDS_LEARN_MORE));
1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ash::Shell::GetInstance()->system_tray_notifier()->NotifySetNetworkMessage(
1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        listener, ash::NetworkObserver::MESSAGE_DATA_PROMO,
1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        type, string16(), message, links);
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    check_for_promo_ = false;
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SetShow3gPromoNotification(false);
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (carrier_deal_promo_pref != kNotificationCountPrefDefault)
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      SetCarrierDealPromoShown(carrier_deal_promo_pref + 1);
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DataPromoNotification::CloseNotification() {
2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ash::Shell::GetInstance()->system_tray_notifier()->NotifyClearNetworkMessage(
2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      ash::NetworkObserver::MESSAGE_DATA_PROMO);
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace chromeos
210