Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Unified Diff: chromeos/components/tether/tether_connector.cc

Issue 2857853005: [CrOS Tether] Create TetherDisconnector, which disconnects from active tethering sessions. (Closed)
Patch Set: hansberry@ comments. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chromeos/components/tether/tether_connector.cc
diff --git a/chromeos/components/tether/tether_connector.cc b/chromeos/components/tether/tether_connector.cc
index f0650af95088ac9973e9ad3215b8a1ebfc76e56b..4518037cc3d30e3dfca2938db2ae9bfb29b8bb5e 100644
--- a/chromeos/components/tether/tether_connector.cc
+++ b/chromeos/components/tether/tether_connector.cc
@@ -18,7 +18,6 @@ namespace chromeos {
namespace tether {
TetherConnector::TetherConnector(
- NetworkConnectionHandler* network_connection_handler,
NetworkStateHandler* network_state_handler,
WifiHotspotConnector* wifi_hotspot_connector,
ActiveHost* active_host,
@@ -26,20 +25,16 @@ TetherConnector::TetherConnector(
BleConnectionManager* connection_manager,
TetherHostResponseRecorder* tether_host_response_recorder,
DeviceIdTetherNetworkGuidMap* device_id_tether_network_guid_map)
- : network_connection_handler_(network_connection_handler),
- network_state_handler_(network_state_handler),
+ : network_state_handler_(network_state_handler),
wifi_hotspot_connector_(wifi_hotspot_connector),
active_host_(active_host),
tether_host_fetcher_(tether_host_fetcher),
connection_manager_(connection_manager),
tether_host_response_recorder_(tether_host_response_recorder),
device_id_tether_network_guid_map_(device_id_tether_network_guid_map),
- weak_ptr_factory_(this) {
- network_connection_handler_->SetTetherDelegate(this);
-}
+ weak_ptr_factory_(this) {}
TetherConnector::~TetherConnector() {
- network_connection_handler_->SetTetherDelegate(nullptr);
if (connect_tethering_operation_) {
connect_tethering_operation_->RemoveObserver(this);
}
@@ -56,7 +51,7 @@ void TetherConnector::ConnectToNetwork(
PA_LOG(INFO) << "Attempting to connect to network with GUID "
<< tether_network_guid << ".";
- std::string device_id =
+ const std::string device_id =
device_id_tether_network_guid_map_->GetDeviceIdForTetherNetworkGuid(
tether_network_guid);
@@ -71,17 +66,9 @@ void TetherConnector::ConnectToNetwork(
PA_LOG(INFO) << "A connection attempt was already in progress to device "
<< "with ID " << device_id_pending_connection_ << ". "
<< "Canceling that connection attempt before continuing.";
-
- if (connect_tethering_operation_) {
- // If a ConnectTetheringOperation is in progress, stop it.
- connect_tethering_operation_->RemoveObserver(this);
- connect_tethering_operation_.reset();
- }
-
- // Since the previous connection attempt did not complete before the new
- // attempt began, call the error callback.
- DCHECK(!error_callback_.is_null());
- error_callback_.Run(NetworkConnectionHandler::kErrorConnectCanceled);
+ CancelConnectionAttempt(
+ device_id_tether_network_guid_map_->GetTetherNetworkGuidForDeviceId(
+ device_id_pending_connection_));
}
device_id_pending_connection_ = device_id;
@@ -96,6 +83,32 @@ void TetherConnector::ConnectToNetwork(
device_id_pending_connection_));
}
+bool TetherConnector::CancelConnectionAttempt(
+ const std::string& tether_network_guid) {
+ const std::string device_id =
+ device_id_tether_network_guid_map_->GetDeviceIdForTetherNetworkGuid(
+ tether_network_guid);
+
+ if (device_id != device_id_pending_connection_) {
+ PA_LOG(ERROR) << "CancelConnectionAttempt(): Cancel requested for Tether "
+ << "network with GUID " << tether_network_guid << ", but "
+ << "there was no active connection to that network.";
+ return false;
+ }
+
+ PA_LOG(INFO) << "Canceling connection attempt to Tether network with GUID "
+ << tether_network_guid;
+
+ if (connect_tethering_operation_) {
+ // If a ConnectTetheringOperation is in progress, stop it.
+ connect_tethering_operation_->RemoveObserver(this);
+ connect_tethering_operation_.reset();
+ }
+
+ SetConnectionFailed(NetworkConnectionHandler::kErrorConnectCanceled);
+ return true;
+}
+
void TetherConnector::OnSuccessfulConnectTetheringResponse(
const cryptauth::RemoteDevice& remote_device,
const std::string& ssid,
@@ -149,7 +162,7 @@ void TetherConnector::OnConnectTetheringFailure(
connect_tethering_operation_->RemoveObserver(this);
connect_tethering_operation_.reset();
- SetConnectionFailed();
+ SetConnectionFailed(NetworkConnectionHandler::kErrorConnectFailed);
}
void TetherConnector::OnTetherHostToConnectFetched(
@@ -166,7 +179,7 @@ void TetherConnector::OnTetherHostToConnectFetched(
PA_LOG(ERROR) << "Could not fetch tether host with device ID "
<< cryptauth::RemoteDevice::TruncateDeviceIdForLogs(device_id)
<< ". Cannot connect.";
- SetConnectionFailed();
+ SetConnectionFailed(NetworkConnectionHandler::kErrorConnectFailed);
return;
}
@@ -180,7 +193,7 @@ void TetherConnector::OnTetherHostToConnectFetched(
connect_tethering_operation_->Initialize();
}
-void TetherConnector::SetConnectionFailed() {
+void TetherConnector::SetConnectionFailed(const std::string& error_name) {
DCHECK(!device_id_pending_connection_.empty());
DCHECK(!error_callback_.is_null());
@@ -191,7 +204,7 @@ void TetherConnector::SetConnectionFailed() {
success_callback_.Reset();
error_callback_.Reset();
- error_callback.Run(NetworkConnectionHandler::kErrorConnectFailed);
+ error_callback.Run(error_name);
active_host_->SetActiveHostDisconnected();
}
@@ -238,7 +251,7 @@ void TetherConnector::OnWifiConnection(const std::string& device_id,
<< cryptauth::RemoteDevice::TruncateDeviceIdForLogs(device_id)
<< ".";
- SetConnectionFailed();
+ SetConnectionFailed(NetworkConnectionHandler::kErrorConnectFailed);
return;
}
« no previous file with comments | « chromeos/components/tether/tether_connector.h ('k') | chromeos/components/tether/tether_connector_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698