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

Unified Diff: device/bluetooth/bluetooth_socket_chromeos.cc

Issue 975323002: Revert of Fix BluetoothAdapterProfileChromeOS lifecycle management (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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
Index: device/bluetooth/bluetooth_socket_chromeos.cc
diff --git a/device/bluetooth/bluetooth_socket_chromeos.cc b/device/bluetooth/bluetooth_socket_chromeos.cc
index c193c1f1d906f83972d880403205d6d823015969..3026113a5cb9a1de191b98e29b04759b29129b4e 100644
--- a/device/bluetooth/bluetooth_socket_chromeos.cc
+++ b/device/bluetooth/bluetooth_socket_chromeos.cc
@@ -110,8 +110,6 @@
if (security_level == SECURITY_LEVEL_LOW)
options_->require_authentication.reset(new bool(false));
- adapter_ = device->adapter();
-
RegisterProfile(device->adapter(), success_callback, error_callback);
}
@@ -130,8 +128,7 @@
return;
}
- adapter_ = adapter;
- adapter_->AddObserver(this);
+ adapter->AddObserver(this);
uuid_ = uuid;
options_.reset(new BluetoothProfileManagerClient::Options());
@@ -224,10 +221,12 @@
DCHECK(!profile_);
DCHECK(adapter);
+ adapter_ = adapter;
+
// If the adapter is not present, this is a listening socket and the
// adapter isn't running yet. Report success and carry on;
// the profile will be registered when the daemon becomes available.
- if (!adapter->IsPresent()) {
+ if (!adapter_->IsPresent()) {
VLOG(1) << uuid_.canonical_value() << " on " << device_path_.value()
<< ": Delaying profile registration.";
base::MessageLoop::current()->PostTask(FROM_HERE, success_callback);
@@ -310,7 +309,7 @@
DCHECK(ui_task_runner()->RunsTasksOnCurrentThread());
if (!present) {
- // Adapter removed, we can't use the profile anymore.
+ // Adapter removed, the profile is now invalid.
UnregisterProfile();
return;
}
@@ -550,9 +549,20 @@
VLOG(1) << profile_->object_path().value() << ": Release profile";
- static_cast<BluetoothAdapterChromeOS*>(adapter_.get())
- ->ReleaseProfile(device_path_, profile_);
+ profile_->RemoveDelegate(
+ device_path_,
+ base::Bind(&BluetoothSocketChromeOS::ReleaseProfile, this, profile_));
+
profile_ = nullptr;
}
+void BluetoothSocketChromeOS::ReleaseProfile(
+ BluetoothAdapterProfileChromeOS* profile) {
+ if (adapter_)
+ static_cast<BluetoothAdapterChromeOS*>(adapter_.get())
+ ->ReleaseProfile(uuid_);
+ else
+ delete profile;
+}
+
} // namespace chromeos
« no previous file with comments | « device/bluetooth/bluetooth_socket_chromeos.h ('k') | device/bluetooth/bluetooth_socket_chromeos_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698