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

Side by Side Diff: chromeos/components/tether/ble_scanner.h

Issue 2803153002: [CrOS Tether] Refactor BleScanner so that it takes a BluetoothAdapter in its constructor instead of… (Closed)
Patch Set: Created 3 years, 8 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 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 #ifndef CHROMEOS_COMPONENTS_BLE_SCANNER_H_ 5 #ifndef CHROMEOS_COMPONENTS_BLE_SCANNER_H_
6 #define CHROMEOS_COMPONENTS_BLE_SCANNER_H_ 6 #define CHROMEOS_COMPONENTS_BLE_SCANNER_H_
7 7
8 #include <map> 8 #include <map>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 15 matching lines...) Expand all
26 26
27 class BleScanner : public device::BluetoothAdapter::Observer { 27 class BleScanner : public device::BluetoothAdapter::Observer {
28 public: 28 public:
29 class Observer { 29 class Observer {
30 public: 30 public:
31 virtual void OnReceivedAdvertisementFromDevice( 31 virtual void OnReceivedAdvertisementFromDevice(
32 const std::string& device_address, 32 const std::string& device_address,
33 cryptauth::RemoteDevice remote_device) = 0; 33 cryptauth::RemoteDevice remote_device) = 0;
34 }; 34 };
35 35
36 BleScanner(const LocalDeviceDataProvider* local_device_data_provider); 36 BleScanner(scoped_refptr<device::BluetoothAdapter> adapter,
37 const LocalDeviceDataProvider* local_device_data_provider);
37 ~BleScanner() override; 38 ~BleScanner() override;
38 39
39 virtual bool RegisterScanFilterForDevice( 40 virtual bool RegisterScanFilterForDevice(
40 const cryptauth::RemoteDevice& remote_device); 41 const cryptauth::RemoteDevice& remote_device);
41 virtual bool UnregisterScanFilterForDevice( 42 virtual bool UnregisterScanFilterForDevice(
42 const cryptauth::RemoteDevice& remote_device); 43 const cryptauth::RemoteDevice& remote_device);
43 44
44 bool IsDeviceRegistered(const std::string& device_id); 45 bool IsDeviceRegistered(const std::string& device_id);
45 46
46 void AddObserver(Observer* observer); 47 void AddObserver(Observer* observer);
47 void RemoveObserver(Observer* observer); 48 void RemoveObserver(Observer* observer);
48 49
49 // device::BluetoothAdapter::Observer 50 // device::BluetoothAdapter::Observer
50 void AdapterPoweredChanged(device::BluetoothAdapter* adapter, 51 void AdapterPoweredChanged(device::BluetoothAdapter* adapter,
51 bool powered) override; 52 bool powered) override;
52 void DeviceAdded(device::BluetoothAdapter* adapter, 53 void DeviceAdded(device::BluetoothAdapter* adapter,
53 device::BluetoothDevice* bluetooth_device) override; 54 device::BluetoothDevice* bluetooth_device) override;
54 void DeviceChanged(device::BluetoothAdapter* adapter, 55 void DeviceChanged(device::BluetoothAdapter* adapter,
55 device::BluetoothDevice* bluetooth_device) override; 56 device::BluetoothDevice* bluetooth_device) override;
56 57
57 protected: 58 protected:
58 base::ObserverList<Observer> observer_list_; 59 base::ObserverList<Observer> observer_list_;
59 60
60 private: 61 private:
61 friend class BleScannerTest; 62 friend class BleScannerTest;
62 63
63 class Delegate { 64 class ServiceDataProvider {
64 public: 65 public:
65 virtual ~Delegate() {} 66 virtual ~ServiceDataProvider() {}
66 virtual bool IsBluetoothAdapterAvailable() const = 0;
67 virtual void GetAdapter(
68 const device::BluetoothAdapterFactory::AdapterCallback& callback) = 0;
69 virtual const std::vector<uint8_t>* GetServiceDataForUUID( 67 virtual const std::vector<uint8_t>* GetServiceDataForUUID(
70 const device::BluetoothUUID& service_uuid,
71 device::BluetoothDevice* bluetooth_device) = 0; 68 device::BluetoothDevice* bluetooth_device) = 0;
72 }; 69 };
73 70
74 class DelegateImpl : public Delegate { 71 class ServiceDataProviderImpl : public ServiceDataProvider {
75 public: 72 public:
76 DelegateImpl(); 73 ServiceDataProviderImpl();
77 ~DelegateImpl() override; 74 ~ServiceDataProviderImpl() override;
78 bool IsBluetoothAdapterAvailable() const override;
79 void GetAdapter(const device::BluetoothAdapterFactory::AdapterCallback&
80 callback) override;
81 const std::vector<uint8_t>* GetServiceDataForUUID( 75 const std::vector<uint8_t>* GetServiceDataForUUID(
82 const device::BluetoothUUID& service_uuid,
83 device::BluetoothDevice* bluetooth_device) override; 76 device::BluetoothDevice* bluetooth_device) override;
84 }; 77 };
85 78
86 BleScanner(std::unique_ptr<Delegate> delegate, 79 BleScanner(std::unique_ptr<ServiceDataProvider> service_data_provider,
80 scoped_refptr<device::BluetoothAdapter> adapter,
87 const cryptauth::EidGenerator* eid_generator, 81 const cryptauth::EidGenerator* eid_generator,
88 const LocalDeviceDataProvider* local_device_data_provider); 82 const LocalDeviceDataProvider* local_device_data_provider);
89 83
90 void UpdateDiscoveryStatus(); 84 void UpdateDiscoveryStatus();
91 void InitializeBluetoothAdapter(); 85 void InitializeBluetoothAdapter();
92 void OnAdapterInitialized(scoped_refptr<device::BluetoothAdapter> adapter); 86 void OnAdapterInitialized(scoped_refptr<device::BluetoothAdapter> adapter);
93 void StartDiscoverySession(); 87 void StartDiscoverySession();
94 void OnDiscoverySessionStarted( 88 void OnDiscoverySessionStarted(
95 std::unique_ptr<device::BluetoothDiscoverySession> discovery_session); 89 std::unique_ptr<device::BluetoothDiscoverySession> discovery_session);
96 void OnStartDiscoverySessionError(); 90 void OnStartDiscoverySessionError();
97 void StopDiscoverySession(); 91 void StopDiscoverySession();
98 void HandleDeviceUpdated(device::BluetoothDevice* bluetooth_device); 92 void HandleDeviceUpdated(device::BluetoothDevice* bluetooth_device);
99 void CheckForMatchingScanFilters(device::BluetoothDevice* bluetooth_device, 93 void CheckForMatchingScanFilters(device::BluetoothDevice* bluetooth_device,
100 std::string& service_data); 94 std::string& service_data);
101 95
102 std::unique_ptr<Delegate> delegate_; 96 std::unique_ptr<ServiceDataProvider> service_data_provider_;
97
98 scoped_refptr<device::BluetoothAdapter> adapter_;
103 99
104 // |eid_generator_| and |local_device_data_provider_| are not owned by this 100 // |eid_generator_| and |local_device_data_provider_| are not owned by this
105 // instance and must outlive it. 101 // instance and must outlive it.
106 const cryptauth::EidGenerator* eid_generator_; 102 const cryptauth::EidGenerator* eid_generator_;
107 const LocalDeviceDataProvider* local_device_data_provider_; 103 const LocalDeviceDataProvider* local_device_data_provider_;
108 104
109 bool is_initializing_adapter_;
110 scoped_refptr<device::BluetoothAdapter> adapter_;
111
112 bool is_initializing_discovery_session_; 105 bool is_initializing_discovery_session_;
113 std::unique_ptr<device::BluetoothDiscoverySession> discovery_session_; 106 std::unique_ptr<device::BluetoothDiscoverySession> discovery_session_;
114 107
115 std::vector<cryptauth::RemoteDevice> registered_remote_devices_; 108 std::vector<cryptauth::RemoteDevice> registered_remote_devices_;
116 109
117 base::WeakPtrFactory<BleScanner> weak_ptr_factory_; 110 base::WeakPtrFactory<BleScanner> weak_ptr_factory_;
118 111
119 DISALLOW_COPY_AND_ASSIGN(BleScanner); 112 DISALLOW_COPY_AND_ASSIGN(BleScanner);
120 }; 113 };
121 114
122 } // namespace tether 115 } // namespace tether
123 116
124 } // namespace chromeos 117 } // namespace chromeos
125 118
126 #endif // CHROMEOS_COMPONENTS_BLE_SCANNER_H_ 119 #endif // CHROMEOS_COMPONENTS_BLE_SCANNER_H_
OLDNEW
« no previous file with comments | « chromeos/components/tether/ble_connection_manager_unittest.cc ('k') | chromeos/components/tether/ble_scanner.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698