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

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

Issue 1451353002: Implement GpuArcVideoService for arc video accelerator (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased with new ArcBridgeService; addressed Owen's comments 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 <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/files/scoped_file.h" 11 #include "base/files/scoped_file.h"
12 #include "base/gtest_prod_util.h" 12 #include "base/gtest_prod_util.h"
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "base/memory/scoped_ptr.h" 14 #include "base/memory/scoped_ptr.h"
15 #include "base/observer_list.h" 15 #include "base/observer_list.h"
16 #include "components/arc/common/arc_bridge.mojom.h" 16 #include "components/arc/common/arc_bridge.mojom.h"
17 17
18 namespace base { 18 namespace base {
19 class CommandLine; 19 class CommandLine;
20 } // namespace base 20 } // namespace base
21 21
22 namespace IPC {
23 class ChannelHandle;
24 } // namespace IPC
25
22 namespace arc { 26 namespace arc {
23 27
24 class ArcBridgeBootstrap; 28 class ArcBridgeBootstrap;
25 29
26 // The Chrome-side service that handles ARC instances and ARC bridge creation. 30 // The Chrome-side service that handles ARC instances and ARC bridge creation.
27 // This service handles the lifetime of ARC instances and sets up the 31 // This service handles the lifetime of ARC instances and sets up the
28 // communication channel (the ARC bridge) used to send and receive messages. 32 // communication channel (the ARC bridge) used to send and receive messages.
29 class ArcBridgeService { 33 class ArcBridgeService {
30 public: 34 public:
31 // The possible states of the bridge. In the normal flow, the state changes 35 // The possible states of the bridge. In the normal flow, the state changes
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 // Called whenever ARC sends app icon data for specific scale factor. 107 // Called whenever ARC sends app icon data for specific scale factor.
104 virtual void OnAppIcon(const std::string& package, 108 virtual void OnAppIcon(const std::string& package,
105 const std::string& activity, 109 const std::string& activity,
106 ScaleFactor scale_factor, 110 ScaleFactor scale_factor,
107 const std::vector<uint8_t>& icon_png_data) {} 111 const std::vector<uint8_t>& icon_png_data) {}
108 112
109 protected: 113 protected:
110 virtual ~AppObserver() {} 114 virtual ~AppObserver() {}
111 }; 115 };
112 116
117 // Notifies ARC video service events.
118 class VideoServiceObserver {
119 public:
120 // Called whenever to create video accelerator connection.
121 virtual void OnRequestArcVideoAcceleratorChannel() {}
Owen Lin 2015/12/15 03:04:06 I still don't think we should use the name/pattern
Pawel Osciak 2015/12/16 10:17:58 +1, I'd prefer this as well.
kcwu 2015/12/16 14:05:32 Done.
122
123 protected:
124 virtual ~VideoServiceObserver() {}
125 };
126
113 virtual ~ArcBridgeService(); 127 virtual ~ArcBridgeService();
114 128
115 // Gets the global instance of the ARC Bridge Service. This can only be 129 // Gets the global instance of the ARC Bridge Service. This can only be
116 // called on the thread that this class was created on. 130 // called on the thread that this class was created on.
117 static ArcBridgeService* Get(); 131 static ArcBridgeService* Get();
118 132
119 // Return true if ARC has been enabled through a commandline 133 // Return true if ARC has been enabled through a commandline
120 // switch. 134 // switch.
121 static bool GetEnabled(const base::CommandLine* command_line); 135 static bool GetEnabled(const base::CommandLine* command_line);
122 136
(...skipping 10 matching lines...) Expand all
133 // Shutdown() should be called when the browser is shutting down. This can 147 // Shutdown() should be called when the browser is shutting down. This can
134 // only be called on the thread that this class was created on. 148 // only be called on the thread that this class was created on.
135 virtual void Shutdown() = 0; 149 virtual void Shutdown() = 0;
136 150
137 // Adds or removes observers. This can only be called on the thread that this 151 // Adds or removes observers. This can only be called on the thread that this
138 // class was created on. 152 // class was created on.
139 void AddObserver(Observer* observer); 153 void AddObserver(Observer* observer);
140 void RemoveObserver(Observer* observer); 154 void RemoveObserver(Observer* observer);
141 void AddNotificationObserver(NotificationObserver* observer); 155 void AddNotificationObserver(NotificationObserver* observer);
142 void RemoveNotificationObserver(NotificationObserver* observer); 156 void RemoveNotificationObserver(NotificationObserver* observer);
157 void AddVideoServiceObserver(VideoServiceObserver* observer);
158 void RemoveVideoServiceObserver(VideoServiceObserver* observer);
143 159
144 // Adds or removes ARC app observers. This can only be called on the thread 160 // Adds or removes ARC app observers. This can only be called on the thread
145 // that this class was created on. 161 // that this class was created on.
146 void AddAppObserver(AppObserver* observer); 162 void AddAppObserver(AppObserver* observer);
147 void RemoveAppObserver(AppObserver* observer); 163 void RemoveAppObserver(AppObserver* observer);
148 164
149 // Gets the current state of the bridge service. 165 // Gets the current state of the bridge service.
150 State state() const { return state_; } 166 State state() const { return state_; }
151 167
152 // Gets if ARC is available in this system. 168 // Gets if ARC is available in this system.
(...skipping 18 matching lines...) Expand all
171 187
172 // Requests to launch an app. 188 // Requests to launch an app.
173 virtual bool LaunchApp(const std::string& package, 189 virtual bool LaunchApp(const std::string& package,
174 const std::string& activity) = 0; 190 const std::string& activity) = 0;
175 191
176 // Requests to load an icon of specific scale_factor. 192 // Requests to load an icon of specific scale_factor.
177 virtual bool RequestAppIcon(const std::string& package, 193 virtual bool RequestAppIcon(const std::string& package,
178 const std::string& activity, 194 const std::string& activity,
179 ScaleFactor scale_factor) = 0; 195 ScaleFactor scale_factor) = 0;
180 196
197 virtual bool NotifyVideoAcceleratorChannelCreated(
198 const IPC::ChannelHandle& handle) = 0;
199
181 protected: 200 protected:
182 ArcBridgeService(); 201 ArcBridgeService();
183 202
184 // Changes the current state and notifies all observers. 203 // Changes the current state and notifies all observers.
185 void SetState(State state); 204 void SetState(State state);
186 205
187 // Changes the current availability and notifies all observers. 206 // Changes the current availability and notifies all observers.
188 void SetAvailable(bool availability); 207 void SetAvailable(bool availability);
189 208
190 base::ObserverList<Observer>& observer_list() { return observer_list_; } 209 base::ObserverList<Observer>& observer_list() { return observer_list_; }
191 base::ObserverList<NotificationObserver>& notification_observer_list() { 210 base::ObserverList<NotificationObserver>& notification_observer_list() {
192 return notification_observer_list_; 211 return notification_observer_list_;
193 } 212 }
194 213
195 base::ObserverList<AppObserver>& app_observer_list() { 214 base::ObserverList<AppObserver>& app_observer_list() {
196 return app_observer_list_; 215 return app_observer_list_;
197 } 216 }
198 217
218 base::ObserverList<VideoServiceObserver>& video_service_observer_list() {
219 return video_service_observer_list_;
220 }
221
199 bool CalledOnValidThread(); 222 bool CalledOnValidThread();
200 223
201 private: 224 private:
202 friend class ArcBridgeTest; 225 friend class ArcBridgeTest;
203 FRIEND_TEST_ALL_PREFIXES(ArcBridgeTest, Basic); 226 FRIEND_TEST_ALL_PREFIXES(ArcBridgeTest, Basic);
204 FRIEND_TEST_ALL_PREFIXES(ArcBridgeTest, Prerequisites); 227 FRIEND_TEST_ALL_PREFIXES(ArcBridgeTest, Prerequisites);
205 FRIEND_TEST_ALL_PREFIXES(ArcBridgeTest, ShutdownMidStartup); 228 FRIEND_TEST_ALL_PREFIXES(ArcBridgeTest, ShutdownMidStartup);
206 229
207 base::ObserverList<Observer> observer_list_; 230 base::ObserverList<Observer> observer_list_;
208 base::ObserverList<NotificationObserver> notification_observer_list_; 231 base::ObserverList<NotificationObserver> notification_observer_list_;
232 base::ObserverList<VideoServiceObserver> video_service_observer_list_;
209 233
210 base::ObserverList<AppObserver> app_observer_list_; 234 base::ObserverList<AppObserver> app_observer_list_;
211 235
212 base::ThreadChecker thread_checker_; 236 base::ThreadChecker thread_checker_;
213 237
214 // If the ARC instance service is available. 238 // If the ARC instance service is available.
215 bool available_; 239 bool available_;
216 240
217 // The current state of the bridge. 241 // The current state of the bridge.
218 ArcBridgeService::State state_; 242 ArcBridgeService::State state_;
219 243
220 DISALLOW_COPY_AND_ASSIGN(ArcBridgeService); 244 DISALLOW_COPY_AND_ASSIGN(ArcBridgeService);
221 }; 245 };
222 246
223 } // namespace arc 247 } // namespace arc
224 248
225 #endif // COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_ 249 #endif // COMPONENTS_ARC_ARC_BRIDGE_SERVICE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698