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

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: Rebased (change to use switch for arc) 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::RefreshApps() {
112 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
113 if (state() != State::READY) {
114 LOG(ERROR) << "Called RefreshApps 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
128 return ipc_channel_->Send(new ArcInstanceMsg_LaunchApp(package, activity));
129 }
130
131 bool ArcBridgeServiceImpl::RequestIcon(const std::string& package,
132 const std::string& activity,
133 int scale_factor) {
134 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
135 if (state() != State::READY) {
136 LOG(ERROR) << "Called RequestIcon when the service is not ready";
137 return false;
138 }
139 return ipc_channel_->Send(new ArcInstanceMsg_RequestIcon(package,
140 activity,
141 scale_factor));
142 }
143
111 void ArcBridgeServiceImpl::SocketConnect(const base::FilePath& socket_path) { 144 void ArcBridgeServiceImpl::SocketConnect(const base::FilePath& socket_path) {
112 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 145 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
113 if (state() != State::STOPPED) { 146 if (state() != State::STOPPED) {
114 VLOG(1) << "SocketConnect() called when instance is not stopped"; 147 VLOG(1) << "SocketConnect() called when instance is not stopped";
115 return; 148 return;
116 } 149 }
117 SetState(State::CONNECTING); 150 SetState(State::CONNECTING);
118 base::PostTaskAndReplyWithResult( 151 base::PostTaskAndReplyWithResult(
119 file_task_runner_.get(), FROM_HERE, 152 file_task_runner_.get(), FROM_HERE,
120 base::Bind(&base::CreateDirectory, socket_path.DirName()), 153 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)); 252 FOR_EACH_OBSERVER(Observer, observer_list_, OnInstanceBootPhase(phase));
220 } 253 }
221 254
222 bool ArcBridgeServiceImpl::OnMessageReceived(const IPC::Message& message) { 255 bool ArcBridgeServiceImpl::OnMessageReceived(const IPC::Message& message) {
223 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 256 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
224 bool handled = true; 257 bool handled = true;
225 258
226 IPC_BEGIN_MESSAGE_MAP(ArcBridgeServiceImpl, message) 259 IPC_BEGIN_MESSAGE_MAP(ArcBridgeServiceImpl, message)
227 IPC_MESSAGE_HANDLER(ArcInstanceHostMsg_InstanceBootPhase, 260 IPC_MESSAGE_HANDLER(ArcInstanceHostMsg_InstanceBootPhase,
228 OnInstanceBootPhase) 261 OnInstanceBootPhase)
262 IPC_MESSAGE_HANDLER(ArcInstanceHostMsg_AppsRefreshed, OnAppsRefreshed)
263 IPC_MESSAGE_HANDLER(ArcInstanceHostMsg_AppIcon, OnAppIcon)
229 IPC_MESSAGE_UNHANDLED(handled = false) 264 IPC_MESSAGE_UNHANDLED(handled = false)
230 IPC_END_MESSAGE_MAP() 265 IPC_END_MESSAGE_MAP()
231 266
232 if (!handled) 267 if (!handled)
233 LOG(ERROR) << "Invalid message with type = " << message.type(); 268 LOG(ERROR) << "Invalid message with type = " << message.type();
234 return handled; 269 return handled;
235 } 270 }
236 271
272 void ArcBridgeServiceImpl::OnAppsRefreshed(
273 const std::vector<arc::AppInfo>& apps) {
274 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
275 FOR_EACH_OBSERVER(Observer, observer_list_, OnAppsRefreshed(apps));
276 }
277
278 void ArcBridgeServiceImpl::OnAppIcon(const std::string& package,
279 const std::string& activity,
Luis Héctor Chávez 2015/11/25 21:53:40 nit: Misaligned
280 int scale_factor,
281 const std::vector<uint8_t>& icon_png_data) {
282 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
283 FOR_EACH_OBSERVER(Observer, observer_list_, OnAppIcon(package,
284 activity,
285 scale_factor,
286 icon_png_data));
287 }
288
237 void ArcBridgeServiceImpl::OnArcAvailable(bool arc_available) { 289 void ArcBridgeServiceImpl::OnArcAvailable(bool arc_available) {
238 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 290 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
239 if (available() == arc_available) 291 if (available() == arc_available)
240 return; 292 return;
241 SetAvailable(arc_available); 293 SetAvailable(arc_available);
242 PrerequisitesChanged(); 294 PrerequisitesChanged();
243 } 295 }
244 296
245 void ArcBridgeServiceImpl::OnInstanceStopped(bool success) { 297 void ArcBridgeServiceImpl::OnInstanceStopped(bool success) {
246 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 298 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
247 // STOPPING is the only valid state for this function. 299 // STOPPING is the only valid state for this function.
248 // DCHECK on enum classes not supported. 300 // DCHECK on enum classes not supported.
249 DCHECK(state() == State::STOPPING); 301 DCHECK(state() == State::STOPPING);
250 ipc_channel_.reset(); 302 ipc_channel_.reset();
251 SetState(State::STOPPED); 303 SetState(State::STOPPED);
252 } 304 }
253 305
254 } // namespace arc 306 } // namespace arc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698