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

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

Issue 1495723004: Minimum implementation of ARC clipboard Bridge (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased to catch arc++ notification cl Created 5 years 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/files/scoped_file.h" 8 #include "base/files/scoped_file.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 // Called whenever ARC sends app icon data for specific scale factor. 103 // Called whenever ARC sends app icon data for specific scale factor.
104 virtual void OnAppIcon(const std::string& package, 104 virtual void OnAppIcon(const std::string& package,
105 const std::string& activity, 105 const std::string& activity,
106 ScaleFactor scale_factor, 106 ScaleFactor scale_factor,
107 const std::vector<uint8_t>& icon_png_data) {} 107 const std::vector<uint8_t>& icon_png_data) {}
108 108
109 protected: 109 protected:
110 virtual ~AppObserver() {} 110 virtual ~AppObserver() {}
111 }; 111 };
112 112
113 // Notifies ARC Clipboard related events.
114 class ClipboardObserver {
115 public:
116 // Called whenever the Android clipboard content is changed. This is
117 // typically fired when a user initiates a "Copy" action.
118 virtual void OnSetClipboardContent(const ClipboardData& data) {}
119
120 // Called whenever the Android clipboard decides to update its content.
121 // This is typical triggered when a "Paste" action is fired or an app
122 // or service tries to retrieve the android clipboard content.
123 virtual void OnGetClipboardContent() {}
124
125 protected:
126 virtual ~ClipboardObserver() {}
127 };
128
113 virtual ~ArcBridgeService(); 129 virtual ~ArcBridgeService();
114 130
115 // Creates instance of |ArcBridgeService| for normal use. 131 // Creates instance of |ArcBridgeService| for normal use.
116 static scoped_ptr<ArcBridgeService> Create( 132 static scoped_ptr<ArcBridgeService> Create(
117 const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner, 133 const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner,
118 const scoped_refptr<base::SequencedTaskRunner>& file_task_runner); 134 const scoped_refptr<base::SequencedTaskRunner>& file_task_runner);
119 135
120 // Gets the global instance of the ARC Bridge Service. This can only be 136 // Gets the global instance of the ARC Bridge Service. This can only be
121 // called on the thread that this class was created on. 137 // called on the thread that this class was created on.
122 static ArcBridgeService* Get(); 138 static ArcBridgeService* Get();
(...skipping 21 matching lines...) Expand all
144 void AddObserver(Observer* observer); 160 void AddObserver(Observer* observer);
145 void RemoveObserver(Observer* observer); 161 void RemoveObserver(Observer* observer);
146 void AddNotificationObserver(NotificationObserver* observer); 162 void AddNotificationObserver(NotificationObserver* observer);
147 void RemoveNotificationObserver(NotificationObserver* observer); 163 void RemoveNotificationObserver(NotificationObserver* observer);
148 164
149 // Adds or removes ARC app observers. This can only be called on the thread 165 // Adds or removes ARC app observers. This can only be called on the thread
150 // that this class was created on. 166 // that this class was created on.
151 void AddAppObserver(AppObserver* observer); 167 void AddAppObserver(AppObserver* observer);
152 void RemoveAppObserver(AppObserver* observer); 168 void RemoveAppObserver(AppObserver* observer);
153 169
170 // Adds or removes ARC clipboard observers. This can only be called on the
171 // thread that this class was created on.
172 void AddClipboardObserver(ClipboardObserver* observer);
173 void RemoveClipboardObserver(ClipboardObserver* observer);
174
154 // Gets the current state of the bridge service. 175 // Gets the current state of the bridge service.
155 State state() const { return state_; } 176 State state() const { return state_; }
156 177
157 // Gets if ARC is available in this system. 178 // Gets if ARC is available in this system.
158 bool available() const { return available_; } 179 bool available() const { return available_; }
159 180
160 // Requests registration of an input device on the ARC instance. 181 // Requests registration of an input device on the ARC instance.
161 // TODO(denniskempin): Make this interface more typesafe. 182 // TODO(denniskempin): Make this interface more typesafe.
162 // |name| should be the displayable name of the emulated device (e.g. "Chrome 183 // |name| should be the displayable name of the emulated device (e.g. "Chrome
163 // OS Keyboard"), |device_type| the name of the device type (e.g. "keyboard") 184 // OS Keyboard"), |device_type| the name of the device type (e.g. "keyboard")
(...skipping 12 matching lines...) Expand all
176 197
177 // Requests to launch an app. 198 // Requests to launch an app.
178 virtual bool LaunchApp(const std::string& package, 199 virtual bool LaunchApp(const std::string& package,
179 const std::string& activity) = 0; 200 const std::string& activity) = 0;
180 201
181 // Requests to load an icon of specific scale_factor. 202 // Requests to load an icon of specific scale_factor.
182 virtual bool RequestAppIcon(const std::string& package, 203 virtual bool RequestAppIcon(const std::string& package,
183 const std::string& activity, 204 const std::string& activity,
184 ScaleFactor scale_factor) = 0; 205 ScaleFactor scale_factor) = 0;
185 206
207 // Sends the Chrome clipboard content to Android side.
208 virtual bool SendClipboardContentToAndroid(const ClipboardData data) = 0;
209
186 protected: 210 protected:
187 ArcBridgeService(); 211 ArcBridgeService();
188 212
189 // Changes the current state and notifies all observers. 213 // Changes the current state and notifies all observers.
190 void SetState(State state); 214 void SetState(State state);
191 215
192 // Changes the current availability and notifies all observers. 216 // Changes the current availability and notifies all observers.
193 void SetAvailable(bool availability); 217 void SetAvailable(bool availability);
194 218
195 const scoped_refptr<base::SequencedTaskRunner>& origin_task_runner() const { 219 const scoped_refptr<base::SequencedTaskRunner>& origin_task_runner() const {
196 return origin_task_runner_; 220 return origin_task_runner_;
197 } 221 }
198 222
199 base::ObserverList<Observer>& observer_list() { return observer_list_; } 223 base::ObserverList<Observer>& observer_list() { return observer_list_; }
224
200 base::ObserverList<NotificationObserver>& notification_observer_list() { 225 base::ObserverList<NotificationObserver>& notification_observer_list() {
201 return notification_observer_list_; 226 return notification_observer_list_;
202 } 227 }
203 228
229 base::ObserverList<ClipboardObserver>& clipboard_observer_list() {
230 return clipboard_observer_list_;
231 }
232
204 base::ObserverList<AppObserver>& app_observer_list() { 233 base::ObserverList<AppObserver>& app_observer_list() {
205 return app_observer_list_; 234 return app_observer_list_;
206 } 235 }
207 236
208 private: 237 private:
209 scoped_refptr<base::SequencedTaskRunner> origin_task_runner_; 238 scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
210 239
211 base::ObserverList<Observer> observer_list_; 240 base::ObserverList<Observer> observer_list_;
212 base::ObserverList<NotificationObserver> notification_observer_list_; 241 base::ObserverList<NotificationObserver> notification_observer_list_;
213 242
214 base::ObserverList<AppObserver> app_observer_list_; 243 base::ObserverList<AppObserver> app_observer_list_;
215 244
245 base::ObserverList<ClipboardObserver> clipboard_observer_list_;
246
216 // If the ARC instance service is available. 247 // If the ARC instance service is available.
217 bool available_; 248 bool available_;
218 249
219 // The current state of the bridge. 250 // The current state of the bridge.
220 ArcBridgeService::State state_; 251 ArcBridgeService::State state_;
221 252
222 DISALLOW_COPY_AND_ASSIGN(ArcBridgeService); 253 DISALLOW_COPY_AND_ASSIGN(ArcBridgeService);
223 }; 254 };
224 255
225 } // namespace arc 256 } // namespace arc
226 257
227 #endif // COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_ 258 #endif // COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698