OLD | NEW |
---|---|
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/extensions/bluetooth_event_router.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/json/json_writer.h" | 9 #include "base/json/json_writer.h" |
10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
11 #include "base/memory/scoped_vector.h" | 11 #include "base/memory/scoped_vector.h" |
12 #include "base/utf_string_conversions.h" | 12 #include "base/utf_string_conversions.h" |
13 #include "chrome/browser/chromeos/bluetooth/bluetooth_adapter.h" | |
14 #include "chrome/browser/chromeos/bluetooth/bluetooth_adapter_factory.h" | |
15 #include "chrome/browser/chromeos/bluetooth/bluetooth_device_chromeos.h" | |
16 #include "chrome/browser/chromeos/bluetooth/bluetooth_socket.h" | |
17 #include "chrome/browser/extensions/api/bluetooth/bluetooth_api_utils.h" | 13 #include "chrome/browser/extensions/api/bluetooth/bluetooth_api_utils.h" |
18 #include "chrome/browser/extensions/event_names.h" | 14 #include "chrome/browser/extensions/event_names.h" |
19 #include "chrome/browser/extensions/event_router.h" | 15 #include "chrome/browser/extensions/event_router.h" |
20 #include "chrome/common/extensions/api/experimental_bluetooth.h" | 16 #include "chrome/common/extensions/api/experimental_bluetooth.h" |
17 #include "device/bluetooth/bluetooth_adapter.h" | |
18 #include "device/bluetooth/bluetooth_adapter_factory.h" | |
19 #include "device/bluetooth/bluetooth_device.h" | |
20 #include "device/bluetooth/bluetooth_socket.h" | |
21 | |
22 using bluetooth::BluetoothSocket; | |
bryeung
2012/10/10 15:03:53
use all or none of the Bluetooth classes you're us
youngki
2012/10/10 18:34:57
Done.
| |
21 | 23 |
22 namespace experimental_bluetooth = extensions::api::experimental_bluetooth; | 24 namespace experimental_bluetooth = extensions::api::experimental_bluetooth; |
23 | 25 |
24 namespace chromeos { | 26 namespace extensions { |
25 | 27 |
26 ExtensionBluetoothEventRouter::ExtensionBluetoothEventRouter(Profile* profile) | 28 ExtensionBluetoothEventRouter::ExtensionBluetoothEventRouter(Profile* profile) |
27 : profile_(profile), | 29 : profile_(profile), |
28 adapter_(chromeos::BluetoothAdapterFactory::DefaultAdapter()), | 30 adapter_(bluetooth::BluetoothAdapterFactory::DefaultAdapter()), |
29 next_socket_id_(1) { | 31 next_socket_id_(1) { |
30 DCHECK(profile_); | 32 DCHECK(profile_); |
31 DCHECK(adapter_.get()); | 33 if (adapter_.get()) { |
bryeung
2012/10/10 15:03:53
no braces
youngki
2012/10/10 18:34:57
Done.
| |
32 adapter_->AddObserver(this); | 34 adapter_->AddObserver(this); |
35 } | |
33 } | 36 } |
34 | 37 |
35 ExtensionBluetoothEventRouter::~ExtensionBluetoothEventRouter() { | 38 ExtensionBluetoothEventRouter::~ExtensionBluetoothEventRouter() { |
36 adapter_->RemoveObserver(this); | 39 if (adapter_.get()) { |
bryeung
2012/10/10 15:03:53
no braces
youngki
2012/10/10 18:34:57
Done.
| |
40 adapter_->RemoveObserver(this); | |
41 } | |
37 socket_map_.clear(); | 42 socket_map_.clear(); |
38 } | 43 } |
39 | 44 |
40 int ExtensionBluetoothEventRouter::RegisterSocket( | 45 int ExtensionBluetoothEventRouter::RegisterSocket( |
41 scoped_refptr<BluetoothSocket> socket) { | 46 scoped_refptr<BluetoothSocket> socket) { |
42 // If there is a socket registered with the same fd, just return it's id | 47 // If there is a socket registered with the same fd, just return it's id |
43 for (SocketMap::const_iterator i = socket_map_.begin(); | 48 for (SocketMap::const_iterator i = socket_map_.begin(); |
44 i != socket_map_.end(); ++i) { | 49 i != socket_map_.end(); ++i) { |
45 if (i->second->fd() == socket->fd()) { | 50 if (i->second->fd() == socket->fd()) { |
46 return i->first; | 51 return i->first; |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
95 scoped_ptr<ListValue> args(new ListValue()); | 100 scoped_ptr<ListValue> args(new ListValue()); |
96 args->Append(device.ToValue().release()); | 101 args->Append(device.ToValue().release()); |
97 profile_->GetExtensionEventRouter()->DispatchEventToRenderers( | 102 profile_->GetExtensionEventRouter()->DispatchEventToRenderers( |
98 event_name, | 103 event_name, |
99 args.Pass(), | 104 args.Pass(), |
100 NULL, | 105 NULL, |
101 GURL()); | 106 GURL()); |
102 } | 107 } |
103 | 108 |
104 void ExtensionBluetoothEventRouter::AdapterPresentChanged( | 109 void ExtensionBluetoothEventRouter::AdapterPresentChanged( |
105 chromeos::BluetoothAdapter* adapter, bool present) { | 110 bluetooth::BluetoothAdapter* adapter, bool present) { |
106 if (adapter != adapter_.get()) { | 111 if (adapter != adapter_.get()) { |
107 DVLOG(1) << "Ignoring event for adapter " << adapter->address(); | 112 DVLOG(1) << "Ignoring event for adapter " << adapter->address(); |
108 return; | 113 return; |
109 } | 114 } |
110 | 115 |
111 DispatchBooleanValueEvent( | 116 DispatchBooleanValueEvent( |
112 extensions::event_names::kBluetoothOnAvailabilityChanged, | 117 extensions::event_names::kBluetoothOnAvailabilityChanged, |
113 present); | 118 present); |
114 } | 119 } |
115 | 120 |
116 void ExtensionBluetoothEventRouter::AdapterPoweredChanged( | 121 void ExtensionBluetoothEventRouter::AdapterPoweredChanged( |
117 chromeos::BluetoothAdapter* adapter, bool has_power) { | 122 bluetooth::BluetoothAdapter* adapter, bool has_power) { |
118 if (adapter != adapter_.get()) { | 123 if (adapter != adapter_.get()) { |
119 DVLOG(1) << "Ignoring event for adapter " << adapter->address(); | 124 DVLOG(1) << "Ignoring event for adapter " << adapter->address(); |
120 return; | 125 return; |
121 } | 126 } |
122 | 127 |
123 DispatchBooleanValueEvent( | 128 DispatchBooleanValueEvent( |
124 extensions::event_names::kBluetoothOnPowerChanged, | 129 extensions::event_names::kBluetoothOnPowerChanged, |
125 has_power); | 130 has_power); |
126 } | 131 } |
127 | 132 |
128 void ExtensionBluetoothEventRouter::AdapterDiscoveringChanged( | 133 void ExtensionBluetoothEventRouter::AdapterDiscoveringChanged( |
129 chromeos::BluetoothAdapter* adapter, bool discovering) { | 134 bluetooth::BluetoothAdapter* adapter, bool discovering) { |
130 if (adapter != adapter_.get()) { | 135 if (adapter != adapter_.get()) { |
131 DVLOG(1) << "Ignoring event for adapter " << adapter->address(); | 136 DVLOG(1) << "Ignoring event for adapter " << adapter->address(); |
132 return; | 137 return; |
133 } | 138 } |
134 | 139 |
135 if (!discovering) { | 140 if (!discovering) { |
136 send_discovery_events_ = false; | 141 send_discovery_events_ = false; |
137 responsible_for_discovery_ = false; | 142 responsible_for_discovery_ = false; |
138 discovered_devices_.clear(); | 143 discovered_devices_.clear(); |
139 } | 144 } |
140 | 145 |
141 DispatchBooleanValueEvent( | 146 DispatchBooleanValueEvent( |
142 extensions::event_names::kBluetoothOnDiscoveringChanged, | 147 extensions::event_names::kBluetoothOnDiscoveringChanged, |
143 discovering); | 148 discovering); |
144 } | 149 } |
145 | 150 |
146 void ExtensionBluetoothEventRouter::DeviceAdded( | 151 void ExtensionBluetoothEventRouter::DeviceAdded( |
147 chromeos::BluetoothAdapter* adapter, chromeos::BluetoothDevice* device) { | 152 bluetooth::BluetoothAdapter* adapter, |
153 bluetooth::BluetoothDevice* device) { | |
148 if (adapter != adapter_.get()) { | 154 if (adapter != adapter_.get()) { |
149 DVLOG(1) << "Ignoring event for adapter " << adapter->address(); | 155 DVLOG(1) << "Ignoring event for adapter " << adapter->address(); |
150 return; | 156 return; |
151 } | 157 } |
152 | 158 |
153 experimental_bluetooth::Device* extension_device = | 159 experimental_bluetooth::Device* extension_device = |
154 new experimental_bluetooth::Device(); | 160 new experimental_bluetooth::Device(); |
155 experimental_bluetooth::BluetoothDeviceToApiDevice(*device, extension_device); | 161 experimental_bluetooth::BluetoothDeviceToApiDevice(*device, extension_device); |
156 discovered_devices_.push_back(extension_device); | 162 discovered_devices_.push_back(extension_device); |
157 | 163 |
158 if (!send_discovery_events_) | 164 if (!send_discovery_events_) |
159 return; | 165 return; |
160 | 166 |
161 DispatchDeviceEvent(extensions::event_names::kBluetoothOnDeviceDiscovered, | 167 DispatchDeviceEvent(extensions::event_names::kBluetoothOnDeviceDiscovered, |
162 *extension_device); | 168 *extension_device); |
163 } | 169 } |
164 | 170 |
165 void ExtensionBluetoothEventRouter::DispatchBooleanValueEvent( | 171 void ExtensionBluetoothEventRouter::DispatchBooleanValueEvent( |
166 const char* event_name, bool value) { | 172 const char* event_name, bool value) { |
167 scoped_ptr<ListValue> args(new ListValue()); | 173 scoped_ptr<ListValue> args(new ListValue()); |
168 args->Append(Value::CreateBooleanValue(value)); | 174 args->Append(Value::CreateBooleanValue(value)); |
169 profile_->GetExtensionEventRouter()->DispatchEventToRenderers( | 175 profile_->GetExtensionEventRouter()->DispatchEventToRenderers( |
170 event_name, args.Pass(), NULL, GURL()); | 176 event_name, args.Pass(), NULL, GURL()); |
171 } | 177 } |
172 | 178 |
173 } // namespace chromeos | 179 } // namespace extensions |
OLD | NEW |