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

Side by Side Diff: chrome/browser/extensions/bluetooth_event_router.cc

Issue 11369055: Delayed adding BluetoothEventRouter as BluetoothAdapter observer until when the (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed BluetoothApiTest. Created 8 years, 1 month 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/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/extensions/api/bluetooth/bluetooth_api_utils.h" 13 #include "chrome/browser/extensions/api/bluetooth/bluetooth_api_utils.h"
14 #include "chrome/browser/extensions/event_names.h" 14 #include "chrome/browser/extensions/event_names.h"
15 #include "chrome/browser/extensions/event_router.h" 15 #include "chrome/browser/extensions/event_router.h"
16 #include "chrome/browser/extensions/extension_system.h" 16 #include "chrome/browser/extensions/extension_system.h"
17 #include "chrome/common/extensions/api/bluetooth.h" 17 #include "chrome/common/extensions/api/bluetooth.h"
18 #include "device/bluetooth/bluetooth_adapter.h" 18 #include "device/bluetooth/bluetooth_adapter.h"
19 #include "device/bluetooth/bluetooth_adapter_factory.h" 19 #include "device/bluetooth/bluetooth_adapter_factory.h"
20 #include "device/bluetooth/bluetooth_device.h" 20 #include "device/bluetooth/bluetooth_device.h"
21 #include "device/bluetooth/bluetooth_socket.h" 21 #include "device/bluetooth/bluetooth_socket.h"
22 22
23 namespace extensions { 23 namespace extensions {
24 24
25 ExtensionBluetoothEventRouter::ExtensionBluetoothEventRouter(Profile* profile) 25 ExtensionBluetoothEventRouter::ExtensionBluetoothEventRouter(Profile* profile)
26 : send_discovery_events_(false), 26 : send_discovery_events_(false),
27 responsible_for_discovery_(false), 27 responsible_for_discovery_(false),
28 profile_(profile), 28 profile_(profile),
29 adapter_(device::BluetoothAdapterFactory::DefaultAdapter()), 29 adapter_(device::BluetoothAdapterFactory::DefaultAdapter()),
30 observing_(false),
30 next_socket_id_(1) { 31 next_socket_id_(1) {
31 DCHECK(profile_); 32 DCHECK(profile_);
32 if (adapter_.get()) 33 }
33 adapter_->AddObserver(this); 34
35 ExtensionBluetoothEventRouter::ExtensionBluetoothEventRouter(
36 Profile* profile, device::BluetoothAdapter* adapter)
37 : send_discovery_events_(false),
38 responsible_for_discovery_(false),
39 profile_(profile),
40 adapter_(adapter),
41 observing_(false),
42 next_socket_id_(1) {
43 DCHECK(profile_);
34 } 44 }
35 45
36 ExtensionBluetoothEventRouter::~ExtensionBluetoothEventRouter() { 46 ExtensionBluetoothEventRouter::~ExtensionBluetoothEventRouter() {
37 if (adapter_.get()) 47 if (adapter_.get())
38 adapter_->RemoveObserver(this); 48 adapter_->RemoveObserver(this);
39 49
40 socket_map_.clear(); 50 socket_map_.clear();
41 } 51 }
42 52
43 int ExtensionBluetoothEventRouter::RegisterSocket( 53 int ExtensionBluetoothEventRouter::RegisterSocket(
(...skipping 11 matching lines...) Expand all
55 } 65 }
56 66
57 bool ExtensionBluetoothEventRouter::ReleaseSocket(int id) { 67 bool ExtensionBluetoothEventRouter::ReleaseSocket(int id) {
58 SocketMap::iterator socket_entry = socket_map_.find(id); 68 SocketMap::iterator socket_entry = socket_map_.find(id);
59 if (socket_entry == socket_map_.end()) 69 if (socket_entry == socket_map_.end())
60 return false; 70 return false;
61 socket_map_.erase(socket_entry); 71 socket_map_.erase(socket_entry);
62 return true; 72 return true;
63 } 73 }
64 74
75 bool ExtensionBluetoothEventRouter::IsBluetoothEvent(
76 const std::string& event_name) {
77 return
78 event_name == extensions::event_names::kBluetoothOnAvailabilityChanged ||
79 event_name == extensions::event_names::kBluetoothOnDiscoveringChanged ||
80 event_name == extensions::event_names::kBluetoothOnPowerChanged;
81 }
82
83 void ExtensionBluetoothEventRouter::OnEventListenerAdded(
84 const std::string& event_name) {
85 if (!observing_ && IsBluetoothEvent(event_name) && adapter_.get()) {
86 adapter_->AddObserver(this);
87 observing_ = true;
88 }
89 }
90
65 scoped_refptr<device::BluetoothSocket> 91 scoped_refptr<device::BluetoothSocket>
66 ExtensionBluetoothEventRouter::GetSocket(int id) { 92 ExtensionBluetoothEventRouter::GetSocket(int id) {
67 SocketMap::iterator socket_entry = socket_map_.find(id); 93 SocketMap::iterator socket_entry = socket_map_.find(id);
68 if (socket_entry == socket_map_.end()) 94 if (socket_entry == socket_map_.end())
69 return NULL; 95 return NULL;
70 return socket_entry->second; 96 return socket_entry->second;
71 } 97 }
72 98
73 void ExtensionBluetoothEventRouter::SetResponsibleForDiscovery( 99 void ExtensionBluetoothEventRouter::SetResponsibleForDiscovery(
74 bool responsible) { 100 bool responsible) {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 192
167 void ExtensionBluetoothEventRouter::DispatchBooleanValueEvent( 193 void ExtensionBluetoothEventRouter::DispatchBooleanValueEvent(
168 const char* event_name, bool value) { 194 const char* event_name, bool value) {
169 scoped_ptr<ListValue> args(new ListValue()); 195 scoped_ptr<ListValue> args(new ListValue());
170 args->Append(Value::CreateBooleanValue(value)); 196 args->Append(Value::CreateBooleanValue(value));
171 extensions::ExtensionSystem::Get(profile_)->event_router()-> 197 extensions::ExtensionSystem::Get(profile_)->event_router()->
172 DispatchEventToRenderers(event_name, args.Pass(), NULL, GURL()); 198 DispatchEventToRenderers(event_name, args.Pass(), NULL, GURL());
173 } 199 }
174 200
175 } // namespace extensions 201 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/bluetooth_event_router.h ('k') | chrome/browser/extensions/bluetooth_event_router_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698