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

Unified Diff: chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_api.cc

Issue 349433002: chrome.bluetoothLowEnergy: Introduce connect and disconnect methods. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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: chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_api.cc
diff --git a/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_api.cc b/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_api.cc
index 066d9932703ac9c937634f588593c7198c7e3ed6..2218a308cfadb481de441ec37ddbeb6f93ab455d 100644
--- a/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_api.cc
+++ b/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_api.cc
@@ -25,6 +25,8 @@ namespace {
const char kErrorAdapterNotInitialized[] =
"Could not initialize Bluetooth adapter";
+const char kErrorAlreadyConnected[] = "Already connected";
+const char kErrorNotConnected[] = "Not connected";
const char kErrorNotFound[] = "Instance not found";
const char kErrorOperationFailed[] = "Operation failed";
const char kErrorPermissionDenied[] = "Permission denied";
@@ -40,6 +42,10 @@ std::string StatusToString(BluetoothLowEnergyEventRouter::Status status) {
return kErrorPermissionDenied;
case BluetoothLowEnergyEventRouter::kStatusErrorNotFound:
return kErrorNotFound;
+ case BluetoothLowEnergyEventRouter::kStatusErrorAlreadyConnected:
+ return kErrorAlreadyConnected;
+ case BluetoothLowEnergyEventRouter::kStatusErrorNotConnected:
+ return kErrorNotConnected;
case BluetoothLowEnergyEventRouter::kStatusSuccess:
NOTREACHED();
break;
@@ -125,6 +131,88 @@ bool BluetoothLowEnergyExtensionFunction::RunAsync() {
return true;
}
+bool BluetoothLowEnergyConnectFunction::DoWork() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ BluetoothLowEnergyEventRouter* event_router =
+ GetEventRouter(browser_context());
+
+ // The adapter must be initialized at this point, but return an error instead
+ // of asserting.
+ if (!event_router->HasAdapter()) {
+ SetError(kErrorAdapterNotInitialized);
+ SendResponse(false);
+ return false;
+ }
+
+ scoped_ptr<apibtle::Connect::Params> params(
+ apibtle::Connect::Params::Create(*args_));
+ EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
+
+ BluetoothLowEnergyEventRouter::Status status =
+ event_router->Connect(
+ GetExtension(),
+ params->device_address,
+ base::Bind(&BluetoothLowEnergyConnectFunction::SuccessCallback, this),
+ base::Bind(&BluetoothLowEnergyConnectFunction::ErrorCallback, this));
+
+ if (status != BluetoothLowEnergyEventRouter::kStatusSuccess) {
+ SetError(StatusToString(status));
+ SendResponse(false);
+ return false;
+ }
+
+ return true;
+}
+
+void BluetoothLowEnergyConnectFunction::SuccessCallback() {
+ SendResponse(true);
+}
+
+void BluetoothLowEnergyConnectFunction::ErrorCallback(
+ BluetoothLowEnergyEventRouter::Status status) {
+ SetError(StatusToString(status));
+ SendResponse(false);
+}
+
+bool BluetoothLowEnergyDisconnectFunction::DoWork() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ BluetoothLowEnergyEventRouter* event_router =
+ GetEventRouter(browser_context());
+
+ // The adapter must be initialized at this point, but return an error instead
+ // of asserting.
+ if (!event_router->HasAdapter()) {
+ SetError(kErrorAdapterNotInitialized);
+ SendResponse(false);
+ return false;
+ }
+
+ scoped_ptr<apibtle::Disconnect::Params> params(
+ apibtle::Disconnect::Params::Create(*args_));
+ EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
+
+ BluetoothLowEnergyEventRouter::Status status =
+ event_router->Disconnect(
+ GetExtension(),
+ params->device_address,
+ base::Bind(&BluetoothLowEnergyDisconnectFunction::SuccessCallback,
+ this));
+
+ if (status != BluetoothLowEnergyEventRouter::kStatusSuccess) {
+ SetError(StatusToString(status));
+ SendResponse(false);
+ return false;
+ }
+
+ return true;
+}
+
+void BluetoothLowEnergyDisconnectFunction::SuccessCallback() {
+ SendResponse(true);
+}
+
bool BluetoothLowEnergyGetServiceFunction::DoWork() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));

Powered by Google App Engine
This is Rietveld 408576698