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 |