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

Side by Side Diff: components/arc/arc_bridge_service.h

Issue 1408263006: chromeos: Add ArcInputBridge to components/arc (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@arcxx
Patch Set: added owners Created 5 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_ 5 #ifndef COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_
6 #define COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_ 6 #define COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_
7 7
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/observer_list.h" 9 #include "base/observer_list.h"
10 #include "base/sequenced_task_runner.h" 10 #include "base/sequenced_task_runner.h"
11 #include "components/arc/arc_bridge_input_devices.h"
11 #include "ipc/ipc_channel_proxy.h" 12 #include "ipc/ipc_channel_proxy.h"
12 #include "ipc/ipc_listener.h" 13 #include "ipc/ipc_listener.h"
13 #include "ipc/ipc_message.h" 14 #include "ipc/ipc_message.h"
15 #include "ui/events/event.h"
14 16
15 namespace base { 17 namespace base {
16 class CommandLine; 18 class CommandLine;
17 } 19 }
18 20
19 namespace arc { 21 namespace arc {
20 22
21 // The Chrome-side service that handles ARC instances and ARC bridge creation. 23 // The Chrome-side service that handles ARC instances and ARC bridge creation.
22 // This service handles the lifetime of ARC instances and sets up the 24 // This service handles the lifetime of ARC instances and sets up the
23 // communication channel (the ARC bridge) used to send and receive messages. 25 // communication channel (the ARC bridge) used to send and receive messages.
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 // class was created on. 108 // class was created on.
107 void AddObserver(Observer* observer); 109 void AddObserver(Observer* observer);
108 void RemoveObserver(Observer* observer); 110 void RemoveObserver(Observer* observer);
109 111
110 // Gets the current state of the bridge service. 112 // Gets the current state of the bridge service.
111 State state() const { return state_; } 113 State state() const { return state_; }
112 114
113 // Gets if ARC is available in this system. 115 // Gets if ARC is available in this system.
114 bool available() const { return available_; } 116 bool available() const { return available_; }
115 117
116 // Requests registration of an input device on the ARC instance. 118 // Translates and sends input event to the ARC instance.
117 // TODO(denniskempin): Make this interface more typesafe. 119 void SendInputEvent(ui::Event* event);
118 // |name| should be the displayable name of the emulated device (e.g. "Chrome
119 // OS Keyboard"), |device_type| the name of the device type (e.g. "keyboard")
120 // and |fd| a file descriptor that emulates the kernel events of the device.
121 // This can only be called on the thread that this class was created on.
122 bool RegisterInputDevice(const std::string& name,
123 const std::string& device_type,
124 base::ScopedFD fd);
125 120
126 private: 121 private:
127 friend class ArcBridgeTest; 122 friend class ArcBridgeTest;
128 FRIEND_TEST_ALL_PREFIXES(ArcBridgeTest, Basic); 123 FRIEND_TEST_ALL_PREFIXES(ArcBridgeTest, Basic);
129 FRIEND_TEST_ALL_PREFIXES(ArcBridgeTest, ShutdownMidStartup); 124 FRIEND_TEST_ALL_PREFIXES(ArcBridgeTest, ShutdownMidStartup);
130 125
131 // If all pre-requisites are true (ARC is available, it has been enabled, and 126 // If all pre-requisites are true (ARC is available, it has been enabled, and
132 // the session has started), and ARC is stopped, start ARC. If ARC is running 127 // the session has started), and ARC is stopped, start ARC. If ARC is running
133 // and the pre-requisites stop being true, stop ARC. 128 // and the pre-requisites stop being true, stop ARC.
134 void PrerequisitesChanged(); 129 void PrerequisitesChanged();
(...skipping 25 matching lines...) Expand all
160 void SetState(State state); 155 void SetState(State state);
161 156
162 // IPC::Listener: 157 // IPC::Listener:
163 bool OnMessageReceived(const IPC::Message& message) override; 158 bool OnMessageReceived(const IPC::Message& message) override;
164 159
165 // DBus callbacks. 160 // DBus callbacks.
166 void OnArcAvailable(bool available); 161 void OnArcAvailable(bool available);
167 void OnInstanceStarted(bool success); 162 void OnInstanceStarted(bool success);
168 void OnInstanceStopped(bool success); 163 void OnInstanceStopped(bool success);
169 164
165 // Creates and registers an input device on the ARC instance.
166 // TODO(denniskempin): Make this interface more typesafe.
167 // |name| should be the displayable name of the emulated device (e.g. "Chrome
168 // OS Keyboard"), |device_type| the name of the device type (e.g. "keyboard")
169 // Returns a file descriptor that receives the kernel events of the device.
170 base::ScopedFD CreateBridgeInputDevice(const std::string& name,
Luis Héctor Chávez 2015/11/17 17:51:54 I would prefer if the ArcBridgeService did not hav
denniskempin 2015/11/19 19:22:09 done
171 const std::string& device_type);
172
173 // Register all bridge input devices with the ARC instance. Called
174 // once the instance is ready.
175 void SetupBridgeInputDevices();
176
177 // List of bridge input devices registered with the ARC instance.
178 ScopedVector<BridgeInputDevice> bridge_devices_;
179
180 // Task runner on which incoming messages are handled.
170 scoped_refptr<base::SequencedTaskRunner> origin_task_runner_; 181 scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
171 scoped_refptr<base::SingleThreadTaskRunner> ipc_task_runner_; 182 scoped_refptr<base::SingleThreadTaskRunner> ipc_task_runner_;
172 scoped_refptr<base::SequencedTaskRunner> file_task_runner_; 183 scoped_refptr<base::SequencedTaskRunner> file_task_runner_;
173 184
174 scoped_ptr<IPC::ChannelProxy> ipc_channel_; 185 scoped_ptr<IPC::ChannelProxy> ipc_channel_;
175 186
176 base::ObserverList<Observer> observer_list_; 187 base::ObserverList<Observer> observer_list_;
177 188
178 // If the user's session has started. 189 // If the user's session has started.
179 bool session_started_; 190 bool session_started_;
180 191
181 // If the ARC instance service is available. 192 // If the ARC instance service is available.
182 bool available_; 193 bool available_;
183 194
184 // The current state of the bridge. 195 // The current state of the bridge.
185 ArcBridgeService::State state_; 196 ArcBridgeService::State state_;
186 197
187 // WeakPtrFactory to use callbacks. 198 // WeakPtrFactory to use callbacks.
188 base::WeakPtrFactory<ArcBridgeService> weak_factory_; 199 base::WeakPtrFactory<ArcBridgeService> weak_factory_;
189 200
190 DISALLOW_COPY_AND_ASSIGN(ArcBridgeService); 201 DISALLOW_COPY_AND_ASSIGN(ArcBridgeService);
191 }; 202 };
192 203
193 } // namespace arc 204 } // namespace arc
194 205
195 #endif // COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_ 206 #endif // COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698