| 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 #ifndef COMPONENTS_PROXIMITY_AUTH_BLUETOOTH_LOW_ENERGY_CONNECTION_FINDER_H | 5 #ifndef COMPONENTS_PROXIMITY_AUTH_BLUETOOTH_LOW_ENERGY_CONNECTION_FINDER_H |
| 6 #define COMPONENTS_PROXIMITY_AUTH_BLUETOOTH_LOW_ENERGY_CONNECTION_FINDER_H | 6 #define COMPONENTS_PROXIMITY_AUTH_BLUETOOTH_LOW_ENERGY_CONNECTION_FINDER_H |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 // the expected EID for the current or nearby time intervals. | 32 // the expected EID for the current or nearby time intervals. |
| 33 class BluetoothLowEnergyConnectionFinder | 33 class BluetoothLowEnergyConnectionFinder |
| 34 : public cryptauth::ConnectionFinder, | 34 : public cryptauth::ConnectionFinder, |
| 35 public cryptauth::ConnectionObserver, | 35 public cryptauth::ConnectionObserver, |
| 36 public device::BluetoothAdapter::Observer { | 36 public device::BluetoothAdapter::Observer { |
| 37 public: | 37 public: |
| 38 // Finds (and connects) to a Bluetooth low energy device, based on the EID | 38 // Finds (and connects) to a Bluetooth low energy device, based on the EID |
| 39 // advertised by the remote device. | 39 // advertised by the remote device. |
| 40 // | 40 // |
| 41 // |remote_device|: The BLE remote device. | 41 // |remote_device|: The BLE remote device. |
| 42 // |beacon_seeds|: The BeaconSeeds for the |remote_device. | |
| 43 // |bluetooth_throttler|: The reconnection throttler. | 42 // |bluetooth_throttler|: The reconnection throttler. |
| 44 BluetoothLowEnergyConnectionFinder( | 43 BluetoothLowEnergyConnectionFinder( |
| 45 const cryptauth::RemoteDevice remote_device, | 44 const cryptauth::RemoteDevice remote_device, |
| 46 const std::vector<cryptauth::BeaconSeed>& beacon_seeds, | |
| 47 cryptauth::BluetoothThrottler* bluetooth_throttler); | 45 cryptauth::BluetoothThrottler* bluetooth_throttler); |
| 48 | 46 |
| 49 ~BluetoothLowEnergyConnectionFinder() override; | 47 ~BluetoothLowEnergyConnectionFinder() override; |
| 50 | 48 |
| 51 // Finds a connection to the remote device. | 49 // Finds a connection to the remote device. |
| 52 void Find(const cryptauth::ConnectionFinder::ConnectionCallback& | 50 void Find(const cryptauth::ConnectionFinder::ConnectionCallback& |
| 53 connection_callback) override; | 51 connection_callback) override; |
| 54 | 52 |
| 55 // cryptauth::ConnectionObserver: | 53 // cryptauth::ConnectionObserver: |
| 56 void OnConnectionStatusChanged( | 54 void OnConnectionStatusChanged( |
| 57 cryptauth::Connection* connection, | 55 cryptauth::Connection* connection, |
| 58 cryptauth::Connection::Status old_status, | 56 cryptauth::Connection::Status old_status, |
| 59 cryptauth::Connection::Status new_status) override; | 57 cryptauth::Connection::Status new_status) override; |
| 60 | 58 |
| 61 // device::BluetoothAdapter::Observer: | 59 // device::BluetoothAdapter::Observer: |
| 62 void AdapterPoweredChanged(device::BluetoothAdapter* adapter, | 60 void AdapterPoweredChanged(device::BluetoothAdapter* adapter, |
| 63 bool powered) override; | 61 bool powered) override; |
| 64 void DeviceAdded(device::BluetoothAdapter* adapter, | 62 void DeviceAdded(device::BluetoothAdapter* adapter, |
| 65 device::BluetoothDevice* device) override; | 63 device::BluetoothDevice* device) override; |
| 66 void DeviceChanged(device::BluetoothAdapter* adapter, | 64 void DeviceChanged(device::BluetoothAdapter* adapter, |
| 67 device::BluetoothDevice* device) override; | 65 device::BluetoothDevice* device) override; |
| 68 | 66 |
| 69 protected: | 67 protected: |
| 70 BluetoothLowEnergyConnectionFinder( | 68 BluetoothLowEnergyConnectionFinder( |
| 71 const cryptauth::RemoteDevice remote_device, | 69 const cryptauth::RemoteDevice remote_device, |
| 72 const std::string& service_uuid, | 70 const std::string& service_uuid, |
| 73 const std::vector<cryptauth::BeaconSeed>& beacon_seeds, | |
| 74 std::unique_ptr<cryptauth::BackgroundEidGenerator> eid_generator, | 71 std::unique_ptr<cryptauth::BackgroundEidGenerator> eid_generator, |
| 75 cryptauth::BluetoothThrottler* bluetooth_throttler); | 72 cryptauth::BluetoothThrottler* bluetooth_throttler); |
| 76 | 73 |
| 77 // Creates a proximity_auth::Connection with the device given by | 74 // Creates a proximity_auth::Connection with the device given by |
| 78 // |device_address|. Exposed for testing. | 75 // |device_address|. Exposed for testing. |
| 79 virtual std::unique_ptr<cryptauth::Connection> CreateConnection( | 76 virtual std::unique_ptr<cryptauth::Connection> CreateConnection( |
| 80 const std::string& device_address); | 77 const std::string& device_address); |
| 81 | 78 |
| 82 // Checks if |device| is advertising the right EID. | 79 // Checks if |device| is advertising the right EID. |
| 83 virtual bool IsRightDevice(device::BluetoothDevice* device); | 80 virtual bool IsRightDevice(device::BluetoothDevice* device); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 111 void InvokeCallbackAsync(); | 108 void InvokeCallbackAsync(); |
| 112 | 109 |
| 113 // The remote BLE device being searched. It maybe empty, in this case the | 110 // The remote BLE device being searched. It maybe empty, in this case the |
| 114 // remote device should advertise |remote_service_uuid_| and | 111 // remote device should advertise |remote_service_uuid_| and |
| 115 // |advertised_name_|. | 112 // |advertised_name_|. |
| 116 cryptauth::RemoteDevice remote_device_; | 113 cryptauth::RemoteDevice remote_device_; |
| 117 | 114 |
| 118 // The UUID of the service used by the Weave socket. | 115 // The UUID of the service used by the Weave socket. |
| 119 std::string service_uuid_; | 116 std::string service_uuid_; |
| 120 | 117 |
| 121 // The BeaconSeeds of the |remote_device|. | |
| 122 std::vector<cryptauth::BeaconSeed> beacon_seeds_; | |
| 123 | |
| 124 // Generates the expected EIDs that may be advertised by |remote_device_|. If | 118 // Generates the expected EIDs that may be advertised by |remote_device_|. If |
| 125 // an EID matches, we know its a device we should connect to. | 119 // an EID matches, we know its a device we should connect to. |
| 126 std::unique_ptr<cryptauth::BackgroundEidGenerator> eid_generator_; | 120 std::unique_ptr<cryptauth::BackgroundEidGenerator> eid_generator_; |
| 127 | 121 |
| 128 // Throttles repeated connection attempts to the same device. This is a | 122 // Throttles repeated connection attempts to the same device. This is a |
| 129 // workaround for crbug.com/508919. Not owned, must outlive this instance. | 123 // workaround for crbug.com/508919. Not owned, must outlive this instance. |
| 130 cryptauth::BluetoothThrottler* bluetooth_throttler_; | 124 cryptauth::BluetoothThrottler* bluetooth_throttler_; |
| 131 | 125 |
| 132 // The Bluetooth adapter over which the Bluetooth connection will be made. | 126 // The Bluetooth adapter over which the Bluetooth connection will be made. |
| 133 scoped_refptr<device::BluetoothAdapter> adapter_; | 127 scoped_refptr<device::BluetoothAdapter> adapter_; |
| 134 | 128 |
| 135 // The discovery session associated to this object. | 129 // The discovery session associated to this object. |
| 136 std::unique_ptr<device::BluetoothDiscoverySession> discovery_session_; | 130 std::unique_ptr<device::BluetoothDiscoverySession> discovery_session_; |
| 137 | 131 |
| 138 // The connection with |remote_device|. | 132 // The connection with |remote_device|. |
| 139 std::unique_ptr<cryptauth::Connection> connection_; | 133 std::unique_ptr<cryptauth::Connection> connection_; |
| 140 | 134 |
| 141 // Callback called when the connection is established. | 135 // Callback called when the connection is established. |
| 142 cryptauth::ConnectionFinder::ConnectionCallback connection_callback_; | 136 cryptauth::ConnectionFinder::ConnectionCallback connection_callback_; |
| 143 | 137 |
| 144 base::WeakPtrFactory<BluetoothLowEnergyConnectionFinder> weak_ptr_factory_; | 138 base::WeakPtrFactory<BluetoothLowEnergyConnectionFinder> weak_ptr_factory_; |
| 145 | 139 |
| 146 DISALLOW_COPY_AND_ASSIGN(BluetoothLowEnergyConnectionFinder); | 140 DISALLOW_COPY_AND_ASSIGN(BluetoothLowEnergyConnectionFinder); |
| 147 }; | 141 }; |
| 148 | 142 |
| 149 } // namespace proximity_auth | 143 } // namespace proximity_auth |
| 150 | 144 |
| 151 #endif // COMPONENTS_PROXIMITY_AUTH_BLUETOOTH_LOW_ENERGY_CONNECTION_FINDER_H | 145 #endif // COMPONENTS_PROXIMITY_AUTH_BLUETOOTH_LOW_ENERGY_CONNECTION_FINDER_H |
| OLD | NEW |