1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROMEOS_NETWORK_NETWORK_ACTIVATION_HANDLER_H_ 6 #define CHROMEOS_NETWORK_NETWORK_ACTIVATION_HANDLER_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/memory/weak_ptr.h" 12 #include "chromeos/chromeos_export.h" 13 #include "chromeos/network/network_handler_callbacks.h" 14 15 namespace chromeos { 16 17 // The NetworkActivationHandler class allows making service specific 18 // calls required for activation on mobile networks. 19 class CHROMEOS_EXPORT NetworkActivationHandler 20 : public base::SupportsWeakPtr<NetworkActivationHandler> { 21 public: 22 // Constants for |error_name| from |error_callback|. 23 // TODO(gauravsh): Merge various error constants from Network*Handlers into 24 // a single place. crbug.com/272554 25 static const char kErrorNotFound[]; 26 static const char kErrorShillError[]; 27 28 virtual ~NetworkActivationHandler(); 29 30 // ActivateNetwork() will start an asynchronous activation attempt. 31 // |carrier| may be empty or may specify a carrier to activate. 32 // On success, |success_callback| will be called. 33 // On failure, |error_callback| will be called with |error_name| one of: 34 // kErrorNotFound if no network matching |service_path| is found. 35 // kErrorShillError if a DBus or Shill error occurred. 36 void Activate(const std::string& service_path, 37 const std::string& carrier, 38 const base::Closure& success_callback, 39 const network_handler::ErrorCallback& error_callback); 40 41 // CompleteActivation() will start an asynchronous activation completion 42 // attempt. 43 // On success, |success_callback| will be called. 44 // On failure, |error_callback| will be called with |error_name| one of: 45 // kErrorNotFound if no network matching |service_path| is found. 46 // kErrorShillError if a DBus or Shill error occurred. 47 void CompleteActivation(const std::string& service_path, 48 const base::Closure& success_callback, 49 const network_handler::ErrorCallback& error_callback); 50 51 private: 52 friend class NetworkHandler; 53 54 NetworkActivationHandler(); 55 56 // Calls Shill.Service.ActivateCellularModem asynchronously. 57 void CallShillActivate(const std::string& service_path, 58 const std::string& carrier, 59 const base::Closure& success_callback, 60 const network_handler::ErrorCallback& error_callback); 61 62 // Calls Shill.Service.CompleteCellularActivation asynchronously. 63 void CallShillCompleteActivation( 64 const std::string& service_path, 65 const base::Closure& success_callback, 66 const network_handler::ErrorCallback& error_callback); 67 68 // Handle success from Shill.Service.ActivateCellularModem or 69 // Shill.Service.CompleteCellularActivation. 70 void HandleShillSuccess(const std::string& service_path, 71 const base::Closure& success_callback); 72 73 DISALLOW_COPY_AND_ASSIGN(NetworkActivationHandler); 74 }; 75 76 } // namespace chromeos 77 78 #endif // CHROMEOS_NETWORK_NETWORK_ACTIVATION_HANDLER_H_ 79