summaryrefslogtreecommitdiffstats
path: root/chromeos
diff options
context:
space:
mode:
authorgauravsh@chromium.org <gauravsh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-30 01:11:35 +0000
committergauravsh@chromium.org <gauravsh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-30 01:11:35 +0000
commit7799df37276fd11b497546261f427930348d2121 (patch)
treec16be35a7dd4ab634e6ddf758949896efb826d31 /chromeos
parentd9fce6725ec0812d04c4015e5b2d1c9e539afe1b (diff)
downloadchromium_src-7799df37276fd11b497546261f427930348d2121.zip
chromium_src-7799df37276fd11b497546261f427930348d2121.tar.gz
chromium_src-7799df37276fd11b497546261f427930348d2121.tar.bz2
Switch over MobileActivator to use Network*Handler
Add a NetworkActivationHandler for handling cellular activation calls to Shill. BUG=188753 TEST=tested Verizon LTE (on link) and Verizon 3g (on Lumpy) activation Review URL: https://chromiumcodereview.appspot.com/22611005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@220463 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos')
-rw-r--r--chromeos/chromeos.gyp2
-rw-r--r--chromeos/network/network_activation_handler.cc75
-rw-r--r--chromeos/network/network_activation_handler.h78
-rw-r--r--chromeos/network/network_connection_handler.cc40
-rw-r--r--chromeos/network/network_connection_handler.h22
-rw-r--r--chromeos/network/network_handler.cc6
-rw-r--r--chromeos/network/network_handler.h3
-rw-r--r--chromeos/network/network_state.h1
-rw-r--r--chromeos/network/network_state_handler.cc8
-rw-r--r--chromeos/network/network_state_handler.h4
10 files changed, 176 insertions, 63 deletions
diff --git a/chromeos/chromeos.gyp b/chromeos/chromeos.gyp
index dae10d7..83cd921 100644
--- a/chromeos/chromeos.gyp
+++ b/chromeos/chromeos.gyp
@@ -233,6 +233,8 @@
'network/managed_network_configuration_handler_impl.h',
'network/managed_state.cc',
'network/managed_state.h',
+ 'network/network_activation_handler.cc',
+ 'network/network_activation_handler.h',
'network/network_cert_migrator.cc',
'network/network_cert_migrator.h',
'network/network_change_notifier_chromeos.cc',
diff --git a/chromeos/network/network_activation_handler.cc b/chromeos/network/network_activation_handler.cc
new file mode 100644
index 0000000..90ed374
--- /dev/null
+++ b/chromeos/network/network_activation_handler.cc
@@ -0,0 +1,75 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chromeos/network/network_activation_handler.h"
+
+#include "base/bind.h"
+#include "base/bind_helpers.h"
+#include "chromeos/dbus/dbus_thread_manager.h"
+#include "chromeos/dbus/shill_service_client.h"
+#include "chromeos/network/network_event_log.h"
+#include "chromeos/network/network_handler.h"
+#include "dbus/object_proxy.h"
+
+namespace chromeos {
+
+// static
+const char NetworkActivationHandler::kErrorShillError[] = "shill-error";
+
+NetworkActivationHandler::NetworkActivationHandler() {}
+NetworkActivationHandler::~NetworkActivationHandler() {}
+
+void NetworkActivationHandler::Activate(
+ const std::string& service_path,
+ const std::string& carrier,
+ const base::Closure& success_callback,
+ const network_handler::ErrorCallback& error_callback) {
+ NET_LOG_USER("ActivateNetwork", service_path);
+ CallShillActivate(service_path, carrier, success_callback, error_callback);
+}
+
+void NetworkActivationHandler::CompleteActivation(
+ const std::string& service_path,
+ const base::Closure& success_callback,
+ const network_handler::ErrorCallback& error_callback) {
+ NET_LOG_USER("CompleteActivation", service_path);
+ CallShillCompleteActivation(service_path, success_callback, error_callback);
+}
+
+void NetworkActivationHandler::CallShillActivate(
+ const std::string& service_path,
+ const std::string& carrier,
+ const base::Closure& success_callback,
+ const network_handler::ErrorCallback& error_callback) {
+ NET_LOG_USER("Activation Request", service_path + ": '" + carrier + "'");
+ DBusThreadManager::Get()->GetShillServiceClient()->ActivateCellularModem(
+ dbus::ObjectPath(service_path),
+ carrier,
+ base::Bind(&NetworkActivationHandler::HandleShillSuccess,
+ AsWeakPtr(), service_path, success_callback),
+ base::Bind(&network_handler::ShillErrorCallbackFunction,
+ kErrorShillError, service_path, error_callback));
+}
+
+void NetworkActivationHandler::CallShillCompleteActivation(
+ const std::string& service_path,
+ const base::Closure& success_callback,
+ const network_handler::ErrorCallback& error_callback) {
+ NET_LOG_USER("CompleteActivation Request", service_path);
+ DBusThreadManager::Get()->GetShillServiceClient()->CompleteCellularActivation(
+ dbus::ObjectPath(service_path),
+ base::Bind(&NetworkActivationHandler::HandleShillSuccess,
+ AsWeakPtr(), service_path, success_callback),
+ base::Bind(&network_handler::ShillErrorCallbackFunction,
+ kErrorShillError, service_path, error_callback));
+}
+
+void NetworkActivationHandler::HandleShillSuccess(
+ const std::string& service_path,
+ const base::Closure& success_callback) {
+ if (!success_callback.is_null())
+ success_callback.Run();
+}
+
+} // namespace chromeos
diff --git a/chromeos/network/network_activation_handler.h b/chromeos/network/network_activation_handler.h
new file mode 100644
index 0000000..f15c73d
--- /dev/null
+++ b/chromeos/network/network_activation_handler.h
@@ -0,0 +1,78 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROMEOS_NETWORK_NETWORK_ACTIVATION_HANDLER_H_
+#define CHROMEOS_NETWORK_NETWORK_ACTIVATION_HANDLER_H_
+
+#include <string>
+
+#include "base/basictypes.h"
+#include "base/memory/weak_ptr.h"
+#include "chromeos/chromeos_export.h"
+#include "chromeos/network/network_handler_callbacks.h"
+
+namespace chromeos {
+
+// The NetworkActivationHandler class allows making service specific
+// calls required for activation on mobile networks.
+class CHROMEOS_EXPORT NetworkActivationHandler
+ : public base::SupportsWeakPtr<NetworkActivationHandler> {
+ public:
+ // Constants for |error_name| from |error_callback|.
+ // TODO(gauravsh): Merge various error constants from Network*Handlers into
+ // a single place. crbug.com/272554
+ static const char kErrorNotFound[];
+ static const char kErrorShillError[];
+
+ virtual ~NetworkActivationHandler();
+
+ // ActivateNetwork() will start an asynchronous activation attempt.
+ // |carrier| may be empty or may specify a carrier to activate.
+ // On success, |success_callback| will be called.
+ // On failure, |error_callback| will be called with |error_name| one of:
+ // kErrorNotFound if no network matching |service_path| is found.
+ // kErrorShillError if a DBus or Shill error occurred.
+ void Activate(const std::string& service_path,
+ const std::string& carrier,
+ const base::Closure& success_callback,
+ const network_handler::ErrorCallback& error_callback);
+
+ // CompleteActivation() will start an asynchronous activation completion
+ // attempt.
+ // On success, |success_callback| will be called.
+ // On failure, |error_callback| will be called with |error_name| one of:
+ // kErrorNotFound if no network matching |service_path| is found.
+ // kErrorShillError if a DBus or Shill error occurred.
+ void CompleteActivation(const std::string& service_path,
+ const base::Closure& success_callback,
+ const network_handler::ErrorCallback& error_callback);
+
+ private:
+ friend class NetworkHandler;
+
+ NetworkActivationHandler();
+
+ // Calls Shill.Service.ActivateCellularModem asynchronously.
+ void CallShillActivate(const std::string& service_path,
+ const std::string& carrier,
+ const base::Closure& success_callback,
+ const network_handler::ErrorCallback& error_callback);
+
+ // Calls Shill.Service.CompleteCellularActivation asynchronously.
+ void CallShillCompleteActivation(
+ const std::string& service_path,
+ const base::Closure& success_callback,
+ const network_handler::ErrorCallback& error_callback);
+
+ // Handle success from Shill.Service.ActivateCellularModem or
+ // Shill.Service.CompleteCellularActivation.
+ void HandleShillSuccess(const std::string& service_path,
+ const base::Closure& success_callback);
+
+ DISALLOW_COPY_AND_ASSIGN(NetworkActivationHandler);
+};
+
+} // namespace chromeos
+
+#endif // CHROMEOS_NETWORK_NETWORK_ACTIVATION_HANDLER_H_
diff --git a/chromeos/network/network_connection_handler.cc b/chromeos/network/network_connection_handler.cc
index f27ff4f..151d8f6 100644
--- a/chromeos/network/network_connection_handler.cc
+++ b/chromeos/network/network_connection_handler.cc
@@ -314,21 +314,6 @@ void NetworkConnectionHandler::DisconnectNetwork(
CallShillDisconnect(service_path, success_callback, error_callback);
}
-void NetworkConnectionHandler::ActivateNetwork(
- const std::string& service_path,
- const std::string& carrier,
- const base::Closure& success_callback,
- const network_handler::ErrorCallback& error_callback) {
- NET_LOG_USER("DisconnectNetwork", service_path);
- const NetworkState* network =
- network_state_handler_->GetNetworkState(service_path);
- if (!network) {
- InvokeErrorCallback(service_path, error_callback, kErrorNotFound);
- return;
- }
- CallShillActivate(service_path, carrier, success_callback, error_callback);
-}
-
bool NetworkConnectionHandler::HasConnectingNetwork(
const std::string& service_path) {
return pending_requests_.count(service_path) != 0;
@@ -696,29 +681,4 @@ void NetworkConnectionHandler::HandleShillDisconnectSuccess(
success_callback.Run();
}
-// Activate
-
-void NetworkConnectionHandler::CallShillActivate(
- const std::string& service_path,
- const std::string& carrier,
- const base::Closure& success_callback,
- const network_handler::ErrorCallback& error_callback) {
- NET_LOG_USER("Activate Request", service_path + ": '" + carrier + "'");
- DBusThreadManager::Get()->GetShillServiceClient()->ActivateCellularModem(
- dbus::ObjectPath(service_path),
- carrier,
- base::Bind(&NetworkConnectionHandler::HandleShillActivateSuccess,
- AsWeakPtr(), service_path, success_callback),
- base::Bind(&network_handler::ShillErrorCallbackFunction,
- kErrorShillError, service_path, error_callback));
-}
-
-void NetworkConnectionHandler::HandleShillActivateSuccess(
- const std::string& service_path,
- const base::Closure& success_callback) {
- NET_LOG_EVENT("Activate Request Sent", service_path);
- if (!success_callback.is_null())
- success_callback.Run();
-}
-
} // namespace chromeos
diff --git a/chromeos/network/network_connection_handler.h b/chromeos/network/network_connection_handler.h
index 4b363ef..17abf01 100644
--- a/chromeos/network/network_connection_handler.h
+++ b/chromeos/network/network_connection_handler.h
@@ -101,18 +101,6 @@ class CHROMEOS_EXPORT NetworkConnectionHandler
const base::Closure& success_callback,
const network_handler::ErrorCallback& error_callback);
- // ActivateNetwork() will start an asynchronous activation attempt.
- // |carrier| may be empty or may specify a carrier to activate.
- // On success, |success_callback| will be called.
- // On failure, |error_callback| will be called with |error_name| one of:
- // kErrorNotFound if no network matching |service_path| is found.
- // kErrorShillError if a DBus or Shill error occurred.
- // TODO(stevenjb/armansito): Move this to a separate NetworkActivationHandler.
- void ActivateNetwork(const std::string& service_path,
- const std::string& carrier,
- const base::Closure& success_callback,
- const network_handler::ErrorCallback& error_callback);
-
// Returns true if ConnectToNetwork has been called with |service_path| and
// has not completed (i.e. success or error callback has been called).
bool HasConnectingNetwork(const std::string& service_path);
@@ -187,16 +175,6 @@ class CHROMEOS_EXPORT NetworkConnectionHandler
void HandleShillDisconnectSuccess(const std::string& service_path,
const base::Closure& success_callback);
- // Calls Shill.Manager.Activate asynchronously.
- void CallShillActivate(
- const std::string& service_path,
- const std::string& carrier,
- const base::Closure& success_callback,
- const network_handler::ErrorCallback& error_callback);
-
- // Handle success from Shill.Service.ActivateCellularModem.
- void HandleShillActivateSuccess(const std::string& service_path,
- const base::Closure& success_callback);
// Local references to the associated handler instances.
CertLoader* cert_loader_;
diff --git a/chromeos/network/network_handler.cc b/chromeos/network/network_handler.cc
index 47606ae..15ede66 100644
--- a/chromeos/network/network_handler.cc
+++ b/chromeos/network/network_handler.cc
@@ -9,6 +9,7 @@
#include "chromeos/network/client_cert_resolver.h"
#include "chromeos/network/geolocation_handler.h"
#include "chromeos/network/managed_network_configuration_handler_impl.h"
+#include "chromeos/network/network_activation_handler.h"
#include "chromeos/network/network_cert_migrator.h"
#include "chromeos/network/network_configuration_handler.h"
#include "chromeos/network/network_connection_handler.h"
@@ -40,6 +41,7 @@ NetworkHandler::NetworkHandler()
network_cert_migrator_.reset(new NetworkCertMigrator());
client_cert_resolver_.reset(new ClientCertResolver());
}
+ network_activation_handler_.reset(new NetworkActivationHandler());
network_connection_handler_.reset(new NetworkConnectionHandler());
network_sms_handler_.reset(new NetworkSmsHandler());
geolocation_handler_.reset(new GeolocationHandler());
@@ -116,6 +118,10 @@ NetworkHandler::managed_network_configuration_handler() {
return managed_network_configuration_handler_.get();
}
+NetworkActivationHandler* NetworkHandler::network_activation_handler() {
+ return network_activation_handler_.get();
+}
+
NetworkConnectionHandler* NetworkHandler::network_connection_handler() {
return network_connection_handler_.get();
}
diff --git a/chromeos/network/network_handler.h b/chromeos/network/network_handler.h
index 2197529..bbb9e9c 100644
--- a/chromeos/network/network_handler.h
+++ b/chromeos/network/network_handler.h
@@ -17,6 +17,7 @@ class ClientCertResolver;
class GeolocationHandler;
class ManagedNetworkConfigurationHandler;
class ManagedNetworkConfigurationHandlerImpl;
+class NetworkActivationHandler;
class NetworkCertMigrator;
class NetworkConfigurationHandler;
class NetworkConnectionHandler;
@@ -54,6 +55,7 @@ class CHROMEOS_EXPORT NetworkHandler {
NetworkProfileHandler* network_profile_handler();
NetworkConfigurationHandler* network_configuration_handler();
ManagedNetworkConfigurationHandler* managed_network_configuration_handler();
+ NetworkActivationHandler* network_activation_handler();
NetworkConnectionHandler* network_connection_handler();
NetworkSmsHandler* network_sms_handler();
GeolocationHandler* geolocation_handler();
@@ -74,6 +76,7 @@ class CHROMEOS_EXPORT NetworkHandler {
managed_network_configuration_handler_;
scoped_ptr<NetworkCertMigrator> network_cert_migrator_;
scoped_ptr<ClientCertResolver> client_cert_resolver_;
+ scoped_ptr<NetworkActivationHandler> network_activation_handler_;
scoped_ptr<NetworkConnectionHandler> network_connection_handler_;
scoped_ptr<NetworkSmsHandler> network_sms_handler_;
scoped_ptr<GeolocationHandler> geolocation_handler_;
diff --git a/chromeos/network/network_state.h b/chromeos/network/network_state.h
index 5752057..62edc03 100644
--- a/chromeos/network/network_state.h
+++ b/chromeos/network/network_state.h
@@ -116,6 +116,7 @@ class CHROMEOS_EXPORT NetworkState : public ManagedState {
const base::DictionaryValue& properties);
private:
+ friend class MobileActivatorTest;
friend class NetworkStateHandler;
friend class NetworkChangeNotifierChromeosUpdateTest;
diff --git a/chromeos/network/network_state_handler.cc b/chromeos/network/network_state_handler.cc
index 878e152..eadc2ca 100644
--- a/chromeos/network/network_state_handler.cc
+++ b/chromeos/network/network_state_handler.cc
@@ -278,6 +278,11 @@ std::string NetworkStateHandler::FormattedHardwareAddressForType(
}
void NetworkStateHandler::GetNetworkList(NetworkStateList* list) const {
+ GetNetworkListByType(kMatchTypeDefault, list);
+}
+
+void NetworkStateHandler::GetNetworkListByType(const std::string& type,
+ NetworkStateList* list) const {
DCHECK(list);
list->clear();
for (ManagedStateList::const_iterator iter = network_list_.begin();
@@ -286,7 +291,8 @@ void NetworkStateHandler::GetNetworkList(NetworkStateList* list) const {
continue;
const NetworkState* network = (*iter)->AsNetworkState();
DCHECK(network);
- list->push_back(network);
+ if (ManagedStateMatchesType(network, type))
+ list->push_back(network);
}
}
diff --git a/chromeos/network/network_state_handler.h b/chromeos/network/network_state_handler.h
index 3ae7126..9ad3ac8 100644
--- a/chromeos/network/network_state_handler.h
+++ b/chromeos/network/network_state_handler.h
@@ -150,6 +150,10 @@ class CHROMEOS_EXPORT NetworkStateHandler
// only on the UI thread).
void GetNetworkList(NetworkStateList* list) const;
+ // Like GetNetworkList() but only returns networks with matching |type|.
+ void GetNetworkListByType(const std::string& type,
+ NetworkStateList* list) const;
+
// Sets |list| to contain the list of devices. The returned list contains
// a copy of DeviceState pointers which should not be stored or used beyond
// the scope of the calling function (i.e. they may later become invalid, but