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

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

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 | « chromeos/components/tether/ble_advertiser.h ('k') | chromeos/components/tether/ble_advertiser_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/components/tether/ble_advertiser.cc
diff --git a/chromeos/components/tether/ble_advertiser.cc b/chromeos/components/tether/ble_advertiser.cc
index df092605765c9f217d3bac401b369e4575dcf281..7a93af8b33cb51af02427f93c505de2bae34d384 100644
--- a/chromeos/components/tether/ble_advertiser.cc
+++ b/chromeos/components/tether/ble_advertiser.cc
@@ -20,13 +20,25 @@ namespace {
uint8_t kInvertedConnectionFlag = 0x01;
} // namespace
+void BleAdvertiser::BleAdvertisementUnregisterHandlerImpl::
+ OnAdvertisementUnregisterSuccess() {}
+
+void BleAdvertiser::BleAdvertisementUnregisterHandlerImpl::
+ OnAdvertisementUnregisterFailure(
+ device::BluetoothAdvertisement::ErrorCode error_code) {
+ PA_LOG(ERROR) << "Error while unregistering advertisement. Error code: "
+ << error_code;
+}
+
BleAdvertiser::IndividualAdvertisement::IndividualAdvertisement(
scoped_refptr<device::BluetoothAdapter> adapter,
std::unique_ptr<cryptauth::EidGenerator::DataWithTimestamp>
- advertisement_data)
+ advertisement_data,
+ std::shared_ptr<BleAdvertisementUnregisterHandler> unregister_handler)
: adapter_(adapter),
is_initializing_advertising_(false),
advertisement_data_(std::move(advertisement_data)),
+ unregister_handler_(unregister_handler),
advertisement_(nullptr),
weak_ptr_factory_(this) {
adapter_->AddObserver(this);
@@ -34,6 +46,16 @@ BleAdvertiser::IndividualAdvertisement::IndividualAdvertisement(
}
BleAdvertiser::IndividualAdvertisement::~IndividualAdvertisement() {
+ if (advertisement_) {
+ advertisement_->Unregister(
+ base::Bind(&BleAdvertisementUnregisterHandler::
+ OnAdvertisementUnregisterSuccess,
+ base::Unretained(unregister_handler_.get())),
+ base::Bind(&BleAdvertisementUnregisterHandler::
+ OnAdvertisementUnregisterFailure,
+ base::Unretained(unregister_handler_.get())));
+ }
+
adapter_->RemoveObserver(this);
}
@@ -135,19 +157,23 @@ BleAdvertiser::BleAdvertiser(
scoped_refptr<device::BluetoothAdapter> adapter,
const LocalDeviceDataProvider* local_device_data_provider,
const cryptauth::RemoteBeaconSeedFetcher* remote_beacon_seed_fetcher)
- : BleAdvertiser(adapter,
- cryptauth::EidGenerator::GetInstance(),
- remote_beacon_seed_fetcher,
- local_device_data_provider) {}
+ : BleAdvertiser(
+ adapter,
+ base::WrapUnique(new BleAdvertisementUnregisterHandlerImpl()),
+ cryptauth::EidGenerator::GetInstance(),
+ remote_beacon_seed_fetcher,
+ local_device_data_provider) {}
BleAdvertiser::~BleAdvertiser() {}
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)
: adapter_(adapter),
+ unregister_handler_(std::move(unregister_handler)),
eid_generator_(eid_generator),
remote_beacon_seed_fetcher_(remote_beacon_seed_fetcher),
local_device_data_provider_(local_device_data_provider) {}
@@ -197,8 +223,8 @@ bool BleAdvertiser::StartAdvertisingToDevice(
}
device_id_to_advertisement_map_[remote_device.GetDeviceId()] =
- make_scoped_refptr(
- new IndividualAdvertisement(adapter_, std::move(advertisement)));
+ make_scoped_refptr(new IndividualAdvertisement(
+ adapter_, std::move(advertisement), unregister_handler_));
return true;
}
« no previous file with comments | « chromeos/components/tether/ble_advertiser.h ('k') | chromeos/components/tether/ble_advertiser_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698