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

Side by Side Diff: chrome/browser/chromeos/extensions/bluetooth_event_router.h

Issue 11075006: Moved bluetooth adapter files to device/bluetooth/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: renamed 'bluetooth' target to 'device_bluetooth'. Created 8 years, 2 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_CHROMEOS_EXTENSIONS_BLUETOOTH_EVENT_ROUTER_H_
6 #define CHROME_BROWSER_CHROMEOS_EXTENSIONS_BLUETOOTH_EVENT_ROUTER_H_
7
8 #include <map>
9
10 #include "base/memory/ref_counted.h"
11 #include "base/memory/scoped_vector.h"
12 #include "chrome/browser/chromeos/bluetooth/bluetooth_adapter.h"
13 #include "chrome/browser/chromeos/bluetooth/bluetooth_socket.h"
14 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/common/extensions/api/experimental_bluetooth.h"
16
17 namespace chromeos {
18
19 class ExtensionBluetoothEventRouter
20 : public chromeos::BluetoothAdapter::Observer {
21 public:
22 explicit ExtensionBluetoothEventRouter(Profile* profile);
23 virtual ~ExtensionBluetoothEventRouter();
24
25 const chromeos::BluetoothAdapter& adapter() const { return *adapter_.get(); }
26
27 // GetMutableAdapter will never return NULL.
28 chromeos::BluetoothAdapter* GetMutableAdapter() { return adapter_.get(); }
29
30 // Register the BluetoothSocket |socket| for use by the extensions system.
31 // This class will hold onto the socket for its lifetime, or until
32 // ReleaseSocket is called for the socket. Returns an id for the socket.
33 int RegisterSocket(scoped_refptr<BluetoothSocket> socket);
34
35 // Release the BluetoothSocket corresponding to |id|. Returns true if
36 // the socket was found and released, false otherwise.
37 bool ReleaseSocket(int id);
38
39 // Get the BluetoothSocket corresponding to |id|.
40 scoped_refptr<BluetoothSocket> GetSocket(int id);
41
42 // Sets whether this Profile is responsible for the discovering state of the
43 // adapter.
44 void SetResponsibleForDiscovery(bool responsible);
45 bool IsResponsibleForDiscovery() const;
46
47 // Sets whether or not DeviceAdded events will be dispatched to extensions.
48 void SetSendDiscoveryEvents(bool should_send);
49
50 // Dispatch an event that takes a device as a parameter to all renderers.
51 void DispatchDeviceEvent(
52 const char* event_name,
53 const extensions::api::experimental_bluetooth::Device& device);
54
55 // Override from chromeos::BluetoothAdapter::Observer
56 virtual void AdapterPresentChanged(chromeos::BluetoothAdapter* adapter,
57 bool present) OVERRIDE;
58 virtual void AdapterPoweredChanged(chromeos::BluetoothAdapter* adapter,
59 bool has_power) OVERRIDE;
60 virtual void AdapterDiscoveringChanged(chromeos::BluetoothAdapter* adapter,
61 bool discovering) OVERRIDE;
62 virtual void DeviceAdded(chromeos::BluetoothAdapter* adapter,
63 chromeos::BluetoothDevice* device) OVERRIDE;
64
65 // Exposed for testing.
66 void SetAdapterForTest(chromeos::BluetoothAdapter* adapter) {
67 adapter_ = adapter;
68 }
69 private:
70 void DispatchBooleanValueEvent(const char* event_name, bool value);
71
72 bool send_discovery_events_;
73 bool responsible_for_discovery_;
74
75 Profile* profile_;
76 scoped_refptr<chromeos::BluetoothAdapter> adapter_;
77
78 // The next id to use for referring to a BluetoothSocket. We avoid using
79 // the fd of the socket because we don't want to leak that information to
80 // the extension javascript.
81 int next_socket_id_;
82
83 typedef std::map<int, scoped_refptr<BluetoothSocket> > SocketMap;
84 SocketMap socket_map_;
85
86 typedef ScopedVector<extensions::api::experimental_bluetooth::Device>
87 DeviceList;
88 DeviceList discovered_devices_;
89
90 DISALLOW_COPY_AND_ASSIGN(ExtensionBluetoothEventRouter);
91 };
92
93 } // namespace chromeos
94
95 #endif // CHROME_BROWSER_CHROMEOS_EXTENSIONS_BLUETOOTH_EVENT_ROUTER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698