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

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

Issue 420663003: Extensions: Move bluetooth APIs to extensions/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix android, gn Created 6 years, 4 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
deleted file mode 100644
index beb6e6592964cde582acad3a1fa174f3ca9a4202..0000000000000000000000000000000000000000
--- a/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_api.cc
+++ /dev/null
@@ -1,773 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_api.h"
-
-#include "base/bind.h"
-#include "base/lazy_instance.h"
-#include "base/strings/stringprintf.h"
-#include "chrome/browser/extensions/api/bluetooth_low_energy/utils.h"
-#include "chrome/common/extensions/api/bluetooth/bluetooth_manifest_data.h"
-#include "chrome/common/extensions/api/bluetooth_low_energy.h"
-#include "content/public/browser/browser_thread.h"
-#include "extensions/browser/event_router.h"
-#include "extensions/common/permissions/permissions_data.h"
-
-using content::BrowserContext;
-using content::BrowserThread;
-
-namespace apibtle = extensions::api::bluetooth_low_energy;
-
-namespace extensions {
-
-namespace {
-
-const char kErrorAdapterNotInitialized[] =
- "Could not initialize Bluetooth adapter";
-const char kErrorAlreadyConnected[] = "Already connected";
-const char kErrorAlreadyNotifying[] = "Already notifying";
-const char kErrorInProgress[] = "In progress";
-const char kErrorNotConnected[] = "Not connected";
-const char kErrorNotNotifying[] = "Not notifying";
-const char kErrorNotFound[] = "Instance not found";
-const char kErrorOperationFailed[] = "Operation failed";
-const char kErrorPermissionDenied[] = "Permission denied";
-const char kErrorPlatformNotSupported[] =
- "This operation is not supported on the current platform";
-
-// Returns the correct error string based on error status |status|. This is used
-// to set the value of |chrome.runtime.lastError.message| and should not be
-// passed |BluetoothLowEnergyEventRouter::kStatusSuccess|.
-std::string StatusToString(BluetoothLowEnergyEventRouter::Status status) {
- switch (status) {
- case BluetoothLowEnergyEventRouter::kStatusErrorPermissionDenied:
- return kErrorPermissionDenied;
- case BluetoothLowEnergyEventRouter::kStatusErrorNotFound:
- return kErrorNotFound;
- case BluetoothLowEnergyEventRouter::kStatusErrorAlreadyConnected:
- return kErrorAlreadyConnected;
- case BluetoothLowEnergyEventRouter::kStatusErrorAlreadyNotifying:
- return kErrorAlreadyNotifying;
- case BluetoothLowEnergyEventRouter::kStatusErrorNotConnected:
- return kErrorNotConnected;
- case BluetoothLowEnergyEventRouter::kStatusErrorNotNotifying:
- return kErrorNotNotifying;
- case BluetoothLowEnergyEventRouter::kStatusErrorInProgress:
- return kErrorInProgress;
- case BluetoothLowEnergyEventRouter::kStatusSuccess:
- NOTREACHED();
- break;
- default:
- return kErrorOperationFailed;
- }
- return "";
-}
-
-extensions::BluetoothLowEnergyEventRouter* GetEventRouter(
- BrowserContext* context) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- return extensions::BluetoothLowEnergyAPI::Get(context)->event_router();
-}
-
-void DoWorkCallback(const base::Callback<bool()>& callback) {
- DCHECK(!callback.is_null());
- callback.Run();
-}
-
-} // namespace
-
-
-static base::LazyInstance<BrowserContextKeyedAPIFactory<BluetoothLowEnergyAPI> >
- g_factory = LAZY_INSTANCE_INITIALIZER;
-
-// static
-BrowserContextKeyedAPIFactory<BluetoothLowEnergyAPI>*
-BluetoothLowEnergyAPI::GetFactoryInstance() {
- return g_factory.Pointer();
-}
-
-// static
-BluetoothLowEnergyAPI* BluetoothLowEnergyAPI::Get(BrowserContext* context) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- return GetFactoryInstance()->Get(context);
-}
-
-BluetoothLowEnergyAPI::BluetoothLowEnergyAPI(BrowserContext* context)
- : event_router_(new BluetoothLowEnergyEventRouter(context)),
- browser_context_(context) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-}
-
-BluetoothLowEnergyAPI::~BluetoothLowEnergyAPI() {
-}
-
-void BluetoothLowEnergyAPI::Shutdown() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-}
-
-namespace api {
-
-BluetoothLowEnergyExtensionFunction::BluetoothLowEnergyExtensionFunction() {
-}
-
-BluetoothLowEnergyExtensionFunction::~BluetoothLowEnergyExtensionFunction() {
-}
-
-bool BluetoothLowEnergyExtensionFunction::RunAsync() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
- if (!BluetoothManifestData::CheckLowEnergyPermitted(extension())) {
- error_ = kErrorPermissionDenied;
- return false;
- }
-
- BluetoothLowEnergyEventRouter* event_router =
- GetEventRouter(browser_context());
- if (!event_router->IsBluetoothSupported()) {
- SetError(kErrorPlatformNotSupported);
- return false;
- }
-
- // It is safe to pass |this| here as ExtensionFunction is refcounted.
- if (!event_router->InitializeAdapterAndInvokeCallback(base::Bind(
- &DoWorkCallback,
- base::Bind(&BluetoothLowEnergyExtensionFunction::DoWork, this)))) {
- SetError(kErrorAdapterNotInitialized);
- return false;
- }
-
- 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);
-
- bool persistent = false; // Not persistent by default.
- apibtle::ConnectProperties* properties = params.get()->properties.get();
- if (properties)
- persistent = properties->persistent;
-
- event_router->Connect(
- persistent,
- extension(),
- params->device_address,
- base::Bind(&BluetoothLowEnergyConnectFunction::SuccessCallback, this),
- base::Bind(&BluetoothLowEnergyConnectFunction::ErrorCallback, this));
-
- 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);
-
- event_router->Disconnect(
- extension(),
- params->device_address,
- base::Bind(&BluetoothLowEnergyDisconnectFunction::SuccessCallback, this),
- base::Bind(&BluetoothLowEnergyDisconnectFunction::ErrorCallback, this));
-
- return true;
-}
-
-void BluetoothLowEnergyDisconnectFunction::SuccessCallback() {
- SendResponse(true);
-}
-
-void BluetoothLowEnergyDisconnectFunction::ErrorCallback(
- BluetoothLowEnergyEventRouter::Status status) {
- SetError(StatusToString(status));
- SendResponse(false);
-}
-
-bool BluetoothLowEnergyGetServiceFunction::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::GetService::Params> params(
- apibtle::GetService::Params::Create(*args_));
- EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
-
- apibtle::Service service;
- BluetoothLowEnergyEventRouter::Status status =
- event_router->GetService(params->service_id, &service);
- if (status != BluetoothLowEnergyEventRouter::kStatusSuccess) {
- SetError(StatusToString(status));
- SendResponse(false);
- return false;
- }
-
- results_ = apibtle::GetService::Results::Create(service);
- SendResponse(true);
-
- return true;
-}
-
-bool BluetoothLowEnergyGetServicesFunction::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::GetServices::Params> params(
- apibtle::GetServices::Params::Create(*args_));
- EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
-
- BluetoothLowEnergyEventRouter::ServiceList service_list;
- if (!event_router->GetServices(params->device_address, &service_list)) {
- SetError(kErrorNotFound);
- SendResponse(false);
- return false;
- }
-
- results_ = apibtle::GetServices::Results::Create(service_list);
- SendResponse(true);
-
- return true;
-}
-
-bool BluetoothLowEnergyGetCharacteristicFunction::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::GetCharacteristic::Params> params(
- apibtle::GetCharacteristic::Params::Create(*args_));
- EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
-
- apibtle::Characteristic characteristic;
- BluetoothLowEnergyEventRouter::Status status =
- event_router->GetCharacteristic(
- extension(), params->characteristic_id, &characteristic);
- if (status != BluetoothLowEnergyEventRouter::kStatusSuccess) {
- SetError(StatusToString(status));
- SendResponse(false);
- return false;
- }
-
- // Manually construct the result instead of using
- // apibtle::GetCharacteristic::Result::Create as it doesn't convert lists of
- // enums correctly.
- SetResult(apibtle::CharacteristicToValue(&characteristic).release());
- SendResponse(true);
-
- return true;
-}
-
-bool BluetoothLowEnergyGetCharacteristicsFunction::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::GetCharacteristics::Params> params(
- apibtle::GetCharacteristics::Params::Create(*args_));
- EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
-
- BluetoothLowEnergyEventRouter::CharacteristicList characteristic_list;
- BluetoothLowEnergyEventRouter::Status status =
- event_router->GetCharacteristics(
- extension(), params->service_id, &characteristic_list);
- if (status != BluetoothLowEnergyEventRouter::kStatusSuccess) {
- SetError(StatusToString(status));
- SendResponse(false);
- return false;
- }
-
- // Manually construct the result instead of using
- // apibtle::GetCharacteristics::Result::Create as it doesn't convert lists of
- // enums correctly.
- scoped_ptr<base::ListValue> result(new base::ListValue());
- for (BluetoothLowEnergyEventRouter::CharacteristicList::iterator iter =
- characteristic_list.begin();
- iter != characteristic_list.end();
- ++iter)
- result->Append(apibtle::CharacteristicToValue(iter->get()).release());
-
- SetResult(result.release());
- SendResponse(true);
-
- return true;
-}
-
-bool BluetoothLowEnergyGetIncludedServicesFunction::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::GetIncludedServices::Params> params(
- apibtle::GetIncludedServices::Params::Create(*args_));
- EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
-
- BluetoothLowEnergyEventRouter::ServiceList service_list;
- BluetoothLowEnergyEventRouter::Status status =
- event_router->GetIncludedServices(params->service_id, &service_list);
- if (status != BluetoothLowEnergyEventRouter::kStatusSuccess) {
- SetError(StatusToString(status));
- SendResponse(false);
- return false;
- }
-
- results_ = apibtle::GetIncludedServices::Results::Create(service_list);
- SendResponse(true);
-
- return true;
-}
-
-bool BluetoothLowEnergyGetDescriptorFunction::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::GetDescriptor::Params> params(
- apibtle::GetDescriptor::Params::Create(*args_));
- EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
-
- apibtle::Descriptor descriptor;
- BluetoothLowEnergyEventRouter::Status status = event_router->GetDescriptor(
- extension(), params->descriptor_id, &descriptor);
- if (status != BluetoothLowEnergyEventRouter::kStatusSuccess) {
- SetError(StatusToString(status));
- SendResponse(false);
- return false;
- }
-
- // Manually construct the result instead of using
- // apibtle::GetDescriptor::Result::Create as it doesn't convert lists of enums
- // correctly.
- SetResult(apibtle::DescriptorToValue(&descriptor).release());
- SendResponse(true);
-
- return true;
-}
-
-bool BluetoothLowEnergyGetDescriptorsFunction::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::GetDescriptors::Params> params(
- apibtle::GetDescriptors::Params::Create(*args_));
- EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
-
- BluetoothLowEnergyEventRouter::DescriptorList descriptor_list;
- BluetoothLowEnergyEventRouter::Status status = event_router->GetDescriptors(
- extension(), params->characteristic_id, &descriptor_list);
- if (status != BluetoothLowEnergyEventRouter::kStatusSuccess) {
- SetError(StatusToString(status));
- SendResponse(false);
- return false;
- }
-
- // Manually construct the result instead of using
- // apibtle::GetDescriptors::Result::Create as it doesn't convert lists of
- // enums correctly.
- scoped_ptr<base::ListValue> result(new base::ListValue());
- for (BluetoothLowEnergyEventRouter::DescriptorList::iterator iter =
- descriptor_list.begin();
- iter != descriptor_list.end();
- ++iter)
- result->Append(apibtle::DescriptorToValue(iter->get()).release());
-
- SetResult(result.release());
- SendResponse(true);
-
- return true;
-}
-
-bool BluetoothLowEnergyReadCharacteristicValueFunction::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::ReadCharacteristicValue::Params> params(
- apibtle::ReadCharacteristicValue::Params::Create(*args_));
- EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
-
- instance_id_ = params->characteristic_id;
- event_router->ReadCharacteristicValue(
- extension(),
- instance_id_,
- base::Bind(
- &BluetoothLowEnergyReadCharacteristicValueFunction::SuccessCallback,
- this),
- base::Bind(
- &BluetoothLowEnergyReadCharacteristicValueFunction::ErrorCallback,
- this));
-
- return true;
-}
-
-void BluetoothLowEnergyReadCharacteristicValueFunction::SuccessCallback() {
- // Obtain info on the characteristic and see whether or not the characteristic
- // is still around.
- apibtle::Characteristic characteristic;
- BluetoothLowEnergyEventRouter::Status status =
- GetEventRouter(browser_context())
- ->GetCharacteristic(extension(), instance_id_, &characteristic);
- if (status != BluetoothLowEnergyEventRouter::kStatusSuccess) {
- SetError(StatusToString(status));
- SendResponse(false);
- return;
- }
-
- // Manually construct the result instead of using
- // apibtle::GetCharacteristic::Result::Create as it doesn't convert lists of
- // enums correctly.
- SetResult(apibtle::CharacteristicToValue(&characteristic).release());
- SendResponse(true);
-}
-
-void BluetoothLowEnergyReadCharacteristicValueFunction::ErrorCallback(
- BluetoothLowEnergyEventRouter::Status status) {
- SetError(StatusToString(status));
- SendResponse(false);
-}
-
-bool BluetoothLowEnergyWriteCharacteristicValueFunction::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::WriteCharacteristicValue::Params> params(
- apibtle::WriteCharacteristicValue::Params::Create(*args_));
- EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
-
- std::vector<uint8> value(params->value.begin(), params->value.end());
- event_router->WriteCharacteristicValue(
- extension(),
- params->characteristic_id,
- value,
- base::Bind(
- &BluetoothLowEnergyWriteCharacteristicValueFunction::SuccessCallback,
- this),
- base::Bind(
- &BluetoothLowEnergyWriteCharacteristicValueFunction::ErrorCallback,
- this));
-
- return true;
-}
-
-void BluetoothLowEnergyWriteCharacteristicValueFunction::SuccessCallback() {
- results_ = apibtle::WriteCharacteristicValue::Results::Create();
- SendResponse(true);
-}
-
-void BluetoothLowEnergyWriteCharacteristicValueFunction::ErrorCallback(
- BluetoothLowEnergyEventRouter::Status status) {
- SetError(StatusToString(status));
- SendResponse(false);
-}
-
-bool BluetoothLowEnergyStartCharacteristicNotificationsFunction::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::StartCharacteristicNotifications::Params> params(
- apibtle::StartCharacteristicNotifications::Params::Create(*args_));
- EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
-
- bool persistent = false; // Not persistent by default.
- apibtle::NotificationProperties* properties = params.get()->properties.get();
- if (properties)
- persistent = properties->persistent;
-
- event_router->StartCharacteristicNotifications(
- persistent,
- extension(),
- params->characteristic_id,
- base::Bind(&BluetoothLowEnergyStartCharacteristicNotificationsFunction::
- SuccessCallback,
- this),
- base::Bind(&BluetoothLowEnergyStartCharacteristicNotificationsFunction::
- ErrorCallback,
- this));
-
- return true;
-}
-
-void
-BluetoothLowEnergyStartCharacteristicNotificationsFunction::SuccessCallback() {
- SendResponse(true);
-}
-
-void BluetoothLowEnergyStartCharacteristicNotificationsFunction::ErrorCallback(
- BluetoothLowEnergyEventRouter::Status status) {
- SetError(StatusToString(status));
- SendResponse(false);
-}
-
-bool BluetoothLowEnergyStopCharacteristicNotificationsFunction::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::StopCharacteristicNotifications::Params> params(
- apibtle::StopCharacteristicNotifications::Params::Create(*args_));
- EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
-
- event_router->StopCharacteristicNotifications(
- extension(),
- params->characteristic_id,
- base::Bind(&BluetoothLowEnergyStopCharacteristicNotificationsFunction::
- SuccessCallback,
- this),
- base::Bind(&BluetoothLowEnergyStopCharacteristicNotificationsFunction::
- ErrorCallback,
- this));
-
- return true;
-}
-
-void
-BluetoothLowEnergyStopCharacteristicNotificationsFunction::SuccessCallback() {
- SendResponse(true);
-}
-
-void BluetoothLowEnergyStopCharacteristicNotificationsFunction::ErrorCallback(
- BluetoothLowEnergyEventRouter::Status status) {
- SetError(StatusToString(status));
- SendResponse(false);
-}
-
-bool BluetoothLowEnergyReadDescriptorValueFunction::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::ReadDescriptorValue::Params> params(
- apibtle::ReadDescriptorValue::Params::Create(*args_));
- EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
-
- instance_id_ = params->descriptor_id;
- event_router->ReadDescriptorValue(
- extension(),
- instance_id_,
- base::Bind(
- &BluetoothLowEnergyReadDescriptorValueFunction::SuccessCallback,
- this),
- base::Bind(&BluetoothLowEnergyReadDescriptorValueFunction::ErrorCallback,
- this));
-
- return true;
-}
-
-void BluetoothLowEnergyReadDescriptorValueFunction::SuccessCallback() {
- // Obtain info on the descriptor and see whether or not the descriptor is
- // still around.
- apibtle::Descriptor descriptor;
- BluetoothLowEnergyEventRouter::Status status =
- GetEventRouter(browser_context())
- ->GetDescriptor(extension(), instance_id_, &descriptor);
- if (status != BluetoothLowEnergyEventRouter::kStatusSuccess) {
- SetError(StatusToString(status));
- SendResponse(false);
- return;
- }
-
- // Manually construct the result instead of using
- // apibtle::GetDescriptor::Results::Create as it doesn't convert lists of
- // enums correctly.
- SetResult(apibtle::DescriptorToValue(&descriptor).release());
- SendResponse(true);
-}
-
-void BluetoothLowEnergyReadDescriptorValueFunction::ErrorCallback(
- BluetoothLowEnergyEventRouter::Status status) {
- SetError(StatusToString(status));
- SendResponse(false);
-}
-
-bool BluetoothLowEnergyWriteDescriptorValueFunction::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::WriteDescriptorValue::Params> params(
- apibtle::WriteDescriptorValue::Params::Create(*args_));
- EXTENSION_FUNCTION_VALIDATE(params.get() != NULL);
-
- std::vector<uint8> value(params->value.begin(), params->value.end());
- event_router->WriteDescriptorValue(
- extension(),
- params->descriptor_id,
- value,
- base::Bind(
- &BluetoothLowEnergyWriteDescriptorValueFunction::SuccessCallback,
- this),
- base::Bind(&BluetoothLowEnergyWriteDescriptorValueFunction::ErrorCallback,
- this));
-
- return true;
-}
-
-void BluetoothLowEnergyWriteDescriptorValueFunction::SuccessCallback() {
- results_ = apibtle::WriteDescriptorValue::Results::Create();
- SendResponse(true);
-}
-
-void BluetoothLowEnergyWriteDescriptorValueFunction::ErrorCallback(
- BluetoothLowEnergyEventRouter::Status status) {
- SetError(StatusToString(status));
- SendResponse(false);
-}
-
-} // namespace api
-} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698