data_promo_notification.cc revision 3551c9c881056c480085172ff9840cab31610854
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" 93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ash/system/chromeos/network/network_connect.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/login/helper.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/mobile_config.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/ui/browser_finder.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_list.h" 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/ui/singleton_tabs.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/login/login_state.h" 263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chromeos/network/device_state.h" 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chromeos/network/network_connection_handler.h" 283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chromeos/network/network_event_log.h" 293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chromeos/network/network_state.h" 303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chromeos/network/network_state_handler.h" 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "grit/ash_resources.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/generated_resources.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/theme_resources.h" 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "third_party/cros_system_api/dbus/service_constants.h" 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/resource/resource_bundle.h" 373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ui/message_center/message_center.h" 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ui/message_center/notification.h" 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/view.h" 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget.h" 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace chromeos { 433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Time in milliseconds to delay showing of promo 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// notification when Chrome window is not on screen. 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int kPromoShowDelayMs = 10000; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int kNotificationCountPrefDefault = -1; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool GetBooleanPref(const char* pref_name) { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile = ProfileManager::GetDefaultProfileOrOffTheRecord(); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = profile->GetPrefs(); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return prefs->GetBoolean(pref_name); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int GetIntegerLocalPref(const char* pref_name) { 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = g_browser_process->local_state(); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return prefs->GetInteger(pref_name); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetBooleanPref(const char* pref_name, bool value) { 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile = ProfileManager::GetDefaultProfileOrOffTheRecord(); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = profile->GetPrefs(); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetBoolean(pref_name, value); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetIntegerLocalPref(const char* pref_name, int value) { 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = g_browser_process->local_state(); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetInteger(pref_name, value); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Returns prefs::kShow3gPromoNotification or false if no active browser. 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ShouldShow3gPromoNotification() { 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return GetBooleanPref(prefs::kShow3gPromoNotification); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetShow3gPromoNotification(bool value) { 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetBooleanPref(prefs::kShow3gPromoNotification, value); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns prefs::kCarrierDealPromoShown which is number of times 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// carrier deal notification has been shown to users on this machine. 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int GetCarrierDealPromoShown() { 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return GetIntegerLocalPref(prefs::kCarrierDealPromoShown); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetCarrierDealPromoShown(int value) { 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetIntegerLocalPref(prefs::kCarrierDealPromoShown, value); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const chromeos::MobileConfig::Carrier* GetCarrier( 943551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const NetworkState* cellular) { 953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const DeviceState* device = NetworkHandler::Get()->network_state_handler()-> 963551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) GetDeviceState(cellular->device_path()); 973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string carrier_id = device ? device->home_provider_id() : ""; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (carrier_id.empty()) { 993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NET_LOG_ERROR("Empty carrier ID for cellular network", 1003551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) device ? device->path(): "No device"); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chromeos::MobileConfig* config = chromeos::MobileConfig::GetInstance(); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!config->IsReady()) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return config->GetCarrier(carrier_id); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const chromeos::MobileConfig::CarrierDeal* GetCarrierDeal( 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const chromeos::MobileConfig::Carrier* carrier) { 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const chromeos::MobileConfig::CarrierDeal* deal = carrier->GetDefaultDeal(); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (deal) { 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check deal for validity. 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int carrier_deal_promo_pref = GetCarrierDealPromoShown(); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (carrier_deal_promo_pref >= deal->notification_count()) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string locale = g_browser_process->GetApplicationLocale(); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string deal_text = deal->GetLocalizedString(locale, 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "notification_text"); 1223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NET_LOG_DEBUG("Carrier Deal Found", deal_text); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (deal_text.empty()) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return deal; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void NotificationClicked(const std::string& service_path, 1303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& info_url) { 1313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (info_url.empty()) 1323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ash::network_connect::ShowNetworkSettings(service_path); 1333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Browser* browser = chrome::FindOrCreateTabbedBrowser( 1353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ProfileManager::GetDefaultProfileOrOffTheRecord(), 1363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) chrome::HOST_DESKTOP_TYPE_ASH); 1373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (!browser) 1383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return; 1393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) chrome::ShowSingletonTab(browser, GURL(info_url)); 1403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} // namespace 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//////////////////////////////////////////////////////////////////////////////// 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DataPromoNotification 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DataPromoNotification::DataPromoNotification() 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : check_for_promo_(true), 149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) weak_ptr_factory_(this) { 1503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NetworkHandler::Get()->network_state_handler()->AddObserver(this, FROM_HERE); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DataPromoNotification::~DataPromoNotification() { 1543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (NetworkHandler::IsInitialized()) { 1553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NetworkHandler::Get()->network_state_handler()->RemoveObserver( 1563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) this, FROM_HERE); 1573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DataPromoNotification::RegisterPrefs(PrefRegistrySimple* registry) { 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Carrier deal notification shown count defaults to 0. 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterIntegerPref(prefs::kCarrierDealPromoShown, 0); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void DataPromoNotification::NetworkPropertiesUpdated( 1663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const NetworkState* network) { 1673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (!network || network->type() != flimflam::kTypeCellular) 1683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return; 1693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ShowOptionalMobileDataPromoNotification(); 1703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 1713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void DataPromoNotification::DefaultNetworkChanged(const NetworkState* network) { 1733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Call NetworkPropertiesUpdated in case the Cellular network became the 1743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // default network. 1753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NetworkPropertiesUpdated(network); 1763551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 1773551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void DataPromoNotification::ShowOptionalMobileDataPromoNotification() { 1793551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Display a one-time notification for authenticated users on first use 1803551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // of Mobile Data connection or if there is a carrier deal defined 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // show that even if user has already seen generic promo. 1823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (!check_for_promo_ || !LoginState::Get()->IsUserAuthenticated()) 1833551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return; 1843551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const NetworkState* default_network = 1853551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); 1863551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (!default_network || default_network->type() != flimflam::kTypeCellular) 1873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return; 1883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // When requesting a network connection, do not show the notification. 1893551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (NetworkHandler::Get()->network_connection_handler()-> 1903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) HasPendingConnectRequest()) 1913551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return; 1923551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1933551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) int carrier_deal_promo_pref = kNotificationCountPrefDefault; 1943551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const MobileConfig::CarrierDeal* deal = NULL; 1953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const MobileConfig::Carrier* carrier = GetCarrier(default_network); 1963551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (carrier) 1973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) deal = GetCarrierDeal(carrier); 1983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) string16 message = l10n_util::GetStringUTF16(IDS_3G_NOTIFICATION_MESSAGE); 2003551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string info_url; 2013551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (deal) { 2023551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) carrier_deal_promo_pref = GetCarrierDealPromoShown(); 2033551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string locale = g_browser_process->GetApplicationLocale(); 2043551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string deal_text = 2053551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) deal->GetLocalizedString(locale, "notification_text"); 2063551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) message = UTF8ToUTF16(deal_text + "\n\n") + message; 2073551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) info_url = deal->info_url(); 2083551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (info_url.empty() && carrier) 2093551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) info_url = carrier->top_up_url(); 2103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } else if (!ShouldShow3gPromoNotification()) { 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) check_for_promo_ = false; 2123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return; 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) int icon_id; 2163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (default_network->network_technology() == flimflam::kNetworkTechnologyLte) 2173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) icon_id = IDR_AURA_UBER_TRAY_NOTIFICATION_LTE; 2183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) else 2193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) icon_id = IDR_AURA_UBER_TRAY_NOTIFICATION_3G; 2203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const gfx::Image& icon = 2213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ui::ResourceBundle::GetSharedInstance().GetImageNamed(icon_id); 2223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) message_center::MessageCenter::Get()->AddNotification( 2243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) message_center::Notification::CreateSystemNotification( 2253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ash::network_connect::kNetworkActivateNotificationId, 2263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) base::string16() /* title */, 2273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) message, 2283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) icon, 2293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) base::Bind(&NotificationClicked, 2303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) default_network->path(), info_url))); 2313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) check_for_promo_ = false; 2333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) SetShow3gPromoNotification(false); 2343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (carrier_deal_promo_pref != kNotificationCountPrefDefault) 2353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) SetCarrierDealPromoShown(carrier_deal_promo_pref + 1); 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 239