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

Unified Diff: device/bluetooth/bluetooth_adapter_chromeos.cc

Issue 184953002: Migrate Chrome OS Bluetooth UI to the new discovery API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments by derat@ and keybuk@. Created 6 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
« no previous file with comments | « device/bluetooth/bluetooth_adapter_chromeos.h ('k') | device/bluetooth/bluetooth_chromeos_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/bluetooth/bluetooth_adapter_chromeos.cc
diff --git a/device/bluetooth/bluetooth_adapter_chromeos.cc b/device/bluetooth/bluetooth_adapter_chromeos.cc
index 50232f7ec33587da2d8952c2b7929ffdfbf9d7e5..942f9ae7389c9f02346361cfdcd99fb6048443bb 100644
--- a/device/bluetooth/bluetooth_adapter_chromeos.cc
+++ b/device/bluetooth/bluetooth_adapter_chromeos.cc
@@ -625,8 +625,10 @@ void BluetoothAdapterChromeOS::DiscoveringChanged(
bool discovering) {
// If the adapter stopped discovery due to a reason other than a request by
// us, reset the count to 0.
+ VLOG(1) << "Discovering changed: " << discovering;
if (!discovering && !discovery_request_pending_
&& num_discovery_sessions_ > 0) {
+ VLOG(1) << "Marking sessions as inactive.";
num_discovery_sessions_ = 0;
MarkDiscoverySessionsAsInactive();
}
@@ -680,8 +682,8 @@ void BluetoothAdapterChromeOS::AddDiscoverySession(
// The pending request is either to stop a previous session or to start a
// new one. Either way, queue this one.
DCHECK(num_discovery_sessions_ == 1 || num_discovery_sessions_ == 0);
- VLOG(1) << "Pending request to initiate device discovery. Queueing request "
- << "to start a new discovery session.";
+ VLOG(1) << "Pending request to start/stop device discovery. Queueing "
+ << "request to start a new discovery session.";
discovery_request_queue_.push(std::make_pair(callback, error_callback));
return;
}
@@ -708,6 +710,7 @@ void BluetoothAdapterChromeOS::AddDiscoverySession(
callback),
base::Bind(&BluetoothAdapterChromeOS::OnStartDiscoveryError,
weak_ptr_factory_.GetWeakPtr(),
+ callback,
error_callback));
}
@@ -726,8 +729,8 @@ void BluetoothAdapterChromeOS::RemoveDiscoverySession(
// If there is a pending request to BlueZ, then queue this request.
if (discovery_request_pending_) {
- VLOG(1) << "Pending request to initiate device discovery. Queueing request "
- << "to stop discovery session.";
+ VLOG(1) << "Pending request to start/stop device discovery. Queueing "
+ << "request to stop discovery session.";
error_callback.Run();
return;
}
@@ -759,6 +762,7 @@ void BluetoothAdapterChromeOS::RemoveDiscoverySession(
void BluetoothAdapterChromeOS::OnStartDiscovery(const base::Closure& callback) {
// Report success on the original request and increment the count.
+ VLOG(1) << __func__;
DCHECK(discovery_request_pending_);
DCHECK(num_discovery_sessions_ == 0);
discovery_request_pending_ = false;
@@ -770,6 +774,7 @@ void BluetoothAdapterChromeOS::OnStartDiscovery(const base::Closure& callback) {
}
void BluetoothAdapterChromeOS::OnStartDiscoveryError(
+ const base::Closure& callback,
const ErrorCallback& error_callback,
const std::string& error_name,
const std::string& error_message) {
@@ -780,7 +785,17 @@ void BluetoothAdapterChromeOS::OnStartDiscoveryError(
DCHECK(num_discovery_sessions_ == 0);
DCHECK(discovery_request_pending_);
discovery_request_pending_ = false;
- error_callback.Run();
+
+ // Discovery request may fail if discovery was previously initiated by Chrome,
+ // but the session were invalidated due to the discovery state unexpectedly
+ // changing to false and then back to true. In this case, report success.
+ if (error_name == bluetooth_device::kErrorInProgress && IsDiscovering()) {
+ VLOG(1) << "Discovery previously initiated. Reporting success.";
+ num_discovery_sessions_++;
+ callback.Run();
+ } else {
+ error_callback.Run();
+ }
// Try to add a new discovery session for each queued request.
ProcessQueuedDiscoveryRequests();
@@ -788,6 +803,7 @@ void BluetoothAdapterChromeOS::OnStartDiscoveryError(
void BluetoothAdapterChromeOS::OnStopDiscovery(const base::Closure& callback) {
// Report success on the original request and decrement the count.
+ VLOG(1) << __func__;
DCHECK(discovery_request_pending_);
DCHECK(num_discovery_sessions_ == 1);
discovery_request_pending_ = false;
@@ -817,6 +833,7 @@ void BluetoothAdapterChromeOS::OnStopDiscoveryError(
void BluetoothAdapterChromeOS::ProcessQueuedDiscoveryRequests() {
while (!discovery_request_queue_.empty()) {
+ VLOG(1) << "Process queued discovery request.";
DiscoveryCallbackPair callbacks = discovery_request_queue_.front();
discovery_request_queue_.pop();
AddDiscoverySession(callbacks.first, callbacks.second);
« no previous file with comments | « device/bluetooth/bluetooth_adapter_chromeos.h ('k') | device/bluetooth/bluetooth_chromeos_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698