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

Side by Side 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: 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/extensions/bluetooth_event_router.h" 5 #include "chrome/browser/chromeos/extensions/bluetooth_event_router.h"
6 6
7 #include <map>
8
7 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/memory/ref_counted.h"
8 #include "chrome/browser/chromeos/bluetooth/bluetooth_adapter.h" 11 #include "chrome/browser/chromeos/bluetooth/bluetooth_adapter.h"
12 #include "chrome/browser/chromeos/bluetooth/bluetooth_socket.h"
9 #include "chrome/browser/extensions/extension_event_names.h" 13 #include "chrome/browser/extensions/extension_event_names.h"
10 #include "chrome/browser/extensions/extension_event_router.h" 14 #include "chrome/browser/extensions/extension_event_router.h"
11 15
12 namespace chromeos { 16 namespace chromeos {
13 17
14 ExtensionBluetoothEventRouter::ExtensionBluetoothEventRouter(Profile* profile) 18 ExtensionBluetoothEventRouter::ExtensionBluetoothEventRouter(Profile* profile)
15 : profile_(profile), 19 : profile_(profile),
16 adapter_(chromeos::BluetoothAdapter::CreateDefaultAdapter()) { 20 adapter_(chromeos::BluetoothAdapter::CreateDefaultAdapter()),
21 next_socket_id_(1) {
17 DCHECK(profile_); 22 DCHECK(profile_);
18 DCHECK(adapter_.get()); 23 DCHECK(adapter_.get());
19 adapter_->AddObserver(this); 24 adapter_->AddObserver(this);
20 } 25 }
21 26
22 ExtensionBluetoothEventRouter::~ExtensionBluetoothEventRouter() { 27 ExtensionBluetoothEventRouter::~ExtensionBluetoothEventRouter() {
23 adapter_->RemoveObserver(this); 28 adapter_->RemoveObserver(this);
29 socket_map_.clear();
30 }
31
32 int ExtensionBluetoothEventRouter::RegisterSocket(
33 scoped_refptr<BluetoothSocket> socket) {
34 // If there is a socket registered with the same fd, just return it's id
35 for (SocketMap::const_iterator i = socket_map_.begin();
36 i != socket_map_.end(); ++i) {
37 if (i->second->fd() == socket->fd()) {
38 return i->first;
39 }
40 }
41 int return_id = next_socket_id_++;
42 socket_map_[next_socket_id_++] = socket;
asargent_no_longer_on_chrome 2012/05/12 16:36:05 shouldn't this be [return_id] instead of [next_soc
bryeung 2012/05/14 17:20:28 Yikes! Good catch.
43 return return_id;
44 }
45
46 bool ExtensionBluetoothEventRouter::ReleaseSocket(int id) {
47 SocketMap::iterator socket_entry = socket_map_.find(id);
48 if (socket_entry == socket_map_.end())
49 return false;
50 socket_map_.erase(socket_entry);
51 return true;
52 }
53
54 scoped_refptr<BluetoothSocket> ExtensionBluetoothEventRouter::GetSocket(
55 int id) {
56 SocketMap::iterator socket_entry = socket_map_.find(id);
57 if (socket_entry == socket_map_.end())
58 return NULL;
59 return socket_entry->second;
24 } 60 }
25 61
26 void ExtensionBluetoothEventRouter::AdapterPresentChanged( 62 void ExtensionBluetoothEventRouter::AdapterPresentChanged(
27 chromeos::BluetoothAdapter* adapter, bool present) { 63 chromeos::BluetoothAdapter* adapter, bool present) {
28 DCHECK(adapter == adapter_.get()); 64 DCHECK(adapter == adapter_.get());
29 DispatchEvent(extension_event_names::kBluetoothOnAvailabilityChanged, 65 DispatchEvent(extension_event_names::kBluetoothOnAvailabilityChanged,
30 present); 66 present);
31 } 67 }
32 68
33 void ExtensionBluetoothEventRouter::AdapterPoweredChanged( 69 void ExtensionBluetoothEventRouter::AdapterPoweredChanged(
34 chromeos::BluetoothAdapter* adapter, bool has_power) { 70 chromeos::BluetoothAdapter* adapter, bool has_power) {
35 DCHECK(adapter == adapter_.get()); 71 DCHECK(adapter == adapter_.get());
36 DispatchEvent(extension_event_names::kBluetoothOnPowerChanged, has_power); 72 DispatchEvent(extension_event_names::kBluetoothOnPowerChanged, has_power);
37 } 73 }
38 74
39 void ExtensionBluetoothEventRouter::DispatchEvent( 75 void ExtensionBluetoothEventRouter::DispatchEvent(
40 const char* event_name, bool value) { 76 const char* event_name, bool value) {
41 ListValue args; 77 ListValue args;
42 args.Append(Value::CreateBooleanValue(value)); 78 args.Append(Value::CreateBooleanValue(value));
43 std::string json_args; 79 std::string json_args;
44 base::JSONWriter::Write(&args, &json_args); 80 base::JSONWriter::Write(&args, &json_args);
45 81
46 profile_->GetExtensionEventRouter()->DispatchEventToRenderers( 82 profile_->GetExtensionEventRouter()->DispatchEventToRenderers(
47 event_name, json_args, NULL, GURL()); 83 event_name, json_args, NULL, GURL());
48 } 84 }
49 85
50 } // namespace chromeos 86 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698