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

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

Issue 2190483003: arc: Revamp the ArcBridgeService interface (Closed) Base URL: https://chromium.googlesource.com/a/chromium/src.git@2785
Patch Set: One less diff line Created 4 years, 4 months 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
« no previous file with comments | « components/arc/arc_bridge_service.h ('k') | components/arc/audio/arc_audio_bridge.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.h" 5 #include "components/arc/arc_bridge_service.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/sequenced_task_runner.h" 10 #include "base/sequenced_task_runner.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 } 49 }
50 50
51 // static 51 // static
52 bool ArcBridgeService::GetEnabled(const base::CommandLine* command_line) { 52 bool ArcBridgeService::GetEnabled(const base::CommandLine* command_line) {
53 return command_line->HasSwitch(chromeos::switches::kEnableArc); 53 return command_line->HasSwitch(chromeos::switches::kEnableArc);
54 } 54 }
55 55
56 void ArcBridgeService::AddObserver(Observer* observer) { 56 void ArcBridgeService::AddObserver(Observer* observer) {
57 DCHECK(CalledOnValidThread()); 57 DCHECK(CalledOnValidThread());
58 observer_list_.AddObserver(observer); 58 observer_list_.AddObserver(observer);
59
60 // If any of the instances were ready before the call to AddObserver(), the
61 // |observer| won't get any readiness events. For such cases, we have to call
62 // them explicitly now to avoid a race.
63 if (app_instance())
64 observer->OnAppInstanceReady();
65 if (audio_instance())
66 observer->OnAudioInstanceReady();
67 if (auth_instance())
68 observer->OnAuthInstanceReady();
69 if (bluetooth_instance())
70 observer->OnBluetoothInstanceReady();
71 if (clipboard_instance())
72 observer->OnClipboardInstanceReady();
73 if (crash_collector_instance())
74 observer->OnCrashCollectorInstanceReady();
75 if (file_system_instance())
76 observer->OnFileSystemInstanceReady();
77 if (ime_instance())
78 observer->OnImeInstanceReady();
79 if (metrics_instance())
80 observer->OnMetricsInstanceReady();
81 if (net_instance())
82 observer->OnNetInstanceReady();
83 if (notifications_instance())
84 observer->OnNotificationsInstanceReady();
85 if (obb_mounter_instance())
86 observer->OnObbMounterInstanceReady();
87 if (policy_instance())
88 observer->OnPolicyInstanceReady();
89 if (power_instance())
90 observer->OnPowerInstanceReady();
91 if (process_instance())
92 observer->OnProcessInstanceReady();
93 if (storage_manager_instance())
94 observer->OnStorageManagerInstanceReady();
95 if (video_instance())
96 observer->OnVideoInstanceReady();
97 if (window_manager_instance())
98 observer->OnWindowManagerInstanceReady();
99 } 59 }
100 60
101 void ArcBridgeService::RemoveObserver(Observer* observer) { 61 void ArcBridgeService::RemoveObserver(Observer* observer) {
102 DCHECK(CalledOnValidThread()); 62 DCHECK(CalledOnValidThread());
103 observer_list_.RemoveObserver(observer); 63 observer_list_.RemoveObserver(observer);
104 } 64 }
105 65
106 void ArcBridgeService::OnAppInstanceReady(mojom::AppInstancePtr app_ptr) { 66 void ArcBridgeService::OnAppInstanceReady(mojom::AppInstancePtr app_ptr) {
107 DCHECK(CalledOnValidThread()); 67 DCHECK(CalledOnValidThread());
108 temporary_app_ptr_ = std::move(app_ptr); 68 app_.OnInstanceReady(std::move(app_ptr));
109 temporary_app_ptr_.QueryVersion(base::Bind(
110 &ArcBridgeService::OnAppVersionReady, weak_factory_.GetWeakPtr()));
111 }
112
113 void ArcBridgeService::OnAppVersionReady(uint32_t version) {
114 DCHECK(CalledOnValidThread());
115 app_ptr_ = std::move(temporary_app_ptr_);
116 app_ptr_.set_connection_error_handler(base::Bind(
117 &ArcBridgeService::CloseAppChannel, weak_factory_.GetWeakPtr()));
118 FOR_EACH_OBSERVER(Observer, observer_list(), OnAppInstanceReady());
119 }
120
121 void ArcBridgeService::CloseAppChannel() {
122 DCHECK(CalledOnValidThread());
123 if (!app_ptr_)
124 return;
125
126 app_ptr_.reset();
127 FOR_EACH_OBSERVER(Observer, observer_list(), OnAppInstanceClosed());
128 } 69 }
129 70
130 void ArcBridgeService::OnAudioInstanceReady(mojom::AudioInstancePtr audio_ptr) { 71 void ArcBridgeService::OnAudioInstanceReady(mojom::AudioInstancePtr audio_ptr) {
131 DCHECK(CalledOnValidThread()); 72 DCHECK(CalledOnValidThread());
132 temporary_audio_ptr_ = std::move(audio_ptr); 73 audio_.OnInstanceReady(std::move(audio_ptr));
133 temporary_audio_ptr_.QueryVersion(base::Bind(
134 &ArcBridgeService::OnAudioVersionReady, weak_factory_.GetWeakPtr()));
135 }
136
137 void ArcBridgeService::OnAudioVersionReady(uint32_t version) {
138 DCHECK(CalledOnValidThread());
139 audio_ptr_ = std::move(temporary_audio_ptr_);
140 audio_ptr_.set_connection_error_handler(base::Bind(
141 &ArcBridgeService::CloseAudioChannel, weak_factory_.GetWeakPtr()));
142 FOR_EACH_OBSERVER(Observer, observer_list(), OnAudioInstanceReady());
143 }
144
145 void ArcBridgeService::CloseAudioChannel() {
146 if (!audio_ptr_)
147 return;
148
149 audio_ptr_.reset();
150 FOR_EACH_OBSERVER(Observer, observer_list(), OnAudioInstanceClosed());
151 } 74 }
152 75
153 void ArcBridgeService::OnAuthInstanceReady(mojom::AuthInstancePtr auth_ptr) { 76 void ArcBridgeService::OnAuthInstanceReady(mojom::AuthInstancePtr auth_ptr) {
154 DCHECK(CalledOnValidThread()); 77 DCHECK(CalledOnValidThread());
155 temporary_auth_ptr_ = std::move(auth_ptr); 78 auth_.OnInstanceReady(std::move(auth_ptr));
156 temporary_auth_ptr_.QueryVersion(base::Bind(
157 &ArcBridgeService::OnAuthVersionReady, weak_factory_.GetWeakPtr()));
158 }
159
160 void ArcBridgeService::OnAuthVersionReady(uint32_t version) {
161 DCHECK(CalledOnValidThread());
162 auth_ptr_ = std::move(temporary_auth_ptr_);
163 auth_ptr_.set_connection_error_handler(base::Bind(
164 &ArcBridgeService::CloseAuthChannel, weak_factory_.GetWeakPtr()));
165 FOR_EACH_OBSERVER(Observer, observer_list(), OnAuthInstanceReady());
166 }
167
168 void ArcBridgeService::CloseAuthChannel() {
169 DCHECK(CalledOnValidThread());
170 if (!auth_ptr_)
171 return;
172
173 auth_ptr_.reset();
174 FOR_EACH_OBSERVER(Observer, observer_list(), OnAuthInstanceClosed());
175 } 79 }
176 80
177 void ArcBridgeService::OnBluetoothInstanceReady( 81 void ArcBridgeService::OnBluetoothInstanceReady(
178 mojom::BluetoothInstancePtr bluetooth_ptr) { 82 mojom::BluetoothInstancePtr bluetooth_ptr) {
179 DCHECK(CalledOnValidThread()); 83 DCHECK(CalledOnValidThread());
180 temporary_bluetooth_ptr_ = std::move(bluetooth_ptr); 84 bluetooth_.OnInstanceReady(std::move(bluetooth_ptr));
181 temporary_bluetooth_ptr_.QueryVersion(base::Bind(
182 &ArcBridgeService::OnBluetoothVersionReady, weak_factory_.GetWeakPtr()));
183 }
184
185 void ArcBridgeService::OnBluetoothVersionReady(uint32_t version) {
186 DCHECK(CalledOnValidThread());
187 bluetooth_ptr_ = std::move(temporary_bluetooth_ptr_);
188 bluetooth_ptr_.set_connection_error_handler(base::Bind(
189 &ArcBridgeService::CloseBluetoothChannel, weak_factory_.GetWeakPtr()));
190 FOR_EACH_OBSERVER(Observer, observer_list(), OnBluetoothInstanceReady());
191 }
192
193 void ArcBridgeService::CloseBluetoothChannel() {
194 DCHECK(CalledOnValidThread());
195 if (!bluetooth_ptr_)
196 return;
197
198 bluetooth_ptr_.reset();
199 FOR_EACH_OBSERVER(Observer, observer_list(), OnBluetoothInstanceClosed());
200 } 85 }
201 86
202 void ArcBridgeService::OnClipboardInstanceReady( 87 void ArcBridgeService::OnClipboardInstanceReady(
203 mojom::ClipboardInstancePtr clipboard_ptr) { 88 mojom::ClipboardInstancePtr clipboard_ptr) {
204 DCHECK(CalledOnValidThread()); 89 DCHECK(CalledOnValidThread());
205 temporary_clipboard_ptr_ = std::move(clipboard_ptr); 90 clipboard_.OnInstanceReady(std::move(clipboard_ptr));
206 temporary_clipboard_ptr_.QueryVersion(base::Bind(
207 &ArcBridgeService::OnClipboardVersionReady, weak_factory_.GetWeakPtr()));
208 }
209
210 void ArcBridgeService::OnClipboardVersionReady(uint32_t version) {
211 DCHECK(CalledOnValidThread());
212 clipboard_ptr_ = std::move(temporary_clipboard_ptr_);
213 clipboard_ptr_.set_connection_error_handler(base::Bind(
214 &ArcBridgeService::CloseClipboardChannel, weak_factory_.GetWeakPtr()));
215 FOR_EACH_OBSERVER(Observer, observer_list(), OnClipboardInstanceReady());
216 }
217
218 void ArcBridgeService::CloseClipboardChannel() {
219 DCHECK(CalledOnValidThread());
220 if (!clipboard_ptr_)
221 return;
222
223 clipboard_ptr_.reset();
224 FOR_EACH_OBSERVER(Observer, observer_list(), OnClipboardInstanceClosed());
225 } 91 }
226 92
227 void ArcBridgeService::OnCrashCollectorInstanceReady( 93 void ArcBridgeService::OnCrashCollectorInstanceReady(
228 mojom::CrashCollectorInstancePtr crash_collector_ptr) { 94 mojom::CrashCollectorInstancePtr crash_collector_ptr) {
229 DCHECK(CalledOnValidThread()); 95 DCHECK(CalledOnValidThread());
230 temporary_crash_collector_ptr_ = std::move(crash_collector_ptr); 96 crash_collector_.OnInstanceReady(std::move(crash_collector_ptr));
231 temporary_crash_collector_ptr_.QueryVersion(
232 base::Bind(&ArcBridgeService::OnCrashCollectorVersionReady,
233 weak_factory_.GetWeakPtr()));
234 }
235
236 void ArcBridgeService::OnCrashCollectorVersionReady(uint32_t version) {
237 DCHECK(CalledOnValidThread());
238 crash_collector_ptr_ = std::move(temporary_crash_collector_ptr_);
239 crash_collector_ptr_.set_connection_error_handler(
240 base::Bind(&ArcBridgeService::CloseCrashCollectorChannel,
241 weak_factory_.GetWeakPtr()));
242 FOR_EACH_OBSERVER(Observer, observer_list(), OnCrashCollectorInstanceReady());
243 }
244
245 void ArcBridgeService::CloseCrashCollectorChannel() {
246 DCHECK(CalledOnValidThread());
247 if (!crash_collector_ptr_)
248 return;
249
250 crash_collector_ptr_.reset();
251 FOR_EACH_OBSERVER(Observer, observer_list(),
252 OnCrashCollectorInstanceClosed());
253 } 97 }
254 98
255 void ArcBridgeService::OnFileSystemInstanceReady( 99 void ArcBridgeService::OnFileSystemInstanceReady(
256 mojom::FileSystemInstancePtr file_system_ptr) { 100 mojom::FileSystemInstancePtr file_system_ptr) {
257 DCHECK(CalledOnValidThread()); 101 DCHECK(CalledOnValidThread());
258 temporary_file_system_ptr_ = std::move(file_system_ptr); 102 file_system_.OnInstanceReady(std::move(file_system_ptr));
259 temporary_file_system_ptr_.QueryVersion(
260 base::Bind(&ArcBridgeService::OnFileSystemVersionReady,
261 weak_factory_.GetWeakPtr()));
262 }
263
264 void ArcBridgeService::OnFileSystemVersionReady(uint32_t version) {
265 DCHECK(CalledOnValidThread());
266 file_system_ptr_ = std::move(temporary_file_system_ptr_);
267 file_system_ptr_.set_connection_error_handler(
268 base::Bind(&ArcBridgeService::CloseFileSystemChannel,
269 weak_factory_.GetWeakPtr()));
270 FOR_EACH_OBSERVER(Observer, observer_list(), OnFileSystemInstanceReady());
271 }
272
273 void ArcBridgeService::CloseFileSystemChannel() {
274 DCHECK(CalledOnValidThread());
275 if (!file_system_ptr_)
276 return;
277
278 file_system_ptr_.reset();
279 FOR_EACH_OBSERVER(Observer, observer_list(),
280 OnFileSystemInstanceClosed());
281 } 103 }
282 104
283 void ArcBridgeService::OnImeInstanceReady(mojom::ImeInstancePtr ime_ptr) { 105 void ArcBridgeService::OnImeInstanceReady(mojom::ImeInstancePtr ime_ptr) {
284 DCHECK(CalledOnValidThread()); 106 DCHECK(CalledOnValidThread());
285 temporary_ime_ptr_ = std::move(ime_ptr); 107 ime_.OnInstanceReady(std::move(ime_ptr));
286 temporary_ime_ptr_.QueryVersion(base::Bind(
287 &ArcBridgeService::OnImeVersionReady, weak_factory_.GetWeakPtr()));
288 }
289
290 void ArcBridgeService::OnImeVersionReady(uint32_t version) {
291 DCHECK(CalledOnValidThread());
292 ime_ptr_ = std::move(temporary_ime_ptr_);
293 ime_ptr_.set_connection_error_handler(base::Bind(
294 &ArcBridgeService::CloseImeChannel, weak_factory_.GetWeakPtr()));
295 FOR_EACH_OBSERVER(Observer, observer_list(), OnImeInstanceReady());
296 }
297
298 void ArcBridgeService::CloseImeChannel() {
299 DCHECK(CalledOnValidThread());
300 if (!ime_ptr_)
301 return;
302
303 ime_ptr_.reset();
304 FOR_EACH_OBSERVER(Observer, observer_list(), OnImeInstanceClosed());
305 } 108 }
306 109
307 void ArcBridgeService::OnIntentHelperInstanceReady( 110 void ArcBridgeService::OnIntentHelperInstanceReady(
308 mojom::IntentHelperInstancePtr intent_helper_ptr) { 111 mojom::IntentHelperInstancePtr intent_helper_ptr) {
309 DCHECK(CalledOnValidThread()); 112 DCHECK(CalledOnValidThread());
310 temporary_intent_helper_ptr_ = std::move(intent_helper_ptr); 113 intent_helper_.OnInstanceReady(std::move(intent_helper_ptr));
311 temporary_intent_helper_ptr_.QueryVersion(
312 base::Bind(&ArcBridgeService::OnIntentHelperVersionReady,
313 weak_factory_.GetWeakPtr()));
314 }
315
316 void ArcBridgeService::OnIntentHelperVersionReady(uint32_t version) {
317 DCHECK(CalledOnValidThread());
318 intent_helper_ptr_ = std::move(temporary_intent_helper_ptr_);
319 intent_helper_ptr_.set_connection_error_handler(base::Bind(
320 &ArcBridgeService::CloseIntentHelperChannel, weak_factory_.GetWeakPtr()));
321 FOR_EACH_OBSERVER(Observer, observer_list(), OnIntentHelperInstanceReady());
322 }
323
324 void ArcBridgeService::CloseIntentHelperChannel() {
325 DCHECK(CalledOnValidThread());
326 if (!intent_helper_ptr_)
327 return;
328
329 intent_helper_ptr_.reset();
330 FOR_EACH_OBSERVER(Observer, observer_list(), OnIntentHelperInstanceClosed());
331 } 114 }
332 115
333 void ArcBridgeService::OnMetricsInstanceReady( 116 void ArcBridgeService::OnMetricsInstanceReady(
334 mojom::MetricsInstancePtr metrics_ptr) { 117 mojom::MetricsInstancePtr metrics_ptr) {
335 DCHECK(CalledOnValidThread()); 118 DCHECK(CalledOnValidThread());
336 temporary_metrics_ptr_ = std::move(metrics_ptr); 119 metrics_.OnInstanceReady(std::move(metrics_ptr));
337 temporary_metrics_ptr_.QueryVersion(base::Bind(
338 &ArcBridgeService::OnMetricsVersionReady, weak_factory_.GetWeakPtr()));
339 }
340
341 void ArcBridgeService::OnMetricsVersionReady(uint32_t version) {
342 DCHECK(CalledOnValidThread());
343 metrics_ptr_ = std::move(temporary_metrics_ptr_);
344 metrics_ptr_.set_connection_error_handler(base::Bind(
345 &ArcBridgeService::CloseMetricsChannel, weak_factory_.GetWeakPtr()));
346 FOR_EACH_OBSERVER(Observer, observer_list(), OnMetricsInstanceReady());
347 }
348
349 void ArcBridgeService::CloseMetricsChannel() {
350 DCHECK(CalledOnValidThread());
351 if (!metrics_ptr_)
352 return;
353
354 metrics_ptr_.reset();
355 FOR_EACH_OBSERVER(Observer, observer_list(), OnMetricsInstanceClosed());
356 } 120 }
357 121
358 void ArcBridgeService::OnNetInstanceReady(mojom::NetInstancePtr net_ptr) { 122 void ArcBridgeService::OnNetInstanceReady(mojom::NetInstancePtr net_ptr) {
359 DCHECK(CalledOnValidThread()); 123 DCHECK(CalledOnValidThread());
360 temporary_net_ptr_ = std::move(net_ptr); 124 net_.OnInstanceReady(std::move(net_ptr));
361 temporary_net_ptr_.QueryVersion(base::Bind(
362 &ArcBridgeService::OnNetVersionReady, weak_factory_.GetWeakPtr()));
363 }
364
365 void ArcBridgeService::OnNetVersionReady(uint32_t version) {
366 DCHECK(CalledOnValidThread());
367 net_ptr_ = std::move(temporary_net_ptr_);
368 net_ptr_.set_connection_error_handler(base::Bind(
369 &ArcBridgeService::CloseNetChannel, weak_factory_.GetWeakPtr()));
370 FOR_EACH_OBSERVER(Observer, observer_list(), OnNetInstanceReady());
371 }
372
373 void ArcBridgeService::CloseNetChannel() {
374 DCHECK(CalledOnValidThread());
375 if (!net_ptr_)
376 return;
377
378 net_ptr_.reset();
379 FOR_EACH_OBSERVER(Observer, observer_list(), OnNetInstanceClosed());
380 } 125 }
381 126
382 void ArcBridgeService::OnNotificationsInstanceReady( 127 void ArcBridgeService::OnNotificationsInstanceReady(
383 mojom::NotificationsInstancePtr notifications_ptr) { 128 mojom::NotificationsInstancePtr notifications_ptr) {
384 DCHECK(CalledOnValidThread()); 129 DCHECK(CalledOnValidThread());
385 temporary_notifications_ptr_ = std::move(notifications_ptr); 130 notifications_.OnInstanceReady(std::move(notifications_ptr));
386 temporary_notifications_ptr_.QueryVersion(
387 base::Bind(&ArcBridgeService::OnNotificationsVersionReady,
388 weak_factory_.GetWeakPtr()));
389 }
390
391 void ArcBridgeService::OnNotificationsVersionReady(uint32_t version) {
392 DCHECK(CalledOnValidThread());
393 notifications_ptr_ = std::move(temporary_notifications_ptr_);
394 notifications_ptr_.set_connection_error_handler(
395 base::Bind(&ArcBridgeService::CloseNotificationsChannel,
396 weak_factory_.GetWeakPtr()));
397 FOR_EACH_OBSERVER(Observer, observer_list(), OnNotificationsInstanceReady());
398 }
399
400 void ArcBridgeService::CloseNotificationsChannel() {
401 DCHECK(CalledOnValidThread());
402 if (!notifications_ptr_)
403 return;
404
405 notifications_ptr_.reset();
406 FOR_EACH_OBSERVER(Observer, observer_list(), OnNotificationsInstanceClosed());
407 } 131 }
408 132
409 void ArcBridgeService::OnObbMounterInstanceReady( 133 void ArcBridgeService::OnObbMounterInstanceReady(
410 mojom::ObbMounterInstancePtr obb_mounter_ptr) { 134 mojom::ObbMounterInstancePtr obb_mounter_ptr) {
411 DCHECK(CalledOnValidThread()); 135 DCHECK(CalledOnValidThread());
412 temporary_obb_mounter_ptr_ = std::move(obb_mounter_ptr); 136 obb_mounter_.OnInstanceReady(std::move(obb_mounter_ptr));
413 temporary_obb_mounter_ptr_.QueryVersion(base::Bind(
414 &ArcBridgeService::OnObbMounterVersionReady,
415 weak_factory_.GetWeakPtr()));
416 }
417
418 void ArcBridgeService::OnObbMounterVersionReady(uint32_t version) {
419 DCHECK(CalledOnValidThread());
420 obb_mounter_ptr_ = std::move(temporary_obb_mounter_ptr_);
421 obb_mounter_ptr_.set_connection_error_handler(base::Bind(
422 &ArcBridgeService::CloseObbMounterChannel,
423 weak_factory_.GetWeakPtr()));
424 FOR_EACH_OBSERVER(Observer, observer_list(), OnObbMounterInstanceReady());
425 }
426
427 void ArcBridgeService::CloseObbMounterChannel() {
428 if (!obb_mounter_ptr_)
429 return;
430
431 obb_mounter_ptr_.reset();
432 FOR_EACH_OBSERVER(Observer, observer_list(), OnObbMounterInstanceClosed());
433 } 137 }
434 138
435 void ArcBridgeService::OnPolicyInstanceReady( 139 void ArcBridgeService::OnPolicyInstanceReady(
436 mojom::PolicyInstancePtr policy_ptr) { 140 mojom::PolicyInstancePtr policy_ptr) {
437 DCHECK(CalledOnValidThread()); 141 DCHECK(CalledOnValidThread());
438 temporary_policy_ptr_ = std::move(policy_ptr); 142 policy_.OnInstanceReady(std::move(policy_ptr));
439 temporary_policy_ptr_.QueryVersion(base::Bind(
440 &ArcBridgeService::OnPolicyVersionReady, weak_factory_.GetWeakPtr()));
441 }
442
443 void ArcBridgeService::OnPolicyVersionReady(uint32_t version) {
444 DCHECK(CalledOnValidThread());
445 policy_ptr_ = std::move(temporary_policy_ptr_);
446 policy_ptr_.set_connection_error_handler(base::Bind(
447 &ArcBridgeService::ClosePolicyChannel, weak_factory_.GetWeakPtr()));
448 FOR_EACH_OBSERVER(Observer, observer_list(), OnPolicyInstanceReady());
449 }
450
451 void ArcBridgeService::ClosePolicyChannel() {
452 DCHECK(CalledOnValidThread());
453 if (!policy_ptr_)
454 return;
455
456 policy_ptr_.reset();
457 FOR_EACH_OBSERVER(Observer, observer_list(), OnPolicyInstanceClosed());
458 } 143 }
459 144
460 void ArcBridgeService::OnPowerInstanceReady(mojom::PowerInstancePtr power_ptr) { 145 void ArcBridgeService::OnPowerInstanceReady(mojom::PowerInstancePtr power_ptr) {
461 DCHECK(CalledOnValidThread()); 146 DCHECK(CalledOnValidThread());
462 temporary_power_ptr_ = std::move(power_ptr); 147 power_.OnInstanceReady(std::move(power_ptr));
463 temporary_power_ptr_.QueryVersion(base::Bind(
464 &ArcBridgeService::OnPowerVersionReady, weak_factory_.GetWeakPtr()));
465 }
466
467 void ArcBridgeService::OnPowerVersionReady(uint32_t version) {
468 DCHECK(CalledOnValidThread());
469 power_ptr_ = std::move(temporary_power_ptr_);
470 power_ptr_.set_connection_error_handler(base::Bind(
471 &ArcBridgeService::ClosePowerChannel, weak_factory_.GetWeakPtr()));
472 FOR_EACH_OBSERVER(Observer, observer_list(), OnPowerInstanceReady());
473 }
474
475 void ArcBridgeService::ClosePowerChannel() {
476 DCHECK(CalledOnValidThread());
477 if (!power_ptr_)
478 return;
479
480 power_ptr_.reset();
481 FOR_EACH_OBSERVER(Observer, observer_list(), OnPowerInstanceClosed());
482 } 148 }
483 149
484 void ArcBridgeService::OnProcessInstanceReady( 150 void ArcBridgeService::OnProcessInstanceReady(
485 mojom::ProcessInstancePtr process_ptr) { 151 mojom::ProcessInstancePtr process_ptr) {
486 DCHECK(CalledOnValidThread()); 152 DCHECK(CalledOnValidThread());
487 temporary_process_ptr_ = std::move(process_ptr); 153 process_.OnInstanceReady(std::move(process_ptr));
488 temporary_process_ptr_.QueryVersion(base::Bind(
489 &ArcBridgeService::OnProcessVersionReady, weak_factory_.GetWeakPtr()));
490 }
491
492 void ArcBridgeService::OnProcessVersionReady(uint32_t version) {
493 DCHECK(CalledOnValidThread());
494 process_ptr_ = std::move(temporary_process_ptr_);
495 process_ptr_.set_connection_error_handler(base::Bind(
496 &ArcBridgeService::CloseProcessChannel, weak_factory_.GetWeakPtr()));
497 FOR_EACH_OBSERVER(Observer, observer_list(), OnProcessInstanceReady());
498 }
499
500 void ArcBridgeService::CloseProcessChannel() {
501 DCHECK(CalledOnValidThread());
502 if (!process_ptr_)
503 return;
504
505 process_ptr_.reset();
506 FOR_EACH_OBSERVER(Observer, observer_list(), OnProcessInstanceClosed());
507 } 154 }
508 155
509 void ArcBridgeService::OnStorageManagerInstanceReady( 156 void ArcBridgeService::OnStorageManagerInstanceReady(
510 mojom::StorageManagerInstancePtr storage_manager_ptr) { 157 mojom::StorageManagerInstancePtr storage_manager_ptr) {
511 DCHECK(CalledOnValidThread()); 158 DCHECK(CalledOnValidThread());
512 temporary_storage_manager_ptr_ = std::move(storage_manager_ptr); 159 storage_manager_.OnInstanceReady(std::move(storage_manager_ptr));
513 temporary_storage_manager_ptr_.QueryVersion(base::Bind(
514 &ArcBridgeService::OnStorageManagerVersionReady,
515 weak_factory_.GetWeakPtr()));
516 }
517
518 void ArcBridgeService::OnStorageManagerVersionReady(uint32_t version) {
519 DCHECK(CalledOnValidThread());
520 storage_manager_ptr_ = std::move(temporary_storage_manager_ptr_);
521 storage_manager_ptr_.set_connection_error_handler(base::Bind(
522 &ArcBridgeService::CloseStorageManagerChannel,
523 weak_factory_.GetWeakPtr()));
524 FOR_EACH_OBSERVER(
525 Observer, observer_list(), OnStorageManagerInstanceReady());
526 }
527
528 void ArcBridgeService::CloseStorageManagerChannel() {
529 DCHECK(CalledOnValidThread());
530 if (!storage_manager_ptr_)
531 return;
532
533 storage_manager_ptr_.reset();
534 FOR_EACH_OBSERVER(
535 Observer, observer_list(), OnStorageManagerInstanceClosed());
536 } 160 }
537 161
538 void ArcBridgeService::OnVideoInstanceReady(mojom::VideoInstancePtr video_ptr) { 162 void ArcBridgeService::OnVideoInstanceReady(mojom::VideoInstancePtr video_ptr) {
539 DCHECK(CalledOnValidThread()); 163 DCHECK(CalledOnValidThread());
540 temporary_video_ptr_ = std::move(video_ptr); 164 video_.OnInstanceReady(std::move(video_ptr));
541 temporary_video_ptr_.QueryVersion(base::Bind(
542 &ArcBridgeService::OnVideoVersionReady, weak_factory_.GetWeakPtr()));
543 }
544
545 void ArcBridgeService::OnVideoVersionReady(uint32_t version) {
546 DCHECK(CalledOnValidThread());
547 video_ptr_ = std::move(temporary_video_ptr_);
548 video_ptr_.set_connection_error_handler(base::Bind(
549 &ArcBridgeService::CloseVideoChannel, weak_factory_.GetWeakPtr()));
550 FOR_EACH_OBSERVER(Observer, observer_list(), OnVideoInstanceReady());
551 }
552
553 void ArcBridgeService::CloseVideoChannel() {
554 DCHECK(CalledOnValidThread());
555 if (!video_ptr_)
556 return;
557
558 video_ptr_.reset();
559 FOR_EACH_OBSERVER(Observer, observer_list(), OnVideoInstanceClosed());
560 } 165 }
561 166
562 void ArcBridgeService::OnWindowManagerInstanceReady( 167 void ArcBridgeService::OnWindowManagerInstanceReady(
563 mojom::WindowManagerInstancePtr window_manager_ptr) { 168 mojom::WindowManagerInstancePtr window_manager_ptr) {
564 DCHECK(CalledOnValidThread()); 169 DCHECK(CalledOnValidThread());
565 temporary_window_manager_ptr_ = std::move(window_manager_ptr); 170 window_manager_.OnInstanceReady(std::move(window_manager_ptr));
566 temporary_window_manager_ptr_.QueryVersion(base::Bind(
567 &ArcBridgeService::OnWindowManagerVersionReady,
568 weak_factory_.GetWeakPtr()));
569 }
570
571 void ArcBridgeService::OnWindowManagerVersionReady(uint32_t version) {
572 DCHECK(CalledOnValidThread());
573 window_manager_ptr_ = std::move(temporary_window_manager_ptr_);
574 window_manager_ptr_.set_connection_error_handler(base::Bind(
575 &ArcBridgeService::CloseWindowManagerChannel,
576 weak_factory_.GetWeakPtr()));
577 FOR_EACH_OBSERVER(Observer, observer_list(), OnWindowManagerInstanceReady());
578 }
579
580 void ArcBridgeService::CloseWindowManagerChannel() {
581 if (!window_manager_ptr_)
582 return;
583
584 window_manager_ptr_.reset();
585 FOR_EACH_OBSERVER(Observer, observer_list(), OnWindowManagerInstanceClosed());
586 } 171 }
587 172
588 void ArcBridgeService::SetState(State state) { 173 void ArcBridgeService::SetState(State state) {
589 DCHECK(CalledOnValidThread()); 174 DCHECK(CalledOnValidThread());
590 // DCHECK on enum classes not supported. 175 // DCHECK on enum classes not supported.
591 DCHECK(state_ != state); 176 DCHECK(state_ != state);
592 state_ = state; 177 state_ = state;
593 VLOG(2) << "State: " << static_cast<uint32_t>(state_); 178 VLOG(2) << "State: " << static_cast<uint32_t>(state_);
594 FOR_EACH_OBSERVER(Observer, observer_list(), OnStateChanged(state_)); 179 FOR_EACH_OBSERVER(Observer, observer_list(), OnStateChanged(state_));
595 if (state_ == State::READY) 180 if (state_ == State::READY)
(...skipping 14 matching lines...) Expand all
610 stop_reason_ = stop_reason; 195 stop_reason_ = stop_reason;
611 } 196 }
612 197
613 bool ArcBridgeService::CalledOnValidThread() { 198 bool ArcBridgeService::CalledOnValidThread() {
614 return thread_checker_.CalledOnValidThread(); 199 return thread_checker_.CalledOnValidThread();
615 } 200 }
616 201
617 void ArcBridgeService::CloseAllChannels() { 202 void ArcBridgeService::CloseAllChannels() {
618 // Call all the error handlers of all the channels to both close the channel 203 // Call all the error handlers of all the channels to both close the channel
619 // and notify any observers that the channel is closed. 204 // and notify any observers that the channel is closed.
620 CloseAppChannel(); 205 app_.CloseChannel();
621 CloseAudioChannel(); 206 audio_.CloseChannel();
622 CloseAuthChannel(); 207 auth_.CloseChannel();
623 CloseBluetoothChannel(); 208 bluetooth_.CloseChannel();
624 CloseClipboardChannel(); 209 clipboard_.CloseChannel();
625 CloseCrashCollectorChannel(); 210 crash_collector_.CloseChannel();
626 CloseFileSystemChannel(); 211 file_system_.CloseChannel();
627 CloseImeChannel(); 212 ime_.CloseChannel();
628 CloseIntentHelperChannel(); 213 intent_helper_.CloseChannel();
629 CloseMetricsChannel(); 214 metrics_.CloseChannel();
630 CloseNetChannel(); 215 net_.CloseChannel();
631 CloseNotificationsChannel(); 216 notifications_.CloseChannel();
632 CloseObbMounterChannel(); 217 obb_mounter_.CloseChannel();
633 ClosePolicyChannel(); 218 policy_.CloseChannel();
634 ClosePowerChannel(); 219 power_.CloseChannel();
635 CloseProcessChannel(); 220 process_.CloseChannel();
636 CloseStorageManagerChannel(); 221 storage_manager_.CloseChannel();
637 CloseVideoChannel(); 222 video_.CloseChannel();
638 CloseWindowManagerChannel(); 223 window_manager_.CloseChannel();
639 } 224 }
640 225
641 } // namespace arc 226 } // namespace arc
OLDNEW
« no previous file with comments | « components/arc/arc_bridge_service.h ('k') | components/arc/audio/arc_audio_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698