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

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

Issue 2945643002: [CrOS Tether] Sort Tether network lists. (Closed)
Patch Set: Cleanup - now ready for review. Created 3 years, 6 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/host_scan_device_prioritizer.cc
diff --git a/chromeos/components/tether/host_scan_device_prioritizer.cc b/chromeos/components/tether/host_scan_device_prioritizer.cc
index e2bfb9ac421140fd86410557de6676b5d08e355f..7f30f8d6de8f10a19e9daa1bc9e8596c9025036b 100644
--- a/chromeos/components/tether/host_scan_device_prioritizer.cc
+++ b/chromeos/components/tether/host_scan_device_prioritizer.cc
@@ -6,8 +6,11 @@
#include "base/memory/ptr_util.h"
#include "base/values.h"
+#include "chromeos/components/tether/device_id_tether_network_guid_map.h"
#include "chromeos/components/tether/pref_names.h"
#include "chromeos/components/tether/tether_host_response_recorder.h"
+#include "chromeos/network/network_state.h"
+#include "chromeos/network/network_state_handler.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
@@ -16,13 +19,32 @@ namespace chromeos {
namespace tether {
HostScanDevicePrioritizer::HostScanDevicePrioritizer(
- TetherHostResponseRecorder* tether_host_response_recorder)
- : tether_host_response_recorder_(tether_host_response_recorder) {}
+ NetworkStateHandler* network_state_handler,
+ TetherHostResponseRecorder* tether_host_response_recorder,
+ DeviceIdTetherNetworkGuidMap* device_id_tether_network_guid_map)
+ : network_state_handler_(network_state_handler),
+ tether_host_response_recorder_(tether_host_response_recorder),
+ device_id_tether_network_guid_map_(device_id_tether_network_guid_map) {
+ network_state_handler_->SetTetherNetworkListSorter(this);
+}
-HostScanDevicePrioritizer::~HostScanDevicePrioritizer() {}
+HostScanDevicePrioritizer::~HostScanDevicePrioritizer() {
+ network_state_handler_->SetTetherNetworkListSorter(nullptr);
+}
void HostScanDevicePrioritizer::SortByHostScanOrder(
std::vector<cryptauth::RemoteDevice>* remote_devices) const {
+ SortNetworks(remote_devices);
+}
+
+void HostScanDevicePrioritizer::SortTetherNetworkList(
+ NetworkStateHandler::ManagedStateList* tether_networks) const {
+ SortNetworks(tether_networks);
+}
+
+template <typename T>
+void HostScanDevicePrioritizer::SortNetworks(
+ std::vector<T>* list_to_sort) const {
// First, fetch the hosts which have previously responded.
std::vector<std::string> prioritized_ids =
tether_host_response_recorder_->GetPreviouslyAvailableHostIds();
@@ -38,26 +60,49 @@ void HostScanDevicePrioritizer::SortByHostScanOrder(
// Iterate from the last stored ID to the first stored ID. This ensures that
// the items at the front of the list end up in the front of the prioritized
- // |remote_devices| vector.
+ // |list_to_sort| vector.
for (auto prioritized_it = prioritized_ids.rbegin();
prioritized_it != prioritized_ids.rend(); ++prioritized_it) {
- // Iterate through |remote_devices| to see if a device exists with a
- // device ID of |stored_id|. If one exists, remove it from its previous
+ // Iterate through |list_to_sort| to see if a device ID exists which is
+ // equal to |stored_id|. If one exists, remove it from its previous
// position in the list and add it at the front instead.
- for (auto remote_devices_it = remote_devices->begin();
- remote_devices_it != remote_devices->end(); ++remote_devices_it) {
- if (remote_devices_it->GetDeviceId() != *prioritized_it) {
+ for (auto list_to_sort_it = list_to_sort->begin();
+ list_to_sort_it != list_to_sort->end(); ++list_to_sort_it) {
+ if (GetDeviceId(*list_to_sort_it) != *prioritized_it) {
continue;
}
- cryptauth::RemoteDevice device_to_move = *remote_devices_it;
- remote_devices->erase(remote_devices_it);
- remote_devices->insert(remote_devices->begin(), device_to_move);
+ T entry_to_move = Move(*list_to_sort_it);
+ list_to_sort->erase(list_to_sort_it);
+ list_to_sort->emplace(list_to_sort->begin(), Move(entry_to_move));
break;
}
}
}
+std::string HostScanDevicePrioritizer::GetDeviceId(
+ const cryptauth::RemoteDevice& remote_device) const {
+ return remote_device.GetDeviceId();
+}
+
+std::string HostScanDevicePrioritizer::GetDeviceId(
+ const std::unique_ptr<ManagedState>& tether_network_state) const {
+ NetworkState* network_state =
+ static_cast<NetworkState*>(tether_network_state.get());
+ return device_id_tether_network_guid_map_->GetDeviceIdForTetherNetworkGuid(
+ network_state->guid());
+}
+
+cryptauth::RemoteDevice HostScanDevicePrioritizer::Move(
+ const cryptauth::RemoteDevice& remote_device) const {
+ return remote_device;
+}
+
+std::unique_ptr<ManagedState> HostScanDevicePrioritizer::Move(
+ std::unique_ptr<ManagedState>& tether_network_state) const {
+ return std::move(tether_network_state);
+}
+
} // namespace tether
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698