| Index: chromeos/network/network_connection_handler.h
|
| diff --git a/chromeos/network/network_connection_handler.h b/chromeos/network/network_connection_handler.h
|
| index edbda71f1824df8d1161de7941cfe8f2a38eaa57..875ee00c1c53182fef8219729c27f00dec752f5e 100644
|
| --- a/chromeos/network/network_connection_handler.h
|
| +++ b/chromeos/network/network_connection_handler.h
|
| @@ -13,21 +13,14 @@
|
| #include "base/macros.h"
|
| #include "base/memory/weak_ptr.h"
|
| #include "base/observer_list.h"
|
| -#include "base/time/time.h"
|
| #include "base/values.h"
|
| -#include "chromeos/cert_loader.h"
|
| #include "chromeos/chromeos_export.h"
|
| -#include "chromeos/dbus/dbus_method_call_status.h"
|
| -#include "chromeos/login/login_state.h"
|
| #include "chromeos/network/network_connection_observer.h"
|
| #include "chromeos/network/network_handler.h"
|
| #include "chromeos/network/network_handler_callbacks.h"
|
| -#include "chromeos/network/network_state_handler_observer.h"
|
|
|
| namespace chromeos {
|
|
|
| -class NetworkState;
|
| -
|
| // The NetworkConnectionHandler class is used to manage network connection
|
| // requests. This is the only class that should make Shill Connect calls.
|
| // It handles the following steps:
|
| @@ -44,11 +37,7 @@ class NetworkState;
|
| // available State information, and NetworkConfigurationHandler for any
|
| // configuration calls.
|
|
|
| -class CHROMEOS_EXPORT NetworkConnectionHandler
|
| - : public LoginState::Observer,
|
| - public CertLoader::Observer,
|
| - public NetworkStateHandlerObserver,
|
| - public base::SupportsWeakPtr<NetworkConnectionHandler> {
|
| +class CHROMEOS_EXPORT NetworkConnectionHandler {
|
| public:
|
| // Constants for |error_name| from |error_callback| for Connect.
|
|
|
| @@ -123,11 +112,15 @@ class CHROMEOS_EXPORT NetworkConnectionHandler
|
| virtual ~TetherDelegate() {}
|
| };
|
|
|
| - ~NetworkConnectionHandler() override;
|
| + virtual ~NetworkConnectionHandler();
|
|
|
| void AddObserver(NetworkConnectionObserver* observer);
|
| void RemoveObserver(NetworkConnectionObserver* observer);
|
|
|
| + // Sets the TetherDelegate to handle Tether actions. |tether_delegate| is
|
| + // owned by the caller.
|
| + void SetTetherDelegate(TetherDelegate* tether_delegate);
|
| +
|
| // ConnectToNetwork() will start an asynchronous connection attempt.
|
| // On success, |success_callback| will be called.
|
| // On failure, |error_callback| will be called with |error_name| one of the
|
| @@ -136,10 +129,11 @@ class CHROMEOS_EXPORT NetworkConnectionHandler
|
| // If |check_error_state| is true, the current state of the network is
|
| // checked for errors, otherwise current state is ignored (e.g. for recently
|
| // configured networks or repeat attempts).
|
| - void ConnectToNetwork(const std::string& service_path,
|
| - const base::Closure& success_callback,
|
| - const network_handler::ErrorCallback& error_callback,
|
| - bool check_error_state);
|
| + virtual void ConnectToNetwork(
|
| + const std::string& service_path,
|
| + const base::Closure& success_callback,
|
| + const network_handler::ErrorCallback& error_callback,
|
| + bool check_error_state) = 0;
|
|
|
| // DisconnectNetwork() will send a Disconnect request to Shill.
|
| // On success, |success_callback| will be called.
|
| @@ -148,108 +142,30 @@ class CHROMEOS_EXPORT NetworkConnectionHandler
|
| // kErrorNotConnected if not connected to the network.
|
| // kErrorDisconnectFailed if a DBus or Shill error occurred.
|
| // |error_message| will contain and additional error string for debugging.
|
| - void DisconnectNetwork(const std::string& service_path,
|
| - const base::Closure& success_callback,
|
| - const network_handler::ErrorCallback& error_callback);
|
| + virtual void DisconnectNetwork(
|
| + const std::string& service_path,
|
| + const base::Closure& success_callback,
|
| + const network_handler::ErrorCallback& error_callback) = 0;
|
|
|
| // 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);
|
| + virtual bool HasConnectingNetwork(const std::string& service_path) = 0;
|
|
|
| // Returns true if there are any pending connect requests.
|
| - bool HasPendingConnectRequest();
|
| -
|
| - // Sets the TetherDelegate to handle Tether actions. |tether_delegate| is
|
| - // owned by the caller.
|
| - void SetTetherDelegate(TetherDelegate* tether_delegate);
|
| -
|
| - // NetworkStateHandlerObserver
|
| - void NetworkListChanged() override;
|
| - void NetworkPropertiesUpdated(const NetworkState* network) override;
|
| + virtual bool HasPendingConnectRequest() = 0;
|
|
|
| - // LoginState::Observer
|
| - void LoggedInStateChanged() override;
|
| -
|
| - // CertLoader::Observer
|
| - void OnCertificatesLoaded(const net::CertificateList& cert_list,
|
| - bool initial_load) override;
|
| + virtual void Init(NetworkStateHandler* network_state_handler,
|
| + NetworkConfigurationHandler* network_configuration_handler,
|
| + ManagedNetworkConfigurationHandler*
|
| + managed_network_configuration_handler) = 0;
|
|
|
| protected:
|
| NetworkConnectionHandler();
|
|
|
| - void InitiateTetherNetworkConnection(
|
| - const std::string& tether_network_guid,
|
| - const base::Closure& success_callback,
|
| - const network_handler::ErrorCallback& error_callback);
|
| -
|
| - private:
|
| - friend class NetworkHandler;
|
| - friend class NetworkConnectionHandlerTest;
|
| -
|
| - struct ConnectRequest;
|
| -
|
| - void Init(NetworkStateHandler* network_state_handler,
|
| - NetworkConfigurationHandler* network_configuration_handler,
|
| - ManagedNetworkConfigurationHandler*
|
| - managed_network_configuration_handler);
|
| -
|
| - ConnectRequest* GetPendingRequest(const std::string& service_path);
|
| -
|
| - // Callback from Shill.Service.GetProperties. Parses |properties| to verify
|
| - // whether or not the network appears to be configured. If configured,
|
| - // attempts a connection, otherwise invokes error_callback from
|
| - // pending_requests_[service_path]. |check_error_state| is passed from
|
| - // ConnectToNetwork(), see comment for info.
|
| - void VerifyConfiguredAndConnect(bool check_error_state,
|
| - const std::string& service_path,
|
| - const base::DictionaryValue& properties);
|
| -
|
| - bool IsNetworkProhibitedByPolicy(const std::string& type,
|
| - const std::string& guid,
|
| - const std::string& profile_path);
|
| -
|
| - // Queues a connect request until certificates have loaded.
|
| - void QueueConnectRequest(const std::string& service_path);
|
| -
|
| - // Checks to see if certificates have loaded and if not, cancels any queued
|
| - // connect request and notifies the user.
|
| - void CheckCertificatesLoaded();
|
| -
|
| - // Handles connecting to a queued network after certificates are loaded or
|
| - // handle cert load timeout.
|
| - void ConnectToQueuedNetwork();
|
| -
|
| - // Calls Shill.Manager.Connect asynchronously.
|
| - void CallShillConnect(const std::string& service_path);
|
| -
|
| - // Handles failure from ConfigurationHandler calls.
|
| - void HandleConfigurationFailure(
|
| - const std::string& service_path,
|
| - const std::string& error_name,
|
| - std::unique_ptr<base::DictionaryValue> error_data);
|
| -
|
| - // Handles success or failure from Shill.Service.Connect.
|
| - void HandleShillConnectSuccess(const std::string& service_path);
|
| - void HandleShillConnectFailure(const std::string& service_path,
|
| - const std::string& error_name,
|
| - const std::string& error_message);
|
| -
|
| - // Note: |service_path| is passed by value here, because in some cases
|
| - // the value may be located in the map and then it can be deleted, producing
|
| - // a reference to invalid memory.
|
| - void CheckPendingRequest(const std::string service_path);
|
| -
|
| - void CheckAllPendingRequests();
|
| -
|
| // Notify caller and observers that the connect request succeeded.
|
| void InvokeConnectSuccessCallback(const std::string& service_path,
|
| const base::Closure& success_callback);
|
|
|
| - // Look up the ConnectRequest for |service_path| and call
|
| - // InvokeConnectErrorCallback.
|
| - void ErrorCallbackForPendingRequest(const std::string& service_path,
|
| - const std::string& error_name);
|
| -
|
| // Notify caller and observers that the connect request failed.
|
| // |error_name| will be one of the kError* messages defined above.
|
| void InvokeConnectErrorCallback(
|
| @@ -257,37 +173,22 @@ class CHROMEOS_EXPORT NetworkConnectionHandler
|
| const network_handler::ErrorCallback& error_callback,
|
| const std::string& error_name);
|
|
|
| - // Calls Shill.Manager.Disconnect asynchronously.
|
| - void CallShillDisconnect(
|
| - const std::string& service_path,
|
| + // Initiates a connection to a Tether network.
|
| + void InitiateTetherNetworkConnection(
|
| + const std::string& tether_network_guid,
|
| const base::Closure& success_callback,
|
| const network_handler::ErrorCallback& error_callback);
|
|
|
| - // Handle success from Shill.Service.Disconnect.
|
| - void HandleShillDisconnectSuccess(const std::string& service_path,
|
| - const base::Closure& success_callback);
|
| -
|
| base::ObserverList<NetworkConnectionObserver, true> observers_;
|
|
|
| - // Local references to the associated handler instances.
|
| - CertLoader* cert_loader_;
|
| - NetworkStateHandler* network_state_handler_;
|
| - NetworkConfigurationHandler* configuration_handler_;
|
| - ManagedNetworkConfigurationHandler* managed_configuration_handler_;
|
| -
|
| - // Map of pending connect requests, used to prevent repeated attempts while
|
| - // waiting for Shill and to trigger callbacks on eventual success or failure.
|
| - std::map<std::string, ConnectRequest> pending_requests_;
|
| - std::unique_ptr<ConnectRequest> queued_connect_;
|
| -
|
| - // Track certificate loading state.
|
| - bool logged_in_;
|
| - bool certificates_loaded_;
|
| - base::TimeTicks logged_in_time_;
|
| -
|
| // Delegate used to start a connection to a tether network.
|
| TetherDelegate* tether_delegate_;
|
|
|
| + private:
|
| + // Only to be used by NetworkConnectionHandler implementation (and not by
|
| + // derived classes).
|
| + base::WeakPtrFactory<NetworkConnectionHandler> weak_ptr_factory_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(NetworkConnectionHandler);
|
| };
|
|
|
|
|