Index: chromeos/components/tether/keep_alive_scheduler.cc |
diff --git a/chromeos/components/tether/keep_alive_scheduler.cc b/chromeos/components/tether/keep_alive_scheduler.cc |
index 4b90fa01b33eeb6a8073ca137608bce48b7dad33..02a47e4b97f2cd3ba0de6689c44ba6360c7e527d 100644 |
--- a/chromeos/components/tether/keep_alive_scheduler.cc |
+++ b/chromeos/components/tether/keep_alive_scheduler.cc |
@@ -5,6 +5,8 @@ |
#include "chromeos/components/tether/keep_alive_scheduler.h" |
#include "base/bind.h" |
+#include "chromeos/components/tether/device_id_tether_network_guid_map.h" |
+#include "chromeos/components/tether/host_scan_cache.h" |
namespace chromeos { |
@@ -13,17 +15,27 @@ namespace tether { |
// static |
const uint32_t KeepAliveScheduler::kKeepAliveIntervalMinutes = 4; |
-KeepAliveScheduler::KeepAliveScheduler(ActiveHost* active_host, |
- BleConnectionManager* connection_manager) |
+KeepAliveScheduler::KeepAliveScheduler( |
+ ActiveHost* active_host, |
+ BleConnectionManager* connection_manager, |
+ HostScanCache* host_scan_cache, |
+ DeviceIdTetherNetworkGuidMap* device_id_tether_network_guid_map) |
: KeepAliveScheduler(active_host, |
connection_manager, |
+ host_scan_cache, |
+ device_id_tether_network_guid_map, |
base::MakeUnique<base::RepeatingTimer>()) {} |
-KeepAliveScheduler::KeepAliveScheduler(ActiveHost* active_host, |
- BleConnectionManager* connection_manager, |
- std::unique_ptr<base::Timer> timer) |
+KeepAliveScheduler::KeepAliveScheduler( |
+ ActiveHost* active_host, |
+ BleConnectionManager* connection_manager, |
+ HostScanCache* host_scan_cache, |
+ DeviceIdTetherNetworkGuidMap* device_id_tether_network_guid_map, |
+ std::unique_ptr<base::Timer> timer) |
: active_host_(active_host), |
connection_manager_(connection_manager), |
+ host_scan_cache_(host_scan_cache), |
+ device_id_tether_network_guid_map_(device_id_tether_network_guid_map), |
timer_(std::move(timer)), |
weak_ptr_factory_(this) { |
active_host_->AddObserver(this); |
@@ -56,9 +68,35 @@ void KeepAliveScheduler::OnActiveHostChanged( |
} |
} |
-void KeepAliveScheduler::OnOperationFinished() { |
+void KeepAliveScheduler::OnOperationFinished( |
+ const cryptauth::RemoteDevice& remote_device, |
+ std::unique_ptr<DeviceStatus> device_status) { |
+ // Make a copy before destroying the operation below. |
+ const cryptauth::RemoteDevice device_copy = remote_device; |
+ |
keep_alive_operation_->RemoveObserver(this); |
keep_alive_operation_.reset(); |
+ |
+ if (!device_status) { |
+ // If the operation did not complete successfully, there is no new |
+ // information with which to update the cache. |
+ return; |
+ } |
+ |
+ std::string carrier; |
+ int32_t battery_percentage; |
+ int32_t signal_strength; |
+ NormalizeDeviceStatus(*device_status, &carrier, &battery_percentage, |
+ &signal_strength); |
+ |
+ // Update the cache. Note that "false" is passed for the |setup_required| |
+ // parameter because it is assumed that setup is no longer required for an |
+ // active connection attempt. |
+ host_scan_cache_->SetHostScanResult( |
+ device_id_tether_network_guid_map_->GetTetherNetworkGuidForDeviceId( |
+ device_copy.GetDeviceId()), |
+ device_copy.name, carrier, battery_percentage, signal_strength, |
+ false /* setup_required */); |
} |
void KeepAliveScheduler::SendKeepAliveTickle() { |