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

Unified Diff: chromeos/components/tether/ble_advertiser.h

Issue 2782743002: [CrOS Tether] Ensure that BleAdvertiser explicitly calls Unregister() on all advertisements after t… (Closed)
Patch Set: Remove a few out of date comments. Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chromeos/components/tether/ble_advertiser.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_;
« no previous file with comments | « no previous file | chromeos/components/tether/ble_advertiser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698