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

Side by Side Diff: chrome/browser/extensions/api/bluetooth/bluetooth_event_router.h

Issue 14487002: Bluetooth: Profile support for Chrome OS (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Transfer out ownership of fd. Fix socket code Created 7 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 #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/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/memory/weak_ptr.h" 12 #include "base/memory/weak_ptr.h"
13 #include "chrome/common/extensions/api/bluetooth.h" 13 #include "chrome/common/extensions/api/bluetooth.h"
14 #include "device/bluetooth/bluetooth_adapter.h" 14 #include "device/bluetooth/bluetooth_adapter.h"
15 #include "device/bluetooth/bluetooth_adapter_factory.h" 15 #include "device/bluetooth/bluetooth_adapter_factory.h"
16 #include "device/bluetooth/bluetooth_socket.h" 16 #include "device/bluetooth/bluetooth_socket.h"
17 17
18 class Profile; 18 class Profile;
19 19
20 namespace device {
21
22 class BluetoothDevice;
23 class BluetoothProfile;
24
25 } // namespace device
26
20 namespace extensions { 27 namespace extensions {
21 28
22 class ExtensionBluetoothEventRouter 29 class ExtensionBluetoothEventRouter
23 : public device::BluetoothAdapter::Observer { 30 : public device::BluetoothAdapter::Observer {
24 public: 31 public:
25 explicit ExtensionBluetoothEventRouter(Profile* profile); 32 explicit ExtensionBluetoothEventRouter(Profile* profile);
26 virtual ~ExtensionBluetoothEventRouter(); 33 virtual ~ExtensionBluetoothEventRouter();
27 34
28 // Returns true if adapter_ has been initialized for testing or bluetooth 35 // Returns true if adapter_ has been initialized for testing or bluetooth
29 // adapter is available for the current platform. 36 // adapter is available for the current platform.
(...skipping 10 matching lines...) Expand all
40 47
41 // Register the BluetoothSocket |socket| for use by the extensions system. 48 // Register the BluetoothSocket |socket| for use by the extensions system.
42 // This class will hold onto the socket for its lifetime, or until 49 // This class will hold onto the socket for its lifetime, or until
43 // ReleaseSocket is called for the socket. Returns an id for the socket. 50 // ReleaseSocket is called for the socket. Returns an id for the socket.
44 int RegisterSocket(scoped_refptr<device::BluetoothSocket> socket); 51 int RegisterSocket(scoped_refptr<device::BluetoothSocket> socket);
45 52
46 // Release the BluetoothSocket corresponding to |id|. Returns true if 53 // Release the BluetoothSocket corresponding to |id|. Returns true if
47 // the socket was found and released, false otherwise. 54 // the socket was found and released, false otherwise.
48 bool ReleaseSocket(int id); 55 bool ReleaseSocket(int id);
49 56
57 // Add the BluetoothProfile |bluetooth_profile| for use by the extension
58 // system. This class will hold onto the profile for its lifetime, or until
59 // RemoveProfile is called for the profile.
60 void AddProfile(const std::string& uuid,
61 device::BluetoothProfile* bluetooth_profile);
62
63 // Unregister the BluetoothProfile corersponding to |uuid| and release the
64 // object from this class.
65 void RemoveProfile(const std::string& uuid);
66
67 // Returns true if the BluetoothProfile corresponding to |uuid| is already
68 // registered.
69 bool HasProfile(const std::string& uuid) const;
70
50 // Get the BluetoothSocket corresponding to |id|. 71 // Get the BluetoothSocket corresponding to |id|.
51 scoped_refptr<device::BluetoothSocket> GetSocket(int id); 72 scoped_refptr<device::BluetoothSocket> GetSocket(int id);
52 73
53 // Sets whether this Profile is responsible for the discovering state of the 74 // Sets whether this Profile is responsible for the discovering state of the
54 // adapter. 75 // adapter.
55 void SetResponsibleForDiscovery(bool responsible); 76 void SetResponsibleForDiscovery(bool responsible);
56 bool IsResponsibleForDiscovery() const; 77 bool IsResponsibleForDiscovery() const;
57 78
58 // Sets whether or not DeviceAdded events will be dispatched to extensions. 79 // Sets whether or not DeviceAdded events will be dispatched to extensions.
59 void SetSendDiscoveryEvents(bool should_send); 80 void SetSendDiscoveryEvents(bool should_send);
60 81
61 // Dispatch an event that takes a device as a parameter to all renderers. 82 // Dispatch an event that takes a device as a parameter to all renderers.
62 void DispatchDeviceEvent( 83 void DispatchDeviceEvent(
63 const char* event_name, 84 const char* event_name,
64 const extensions::api::bluetooth::Device& device); 85 const extensions::api::bluetooth::Device& device);
65 86
87 // Dispatch an event that takes a connection socket as a parameter to the
88 // extension that registered the profile that the socket has connected to.
89 void DispatchConnectionEvent(const std::string& extension_id,
90 const std::string& uuid,
91 const device::BluetoothDevice* device,
92 scoped_refptr<device::BluetoothSocket> socket);
93
66 // Override from device::BluetoothAdapter::Observer 94 // Override from device::BluetoothAdapter::Observer
67 virtual void AdapterPresentChanged(device::BluetoothAdapter* adapter, 95 virtual void AdapterPresentChanged(device::BluetoothAdapter* adapter,
68 bool present) OVERRIDE; 96 bool present) OVERRIDE;
69 virtual void AdapterPoweredChanged(device::BluetoothAdapter* adapter, 97 virtual void AdapterPoweredChanged(device::BluetoothAdapter* adapter,
70 bool has_power) OVERRIDE; 98 bool has_power) OVERRIDE;
71 virtual void AdapterDiscoveringChanged(device::BluetoothAdapter* adapter, 99 virtual void AdapterDiscoveringChanged(device::BluetoothAdapter* adapter,
72 bool discovering) OVERRIDE; 100 bool discovering) OVERRIDE;
73 virtual void DeviceAdded(device::BluetoothAdapter* adapter, 101 virtual void DeviceAdded(device::BluetoothAdapter* adapter,
74 device::BluetoothDevice* device) OVERRIDE; 102 device::BluetoothDevice* device) OVERRIDE;
75 103
(...skipping 20 matching lines...) Expand all
96 // the extension javascript. 124 // the extension javascript.
97 int next_socket_id_; 125 int next_socket_id_;
98 126
99 typedef std::map<int, scoped_refptr<device::BluetoothSocket> > SocketMap; 127 typedef std::map<int, scoped_refptr<device::BluetoothSocket> > SocketMap;
100 SocketMap socket_map_; 128 SocketMap socket_map_;
101 129
102 typedef ScopedVector<extensions::api::bluetooth::Device> 130 typedef ScopedVector<extensions::api::bluetooth::Device>
103 DeviceList; 131 DeviceList;
104 DeviceList discovered_devices_; 132 DeviceList discovered_devices_;
105 133
134 // A map that maps uuids to the BluetoothProfile objects.
135 typedef std::map<std::string, device::BluetoothProfile*> BluetoothProfileMap;
136 BluetoothProfileMap bluetooth_profile_map_;
137
106 base::WeakPtrFactory<ExtensionBluetoothEventRouter> weak_ptr_factory_; 138 base::WeakPtrFactory<ExtensionBluetoothEventRouter> weak_ptr_factory_;
107 139
108 DISALLOW_COPY_AND_ASSIGN(ExtensionBluetoothEventRouter); 140 DISALLOW_COPY_AND_ASSIGN(ExtensionBluetoothEventRouter);
109 }; 141 };
110 142
111 } // namespace extensions 143 } // namespace extensions
112 144
113 #endif // CHROME_BROWSER_EXTENSIONS_API_BLUETOOTH_BLUETOOTH_EVENT_ROUTER_H_ 145 #endif // CHROME_BROWSER_EXTENSIONS_API_BLUETOOTH_BLUETOOTH_EVENT_ROUTER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698