data_promo_notification.cc revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
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) 73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ash/system/chromeos/network/network_connect.h" 8424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "ash/system/system_notifier.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_registry_simple.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h" 11868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browser_process.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/login/helper.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/mobile_config.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_list.h" 190f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/ui/singleton_tabs.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/login/login_state.h" 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chromeos/network/device_state.h" 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chromeos/network/network_connection_handler.h" 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chromeos/network/network_event_log.h" 263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chromeos/network/network_state.h" 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chromeos/network/network_state_handler.h" 283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "grit/ash_resources.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/generated_resources.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/theme_resources.h" 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "third_party/cros_system_api/dbus/service_constants.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/resource/resource_bundle.h" 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ui/message_center/message_center.h" 353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ui/message_center/notification.h" 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/view.h" 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget.h" 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace chromeos { 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int kNotificationCountPrefDefault = -1; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool GetBooleanPref(const char* pref_name) { 46a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) Profile* profile = ProfileManager::GetPrimaryUserProfileOrOffTheRecord(); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = profile->GetPrefs(); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return prefs->GetBoolean(pref_name); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int GetIntegerLocalPref(const char* pref_name) { 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = g_browser_process->local_state(); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return prefs->GetInteger(pref_name); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetBooleanPref(const char* pref_name, bool value) { 57a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) Profile* profile = ProfileManager::GetPrimaryUserProfileOrOffTheRecord(); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = profile->GetPrefs(); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetBoolean(pref_name, value); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetIntegerLocalPref(const char* pref_name, int value) { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = g_browser_process->local_state(); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetInteger(pref_name, value); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Returns prefs::kShow3gPromoNotification or false if no active browser. 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ShouldShow3gPromoNotification() { 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return GetBooleanPref(prefs::kShow3gPromoNotification); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetShow3gPromoNotification(bool value) { 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetBooleanPref(prefs::kShow3gPromoNotification, value); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns prefs::kCarrierDealPromoShown which is number of times 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// carrier deal notification has been shown to users on this machine. 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int GetCarrierDealPromoShown() { 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return GetIntegerLocalPref(prefs::kCarrierDealPromoShown); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetCarrierDealPromoShown(int value) { 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetIntegerLocalPref(prefs::kCarrierDealPromoShown, value); 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const chromeos::MobileConfig::Carrier* GetCarrier( 873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const NetworkState* cellular) { 883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const DeviceState* device = NetworkHandler::Get()->network_state_handler()-> 893551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) GetDeviceState(cellular->device_path()); 903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string carrier_id = device ? device->home_provider_id() : ""; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (carrier_id.empty()) { 923551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NET_LOG_ERROR("Empty carrier ID for cellular network", 933551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) device ? device->path(): "No device"); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chromeos::MobileConfig* config = chromeos::MobileConfig::GetInstance(); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!config->IsReady()) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return config->GetCarrier(carrier_id); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const chromeos::MobileConfig::CarrierDeal* GetCarrierDeal( 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const chromeos::MobileConfig::Carrier* carrier) { 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const chromeos::MobileConfig::CarrierDeal* deal = carrier->GetDefaultDeal(); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (deal) { 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check deal for validity. 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int carrier_deal_promo_pref = GetCarrierDealPromoShown(); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (carrier_deal_promo_pref >= deal->notification_count()) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string locale = g_browser_process->GetApplicationLocale(); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string deal_text = deal->GetLocalizedString(locale, 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "notification_text"); 1153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NET_LOG_DEBUG("Carrier Deal Found", deal_text); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (deal_text.empty()) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return deal; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void NotificationClicked(const std::string& service_path, 1233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& info_url) { 1243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (info_url.empty()) 1253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ash::network_connect::ShowNetworkSettings(service_path); 1263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1270f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) chrome::ScopedTabbedBrowserDisplayer displayer( 128a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ProfileManager::GetPrimaryUserProfileOrOffTheRecord(), 1293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) chrome::HOST_DESKTOP_TYPE_ASH); 1300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) chrome::ShowSingletonTab(displayer.browser(), GURL(info_url)); 1313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} // namespace 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//////////////////////////////////////////////////////////////////////////////// 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DataPromoNotification 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DataPromoNotification::DataPromoNotification() 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : check_for_promo_(true), 140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) weak_ptr_factory_(this) { 1413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NetworkHandler::Get()->network_state_handler()->AddObserver(this, FROM_HERE); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DataPromoNotification::~DataPromoNotification() { 1453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (NetworkHandler::IsInitialized()) { 1463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NetworkHandler::Get()->network_state_handler()->RemoveObserver( 1473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) this, FROM_HERE); 1483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DataPromoNotification::RegisterPrefs(PrefRegistrySimple* registry) { 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Carrier deal notification shown count defaults to 0. 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterIntegerPref(prefs::kCarrierDealPromoShown, 0); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void DataPromoNotification::NetworkPropertiesUpdated( 1573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const NetworkState* network) { 15868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) if (!network || network->type() != shill::kTypeCellular) 1593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return; 1603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ShowOptionalMobileDataPromoNotification(); 1613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 1623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void DataPromoNotification::DefaultNetworkChanged(const NetworkState* network) { 1643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Call NetworkPropertiesUpdated in case the Cellular network became the 1653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // default network. 1663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NetworkPropertiesUpdated(network); 1673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 1683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void DataPromoNotification::ShowOptionalMobileDataPromoNotification() { 1703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Display a one-time notification for authenticated users on first use 1713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // of Mobile Data connection or if there is a carrier deal defined 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // show that even if user has already seen generic promo. 1733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (!check_for_promo_ || !LoginState::Get()->IsUserAuthenticated()) 1743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return; 1753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const NetworkState* default_network = 1763551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); 17768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) if (!default_network || default_network->type() != shill::kTypeCellular) 1783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return; 1793551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // When requesting a network connection, do not show the notification. 1803551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (NetworkHandler::Get()->network_connection_handler()-> 1813551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) HasPendingConnectRequest()) 1823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return; 1833551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1843551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) int carrier_deal_promo_pref = kNotificationCountPrefDefault; 1853551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const MobileConfig::CarrierDeal* deal = NULL; 1863551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const MobileConfig::Carrier* carrier = GetCarrier(default_network); 1873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (carrier) 1883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) deal = GetCarrierDeal(carrier); 1893551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 190a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 message = l10n_util::GetStringUTF16(IDS_3G_NOTIFICATION_MESSAGE); 1913551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string info_url; 1923551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (deal) { 1933551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) carrier_deal_promo_pref = GetCarrierDealPromoShown(); 1943551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string locale = g_browser_process->GetApplicationLocale(); 1953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string deal_text = 1963551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) deal->GetLocalizedString(locale, "notification_text"); 1973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) message = UTF8ToUTF16(deal_text + "\n\n") + message; 1983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) info_url = deal->info_url(); 1993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (info_url.empty() && carrier) 2003551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) info_url = carrier->top_up_url(); 2013551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } else if (!ShouldShow3gPromoNotification()) { 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) check_for_promo_ = false; 2033551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return; 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2063551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) int icon_id; 20768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) if (default_network->network_technology() == shill::kNetworkTechnologyLte) 2083551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) icon_id = IDR_AURA_UBER_TRAY_NOTIFICATION_LTE; 2093551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) else 2103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) icon_id = IDR_AURA_UBER_TRAY_NOTIFICATION_3G; 2113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const gfx::Image& icon = 2123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ui::ResourceBundle::GetSharedInstance().GetImageNamed(icon_id); 2133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) message_center::MessageCenter::Get()->AddNotification( 2153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) message_center::Notification::CreateSystemNotification( 2163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ash::network_connect::kNetworkActivateNotificationId, 2173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) base::string16() /* title */, 2183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) message, 2193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) icon, 220a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ash::system_notifier::kNotifierNetwork, 2213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) base::Bind(&NotificationClicked, 2223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) default_network->path(), info_url))); 2233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) check_for_promo_ = false; 2253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) SetShow3gPromoNotification(false); 2263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (carrier_deal_promo_pref != kNotificationCountPrefDefault) 2273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) SetCarrierDealPromoShown(carrier_deal_promo_pref + 1); 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 231