OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "content/shell/browser/layout_test/layout_test_bluetooth_adapter_provid
er.h" | 5 #include "content/shell/browser/layout_test/layout_test_bluetooth_adapter_provid
er.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 const char kTxPowerServiceUUID[] = "1804"; | 72 const char kTxPowerServiceUUID[] = "1804"; |
73 // Characteristics: | 73 // Characteristics: |
74 const char kBlacklistExcludeReadsCharacteristicUUID[] = | 74 const char kBlacklistExcludeReadsCharacteristicUUID[] = |
75 "bad1c9a2-9a5b-4015-8b60-1579bbbf2135"; | 75 "bad1c9a2-9a5b-4015-8b60-1579bbbf2135"; |
76 const char kBodySensorLocation[] = "2a38"; | 76 const char kBodySensorLocation[] = "2a38"; |
77 const char kDeviceNameUUID[] = "2a00"; | 77 const char kDeviceNameUUID[] = "2a00"; |
78 const char kHeartRateMeasurementUUID[] = "2a37"; | 78 const char kHeartRateMeasurementUUID[] = "2a37"; |
79 const char kSerialNumberStringUUID[] = "2a25"; | 79 const char kSerialNumberStringUUID[] = "2a25"; |
80 const char kPeripheralPrivacyFlagUUID[] = "2a02"; | 80 const char kPeripheralPrivacyFlagUUID[] = "2a02"; |
81 | 81 |
82 const int kDefaultTxPower = -10; // TxPower of a device broadcasting at 0.1mW. | |
83 const int kDefaultRssi = -51; // RSSI at 1m from a device broadcasting at | |
84 // 0.1mW. | |
85 | |
86 // Invokes Run() on the k-th argument of the function with no arguments. | 82 // Invokes Run() on the k-th argument of the function with no arguments. |
87 ACTION_TEMPLATE(RunCallback, | 83 ACTION_TEMPLATE(RunCallback, |
88 HAS_1_TEMPLATE_PARAMS(int, k), | 84 HAS_1_TEMPLATE_PARAMS(int, k), |
89 AND_0_VALUE_PARAMS()) { | 85 AND_0_VALUE_PARAMS()) { |
90 return ::testing::get<k>(args).Run(); | 86 return ::testing::get<k>(args).Run(); |
91 } | 87 } |
92 | 88 |
93 // Invokes Run() on the k-th argument of the function with 1 argument. | 89 // Invokes Run() on the k-th argument of the function with 1 argument. |
94 ACTION_TEMPLATE(RunCallback, | 90 ACTION_TEMPLATE(RunCallback, |
95 HAS_1_TEMPLATE_PARAMS(int, k), | 91 HAS_1_TEMPLATE_PARAMS(int, k), |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 return GetFailingConnectionsAdapter(); | 162 return GetFailingConnectionsAdapter(); |
167 if (fake_adapter_name == "FailingGATTOperationsAdapter") | 163 if (fake_adapter_name == "FailingGATTOperationsAdapter") |
168 return GetFailingGATTOperationsAdapter(); | 164 return GetFailingGATTOperationsAdapter(); |
169 if (fake_adapter_name == "SecondDiscoveryFindsHeartRateAdapter") | 165 if (fake_adapter_name == "SecondDiscoveryFindsHeartRateAdapter") |
170 return GetSecondDiscoveryFindsHeartRateAdapter(); | 166 return GetSecondDiscoveryFindsHeartRateAdapter(); |
171 if (fake_adapter_name == "DelayedServicesDiscoveryAdapter") | 167 if (fake_adapter_name == "DelayedServicesDiscoveryAdapter") |
172 return GetDelayedServicesDiscoveryAdapter(); | 168 return GetDelayedServicesDiscoveryAdapter(); |
173 if (fake_adapter_name.empty()) | 169 if (fake_adapter_name.empty()) |
174 return nullptr; | 170 return nullptr; |
175 | 171 |
176 if (base::StartsWith(fake_adapter_name, "PowerValueAdapter", | |
177 base::CompareCase::SENSITIVE)) { | |
178 std::vector<StringPiece> args = | |
179 base::SplitStringPiece(fake_adapter_name, ":", base::KEEP_WHITESPACE, | |
180 base::SPLIT_WANT_NONEMPTY); | |
181 DCHECK(args[0] == "PowerValueAdapter"); | |
182 DCHECK(args.size() == 3) << "Should contain AdapterName:TxPower:RSSI"; | |
183 | |
184 int tx_power; | |
185 base::StringToInt(args[1], &tx_power); | |
186 DCHECK(tx_power >= INT8_MIN && tx_power <= INT8_MAX) | |
187 << "Must be between [-128, 127]"; | |
188 int rssi; | |
189 base::StringToInt(args[2], &rssi); | |
190 DCHECK(rssi >= INT8_MIN && rssi <= INT8_MAX) | |
191 << "Must be between [-128, 127]"; | |
192 return GetPowerValueAdapter(tx_power, rssi); | |
193 } | |
194 | |
195 if (base::StartsWith(fake_adapter_name, "PowerPresenceAdapter", | |
196 base::CompareCase::SENSITIVE)) { | |
197 std::vector<StringPiece> args = | |
198 base::SplitStringPiece(fake_adapter_name, ":", base::KEEP_WHITESPACE, | |
199 base::SPLIT_WANT_NONEMPTY); | |
200 DCHECK(args[0] == "PowerPresenceAdapter"); | |
201 DCHECK(args.size() == 3) | |
202 << "Should contain AdapterName:TxPowerPresent:RSSIPResent"; | |
203 DCHECK(args[1] == "true" || args[1] == "false"); | |
204 DCHECK(args[2] == "true" || args[2] == "false"); | |
205 | |
206 return GetPowerPresenceAdapter(args[1] == "true" /* tx_power_present */, | |
207 args[2] == "true" /* rssi_present */); | |
208 } | |
209 | |
210 NOTREACHED() << fake_adapter_name; | 172 NOTREACHED() << fake_adapter_name; |
211 return nullptr; | 173 return nullptr; |
212 } | 174 } |
213 | 175 |
214 // Adapters | 176 // Adapters |
215 | 177 |
216 // static | 178 // static |
217 scoped_refptr<NiceMockBluetoothAdapter> | 179 scoped_refptr<NiceMockBluetoothAdapter> |
218 LayoutTestBluetoothAdapterProvider::GetBaseAdapter() { | 180 LayoutTestBluetoothAdapterProvider::GetBaseAdapter() { |
219 scoped_refptr<NiceMockBluetoothAdapter> adapter( | 181 scoped_refptr<NiceMockBluetoothAdapter> adapter( |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 | 276 |
315 ON_CALL(*adapter, StartDiscoverySessionWithFilterRaw(_, _, _)) | 277 ON_CALL(*adapter, StartDiscoverySessionWithFilterRaw(_, _, _)) |
316 .WillByDefault(RunCallbackWithResult<1 /* success_callback */>( | 278 .WillByDefault(RunCallbackWithResult<1 /* success_callback */>( |
317 []() { return GetDiscoverySession(); })); | 279 []() { return GetDiscoverySession(); })); |
318 | 280 |
319 return adapter; | 281 return adapter; |
320 } | 282 } |
321 | 283 |
322 // static | 284 // static |
323 scoped_refptr<NiceMockBluetoothAdapter> | 285 scoped_refptr<NiceMockBluetoothAdapter> |
324 LayoutTestBluetoothAdapterProvider::GetPowerValueAdapter(int8_t tx_power, | |
325 int8_t rssi) { | |
326 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); | |
327 std::unique_ptr<NiceMockBluetoothDevice> device( | |
328 GetHeartRateDevice(adapter.get())); | |
329 | |
330 ON_CALL(*device, GetInquiryTxPower()).WillByDefault(Return(tx_power)); | |
331 ON_CALL(*device, GetInquiryRSSI()).WillByDefault(Return(rssi)); | |
332 | |
333 adapter->AddMockDevice(std::move(device)); | |
334 | |
335 return adapter; | |
336 } | |
337 | |
338 // static | |
339 scoped_refptr<NiceMockBluetoothAdapter> | |
340 LayoutTestBluetoothAdapterProvider::GetPowerPresenceAdapter( | |
341 bool tx_power_present, | |
342 bool rssi_present) { | |
343 // TODO(ortuno): RSSI Unknown and Tx Power Unknown should have different | |
344 // values. Add kUnknownTxPower when implemented: http://crbug.com/551572 | |
345 int tx_power = | |
346 tx_power_present ? kDefaultTxPower : BluetoothDevice::kUnknownPower; | |
347 int rssi = rssi_present ? kDefaultRssi : BluetoothDevice::kUnknownPower; | |
348 | |
349 return GetPowerValueAdapter(tx_power, rssi); | |
350 } | |
351 | |
352 // static | |
353 scoped_refptr<NiceMockBluetoothAdapter> | |
354 LayoutTestBluetoothAdapterProvider::GetGlucoseHeartRateAdapter() { | 286 LayoutTestBluetoothAdapterProvider::GetGlucoseHeartRateAdapter() { |
355 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); | 287 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); |
356 | 288 |
357 adapter->AddMockDevice(GetHeartRateDevice(adapter.get())); | 289 adapter->AddMockDevice(GetHeartRateDevice(adapter.get())); |
358 adapter->AddMockDevice(GetGlucoseDevice(adapter.get())); | 290 adapter->AddMockDevice(GetGlucoseDevice(adapter.get())); |
359 | 291 |
360 return adapter; | 292 return adapter; |
361 } | 293 } |
362 | 294 |
363 // static | 295 // static |
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1030 return BluetoothUUID(); | 962 return BluetoothUUID(); |
1031 } | 963 } |
1032 | 964 |
1033 // static | 965 // static |
1034 std::string LayoutTestBluetoothAdapterProvider::makeMACAddress(uint64_t addr) { | 966 std::string LayoutTestBluetoothAdapterProvider::makeMACAddress(uint64_t addr) { |
1035 return BluetoothDevice::CanonicalizeAddress( | 967 return BluetoothDevice::CanonicalizeAddress( |
1036 base::StringPrintf("%012" PRIx64, addr)); | 968 base::StringPrintf("%012" PRIx64, addr)); |
1037 } | 969 } |
1038 | 970 |
1039 } // namespace content | 971 } // namespace content |
OLD | NEW |