Chromium Code Reviews| 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/extensions/api/bluetooth/bluetooth_event_router.h" | 5 #include "chrome/browser/extensions/api/bluetooth/bluetooth_event_router.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 203 } | 203 } |
| 204 | 204 |
| 205 scoped_refptr<device::BluetoothSocket> | 205 scoped_refptr<device::BluetoothSocket> |
| 206 ExtensionBluetoothEventRouter::GetSocket(int id) { | 206 ExtensionBluetoothEventRouter::GetSocket(int id) { |
| 207 SocketMap::iterator socket_entry = socket_map_.find(id); | 207 SocketMap::iterator socket_entry = socket_map_.find(id); |
| 208 if (socket_entry == socket_map_.end()) | 208 if (socket_entry == socket_map_.end()) |
| 209 return NULL; | 209 return NULL; |
| 210 return socket_entry->second.socket; | 210 return socket_entry->second.socket; |
| 211 } | 211 } |
| 212 | 212 |
| 213 void ExtensionBluetoothEventRouter::DispatchDeviceEvent( | |
| 214 const std::string& event_name, const bluetooth::Device& device) { | |
| 215 scoped_ptr<base::ListValue> args(new base::ListValue()); | |
| 216 args->Append(device.ToValue().release()); | |
| 217 scoped_ptr<Event> event(new Event(event_name, args.Pass())); | |
| 218 ExtensionSystem::Get(browser_context_)->event_router()->BroadcastEvent( | |
| 219 event.Pass()); | |
| 220 } | |
| 221 | |
| 222 void ExtensionBluetoothEventRouter::DispatchConnectionEvent( | 213 void ExtensionBluetoothEventRouter::DispatchConnectionEvent( |
| 223 const std::string& extension_id, | 214 const std::string& extension_id, |
| 224 const std::string& uuid, | 215 const std::string& uuid, |
| 225 const device::BluetoothDevice* device, | 216 const device::BluetoothDevice* device, |
| 226 scoped_refptr<device::BluetoothSocket> socket) { | 217 scoped_refptr<device::BluetoothSocket> socket) { |
| 227 if (!HasProfile(uuid)) | 218 if (!HasProfile(uuid)) |
| 228 return; | 219 return; |
| 229 | 220 |
| 230 int socket_id = RegisterSocket(extension_id, socket); | 221 int socket_id = RegisterSocket(extension_id, socket); |
| 231 api::bluetooth::Socket result_socket; | 222 api::bluetooth::Socket result_socket; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 287 } | 278 } |
| 288 | 279 |
| 289 void ExtensionBluetoothEventRouter::DeviceAdded( | 280 void ExtensionBluetoothEventRouter::DeviceAdded( |
| 290 device::BluetoothAdapter* adapter, | 281 device::BluetoothAdapter* adapter, |
| 291 device::BluetoothDevice* device) { | 282 device::BluetoothDevice* device) { |
| 292 if (adapter != adapter_.get()) { | 283 if (adapter != adapter_.get()) { |
| 293 DVLOG(1) << "Ignoring event for adapter " << adapter->GetAddress(); | 284 DVLOG(1) << "Ignoring event for adapter " << adapter->GetAddress(); |
| 294 return; | 285 return; |
| 295 } | 286 } |
| 296 | 287 |
| 297 bluetooth::Device* extension_device = | 288 DispatchDeviceEvent(extensions::event_names::kBluetoothOnDeviceAdded, |
| 298 new bluetooth::Device(); | 289 device); |
| 299 bluetooth::BluetoothDeviceToApiDevice( | 290 } |
| 300 *device, extension_device); | |
| 301 | 291 |
| 302 DispatchDeviceEvent(extensions::event_names::kBluetoothOnDeviceDiscovered, | 292 void ExtensionBluetoothEventRouter::DeviceChanged( |
| 303 *extension_device); | 293 device::BluetoothAdapter* adapter, |
| 294 device::BluetoothDevice* device) { | |
| 295 if (adapter != adapter_.get()) { | |
| 296 DVLOG(1) << "Ignoring event for adapter " << adapter->GetAddress(); | |
| 297 return; | |
| 298 } | |
| 299 | |
| 300 DispatchDeviceEvent(extensions::event_names::kBluetoothOnDeviceChanged, | |
| 301 device); | |
| 302 } | |
| 303 | |
| 304 void ExtensionBluetoothEventRouter::DeviceRemoved( | |
| 305 device::BluetoothAdapter* adapter, | |
| 306 device::BluetoothDevice* device) { | |
| 307 if (adapter != adapter_.get()) { | |
| 308 DVLOG(1) << "Ignoring event for adapter " << adapter->GetAddress(); | |
| 309 return; | |
| 310 } | |
| 311 | |
| 312 DispatchDeviceEvent(extensions::event_names::kBluetoothOnDeviceRemoved, | |
| 313 device); | |
| 304 } | 314 } |
| 305 | 315 |
| 306 void ExtensionBluetoothEventRouter::InitializeAdapterIfNeeded() { | 316 void ExtensionBluetoothEventRouter::InitializeAdapterIfNeeded() { |
| 307 if (!adapter_.get()) { | 317 if (!adapter_.get()) { |
| 308 GetAdapter(base::Bind(&ExtensionBluetoothEventRouter::InitializeAdapter, | 318 GetAdapter(base::Bind(&ExtensionBluetoothEventRouter::InitializeAdapter, |
| 309 weak_ptr_factory_.GetWeakPtr())); | 319 weak_ptr_factory_.GetWeakPtr())); |
| 310 } | 320 } |
| 311 } | 321 } |
| 312 | 322 |
| 313 void ExtensionBluetoothEventRouter::InitializeAdapter( | 323 void ExtensionBluetoothEventRouter::InitializeAdapter( |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 331 | 341 |
| 332 scoped_ptr<base::ListValue> args(new base::ListValue()); | 342 scoped_ptr<base::ListValue> args(new base::ListValue()); |
| 333 args->Append(state.ToValue().release()); | 343 args->Append(state.ToValue().release()); |
| 334 scoped_ptr<Event> event(new Event( | 344 scoped_ptr<Event> event(new Event( |
| 335 bluetooth::OnAdapterStateChanged::kEventName, | 345 bluetooth::OnAdapterStateChanged::kEventName, |
| 336 args.Pass())); | 346 args.Pass())); |
| 337 ExtensionSystem::Get(browser_context_)->event_router()->BroadcastEvent( | 347 ExtensionSystem::Get(browser_context_)->event_router()->BroadcastEvent( |
| 338 event.Pass()); | 348 event.Pass()); |
| 339 } | 349 } |
| 340 | 350 |
| 351 void ExtensionBluetoothEventRouter::DispatchDeviceEvent( | |
| 352 const std::string& event_name, | |
| 353 device::BluetoothDevice* device) { | |
| 354 bluetooth::Device extension_device; | |
| 355 bluetooth::BluetoothDeviceToApiDevice(*device, &extension_device); | |
| 356 | |
| 357 scoped_ptr<base::ListValue> args(new base::ListValue()); | |
|
rpaquay
2014/03/06 00:11:19
You should be able to use auto-generated code, i.e
keybuk
2014/03/06 21:33:44
Done.
| |
| 358 args->Append(extension_device.ToValue().release()); | |
| 359 scoped_ptr<Event> event(new Event(event_name, args.Pass())); | |
| 360 ExtensionSystem::Get(browser_context_)->event_router()->BroadcastEvent( | |
| 361 event.Pass()); | |
| 362 } | |
| 363 | |
| 341 void ExtensionBluetoothEventRouter::CleanUpForExtension( | 364 void ExtensionBluetoothEventRouter::CleanUpForExtension( |
| 342 const std::string& extension_id) { | 365 const std::string& extension_id) { |
| 343 // Remove all profiles added by the extension. | 366 // Remove all profiles added by the extension. |
| 344 BluetoothProfileMap::iterator profile_iter = bluetooth_profile_map_.begin(); | 367 BluetoothProfileMap::iterator profile_iter = bluetooth_profile_map_.begin(); |
| 345 while (profile_iter != bluetooth_profile_map_.end()) { | 368 while (profile_iter != bluetooth_profile_map_.end()) { |
| 346 ExtensionBluetoothProfileRecord record = profile_iter->second; | 369 ExtensionBluetoothProfileRecord record = profile_iter->second; |
| 347 if (record.extension_id == extension_id) { | 370 if (record.extension_id == extension_id) { |
| 348 bluetooth_profile_map_.erase(profile_iter++); | 371 bluetooth_profile_map_.erase(profile_iter++); |
| 349 record.profile->Unregister(); | 372 record.profile->Unregister(); |
| 350 } else { | 373 } else { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 393 case chrome::NOTIFICATION_EXTENSION_UNLOADED: { | 416 case chrome::NOTIFICATION_EXTENSION_UNLOADED: { |
| 394 extensions::UnloadedExtensionInfo* info = | 417 extensions::UnloadedExtensionInfo* info = |
| 395 content::Details<extensions::UnloadedExtensionInfo>(details).ptr(); | 418 content::Details<extensions::UnloadedExtensionInfo>(details).ptr(); |
| 396 CleanUpForExtension(info->extension->id()); | 419 CleanUpForExtension(info->extension->id()); |
| 397 break; | 420 break; |
| 398 } | 421 } |
| 399 } | 422 } |
| 400 } | 423 } |
| 401 | 424 |
| 402 } // namespace extensions | 425 } // namespace extensions |
| OLD | NEW |