| Index: chromeos/components/tether/ble_advertiser.h
|
| diff --git a/chromeos/components/tether/ble_advertiser.h b/chromeos/components/tether/ble_advertiser.h
|
| index 247a9a0953ff210193649710695f57f94297dce6..525d24e72cfe665f400ee2d2b7a89ccd964d3149 100644
|
| --- a/chromeos/components/tether/ble_advertiser.h
|
| +++ b/chromeos/components/tether/ble_advertiser.h
|
| @@ -27,6 +27,11 @@ namespace tether {
|
|
|
| class LocalDeviceDataProvider;
|
|
|
| +// Advertises to a given device. When StartAdvertisingToDevice() is called, a
|
| +// device-specific EID value is computed deterministically and is set as the
|
| +// service data of the advertisement. If that device is nearby and scanning,
|
| +// the device will have the same service data and will be able to pick up the
|
| +// advertisement.
|
| class BleAdvertiser {
|
| public:
|
| BleAdvertiser(
|
| @@ -43,6 +48,21 @@ class BleAdvertiser {
|
| private:
|
| friend class BleAdvertiserTest;
|
|
|
| + class BleAdvertisementUnregisterHandler {
|
| + public:
|
| + virtual void OnAdvertisementUnregisterSuccess() = 0;
|
| + virtual void OnAdvertisementUnregisterFailure(
|
| + device::BluetoothAdvertisement::ErrorCode error_code) = 0;
|
| + };
|
| +
|
| + class BleAdvertisementUnregisterHandlerImpl
|
| + : public BleAdvertiser::BleAdvertisementUnregisterHandler {
|
| + public:
|
| + void OnAdvertisementUnregisterSuccess() override;
|
| + void OnAdvertisementUnregisterFailure(
|
| + device::BluetoothAdvertisement::ErrorCode error_code) override;
|
| + };
|
| +
|
| class IndividualAdvertisement
|
| : public device::BluetoothAdapter::Observer,
|
| public device::BluetoothAdvertisement::Observer,
|
| @@ -51,7 +71,8 @@ class BleAdvertiser {
|
| IndividualAdvertisement(
|
| scoped_refptr<device::BluetoothAdapter> adapter,
|
| std::unique_ptr<cryptauth::EidGenerator::DataWithTimestamp>
|
| - advertisement_data);
|
| + advertisement_data,
|
| + std::shared_ptr<BleAdvertisementUnregisterHandler> unregister_handler);
|
|
|
| // device::BluetoothAdapter::Observer
|
| void AdapterPoweredChanged(device::BluetoothAdapter* adapter,
|
| @@ -85,6 +106,7 @@ class BleAdvertiser {
|
| bool is_initializing_advertising_;
|
| std::unique_ptr<cryptauth::EidGenerator::DataWithTimestamp>
|
| advertisement_data_;
|
| + std::shared_ptr<BleAdvertisementUnregisterHandler> unregister_handler_;
|
| scoped_refptr<device::BluetoothAdvertisement> advertisement_;
|
|
|
| base::WeakPtrFactory<IndividualAdvertisement> weak_ptr_factory_;
|
| @@ -94,11 +116,13 @@ class BleAdvertiser {
|
|
|
| BleAdvertiser(
|
| scoped_refptr<device::BluetoothAdapter> adapter,
|
| + std::unique_ptr<BleAdvertisementUnregisterHandler> unregister_handler,
|
| const cryptauth::EidGenerator* eid_generator,
|
| const cryptauth::RemoteBeaconSeedFetcher* remote_beacon_seed_fetcher,
|
| const LocalDeviceDataProvider* local_device_data_provider);
|
|
|
| scoped_refptr<device::BluetoothAdapter> adapter_;
|
| + std::shared_ptr<BleAdvertisementUnregisterHandler> unregister_handler_;
|
|
|
| // Not owned by this instance and must outlive it.
|
| const cryptauth::EidGenerator* eid_generator_;
|
|
|