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

Side by Side Diff: components/arc/arc_bridge_service_impl.cc

Issue 1475563002: arc-bridge: Implement IPC message for app launcher (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add arc::ScaleFactor enum 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 #include "components/arc/arc_bridge_service_impl.h" 5 #include "components/arc/arc_bridge_service_impl.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/prefs/pref_registry_simple.h" 10 #include "base/prefs/pref_registry_simple.h"
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 base::ScopedFD fd) { 101 base::ScopedFD fd) {
102 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread()); 102 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread());
103 if (state() != State::READY) { 103 if (state() != State::READY) {
104 LOG(ERROR) << "Called RegisterInputDevice when the service is not ready"; 104 LOG(ERROR) << "Called RegisterInputDevice when the service is not ready";
105 return false; 105 return false;
106 } 106 }
107 return ipc_channel_->Send(new ArcInstanceMsg_RegisterInputDevice( 107 return ipc_channel_->Send(new ArcInstanceMsg_RegisterInputDevice(
108 name, device_type, base::FileDescriptor(fd.Pass()))); 108 name, device_type, base::FileDescriptor(fd.Pass())));
109 } 109 }
110 110
111 bool ArcBridgeServiceImpl::RefreshAppList() {
112 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread());
113 if (state() != State::READY) {
114 LOG(ERROR) << "Called RefreshAppList when the service is not ready";
115 return false;
116 }
117 return ipc_channel_->Send(new ArcInstanceMsg_RefreshApps());
118 }
119
120 bool ArcBridgeServiceImpl::LaunchApp(const std::string& package,
121 const std::string& activity) {
122 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread());
123 if (state() != State::READY) {
124 LOG(ERROR) << "Called LaunchApp when the service is not ready";
125 return false;
126 }
127 return ipc_channel_->Send(new ArcInstanceMsg_LaunchApp(package, activity));
128 }
129
130 bool ArcBridgeServiceImpl::RequestAppIcon(const std::string& package,
131 const std::string& activity,
132 ScaleFactor scale_factor) {
133 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread());
134 if (state() != State::READY) {
135 LOG(ERROR) << "Called RequestAppIcon when the service is not ready";
136 return false;
137 }
138 return ipc_channel_->Send(new ArcInstanceMsg_RequestAppIcon(package,
139 activity,
140 scale_factor));
141 }
142
111 void ArcBridgeServiceImpl::SocketConnect(const base::FilePath& socket_path) { 143 void ArcBridgeServiceImpl::SocketConnect(const base::FilePath& socket_path) {
112 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread()); 144 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread());
113 if (state() != State::STOPPED) { 145 if (state() != State::STOPPED) {
114 VLOG(1) << "SocketConnect() called when instance is not stopped"; 146 VLOG(1) << "SocketConnect() called when instance is not stopped";
115 return; 147 return;
116 } 148 }
117 SetState(State::CONNECTING); 149 SetState(State::CONNECTING);
118 base::PostTaskAndReplyWithResult( 150 base::PostTaskAndReplyWithResult(
119 file_task_runner_.get(), FROM_HERE, 151 file_task_runner_.get(), FROM_HERE,
120 base::Bind(&base::CreateDirectory, socket_path.DirName()), 152 base::Bind(&base::CreateDirectory, socket_path.DirName()),
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 FOR_EACH_OBSERVER(Observer, observer_list(), OnInstanceBootPhase(phase)); 251 FOR_EACH_OBSERVER(Observer, observer_list(), OnInstanceBootPhase(phase));
220 } 252 }
221 253
222 bool ArcBridgeServiceImpl::OnMessageReceived(const IPC::Message& message) { 254 bool ArcBridgeServiceImpl::OnMessageReceived(const IPC::Message& message) {
223 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread()); 255 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread());
224 bool handled = true; 256 bool handled = true;
225 257
226 IPC_BEGIN_MESSAGE_MAP(ArcBridgeServiceImpl, message) 258 IPC_BEGIN_MESSAGE_MAP(ArcBridgeServiceImpl, message)
227 IPC_MESSAGE_HANDLER(ArcInstanceHostMsg_InstanceBootPhase, 259 IPC_MESSAGE_HANDLER(ArcInstanceHostMsg_InstanceBootPhase,
228 OnInstanceBootPhase) 260 OnInstanceBootPhase)
261 IPC_MESSAGE_HANDLER(ArcInstanceHostMsg_AppListRefreshed, OnAppListRefreshed)
262 IPC_MESSAGE_HANDLER(ArcInstanceHostMsg_AppIcon, OnAppIcon)
229 IPC_MESSAGE_UNHANDLED(handled = false) 263 IPC_MESSAGE_UNHANDLED(handled = false)
230 IPC_END_MESSAGE_MAP() 264 IPC_END_MESSAGE_MAP()
231 265
232 if (!handled) 266 if (!handled)
233 LOG(ERROR) << "Invalid message with type = " << message.type(); 267 LOG(ERROR) << "Invalid message with type = " << message.type();
234 return handled; 268 return handled;
235 } 269 }
236 270
271 void ArcBridgeServiceImpl::OnAppListRefreshed(
272 const std::vector<arc::AppInfo>& apps) {
273 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread());
274 FOR_EACH_OBSERVER(AppObserver, app_observer_list(), OnAppListRefreshed(apps));
275 }
276
277 void ArcBridgeServiceImpl::OnAppIcon(
278 const std::string& package,
279 const std::string& activity,
280 ScaleFactor scale_factor,
281 const std::vector<uint8_t>& icon_png_data) {
282 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread());
283 FOR_EACH_OBSERVER(AppObserver,
284 app_observer_list(),
285 OnAppIcon(package, activity, scale_factor, icon_png_data));
286 }
287
237 void ArcBridgeServiceImpl::OnArcAvailable(bool arc_available) { 288 void ArcBridgeServiceImpl::OnArcAvailable(bool arc_available) {
238 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread()); 289 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread());
239 if (available() == arc_available) 290 if (available() == arc_available)
240 return; 291 return;
241 SetAvailable(arc_available); 292 SetAvailable(arc_available);
242 PrerequisitesChanged(); 293 PrerequisitesChanged();
243 } 294 }
244 295
245 void ArcBridgeServiceImpl::OnInstanceStopped(bool success) { 296 void ArcBridgeServiceImpl::OnInstanceStopped(bool success) {
246 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread()); 297 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread());
247 // STOPPING is the only valid state for this function. 298 // STOPPING is the only valid state for this function.
248 // DCHECK on enum classes not supported. 299 // DCHECK on enum classes not supported.
249 DCHECK(state() == State::STOPPING); 300 DCHECK(state() == State::STOPPING);
250 ipc_channel_.reset(); 301 ipc_channel_.reset();
251 SetState(State::STOPPED); 302 SetState(State::STOPPED);
252 } 303 }
253 304
254 } // namespace arc 305 } // namespace arc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698