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)#ifndef CHROME_BROWSER_CHROMEOS_STATUS_DATA_PROMO_NOTIFICATION_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_STATUS_DATA_PROMO_NOTIFICATION_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/weak_ptr.h" 103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chromeos/network/network_state_handler_observer.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PrefRegistrySimple; 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class View; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// This class is responsible for triggering cellular network related 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// notifications, specifically: 223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// * "Chrome will use mobile data..." when Cellular is the Default network 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// for the first time. 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// * Data Promotion notifications when available / appropriate. 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class DataPromoNotification : public NetworkStateHandlerObserver { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DataPromoNotification(); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~DataPromoNotification(); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void RegisterPrefs(PrefRegistrySimple* registry); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) private: 333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // NetworkStateHandlerObserver 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void NetworkPropertiesUpdated(const NetworkState* network) OVERRIDE; 353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void DefaultNetworkChanged(const NetworkState* network) OVERRIDE; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows 3G promo notification if needed. 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void ShowOptionalMobileDataPromoNotification(); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // True if check for promo needs to be done, otherwise ignore it for the 413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // current session. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool check_for_promo_; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Factory for delaying showing promo notification. 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::WeakPtrFactory<DataPromoNotification> weak_ptr_factory_; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(DataPromoNotification); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_STATUS_DATA_PROMO_NOTIFICATION_H_ 53