| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chromeos/components/tether/fake_ble_scanner.h" |
| |
| #include <algorithm> |
| |
| #include "base/stl_util.h" |
| |
| namespace chromeos { |
| |
| namespace tether { |
| |
| FakeBleScanner::FakeBleScanner(bool automatically_update_discovery_session) |
| : automatically_update_discovery_session_( |
| automatically_update_discovery_session) {} |
| |
| FakeBleScanner::~FakeBleScanner() = default; |
| |
| void FakeBleScanner::NotifyReceivedAdvertisementFromDevice( |
| cryptauth::RemoteDeviceRef remote_device, |
| device::BluetoothDevice* bluetooth_device, |
| bool is_background_advertisement) { |
| BleScanner::NotifyReceivedAdvertisementFromDevice( |
| remote_device, bluetooth_device, is_background_advertisement); |
| } |
| |
| void FakeBleScanner::NotifyDiscoverySessionStateChanged( |
| bool discovery_session_active) { |
| BleScanner::NotifyDiscoverySessionStateChanged(discovery_session_active); |
| } |
| |
| bool FakeBleScanner::RegisterScanFilterForDevice(const std::string& device_id) { |
| if (should_fail_to_register_) |
| return false; |
| |
| if (base::ContainsValue(registered_device_ids_, device_id)) |
| return false; |
| |
| bool was_empty = registered_device_ids_.empty(); |
| registered_device_ids_.push_back(device_id); |
| |
| if (was_empty && automatically_update_discovery_session_) { |
| is_discovery_session_active_ = true; |
| NotifyDiscoverySessionStateChanged(true); |
| } |
| |
| return true; |
| } |
| |
| bool FakeBleScanner::UnregisterScanFilterForDevice( |
| const std::string& device_id) { |
| if (!base::ContainsValue(registered_device_ids_, device_id)) |
| return false; |
| |
| base::Erase(registered_device_ids_, device_id); |
| |
| if (automatically_update_discovery_session_ && |
| registered_device_ids_.empty()) { |
| is_discovery_session_active_ = false; |
| NotifyDiscoverySessionStateChanged(false); |
| } |
| |
| return true; |
| } |
| |
| bool FakeBleScanner::ShouldDiscoverySessionBeActive() { |
| return !registered_device_ids_.empty(); |
| } |
| |
| bool FakeBleScanner::IsDiscoverySessionActive() { |
| return is_discovery_session_active_; |
| } |
| |
| } // namespace tether |
| |
| } // namespace chromeos |