Chromium Code Reviews| Index: chromeos/network/network_connection_handler.cc |
| diff --git a/chromeos/network/network_connection_handler.cc b/chromeos/network/network_connection_handler.cc |
| index 69483bfb0cdf3d07bd25abf79e9cba5648f144e4..8d8ab4c243bf28af31bd2f7d36f44dcfefb7b385 100644 |
| --- a/chromeos/network/network_connection_handler.cc |
| +++ b/chromeos/network/network_connection_handler.cc |
| @@ -10,6 +10,7 @@ |
| #include "base/single_thread_task_runner.h" |
| #include "base/strings/string_number_conversions.h" |
| #include "base/threading/thread_task_runner_handle.h" |
| +#include "base/time/time.h" |
| #include "chromeos/dbus/dbus_thread_manager.h" |
| #include "chromeos/dbus/shill_manager_client.h" |
| #include "chromeos/dbus/shill_service_client.h" |
| @@ -93,6 +94,7 @@ std::string GetDefaultUserProfilePath(const NetworkState* network) { |
| } // namespace |
| +// Static constants. |
| const char NetworkConnectionHandler::kErrorNotFound[] = "not-found"; |
| const char NetworkConnectionHandler::kErrorConnected[] = "connected"; |
| const char NetworkConnectionHandler::kErrorConnecting[] = "connecting"; |
| @@ -124,38 +126,225 @@ const char |
| NetworkConnectionHandler::kErrorTetherConnectionAttemptWithNoDelegate[] = |
| "tether-with-no-delegate"; |
| -struct NetworkConnectionHandler::ConnectRequest { |
| - ConnectRequest(const std::string& service_path, |
| - const std::string& profile_path, |
| - const base::Closure& success, |
| - const network_handler::ErrorCallback& error) |
| - : service_path(service_path), |
| - profile_path(profile_path), |
| - connect_state(CONNECT_REQUESTED), |
| - success_callback(success), |
| - error_callback(error) { |
| - } |
| - enum ConnectState { |
| - CONNECT_REQUESTED = 0, |
| - CONNECT_STARTED = 1, |
| - CONNECT_CONNECTING = 2 |
| +// Implementation. |
|
stevenjb
2017/05/03 22:05:38
Move this to a separate file.
Kyle Horimoto
2017/05/03 22:38:29
Done.
|
| +class CHROMEOS_EXPORT NetworkConnectionHandlerImpl |
| + : public NetworkConnectionHandler, |
| + public base::SupportsWeakPtr<NetworkConnectionHandlerImpl> { |
| + public: |
| + NetworkConnectionHandlerImpl(); |
| + ~NetworkConnectionHandlerImpl() override; |
| + |
| + // NetworkConnectionHandler: |
| + void ConnectToNetwork(const std::string& service_path, |
| + const base::Closure& success_callback, |
| + const network_handler::ErrorCallback& error_callback, |
| + bool check_error_state) override; |
| + void DisconnectNetwork( |
| + const std::string& service_path, |
| + const base::Closure& success_callback, |
| + const network_handler::ErrorCallback& error_callback) override; |
| + bool HasConnectingNetwork(const std::string& service_path) override; |
| + bool HasPendingConnectRequest() override; |
| + |
| + // NetworkStateHandlerObserver |
| + void NetworkListChanged() override; |
| + void NetworkPropertiesUpdated(const NetworkState* network) override; |
| + |
| + // LoginState::Observer |
| + void LoggedInStateChanged() override; |
| + |
| + // CertLoader::Observer |
| + void OnCertificatesLoaded(const net::CertificateList& cert_list, |
| + bool initial_load) override; |
| + |
| + protected: |
| + void Init(NetworkStateHandler* network_state_handler, |
| + NetworkConfigurationHandler* network_configuration_handler, |
| + ManagedNetworkConfigurationHandler* |
| + managed_network_configuration_handler) override; |
| + |
| + private: |
| + ////////////////////////////////////////////////////////////////////////////// |
| + friend class NetworkHandler; |
| + friend class NetworkConnectionHandlerTest; |
| + |
| + struct ConnectRequest { |
| + ConnectRequest(const std::string& service_path, |
| + const std::string& profile_path, |
| + const base::Closure& success, |
| + const network_handler::ErrorCallback& error) |
| + : service_path(service_path), |
| + profile_path(profile_path), |
| + connect_state(CONNECT_REQUESTED), |
| + success_callback(success), |
| + error_callback(error) {} |
| + enum ConnectState { |
| + CONNECT_REQUESTED = 0, |
| + CONNECT_STARTED = 1, |
| + CONNECT_CONNECTING = 2 |
| + }; |
| + std::string service_path; |
| + std::string profile_path; |
| + ConnectState connect_state; |
| + base::Closure success_callback; |
| + network_handler::ErrorCallback error_callback; |
| }; |
| - std::string service_path; |
| - std::string profile_path; |
| - ConnectState connect_state; |
| - base::Closure success_callback; |
| - network_handler::ErrorCallback error_callback; |
| + |
| + 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(); |
| + |
| + // Look up the ConnectRequest for |service_path| and call |
| + // InvokeConnectErrorCallback. |
| + void ErrorCallbackForPendingRequest(const std::string& service_path, |
| + const std::string& error_name); |
| + |
| + // Calls Shill.Manager.Disconnect asynchronously. |
| + void CallShillDisconnect( |
| + const std::string& service_path, |
| + 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); |
| + |
| + // 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_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(NetworkConnectionHandlerImpl); |
| }; |
| +// NetworkConnectionHandler implementation. |
| + |
| +// static |
| +std::unique_ptr<NetworkConnectionHandler> NetworkConnectionHandler::Create() { |
| + return base::MakeUnique<NetworkConnectionHandlerImpl>(); |
| +} |
| + |
| NetworkConnectionHandler::NetworkConnectionHandler() |
| + : tether_delegate_(nullptr), weak_ptr_factory_(this) {} |
| + |
| +NetworkConnectionHandler::~NetworkConnectionHandler() {} |
| + |
| +void NetworkConnectionHandler::AddObserver( |
| + NetworkConnectionObserver* observer) { |
| + observers_.AddObserver(observer); |
| +} |
| + |
| +void NetworkConnectionHandler::RemoveObserver( |
| + NetworkConnectionObserver* observer) { |
| + observers_.RemoveObserver(observer); |
| +} |
| + |
| +void NetworkConnectionHandler::SetTetherDelegate( |
| + TetherDelegate* tether_delegate) { |
| + tether_delegate_ = tether_delegate; |
| +} |
| + |
| +void NetworkConnectionHandler::InvokeConnectSuccessCallback( |
| + const std::string& service_path, |
| + const base::Closure& success_callback) { |
| + NET_LOG_EVENT("Connect Request Succeeded", service_path); |
| + if (!success_callback.is_null()) |
| + success_callback.Run(); |
| + for (auto& observer : observers_) |
| + observer.ConnectSucceeded(service_path); |
| +} |
| + |
| +void NetworkConnectionHandler::InvokeConnectErrorCallback( |
| + const std::string& service_path, |
| + const network_handler::ErrorCallback& error_callback, |
| + const std::string& error_name) { |
| + NET_LOG_ERROR("Connect Failure: " + error_name, service_path); |
| + network_handler::RunErrorCallback(error_callback, service_path, error_name, |
| + ""); |
| + for (auto& observer : observers_) |
| + observer.ConnectFailed(service_path, error_name); |
| +} |
| + |
| +void NetworkConnectionHandler::InitiateTetherNetworkConnection( |
| + const std::string& tether_network_guid, |
| + const base::Closure& success_callback, |
| + const network_handler::ErrorCallback& error_callback) { |
| + DCHECK(tether_delegate_); |
| + tether_delegate_->ConnectToNetwork( |
| + tether_network_guid, |
| + base::Bind(&NetworkConnectionHandlerImpl::InvokeConnectSuccessCallback, |
| + weak_ptr_factory_.GetWeakPtr(), tether_network_guid, |
| + success_callback), |
| + base::Bind(&NetworkConnectionHandlerImpl::InvokeConnectErrorCallback, |
| + weak_ptr_factory_.GetWeakPtr(), tether_network_guid, |
| + error_callback)); |
| +} |
| + |
| +// NetworkConnectionHandlerImpl implementation. |
| + |
| +NetworkConnectionHandlerImpl::NetworkConnectionHandlerImpl() |
| : cert_loader_(NULL), |
| network_state_handler_(NULL), |
| configuration_handler_(NULL), |
| logged_in_(false), |
| - certificates_loaded_(false), |
| - tether_delegate_(nullptr) {} |
| + certificates_loaded_(false) {} |
| -NetworkConnectionHandler::~NetworkConnectionHandler() { |
| +NetworkConnectionHandlerImpl::~NetworkConnectionHandlerImpl() { |
| if (network_state_handler_) |
| network_state_handler_->RemoveObserver(this, FROM_HERE); |
| if (cert_loader_) |
| @@ -164,7 +353,7 @@ NetworkConnectionHandler::~NetworkConnectionHandler() { |
| LoginState::Get()->RemoveObserver(this); |
| } |
| -void NetworkConnectionHandler::Init( |
| +void NetworkConnectionHandlerImpl::Init( |
| NetworkStateHandler* network_state_handler, |
| NetworkConfigurationHandler* network_configuration_handler, |
| ManagedNetworkConfigurationHandler* managed_network_configuration_handler) { |
| @@ -191,24 +380,14 @@ void NetworkConnectionHandler::Init( |
| configuration_handler_ = network_configuration_handler; |
| managed_configuration_handler_ = managed_network_configuration_handler; |
| - // After this point, the NetworkConnectionHandler is fully initialized (all |
| - // handler references set, observers registered, ...). |
| + // After this point, the NetworkConnectionHandlerImpl is fully initialized |
| + // (all handler references set, observers registered, ...). |
| if (LoginState::IsInitialized()) |
| LoggedInStateChanged(); |
| } |
| -void NetworkConnectionHandler::AddObserver( |
| - NetworkConnectionObserver* observer) { |
| - observers_.AddObserver(observer); |
| -} |
| - |
| -void NetworkConnectionHandler::RemoveObserver( |
| - NetworkConnectionObserver* observer) { |
| - observers_.RemoveObserver(observer); |
| -} |
| - |
| -void NetworkConnectionHandler::LoggedInStateChanged() { |
| +void NetworkConnectionHandlerImpl::LoggedInStateChanged() { |
| LoginState* login_state = LoginState::Get(); |
| if (logged_in_ || !login_state->IsUserLoggedIn()) |
| return; |
| @@ -217,7 +396,7 @@ void NetworkConnectionHandler::LoggedInStateChanged() { |
| logged_in_time_ = base::TimeTicks::Now(); |
| } |
| -void NetworkConnectionHandler::OnCertificatesLoaded( |
| +void NetworkConnectionHandlerImpl::OnCertificatesLoaded( |
| const net::CertificateList& cert_list, |
| bool initial_load) { |
| certificates_loaded_ = true; |
| @@ -226,20 +405,7 @@ void NetworkConnectionHandler::OnCertificatesLoaded( |
| ConnectToQueuedNetwork(); |
| } |
| -void NetworkConnectionHandler::InitiateTetherNetworkConnection( |
| - const std::string& tether_network_guid, |
| - const base::Closure& success_callback, |
| - const network_handler::ErrorCallback& error_callback) { |
| - DCHECK(tether_delegate_); |
| - tether_delegate_->ConnectToNetwork( |
| - tether_network_guid, |
| - base::Bind(&NetworkConnectionHandler::InvokeConnectSuccessCallback, |
| - AsWeakPtr(), tether_network_guid, success_callback), |
| - base::Bind(&NetworkConnectionHandler::InvokeConnectErrorCallback, |
| - AsWeakPtr(), tether_network_guid, error_callback)); |
| -} |
| - |
| -void NetworkConnectionHandler::ConnectToNetwork( |
| +void NetworkConnectionHandlerImpl::ConnectToNetwork( |
| const std::string& service_path, |
| const base::Closure& success_callback, |
| const network_handler::ErrorCallback& error_callback, |
| @@ -334,13 +500,13 @@ void NetworkConnectionHandler::ConnectToNetwork( |
| // are up to date after any recent configuration. |
| configuration_handler_->GetShillProperties( |
| service_path, |
| - base::Bind(&NetworkConnectionHandler::VerifyConfiguredAndConnect, |
| + base::Bind(&NetworkConnectionHandlerImpl::VerifyConfiguredAndConnect, |
| AsWeakPtr(), check_error_state), |
| - base::Bind(&NetworkConnectionHandler::HandleConfigurationFailure, |
| + base::Bind(&NetworkConnectionHandlerImpl::HandleConfigurationFailure, |
| AsWeakPtr(), service_path)); |
| } |
| -void NetworkConnectionHandler::DisconnectNetwork( |
| +void NetworkConnectionHandlerImpl::DisconnectNetwork( |
| const std::string& service_path, |
| const base::Closure& success_callback, |
| const network_handler::ErrorCallback& error_callback) { |
| @@ -366,32 +532,28 @@ void NetworkConnectionHandler::DisconnectNetwork( |
| CallShillDisconnect(service_path, success_callback, error_callback); |
| } |
| -bool NetworkConnectionHandler::HasConnectingNetwork( |
| +bool NetworkConnectionHandlerImpl::HasConnectingNetwork( |
| const std::string& service_path) { |
| return pending_requests_.count(service_path) != 0; |
| } |
| -bool NetworkConnectionHandler::HasPendingConnectRequest() { |
| +bool NetworkConnectionHandlerImpl::HasPendingConnectRequest() { |
| return pending_requests_.size() > 0; |
| } |
| -void NetworkConnectionHandler::SetTetherDelegate( |
| - TetherDelegate* tether_delegate) { |
| - tether_delegate_ = tether_delegate; |
| -} |
| - |
| -void NetworkConnectionHandler::NetworkListChanged() { |
| +void NetworkConnectionHandlerImpl::NetworkListChanged() { |
| CheckAllPendingRequests(); |
| } |
| -void NetworkConnectionHandler::NetworkPropertiesUpdated( |
| +void NetworkConnectionHandlerImpl::NetworkPropertiesUpdated( |
| const NetworkState* network) { |
| if (HasConnectingNetwork(network->path())) |
| CheckPendingRequest(network->path()); |
| } |
| -NetworkConnectionHandler::ConnectRequest* |
| -NetworkConnectionHandler::GetPendingRequest(const std::string& service_path) { |
| +NetworkConnectionHandlerImpl::ConnectRequest* |
| +NetworkConnectionHandlerImpl::GetPendingRequest( |
| + const std::string& service_path) { |
| std::map<std::string, ConnectRequest>::iterator iter = |
| pending_requests_.find(service_path); |
| return iter != pending_requests_.end() ? &(iter->second) : NULL; |
| @@ -399,7 +561,7 @@ NetworkConnectionHandler::GetPendingRequest(const std::string& service_path) { |
| // ConnectToNetwork implementation |
| -void NetworkConnectionHandler::VerifyConfiguredAndConnect( |
| +void NetworkConnectionHandlerImpl::VerifyConfiguredAndConnect( |
| bool check_error_state, |
| const std::string& service_path, |
| const base::DictionaryValue& service_properties) { |
| @@ -558,9 +720,9 @@ void NetworkConnectionHandler::VerifyConfiguredAndConnect( |
| configuration_handler_->SetShillProperties( |
| service_path, config_properties, |
| NetworkConfigurationObserver::SOURCE_USER_ACTION, |
| - base::Bind(&NetworkConnectionHandler::CallShillConnect, AsWeakPtr(), |
| + base::Bind(&NetworkConnectionHandlerImpl::CallShillConnect, AsWeakPtr(), |
| service_path), |
| - base::Bind(&NetworkConnectionHandler::HandleConfigurationFailure, |
| + base::Bind(&NetworkConnectionHandlerImpl::HandleConfigurationFailure, |
| AsWeakPtr(), service_path)); |
| return; |
| } |
| @@ -575,7 +737,7 @@ void NetworkConnectionHandler::VerifyConfiguredAndConnect( |
| CallShillConnect(service_path); |
| } |
| -bool NetworkConnectionHandler::IsNetworkProhibitedByPolicy( |
| +bool NetworkConnectionHandlerImpl::IsNetworkProhibitedByPolicy( |
| const std::string& type, |
| const std::string& guid, |
| const std::string& profile_path) { |
| @@ -599,7 +761,7 @@ bool NetworkConnectionHandler::IsNetworkProhibitedByPolicy( |
| guid, profile_path, nullptr /* onc_source */); |
| } |
| -void NetworkConnectionHandler::QueueConnectRequest( |
| +void NetworkConnectionHandlerImpl::QueueConnectRequest( |
| const std::string& service_path) { |
| ConnectRequest* request = GetPendingRequest(service_path); |
| if (!request) { |
| @@ -626,12 +788,13 @@ void NetworkConnectionHandler::QueueConnectRequest( |
| // haven't, and queued_connect_ has not been cleared (e.g. by a successful |
| // connect request), cancel the request and notify the user. |
| base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| - FROM_HERE, base::Bind(&NetworkConnectionHandler::CheckCertificatesLoaded, |
| - AsWeakPtr()), |
| + FROM_HERE, |
| + base::Bind(&NetworkConnectionHandlerImpl::CheckCertificatesLoaded, |
| + AsWeakPtr()), |
| base::TimeDelta::FromSeconds(kMaxCertLoadTimeSeconds) - dtime); |
| } |
| -void NetworkConnectionHandler::CheckCertificatesLoaded() { |
| +void NetworkConnectionHandlerImpl::CheckCertificatesLoaded() { |
| if (certificates_loaded_) |
| return; |
| // If queued_connect_ has been cleared (e.g. another connect request occurred |
| @@ -646,7 +809,7 @@ void NetworkConnectionHandler::CheckCertificatesLoaded() { |
| queued_connect_.reset(); |
| } |
| -void NetworkConnectionHandler::ConnectToQueuedNetwork() { |
| +void NetworkConnectionHandlerImpl::ConnectToQueuedNetwork() { |
| DCHECK(queued_connect_); |
| // Make a copy of |queued_connect_| parameters, because |queued_connect_| |
| @@ -661,19 +824,19 @@ void NetworkConnectionHandler::ConnectToQueuedNetwork() { |
| false /* check_error_state */); |
| } |
| -void NetworkConnectionHandler::CallShillConnect( |
| +void NetworkConnectionHandlerImpl::CallShillConnect( |
| const std::string& service_path) { |
| NET_LOG_EVENT("Sending Connect Request to Shill", service_path); |
| network_state_handler_->ClearLastErrorForNetwork(service_path); |
| DBusThreadManager::Get()->GetShillServiceClient()->Connect( |
| dbus::ObjectPath(service_path), |
| - base::Bind(&NetworkConnectionHandler::HandleShillConnectSuccess, |
| + base::Bind(&NetworkConnectionHandlerImpl::HandleShillConnectSuccess, |
| AsWeakPtr(), service_path), |
| - base::Bind(&NetworkConnectionHandler::HandleShillConnectFailure, |
| + base::Bind(&NetworkConnectionHandlerImpl::HandleShillConnectFailure, |
| AsWeakPtr(), service_path)); |
| } |
| -void NetworkConnectionHandler::HandleConfigurationFailure( |
| +void NetworkConnectionHandlerImpl::HandleConfigurationFailure( |
| const std::string& service_path, |
| const std::string& error_name, |
| std::unique_ptr<base::DictionaryValue> error_data) { |
| @@ -689,7 +852,7 @@ void NetworkConnectionHandler::HandleConfigurationFailure( |
| kErrorConfigureFailed); |
| } |
| -void NetworkConnectionHandler::HandleShillConnectSuccess( |
| +void NetworkConnectionHandlerImpl::HandleShillConnectSuccess( |
| const std::string& service_path) { |
| ConnectRequest* request = GetPendingRequest(service_path); |
| if (!request) { |
| @@ -706,7 +869,7 @@ void NetworkConnectionHandler::HandleShillConnectSuccess( |
| CheckPendingRequest(service_path); |
| } |
| -void NetworkConnectionHandler::HandleShillConnectFailure( |
| +void NetworkConnectionHandlerImpl::HandleShillConnectFailure( |
| const std::string& service_path, |
| const std::string& dbus_error_name, |
| const std::string& dbus_error_message) { |
| @@ -731,7 +894,7 @@ void NetworkConnectionHandler::HandleShillConnectFailure( |
| InvokeConnectErrorCallback(service_path, error_callback, error); |
| } |
| -void NetworkConnectionHandler::CheckPendingRequest( |
| +void NetworkConnectionHandlerImpl::CheckPendingRequest( |
| const std::string service_path) { |
| ConnectRequest* request = GetPendingRequest(service_path); |
| DCHECK(request); |
| @@ -786,7 +949,7 @@ void NetworkConnectionHandler::CheckPendingRequest( |
| InvokeConnectErrorCallback(service_path, error_callback, error_name); |
| } |
| -void NetworkConnectionHandler::CheckAllPendingRequests() { |
| +void NetworkConnectionHandlerImpl::CheckAllPendingRequests() { |
| for (std::map<std::string, ConnectRequest>::iterator iter = |
| pending_requests_.begin(); iter != pending_requests_.end(); ++iter) { |
| CheckPendingRequest(iter->first); |
| @@ -795,17 +958,7 @@ void NetworkConnectionHandler::CheckAllPendingRequests() { |
| // Connect callbacks |
| -void NetworkConnectionHandler::InvokeConnectSuccessCallback( |
| - const std::string& service_path, |
| - const base::Closure& success_callback) { |
| - NET_LOG_EVENT("Connect Request Succeeded", service_path); |
| - if (!success_callback.is_null()) |
| - success_callback.Run(); |
| - for (auto& observer : observers_) |
| - observer.ConnectSucceeded(service_path); |
| -} |
| - |
| -void NetworkConnectionHandler::ErrorCallbackForPendingRequest( |
| +void NetworkConnectionHandlerImpl::ErrorCallbackForPendingRequest( |
| const std::string& service_path, |
| const std::string& error_name) { |
| ConnectRequest* request = GetPendingRequest(service_path); |
| @@ -820,33 +973,22 @@ void NetworkConnectionHandler::ErrorCallbackForPendingRequest( |
| InvokeConnectErrorCallback(service_path, error_callback, error_name); |
| } |
| -void NetworkConnectionHandler::InvokeConnectErrorCallback( |
| - const std::string& service_path, |
| - const network_handler::ErrorCallback& error_callback, |
| - const std::string& error_name) { |
| - NET_LOG_ERROR("Connect Failure: " + error_name, service_path); |
| - network_handler::RunErrorCallback(error_callback, service_path, error_name, |
| - ""); |
| - for (auto& observer : observers_) |
| - observer.ConnectFailed(service_path, error_name); |
| -} |
| - |
| // Disconnect |
| -void NetworkConnectionHandler::CallShillDisconnect( |
| +void NetworkConnectionHandlerImpl::CallShillDisconnect( |
| const std::string& service_path, |
| const base::Closure& success_callback, |
| const network_handler::ErrorCallback& error_callback) { |
| NET_LOG_USER("Disconnect Request", service_path); |
| DBusThreadManager::Get()->GetShillServiceClient()->Disconnect( |
| dbus::ObjectPath(service_path), |
| - base::Bind(&NetworkConnectionHandler::HandleShillDisconnectSuccess, |
| + base::Bind(&NetworkConnectionHandlerImpl::HandleShillDisconnectSuccess, |
| AsWeakPtr(), service_path, success_callback), |
| base::Bind(&network_handler::ShillErrorCallbackFunction, |
| kErrorDisconnectFailed, service_path, error_callback)); |
| } |
| -void NetworkConnectionHandler::HandleShillDisconnectSuccess( |
| +void NetworkConnectionHandlerImpl::HandleShillDisconnectSuccess( |
| const std::string& service_path, |
| const base::Closure& success_callback) { |
| NET_LOG_EVENT("Disconnect Request Sent", service_path); |