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

Side by Side Diff: chromeos/components/tether/host_scan_cache.cc

Issue 2913313002: Tether: Persist if first-time setup is required to HostScanCache. (Closed)
Patch Set: khorimoto@ comments. 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/components/tether/host_scan_cache.h" 5 #include "chromeos/components/tether/host_scan_cache.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 } 48 }
49 49
50 HostScanCache::~HostScanCache() { 50 HostScanCache::~HostScanCache() {
51 tether_host_response_recorder_->RemoveObserver(this); 51 tether_host_response_recorder_->RemoveObserver(this);
52 } 52 }
53 53
54 void HostScanCache::SetHostScanResult(const std::string& tether_network_guid, 54 void HostScanCache::SetHostScanResult(const std::string& tether_network_guid,
55 const std::string& device_name, 55 const std::string& device_name,
56 const std::string& carrier, 56 const std::string& carrier,
57 int battery_percentage, 57 int battery_percentage,
58 int signal_strength) { 58 int signal_strength,
59 bool setup_required) {
59 DCHECK(!tether_network_guid.empty()); 60 DCHECK(!tether_network_guid.empty());
60 61
61 auto found_iter = tether_guid_to_timer_map_.find(tether_network_guid); 62 auto found_iter = tether_guid_to_timer_map_.find(tether_network_guid);
62 63
63 if (found_iter == tether_guid_to_timer_map_.end()) { 64 if (found_iter == tether_guid_to_timer_map_.end()) {
64 // Add the Tether network to NetworkStateHandler and create an associated 65 // Add the Tether network to NetworkStateHandler and create an associated
65 // Timer. 66 // Timer.
66 network_state_handler_->AddTetherNetworkState( 67 network_state_handler_->AddTetherNetworkState(
67 tether_network_guid, device_name, carrier, battery_percentage, 68 tether_network_guid, device_name, carrier, battery_percentage,
68 signal_strength, HasConnectedToHost(tether_network_guid)); 69 signal_strength, HasConnectedToHost(tether_network_guid));
(...skipping 10 matching lines...) Expand all
79 network_state_handler_->UpdateTetherNetworkProperties( 80 network_state_handler_->UpdateTetherNetworkProperties(
80 tether_network_guid, carrier, battery_percentage, signal_strength); 81 tether_network_guid, carrier, battery_percentage, signal_strength);
81 found_iter->second->Stop(); 82 found_iter->second->Stop();
82 83
83 PA_LOG(INFO) << "Updated scan result for Tether network with GUID " 84 PA_LOG(INFO) << "Updated scan result for Tether network with GUID "
84 << tether_network_guid << ". New carrier: " << carrier << ", " 85 << tether_network_guid << ". New carrier: " << carrier << ", "
85 << "new battery percentage: " << battery_percentage << ", " 86 << "new battery percentage: " << battery_percentage << ", "
86 << "new signal strength: " << signal_strength; 87 << "new signal strength: " << signal_strength;
87 } 88 }
88 89
90 if (setup_required)
Kyle Horimoto 2017/05/31 23:01:19 Previously, you forgot to add this if(), but the t
Ryan Hansberry 2017/06/01 01:07:51 Mentioned this on the past commit: This was actual
91 setup_required_tether_guids_.insert(tether_network_guid);
92 else
93 setup_required_tether_guids_.erase(tether_network_guid);
94
89 StartTimer(tether_network_guid); 95 StartTimer(tether_network_guid);
90 } 96 }
91 97
92 bool HostScanCache::RemoveHostScanResult( 98 bool HostScanCache::RemoveHostScanResult(
93 const std::string& tether_network_guid) { 99 const std::string& tether_network_guid) {
94 DCHECK(!tether_network_guid.empty()); 100 DCHECK(!tether_network_guid.empty());
95 101
96 auto it = tether_guid_to_timer_map_.find(tether_network_guid); 102 auto it = tether_guid_to_timer_map_.find(tether_network_guid);
97 if (it == tether_guid_to_timer_map_.end()) { 103 if (it == tether_guid_to_timer_map_.end()) {
98 PA_LOG(ERROR) << "Attempted to remove a host scan result which does not " 104 PA_LOG(ERROR) << "Attempted to remove a host scan result which does not "
99 << "exist in the cache. GUID: " << tether_network_guid; 105 << "exist in the cache. GUID: " << tether_network_guid;
100 return false; 106 return false;
101 } 107 }
102 108
103 if (active_host_->GetTetherNetworkGuid() == tether_network_guid) { 109 if (active_host_->GetTetherNetworkGuid() == tether_network_guid) {
104 PA_LOG(ERROR) << "RemoveHostScanResult() called for Tether network with " 110 PA_LOG(ERROR) << "RemoveHostScanResult() called for Tether network with "
105 << "GUID " << tether_network_guid << ", but the " 111 << "GUID " << tether_network_guid << ", but the "
106 << "corresponding device is the active host. Not removing " 112 << "corresponding device is the active host. Not removing "
107 << "this scan result from the cache."; 113 << "this scan result from the cache.";
108 return false; 114 return false;
109 } 115 }
110 116
111 tether_guid_to_timer_map_.erase(it); 117 tether_guid_to_timer_map_.erase(it);
118 setup_required_tether_guids_.erase(tether_network_guid);
112 return network_state_handler_->RemoveTetherNetworkState(tether_network_guid); 119 return network_state_handler_->RemoveTetherNetworkState(tether_network_guid);
113 } 120 }
114 121
115 void HostScanCache::ClearCacheExceptForActiveHost() { 122 void HostScanCache::ClearCacheExceptForActiveHost() {
116 // Create a list of all Tether network GUIDs serving as keys to 123 // Create a list of all Tether network GUIDs serving as keys to
117 // |tether_guid_to_timer_map_|. 124 // |tether_guid_to_timer_map_|.
118 std::vector<std::string> tether_network_guids; 125 std::vector<std::string> tether_network_guids;
119 tether_network_guids.reserve(tether_guid_to_timer_map_.size()); 126 tether_network_guids.reserve(tether_guid_to_timer_map_.size());
120 for (auto& it : tether_guid_to_timer_map_) 127 for (auto& it : tether_guid_to_timer_map_)
121 tether_network_guids.push_back(it.first); 128 tether_network_guids.push_back(it.first);
(...skipping 18 matching lines...) Expand all
140 for (auto& tether_network_guid : tether_network_guids) { 147 for (auto& tether_network_guid : tether_network_guids) {
141 if (active_host_->GetTetherNetworkGuid() == tether_network_guid) { 148 if (active_host_->GetTetherNetworkGuid() == tether_network_guid) {
142 // Do not remove the active host from the cache. 149 // Do not remove the active host from the cache.
143 continue; 150 continue;
144 } 151 }
145 152
146 RemoveHostScanResult(tether_network_guid); 153 RemoveHostScanResult(tether_network_guid);
147 } 154 }
148 } 155 }
149 156
157 bool HostScanCache::DoesHostRequireSetup(
158 const std::string& tether_network_guid) {
159 return setup_required_tether_guids_.find(tether_network_guid) !=
160 setup_required_tether_guids_.end();
161 }
162
150 void HostScanCache::OnPreviouslyConnectedHostIdsChanged() { 163 void HostScanCache::OnPreviouslyConnectedHostIdsChanged() {
151 for (auto& map_entry : tether_guid_to_timer_map_) { 164 for (auto& map_entry : tether_guid_to_timer_map_) {
152 const std::string& tether_network_guid = map_entry.first; 165 const std::string& tether_network_guid = map_entry.first;
153 if (!HasConnectedToHost(tether_network_guid)) 166 if (!HasConnectedToHost(tether_network_guid))
154 continue; 167 continue;
155 168
156 // If a the current device has connected to the Tether network with GUID 169 // If a the current device has connected to the Tether network with GUID
157 // |tether_network_guid|, alert |network_state_handler_|. Note that this 170 // |tether_network_guid|, alert |network_state_handler_|. Note that this
158 // function is a no-op if it is called on a network which already has its 171 // function is a no-op if it is called on a network which already has its
159 // HasConnectedToHost property set to true. 172 // HasConnectedToHost property set to true.
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 } 231 }
219 232
220 PA_LOG(INFO) << "Timer fired for Tether network GUID " << tether_network_guid 233 PA_LOG(INFO) << "Timer fired for Tether network GUID " << tether_network_guid
221 << ". Removing stale scan result."; 234 << ". Removing stale scan result.";
222 RemoveHostScanResult(tether_network_guid); 235 RemoveHostScanResult(tether_network_guid);
223 } 236 }
224 237
225 } // namespace tether 238 } // namespace tether
226 239
227 } // namespace chromeos 240 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698