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

Unified Diff: chrome/browser/chromeos/extensions/bluetooth_event_router.cc

Issue 10381120: Implement chrome.experimental.bluetooth.connect (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 7 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/chromeos/extensions/bluetooth_event_router.cc
diff --git a/chrome/browser/chromeos/extensions/bluetooth_event_router.cc b/chrome/browser/chromeos/extensions/bluetooth_event_router.cc
index 1643585930f523dbfe7a6be8e81cbccdc5d53023..d02649eac09b4b57d44009bdd00a9ac5c11cf570 100644
--- a/chrome/browser/chromeos/extensions/bluetooth_event_router.cc
+++ b/chrome/browser/chromeos/extensions/bluetooth_event_router.cc
@@ -4,8 +4,12 @@
#include "chrome/browser/chromeos/extensions/bluetooth_event_router.h"
+#include <map>
+
#include "base/json/json_writer.h"
+#include "base/memory/ref_counted.h"
#include "chrome/browser/chromeos/bluetooth/bluetooth_adapter.h"
+#include "chrome/browser/chromeos/bluetooth/bluetooth_socket.h"
#include "chrome/browser/extensions/extension_event_names.h"
#include "chrome/browser/extensions/extension_event_router.h"
@@ -13,7 +17,8 @@ namespace chromeos {
ExtensionBluetoothEventRouter::ExtensionBluetoothEventRouter(Profile* profile)
: profile_(profile),
- adapter_(chromeos::BluetoothAdapter::CreateDefaultAdapter()) {
+ adapter_(chromeos::BluetoothAdapter::CreateDefaultAdapter()),
+ next_socket_id_(1) {
DCHECK(profile_);
DCHECK(adapter_.get());
adapter_->AddObserver(this);
@@ -21,6 +26,37 @@ ExtensionBluetoothEventRouter::ExtensionBluetoothEventRouter(Profile* profile)
ExtensionBluetoothEventRouter::~ExtensionBluetoothEventRouter() {
adapter_->RemoveObserver(this);
+ socket_map_.clear();
+}
+
+int ExtensionBluetoothEventRouter::RegisterSocket(
+ scoped_refptr<BluetoothSocket> socket) {
+ // If there is a socket registered with the same fd, just return it's id
+ for (SocketMap::const_iterator i = socket_map_.begin();
+ i != socket_map_.end(); ++i) {
+ if (i->second->fd() == socket->fd()) {
+ return i->first;
+ }
+ }
+ int return_id = next_socket_id_++;
+ socket_map_[return_id] = socket;
+ return return_id;
+}
+
+bool ExtensionBluetoothEventRouter::ReleaseSocket(int id) {
+ SocketMap::iterator socket_entry = socket_map_.find(id);
+ if (socket_entry == socket_map_.end())
+ return false;
+ socket_map_.erase(socket_entry);
+ return true;
+}
+
+scoped_refptr<BluetoothSocket> ExtensionBluetoothEventRouter::GetSocket(
+ int id) {
+ SocketMap::iterator socket_entry = socket_map_.find(id);
+ if (socket_entry == socket_map_.end())
+ return NULL;
+ return socket_entry->second;
}
void ExtensionBluetoothEventRouter::AdapterPresentChanged(
« no previous file with comments | « chrome/browser/chromeos/extensions/bluetooth_event_router.h ('k') | chrome/browser/extensions/api/bluetooth/bluetooth_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698