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

Unified Diff: chrome/browser/extensions/api/bluetooth/bluetooth_api.cc

Issue 10007008: Add support for creating bluetooth RFCOMM sockets. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: adding disconnect Created 8 years, 8 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/bluetooth_api.cc
diff --git a/chrome/browser/extensions/api/bluetooth/bluetooth_api.cc b/chrome/browser/extensions/api/bluetooth/bluetooth_api.cc
index 76b5940c0e1ef09a285a4c41d36ae0e5037f1c7c..5ac730c741ad90fda1a3123ef3be420a436c4ba0 100644
--- a/chrome/browser/extensions/api/bluetooth/bluetooth_api.cc
+++ b/chrome/browser/extensions/api/bluetooth/bluetooth_api.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/extensions/api/bluetooth/bluetooth_api.h"
+#include "base/memory/weak_ptr.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/profiles/profile.h"
@@ -12,6 +13,7 @@
#if defined(OS_CHROMEOS)
#include "chrome/browser/chromeos/bluetooth/bluetooth_adapter.h"
#include "chrome/browser/chromeos/bluetooth/bluetooth_device.h"
+#include "chrome/browser/chromeos/bluetooth/bluetooth_socket.h"
#include "chrome/browser/chromeos/extensions/bluetooth_event_router.h"
using chromeos::BluetoothAdapter;
@@ -20,33 +22,32 @@ using chromeos::BluetoothDevice;
namespace GetDevicesWithService =
extensions::api::experimental_bluetooth::GetDevicesWithService;
+namespace Connect = extensions::api::experimental_bluetooth::Connect;
+namespace Disconnect = extensions::api::experimental_bluetooth::Disconnect;
namespace extensions {
namespace api {
#if defined(OS_CHROMEOS)
-BluetoothExtensionFunction::BluetoothExtensionFunction() : adapter_(
- profile()->GetExtensionService()->bluetooth_event_router()->adapter()) {
+BluetoothExtensionFunction::BluetoothExtensionFunction() {
+ chromeos::ExtensionBluetoothEventRouter* event_router =
+ profile()->GetExtensionService()->bluetooth_event_router();
+ const_adapter_ = event_router->adapter();
+ adapter_ = event_router->GetMutableAdapter();
}
bool BluetoothIsAvailableFunction::RunImpl() {
- const BluetoothAdapter *adapter =
- profile()->GetExtensionService()->bluetooth_event_router()->adapter();
- result_.reset(Value::CreateBooleanValue(adapter->IsPresent()));
+ result_.reset(Value::CreateBooleanValue(const_adapter_->IsPresent()));
return true;
}
bool BluetoothIsPoweredFunction::RunImpl() {
- const BluetoothAdapter *adapter =
- profile()->GetExtensionService()->bluetooth_event_router()->adapter();
- result_.reset(Value::CreateBooleanValue(adapter->IsPowered()));
+ result_.reset(Value::CreateBooleanValue(const_adapter_->IsPowered()));
return true;
}
bool BluetoothGetAddressFunction::RunImpl() {
- const chromeos::BluetoothAdapter *adapter =
- profile()->GetExtensionService()->bluetooth_event_router()->adapter();
- result_.reset(Value::CreateStringValue(adapter->address()));
+ result_.reset(Value::CreateStringValue(const_adapter_->address()));
return false;
}
@@ -54,7 +55,7 @@ bool BluetoothGetDevicesWithServiceFunction::RunImpl() {
scoped_ptr<GetDevicesWithService::Params> params(
GetDevicesWithService::Params::Create(*args_));
- BluetoothAdapter::ConstDeviceList devices = adapter_->GetDevices();
+ BluetoothAdapter::ConstDeviceList devices = const_adapter_->GetDevices();
ListValue* matches = new ListValue();
for (BluetoothAdapter::ConstDeviceList::const_iterator i =
@@ -75,6 +76,41 @@ bool BluetoothGetDevicesWithServiceFunction::RunImpl() {
return true;
}
+bool BluetoothConnectFunction::RunImpl() {
+ scoped_ptr<Connect::Params> params(Connect::Params::Create(*args_));
+
+ chromeos::BluetoothDevice* device =
+ adapter_->GetDevice(params->device.address);
+ if (!device)
+ return false;
+
+ base::WeakPtr<chromeos::BluetoothSocket> socket =
+ device->OpenSocket(params->service);
+ if (!socket)
+ return false;
+
+ experimental_bluetooth::Socket result_socket;
+ result_socket.device.address = device->address();
+ result_socket.device.name = UTF16ToUTF8(device->GetName());
+ result_socket.service_uuid = params->service;
+ result_socket.id = socket->id();
+ result_.reset(result_socket.ToValue().get());
+ return true;
+}
+
+bool BluetoothDisconnectFunction::RunImpl() {
+ scoped_ptr<Disconnect::Params> params(Disconnect::Params::Create(*args_));
+
+ chromeos::BluetoothDevice* device =
+ adapter_->GetDevice(params->socket.device.address);
+ if (!device)
+ return false;
+
+ device->CloseSocket(params->socket.id);
+
+ return true;
+}
+
#else
BluetoothExtensionFunction::BluetoothExtensionFunction() {}
@@ -102,13 +138,18 @@ bool BluetoothGetDevicesWithServiceFunction::RunImpl() {
return false;
}
-#endif
+bool BluetoothConnectFunction::RunImpl() {
+ NOTREACHED() << "Not implemented yet";
+ return false;
+}
bool BluetoothDisconnectFunction::RunImpl() {
NOTREACHED() << "Not implemented yet";
return false;
}
+#endif
+
bool BluetoothReadFunction::RunImpl() {
NOTREACHED() << "Not implemented yet";
return false;
@@ -129,10 +170,5 @@ bool BluetoothWriteFunction::RunImpl() {
return false;
}
-bool BluetoothConnectFunction::RunImpl() {
- NOTREACHED() << "Not implemented yet";
- return false;
-}
-
} // namespace api
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698