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