Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 <memory> | 7 #include <memory> |
| 8 #include <unordered_map> | 8 #include <unordered_map> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 50 const int kTetherBatteryPercentage0 = 20; | 50 const int kTetherBatteryPercentage0 = 20; |
| 51 const int kTetherBatteryPercentage1 = 40; | 51 const int kTetherBatteryPercentage1 = 40; |
| 52 const int kTetherBatteryPercentage2 = 60; | 52 const int kTetherBatteryPercentage2 = 60; |
| 53 const int kTetherBatteryPercentage3 = 80; | 53 const int kTetherBatteryPercentage3 = 80; |
| 54 | 54 |
| 55 const int kTetherSignalStrength0 = 25; | 55 const int kTetherSignalStrength0 = 25; |
| 56 const int kTetherSignalStrength1 = 50; | 56 const int kTetherSignalStrength1 = 50; |
| 57 const int kTetherSignalStrength2 = 75; | 57 const int kTetherSignalStrength2 = 75; |
| 58 const int kTetherSignalStrength3 = 100; | 58 const int kTetherSignalStrength3 = 100; |
| 59 | 59 |
| 60 const bool kTetherSetupRequired0 = true; | |
| 61 const bool kTetherSetupRequired1 = false; | |
| 62 const bool kTetherSetupRequired2 = true; | |
| 63 const bool kTetherSetupRequired3 = false; | |
| 64 | |
| 60 // MockTimer which invokes a callback in its destructor. | 65 // MockTimer which invokes a callback in its destructor. |
| 61 class ExtendedMockTimer : public base::MockTimer { | 66 class ExtendedMockTimer : public base::MockTimer { |
| 62 public: | 67 public: |
| 63 explicit ExtendedMockTimer(const base::Closure& destructor_callback) | 68 explicit ExtendedMockTimer(const base::Closure& destructor_callback) |
| 64 : base::MockTimer(true /* retain_user_task */, false /* is_repeating */), | 69 : base::MockTimer(true /* retain_user_task */, false /* is_repeating */), |
| 65 destructor_callback_(destructor_callback) {} | 70 destructor_callback_(destructor_callback) {} |
| 66 | 71 |
| 67 ~ExtendedMockTimer() override { destructor_callback_.Run(); } | 72 ~ExtendedMockTimer() override { destructor_callback_.Run(); } |
| 68 | 73 |
| 69 private: | 74 private: |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 197 // at the top of this test file. | 202 // at the top of this test file. |
| 198 void SetCacheScanResultForDeviceIndex(int32_t index) { | 203 void SetCacheScanResultForDeviceIndex(int32_t index) { |
| 199 // There are 4 sets of test constants. | 204 // There are 4 sets of test constants. |
| 200 ASSERT_TRUE(index >= 0 && index <= 3); | 205 ASSERT_TRUE(index >= 0 && index <= 3); |
| 201 | 206 |
| 202 std::string tether_network_guid; | 207 std::string tether_network_guid; |
| 203 std::string device_name; | 208 std::string device_name; |
| 204 std::string carrier; | 209 std::string carrier; |
| 205 int battery_percentage; | 210 int battery_percentage; |
| 206 int signal_strength; | 211 int signal_strength; |
| 212 bool setup_required; | |
| 207 | 213 |
| 208 switch (index) { | 214 switch (index) { |
| 209 case 0: | 215 case 0: |
| 210 tether_network_guid = kTetherGuid0; | 216 tether_network_guid = kTetherGuid0; |
| 211 device_name = kTetherDeviceName0; | 217 device_name = kTetherDeviceName0; |
| 212 carrier = kTetherCarrier0; | 218 carrier = kTetherCarrier0; |
| 213 battery_percentage = kTetherBatteryPercentage0; | 219 battery_percentage = kTetherBatteryPercentage0; |
| 214 signal_strength = kTetherSignalStrength0; | 220 signal_strength = kTetherSignalStrength0; |
| 221 setup_required = kTetherSetupRequired0; | |
| 215 break; | 222 break; |
| 216 case 1: | 223 case 1: |
| 217 tether_network_guid = kTetherGuid1; | 224 tether_network_guid = kTetherGuid1; |
| 218 device_name = kTetherDeviceName1; | 225 device_name = kTetherDeviceName1; |
| 219 carrier = kTetherCarrier1; | 226 carrier = kTetherCarrier1; |
| 220 battery_percentage = kTetherBatteryPercentage1; | 227 battery_percentage = kTetherBatteryPercentage1; |
| 221 signal_strength = kTetherSignalStrength1; | 228 signal_strength = kTetherSignalStrength1; |
| 229 setup_required = kTetherSetupRequired1; | |
| 222 break; | 230 break; |
| 223 case 2: | 231 case 2: |
| 224 tether_network_guid = kTetherGuid2; | 232 tether_network_guid = kTetherGuid2; |
| 225 device_name = kTetherDeviceName2; | 233 device_name = kTetherDeviceName2; |
| 226 carrier = kTetherCarrier2; | 234 carrier = kTetherCarrier2; |
| 227 battery_percentage = kTetherBatteryPercentage2; | 235 battery_percentage = kTetherBatteryPercentage2; |
| 228 signal_strength = kTetherSignalStrength2; | 236 signal_strength = kTetherSignalStrength2; |
| 237 setup_required = kTetherSetupRequired2; | |
| 229 break; | 238 break; |
| 230 case 3: | 239 case 3: |
| 231 tether_network_guid = kTetherGuid3; | 240 tether_network_guid = kTetherGuid3; |
| 232 device_name = kTetherDeviceName3; | 241 device_name = kTetherDeviceName3; |
| 233 carrier = kTetherCarrier3; | 242 carrier = kTetherCarrier3; |
| 234 battery_percentage = kTetherBatteryPercentage3; | 243 battery_percentage = kTetherBatteryPercentage3; |
| 235 signal_strength = kTetherSignalStrength3; | 244 signal_strength = kTetherSignalStrength3; |
| 245 setup_required = kTetherSetupRequired3; | |
| 236 break; | 246 break; |
| 237 default: | 247 default: |
| 238 NOTREACHED(); | 248 NOTREACHED(); |
| 239 // Set values for |battery_percentage| and |signal_strength| here to | 249 // Set values for |battery_percentage|, |signal_strength| and |
| 240 // prevent a compiler warning which says that they may be unset at this | 250 // setup_required here to prevent a compiler warning which says that |
|
Kyle Horimoto
2017/05/31 23:01:19
|setup_required|
Ryan Hansberry
2017/06/01 01:07:51
Done.
| |
| 241 // point. | 251 // they may be unset at this point. |
| 242 battery_percentage = 0; | 252 battery_percentage = 0; |
| 243 signal_strength = 0; | 253 signal_strength = 0; |
| 254 setup_required = false; | |
| 244 break; | 255 break; |
| 245 } | 256 } |
| 246 | 257 |
| 247 SetHostScanResult(tether_network_guid, device_name, carrier, | 258 SetHostScanResult(tether_network_guid, device_name, carrier, |
| 248 battery_percentage, signal_strength); | 259 battery_percentage, signal_strength, setup_required); |
| 249 } | 260 } |
| 250 | 261 |
| 251 void SetHostScanResult(const std::string& tether_network_guid, | 262 void SetHostScanResult(const std::string& tether_network_guid, |
| 252 const std::string& device_name, | 263 const std::string& device_name, |
| 253 const std::string& carrier, | 264 const std::string& carrier, |
| 254 int battery_percentage, | 265 int battery_percentage, |
| 255 int signal_strength) { | 266 int signal_strength, |
| 267 bool setup_required) { | |
| 256 test_timer_factory_->set_tether_network_guid_for_next_timer( | 268 test_timer_factory_->set_tether_network_guid_for_next_timer( |
| 257 tether_network_guid); | 269 tether_network_guid); |
| 258 host_scan_cache_->SetHostScanResult(tether_network_guid, device_name, | 270 host_scan_cache_->SetHostScanResult(tether_network_guid, device_name, |
| 259 carrier, battery_percentage, | 271 carrier, battery_percentage, |
| 260 signal_strength); | 272 signal_strength, setup_required); |
| 261 expected_cache_->SetHostScanResult(tether_network_guid, device_name, | 273 expected_cache_->SetHostScanResult(tether_network_guid, device_name, |
| 262 carrier, battery_percentage, | 274 carrier, battery_percentage, |
| 263 signal_strength); | 275 signal_strength, setup_required); |
| 264 } | 276 } |
| 265 | 277 |
| 266 void RemoveHostScanResult(const std::string& tether_network_guid) { | 278 void RemoveHostScanResult(const std::string& tether_network_guid) { |
| 267 host_scan_cache_->RemoveHostScanResult(tether_network_guid); | 279 host_scan_cache_->RemoveHostScanResult(tether_network_guid); |
| 268 expected_cache_->RemoveHostScanResult(tether_network_guid); | 280 expected_cache_->RemoveHostScanResult(tether_network_guid); |
| 269 } | 281 } |
| 270 | 282 |
| 271 void ClearCacheExceptForActiveHost() { | 283 void ClearCacheExceptForActiveHost() { |
| 272 host_scan_cache_->ClearCacheExceptForActiveHost(); | 284 host_scan_cache_->ClearCacheExceptForActiveHost(); |
| 273 expected_cache_->ClearCacheExceptForActiveHost(); | 285 expected_cache_->ClearCacheExceptForActiveHost(); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 292 // corresponding entry in NetworkStateHandler. | 304 // corresponding entry in NetworkStateHandler. |
| 293 const NetworkState* tether_network_state = | 305 const NetworkState* tether_network_state = |
| 294 network_state_handler()->GetNetworkStateFromGuid(tether_network_guid); | 306 network_state_handler()->GetNetworkStateFromGuid(tether_network_guid); |
| 295 ASSERT_TRUE(tether_network_state); | 307 ASSERT_TRUE(tether_network_state); |
| 296 EXPECT_EQ(cache_entry.device_name, tether_network_state->name()); | 308 EXPECT_EQ(cache_entry.device_name, tether_network_state->name()); |
| 297 EXPECT_EQ(cache_entry.carrier, tether_network_state->carrier()); | 309 EXPECT_EQ(cache_entry.carrier, tether_network_state->carrier()); |
| 298 EXPECT_EQ(cache_entry.battery_percentage, | 310 EXPECT_EQ(cache_entry.battery_percentage, |
| 299 tether_network_state->battery_percentage()); | 311 tether_network_state->battery_percentage()); |
| 300 EXPECT_EQ(cache_entry.signal_strength, | 312 EXPECT_EQ(cache_entry.signal_strength, |
| 301 tether_network_state->signal_strength()); | 313 tether_network_state->signal_strength()); |
| 314 EXPECT_EQ(cache_entry.setup_required, | |
| 315 host_scan_cache_->DoesHostRequireSetup(tether_network_guid)); | |
| 302 EXPECT_EQ(HasConnectedToHost(tether_network_guid), | 316 EXPECT_EQ(HasConnectedToHost(tether_network_guid), |
| 303 tether_network_state->tether_has_connected_to_host()); | 317 tether_network_state->tether_has_connected_to_host()); |
| 304 | 318 |
| 305 // Ensure that each entry has an actively-running Timer. | 319 // Ensure that each entry has an actively-running Timer. |
| 306 auto timer_map_it = | 320 auto timer_map_it = |
| 307 test_timer_factory_->tether_network_guid_to_timer_map().begin(); | 321 test_timer_factory_->tether_network_guid_to_timer_map().begin(); |
| 308 EXPECT_NE(timer_map_it, | 322 EXPECT_NE(timer_map_it, |
| 309 test_timer_factory_->tether_network_guid_to_timer_map().end()); | 323 test_timer_factory_->tether_network_guid_to_timer_map().end()); |
| 310 EXPECT_TRUE(timer_map_it->second->IsRunning()); | 324 EXPECT_TRUE(timer_map_it->second->IsRunning()); |
| 311 } | 325 } |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 365 } | 379 } |
| 366 | 380 |
| 367 TEST_F(HostScanCacheTest, TestSetScanResultThenUpdateAndRemove) { | 381 TEST_F(HostScanCacheTest, TestSetScanResultThenUpdateAndRemove) { |
| 368 SetCacheScanResultForDeviceIndex(0); | 382 SetCacheScanResultForDeviceIndex(0); |
| 369 EXPECT_EQ(1u, expected_cache_->size()); | 383 EXPECT_EQ(1u, expected_cache_->size()); |
| 370 VerifyCacheMatchesNetworkStack(); | 384 VerifyCacheMatchesNetworkStack(); |
| 371 | 385 |
| 372 // Change the fields for tether network with GUID |kTetherGuid0| to the | 386 // Change the fields for tether network with GUID |kTetherGuid0| to the |
| 373 // fields corresponding to |kTetherGuid1|. | 387 // fields corresponding to |kTetherGuid1|. |
| 374 SetHostScanResult(kTetherGuid0, kTetherDeviceName0, kTetherCarrier1, | 388 SetHostScanResult(kTetherGuid0, kTetherDeviceName0, kTetherCarrier1, |
| 375 kTetherBatteryPercentage1, kTetherSignalStrength1); | 389 kTetherBatteryPercentage1, kTetherSignalStrength1, |
| 390 kTetherSetupRequired1); | |
| 376 EXPECT_EQ(1u, expected_cache_->size()); | 391 EXPECT_EQ(1u, expected_cache_->size()); |
| 377 VerifyCacheMatchesNetworkStack(); | 392 VerifyCacheMatchesNetworkStack(); |
| 378 | 393 |
| 379 // Now, remove that result. | 394 // Now, remove that result. |
| 380 RemoveHostScanResult(kTetherGuid0); | 395 RemoveHostScanResult(kTetherGuid0); |
| 381 EXPECT_TRUE(expected_cache_->empty()); | 396 EXPECT_TRUE(expected_cache_->empty()); |
| 382 VerifyCacheMatchesNetworkStack(); | 397 VerifyCacheMatchesNetworkStack(); |
| 383 } | 398 } |
| 384 | 399 |
| 385 TEST_F(HostScanCacheTest, TestSetScanResult_SetActiveHost_ThenClear) { | 400 TEST_F(HostScanCacheTest, TestSetScanResult_SetActiveHost_ThenClear) { |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 438 | 453 |
| 439 // Simulate a connection to device 1. | 454 // Simulate a connection to device 1. |
| 440 SetActiveHost(kTetherGuid1); | 455 SetActiveHost(kTetherGuid1); |
| 441 SetHasConnectedToHost(kTetherGuid1); | 456 SetHasConnectedToHost(kTetherGuid1); |
| 442 VerifyCacheMatchesNetworkStack(); | 457 VerifyCacheMatchesNetworkStack(); |
| 443 } | 458 } |
| 444 | 459 |
| 445 } // namespace tether | 460 } // namespace tether |
| 446 | 461 |
| 447 } // namespace chromeos | 462 } // namespace chromeos |
| OLD | NEW |