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 #ifndef CHROME_BROWSER_EXTENSIONS_API_BLUETOOTH_BLUETOOTH_EVENT_ROUTER_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_API_BLUETOOTH_BLUETOOTH_EVENT_ROUTER_H_ |
6 #define CHROME_BROWSER_EXTENSIONS_API_BLUETOOTH_BLUETOOTH_EVENT_ROUTER_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_API_BLUETOOTH_BLUETOOTH_EVENT_ROUTER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 | 9 |
10 #include "base/callback_forward.h" | 10 #include "base/callback_forward.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 explicit BluetoothEventRouter(content::BrowserContext* context); | 41 explicit BluetoothEventRouter(content::BrowserContext* context); |
42 virtual ~BluetoothEventRouter(); | 42 virtual ~BluetoothEventRouter(); |
43 | 43 |
44 // Returns true if adapter_ has been initialized for testing or bluetooth | 44 // Returns true if adapter_ has been initialized for testing or bluetooth |
45 // adapter is available for the current platform. | 45 // adapter is available for the current platform. |
46 bool IsBluetoothSupported() const; | 46 bool IsBluetoothSupported() const; |
47 | 47 |
48 void GetAdapter( | 48 void GetAdapter( |
49 const device::BluetoothAdapterFactory::AdapterCallback& callback); | 49 const device::BluetoothAdapterFactory::AdapterCallback& callback); |
50 | 50 |
51 // Register the BluetoothSocket |socket| for use by the extensions system. | |
52 // This class will hold onto the socket for its lifetime until | |
53 // ReleaseSocket is called for the socket, or until the extension associated | |
54 // with the socket is disabled/ reloaded. Returns an id for the socket. | |
55 int RegisterSocket(const std::string& extension_id, | |
56 scoped_refptr<device::BluetoothSocket> socket); | |
57 | |
58 // Release the BluetoothSocket corresponding to |id|. Returns true if | |
59 // the socket was found and released, false otherwise. | |
60 bool ReleaseSocket(int id); | |
61 | |
62 // Add the BluetoothProfile |bluetooth_profile| for use by the extension | 51 // Add the BluetoothProfile |bluetooth_profile| for use by the extension |
63 // system. This class will hold onto the profile until RemoveProfile is | 52 // system. This class will hold onto the profile until RemoveProfile is |
64 // called for the profile, or until the extension that added the profile | 53 // called for the profile, or until the extension that added the profile |
65 // is disabled/reloaded. | 54 // is disabled/reloaded. |
66 void AddProfile(const std::string& uuid, | 55 void AddProfile(const std::string& uuid, |
67 const std::string& extension_id, | 56 const std::string& extension_id, |
68 device::BluetoothProfile* bluetooth_profile); | 57 device::BluetoothProfile* bluetooth_profile); |
69 | 58 |
70 // Unregister the BluetoothProfile corersponding to |uuid| and release the | 59 // Unregister the BluetoothProfile corersponding to |uuid| and release the |
71 // object from this class. | 60 // object from this class. |
(...skipping 19 matching lines...) Expand all Loading... |
91 // extension. | 80 // extension. |
92 void StopDiscoverySession(device::BluetoothAdapter* adapter, | 81 void StopDiscoverySession(device::BluetoothAdapter* adapter, |
93 const std::string& extension_id, | 82 const std::string& extension_id, |
94 const base::Closure& callback, | 83 const base::Closure& callback, |
95 const base::Closure& error_callback); | 84 const base::Closure& error_callback); |
96 | 85 |
97 // Returns the BluetoothProfile that corresponds to |uuid|. It returns NULL | 86 // Returns the BluetoothProfile that corresponds to |uuid|. It returns NULL |
98 // if the BluetoothProfile with |uuid| does not exist. | 87 // if the BluetoothProfile with |uuid| does not exist. |
99 device::BluetoothProfile* GetProfile(const std::string& uuid) const; | 88 device::BluetoothProfile* GetProfile(const std::string& uuid) const; |
100 | 89 |
101 // Get the BluetoothSocket corresponding to |id|. | |
102 scoped_refptr<device::BluetoothSocket> GetSocket(int id); | |
103 | |
104 // Dispatch an event that takes a connection socket as a parameter to the | |
105 // extension that registered the profile that the socket has connected to. | |
106 void DispatchConnectionEvent(const std::string& extension_id, | |
107 const std::string& uuid, | |
108 const device::BluetoothDevice* device, | |
109 scoped_refptr<device::BluetoothSocket> socket); | |
110 | |
111 // Called when a bluetooth event listener is added. | 90 // Called when a bluetooth event listener is added. |
112 void OnListenerAdded(); | 91 void OnListenerAdded(); |
113 | 92 |
114 // Called when a bluetooth event listener is removed. | 93 // Called when a bluetooth event listener is removed. |
115 void OnListenerRemoved(); | 94 void OnListenerRemoved(); |
116 | 95 |
117 // Adds a pairing delegate for an extension. | 96 // Adds a pairing delegate for an extension. |
118 void AddPairingDelegate(const std::string& extension_id); | 97 void AddPairingDelegate(const std::string& extension_id); |
119 | 98 |
120 // Removes the pairing delegate for an extension. | 99 // Removes the pairing delegate for an extension. |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 void OnStartDiscoverySession( | 149 void OnStartDiscoverySession( |
171 const std::string& extension_id, | 150 const std::string& extension_id, |
172 const base::Closure& callback, | 151 const base::Closure& callback, |
173 scoped_ptr<device::BluetoothDiscoverySession> discovery_session); | 152 scoped_ptr<device::BluetoothDiscoverySession> discovery_session); |
174 | 153 |
175 content::BrowserContext* browser_context_; | 154 content::BrowserContext* browser_context_; |
176 scoped_refptr<device::BluetoothAdapter> adapter_; | 155 scoped_refptr<device::BluetoothAdapter> adapter_; |
177 | 156 |
178 int num_event_listeners_; | 157 int num_event_listeners_; |
179 | 158 |
180 // The next id to use for referring to a BluetoothSocket. We avoid using | |
181 // the fd of the socket because we don't want to leak that information to | |
182 // the extension javascript. | |
183 int next_socket_id_; | |
184 | |
185 typedef std::map<int, ExtensionBluetoothSocketRecord> SocketMap; | |
186 SocketMap socket_map_; | |
187 | |
188 // Maps uuids to a struct containing a Bluetooth profile and its | 159 // Maps uuids to a struct containing a Bluetooth profile and its |
189 // associated extension id. | 160 // associated extension id. |
190 typedef std::map<std::string, ExtensionBluetoothProfileRecord> | 161 typedef std::map<std::string, ExtensionBluetoothProfileRecord> |
191 BluetoothProfileMap; | 162 BluetoothProfileMap; |
192 BluetoothProfileMap bluetooth_profile_map_; | 163 BluetoothProfileMap bluetooth_profile_map_; |
193 | 164 |
194 // A map that maps extension ids to BluetoothDiscoverySession pointers. | 165 // A map that maps extension ids to BluetoothDiscoverySession pointers. |
195 typedef std::map<std::string, device::BluetoothDiscoverySession*> | 166 typedef std::map<std::string, device::BluetoothDiscoverySession*> |
196 DiscoverySessionMap; | 167 DiscoverySessionMap; |
197 DiscoverySessionMap discovery_session_map_; | 168 DiscoverySessionMap discovery_session_map_; |
198 | 169 |
199 // Maps an extension id to its pairing delegate. | 170 // Maps an extension id to its pairing delegate. |
200 typedef std::map<std::string, BluetoothApiPairingDelegate*> | 171 typedef std::map<std::string, BluetoothApiPairingDelegate*> |
201 PairingDelegateMap; | 172 PairingDelegateMap; |
202 PairingDelegateMap pairing_delegate_map_; | 173 PairingDelegateMap pairing_delegate_map_; |
203 | 174 |
204 content::NotificationRegistrar registrar_; | 175 content::NotificationRegistrar registrar_; |
205 | 176 |
206 base::WeakPtrFactory<BluetoothEventRouter> weak_ptr_factory_; | 177 base::WeakPtrFactory<BluetoothEventRouter> weak_ptr_factory_; |
207 | 178 |
208 DISALLOW_COPY_AND_ASSIGN(BluetoothEventRouter); | 179 DISALLOW_COPY_AND_ASSIGN(BluetoothEventRouter); |
209 }; | 180 }; |
210 | 181 |
211 } // namespace extensions | 182 } // namespace extensions |
212 | 183 |
213 #endif // CHROME_BROWSER_EXTENSIONS_API_BLUETOOTH_BLUETOOTH_EVENT_ROUTER_H_ | 184 #endif // CHROME_BROWSER_EXTENSIONS_API_BLUETOOTH_BLUETOOTH_EVENT_ROUTER_H_ |
OLD | NEW |