OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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_scanner.h" | 5 #include "chromeos/components/tether/host_scanner.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <memory> | 8 #include <memory> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/memory/ptr_util.h" | 11 #include "base/memory/ptr_util.h" |
12 #include "base/run_loop.h" | |
13 #include "base/test/scoped_task_environment.h" | |
12 #include "chromeos/components/tether/fake_ble_connection_manager.h" | 14 #include "chromeos/components/tether/fake_ble_connection_manager.h" |
15 #include "chromeos/components/tether/fake_notification_presenter.h" | |
13 #include "chromeos/components/tether/fake_tether_host_fetcher.h" | 16 #include "chromeos/components/tether/fake_tether_host_fetcher.h" |
14 #include "chromeos/components/tether/host_scan_device_prioritizer.h" | 17 #include "chromeos/components/tether/host_scan_device_prioritizer.h" |
18 #include "chromeos/dbus/dbus_thread_manager.h" | |
19 #include "chromeos/network/network_state.h" | |
20 #include "chromeos/network/network_state_handler.h" | |
21 #include "chromeos/network/network_state_test.h" | |
15 #include "components/cryptauth/remote_device_test_util.h" | 22 #include "components/cryptauth/remote_device_test_util.h" |
16 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
17 | 24 |
18 namespace chromeos { | 25 namespace chromeos { |
19 | 26 |
20 namespace tether { | 27 namespace tether { |
21 | 28 |
22 namespace { | 29 namespace { |
23 | 30 |
24 class FakeHostScanDevicePrioritizer : public HostScanDevicePrioritizer { | 31 class FakeHostScanDevicePrioritizer : public HostScanDevicePrioritizer { |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
112 // Require set-up for odd-numbered device indices. | 119 // Require set-up for odd-numbered device indices. |
113 bool set_up_required = i % 2 == 0; | 120 bool set_up_required = i % 2 == 0; |
114 scanned_device_infos.push_back(HostScannerOperation::ScannedDeviceInfo( | 121 scanned_device_infos.push_back(HostScannerOperation::ScannedDeviceInfo( |
115 remote_devices[i], device_status, set_up_required)); | 122 remote_devices[i], device_status, set_up_required)); |
116 } | 123 } |
117 return scanned_device_infos; | 124 return scanned_device_infos; |
118 } | 125 } |
119 | 126 |
120 } // namespace | 127 } // namespace |
121 | 128 |
122 class HostScannerTest : public testing::Test { | 129 class HostScannerTest : public NetworkStateTest { |
123 protected: | 130 protected: |
124 HostScannerTest() | 131 HostScannerTest() |
125 : test_devices_(cryptauth::GenerateTestRemoteDevices(4)), | 132 : test_devices_(cryptauth::GenerateTestRemoteDevices(4)), |
126 test_scanned_device_infos(CreateFakeScannedDeviceInfos(test_devices_)) { | 133 test_scanned_device_infos(CreateFakeScannedDeviceInfos(test_devices_)) { |
127 } | 134 } |
128 | 135 |
129 void SetUp() override { | 136 void SetUp() override { |
137 DBusThreadManager::Initialize(); | |
138 NetworkStateTest::SetUp(); | |
139 | |
130 scanned_device_infos_so_far_.clear(); | 140 scanned_device_infos_so_far_.clear(); |
131 | 141 |
132 fake_tether_host_fetcher_ = base::MakeUnique<FakeTetherHostFetcher>( | 142 fake_tether_host_fetcher_ = base::MakeUnique<FakeTetherHostFetcher>( |
133 test_devices_, false /* synchronously_reply_with_results */); | 143 test_devices_, false /* synchronously_reply_with_results */); |
134 fake_ble_connection_manager_ = base::MakeUnique<FakeBleConnectionManager>(); | 144 fake_ble_connection_manager_ = base::MakeUnique<FakeBleConnectionManager>(); |
135 fake_host_scan_device_prioritizer_ = | 145 fake_host_scan_device_prioritizer_ = |
136 base::MakeUnique<FakeHostScanDevicePrioritizer>(); | 146 base::MakeUnique<FakeHostScanDevicePrioritizer>(); |
137 | 147 |
138 fake_host_scanner_operation_factory_ = | 148 fake_host_scanner_operation_factory_ = |
139 base::WrapUnique(new FakeHostScannerOperationFactory(test_devices_)); | 149 base::WrapUnique(new FakeHostScannerOperationFactory(test_devices_)); |
140 HostScannerOperation::Factory::SetInstanceForTesting( | 150 HostScannerOperation::Factory::SetInstanceForTesting( |
141 fake_host_scanner_operation_factory_.get()); | 151 fake_host_scanner_operation_factory_.get()); |
142 | 152 |
153 fake_notification_presenter_ = | |
154 base::MakeUnique<FakeNotificationPresenter>(); | |
155 | |
143 host_scanner_ = base::MakeUnique<HostScanner>( | 156 host_scanner_ = base::MakeUnique<HostScanner>( |
144 fake_tether_host_fetcher_.get(), fake_ble_connection_manager_.get(), | 157 fake_tether_host_fetcher_.get(), fake_ble_connection_manager_.get(), |
145 fake_host_scan_device_prioritizer_.get()); | 158 fake_host_scan_device_prioritizer_.get(), network_state_handler(), |
159 fake_notification_presenter_.get()); | |
160 } | |
161 | |
162 void TearDown() override { | |
163 ShutdownNetworkState(); | |
164 NetworkStateTest::TearDown(); | |
165 DBusThreadManager::Shutdown(); | |
146 } | 166 } |
147 | 167 |
148 // Causes |fake_operation| to receive the scan result in | 168 // Causes |fake_operation| to receive the scan result in |
149 // |test_scanned_device_infos| vector at the index |test_device_index| with | 169 // |test_scanned_device_infos| vector at the index |test_device_index| with |
150 // the "final result" value of |is_final_scan_result|. | 170 // the "final result" value of |is_final_scan_result|. |
151 void ReceiveScanResultAndVerifySuccess( | 171 void ReceiveScanResultAndVerifySuccess( |
152 FakeHostScannerOperation* fake_operation, | 172 FakeHostScannerOperation* fake_operation, |
153 size_t test_device_index, | 173 size_t test_device_index, |
154 bool is_final_scan_result) { | 174 bool is_final_scan_result) { |
155 scanned_device_infos_so_far_.push_back( | 175 scanned_device_infos_so_far_.push_back( |
156 test_scanned_device_infos[test_device_index]); | 176 test_scanned_device_infos[test_device_index]); |
157 fake_operation->SendScannedDeviceListUpdate(scanned_device_infos_so_far_, | 177 fake_operation->SendScannedDeviceListUpdate(scanned_device_infos_so_far_, |
158 is_final_scan_result); | 178 is_final_scan_result); |
159 EXPECT_EQ(scanned_device_infos_so_far_, | 179 EXPECT_EQ(scanned_device_infos_so_far_, |
160 host_scanner_->most_recent_scan_results()); | 180 host_scanner_->most_recent_scan_results()); |
181 | |
182 if (scanned_device_infos_so_far_.size() == 1) { | |
183 EXPECT_EQ(FakeNotificationPresenter::PotentialHotspotNotificationState:: | |
184 SINGLE_HOTSPOT_NEARBY_SHOWN, | |
185 fake_notification_presenter_->potential_hotspot_state()); | |
186 } else { | |
187 EXPECT_EQ(FakeNotificationPresenter::PotentialHotspotNotificationState:: | |
188 MULTIPLE_HOTSPOTS_NEARBY_SHOWN, | |
189 fake_notification_presenter_->potential_hotspot_state()); | |
190 } | |
191 | |
192 NetworkStateHandler::NetworkStateList tether_networks; | |
193 network_state_handler()->GetTetherNetworkList(0 /* no limit */, | |
194 &tether_networks); | |
195 EXPECT_EQ(scanned_device_infos_so_far_.size(), tether_networks.size()); | |
196 for (auto scanned_device_info : scanned_device_infos_so_far_) { | |
Kyle Horimoto
2017/04/07 01:08:08
auto&
Ryan Hansberry
2017/04/07 01:25:04
Done.
| |
197 cryptauth::RemoteDevice remote_device = scanned_device_info.remote_device; | |
198 const NetworkState* tether_network = | |
199 network_state_handler()->GetNetworkStateFromGuid( | |
200 remote_device.GetDeviceId()); | |
201 ASSERT_TRUE(tether_network); | |
202 EXPECT_EQ(remote_device.name, tether_network->name()); | |
203 } | |
161 } | 204 } |
162 | 205 |
206 base::test::ScopedTaskEnvironment scoped_task_environment_; | |
207 | |
163 const std::vector<cryptauth::RemoteDevice> test_devices_; | 208 const std::vector<cryptauth::RemoteDevice> test_devices_; |
164 const std::vector<HostScannerOperation::ScannedDeviceInfo> | 209 const std::vector<HostScannerOperation::ScannedDeviceInfo> |
165 test_scanned_device_infos; | 210 test_scanned_device_infos; |
166 | 211 |
167 std::unique_ptr<FakeTetherHostFetcher> fake_tether_host_fetcher_; | 212 std::unique_ptr<FakeTetherHostFetcher> fake_tether_host_fetcher_; |
168 std::unique_ptr<FakeBleConnectionManager> fake_ble_connection_manager_; | 213 std::unique_ptr<FakeBleConnectionManager> fake_ble_connection_manager_; |
169 std::unique_ptr<HostScanDevicePrioritizer> fake_host_scan_device_prioritizer_; | 214 std::unique_ptr<HostScanDevicePrioritizer> fake_host_scan_device_prioritizer_; |
170 | 215 |
171 std::unique_ptr<FakeHostScannerOperationFactory> | 216 std::unique_ptr<FakeHostScannerOperationFactory> |
172 fake_host_scanner_operation_factory_; | 217 fake_host_scanner_operation_factory_; |
173 | 218 |
174 std::vector<HostScannerOperation::ScannedDeviceInfo> | 219 std::vector<HostScannerOperation::ScannedDeviceInfo> |
175 scanned_device_infos_so_far_; | 220 scanned_device_infos_so_far_; |
176 | 221 |
177 std::unique_ptr<HostScanner> host_scanner_; | 222 std::unique_ptr<HostScanner> host_scanner_; |
178 | 223 |
224 std::unique_ptr<FakeNotificationPresenter> fake_notification_presenter_; | |
225 | |
179 private: | 226 private: |
180 DISALLOW_COPY_AND_ASSIGN(HostScannerTest); | 227 DISALLOW_COPY_AND_ASSIGN(HostScannerTest); |
181 }; | 228 }; |
182 | 229 |
183 TEST_F(HostScannerTest, TestScan_ResultsFromAllDevices) { | 230 TEST_F(HostScannerTest, TestScan_ResultsFromAllDevices) { |
184 EXPECT_FALSE(host_scanner_->IsScanActive()); | 231 EXPECT_FALSE(host_scanner_->IsScanActive()); |
185 host_scanner_->StartScan(); | 232 host_scanner_->StartScan(); |
186 EXPECT_TRUE(host_scanner_->IsScanActive()); | 233 EXPECT_TRUE(host_scanner_->IsScanActive()); |
187 | 234 |
188 fake_tether_host_fetcher_->InvokePendingCallbacks(); | 235 fake_tether_host_fetcher_->InvokePendingCallbacks(); |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
302 ->SendScannedDeviceListUpdate(scanned_device_infos_so_far_, | 349 ->SendScannedDeviceListUpdate(scanned_device_infos_so_far_, |
303 true /* is_final_scan_result */); | 350 true /* is_final_scan_result */); |
304 EXPECT_EQ(scanned_device_infos_so_far_, | 351 EXPECT_EQ(scanned_device_infos_so_far_, |
305 host_scanner_->most_recent_scan_results()); | 352 host_scanner_->most_recent_scan_results()); |
306 EXPECT_FALSE(host_scanner_->IsScanActive()); | 353 EXPECT_FALSE(host_scanner_->IsScanActive()); |
307 } | 354 } |
308 | 355 |
309 } // namespace tether | 356 } // namespace tether |
310 | 357 |
311 } // namespace cryptauth | 358 } // namespace cryptauth |
OLD | NEW |