Index: components/arc/arc_bridge_service_impl.cc |
diff --git a/components/arc/arc_bridge_service_impl.cc b/components/arc/arc_bridge_service_impl.cc |
index a5c49456f4e0c3c40b13e3b1f6f86628fa3974aa..3c4f408374a9b8e08a7ca6cf1c0ca719d18ef444 100644 |
--- a/components/arc/arc_bridge_service_impl.cc |
+++ b/components/arc/arc_bridge_service_impl.cc |
@@ -170,7 +170,139 @@ void ArcBridgeServiceImpl::OnChannelClosed() { |
instance_ptr_.reset(); |
if (binding_.is_bound()) |
binding_.Close(); |
- CloseAllChannels(); |
+ |
+ // Call all the error handlers of all the channels to both close the channel |
+ // and notify any observers that the channel is closed. |
+ app_.CloseChannel(); |
+ audio_.CloseChannel(); |
+ auth_.CloseChannel(); |
+ bluetooth_.CloseChannel(); |
+ clipboard_.CloseChannel(); |
+ crash_collector_.CloseChannel(); |
+ file_system_.CloseChannel(); |
+ ime_.CloseChannel(); |
+ intent_helper_.CloseChannel(); |
+ metrics_.CloseChannel(); |
+ net_.CloseChannel(); |
+ notifications_.CloseChannel(); |
+ obb_mounter_.CloseChannel(); |
+ policy_.CloseChannel(); |
+ power_.CloseChannel(); |
+ process_.CloseChannel(); |
+ storage_manager_.CloseChannel(); |
+ video_.CloseChannel(); |
+ window_manager_.CloseChannel(); |
+} |
+ |
+void ArcBridgeServiceImpl::OnAppInstanceReady(mojom::AppInstancePtr app_ptr) { |
hidehiko
2016/07/12 18:27:36
As you moved ABHost to Impl, could you also extrac
Luis Héctor Chávez
2016/07/12 18:34:06
I prefer to work on it separately to land this tod
Luis Héctor Chávez
2016/07/12 22:14:29
Wait, but that wouldn't work: the InstanceHolder i
hidehiko
2016/07/13 08:08:12
You can touch them via SetInstance().
|
+ DCHECK(CalledOnValidThread()); |
+ app_.OnInstanceReady(std::move(app_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnAudioInstanceReady( |
+ mojom::AudioInstancePtr audio_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ audio_.OnInstanceReady(std::move(audio_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnAuthInstanceReady( |
+ mojom::AuthInstancePtr auth_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ auth_.OnInstanceReady(std::move(auth_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnBluetoothInstanceReady( |
+ mojom::BluetoothInstancePtr bluetooth_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ bluetooth_.OnInstanceReady(std::move(bluetooth_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnClipboardInstanceReady( |
+ mojom::ClipboardInstancePtr clipboard_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ clipboard_.OnInstanceReady(std::move(clipboard_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnCrashCollectorInstanceReady( |
+ mojom::CrashCollectorInstancePtr crash_collector_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ crash_collector_.OnInstanceReady(std::move(crash_collector_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnFileSystemInstanceReady( |
+ mojom::FileSystemInstancePtr file_system_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ file_system_.OnInstanceReady(std::move(file_system_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnImeInstanceReady(mojom::ImeInstancePtr ime_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ ime_.OnInstanceReady(std::move(ime_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnIntentHelperInstanceReady( |
+ mojom::IntentHelperInstancePtr intent_helper_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ intent_helper_.OnInstanceReady(std::move(intent_helper_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnMetricsInstanceReady( |
+ mojom::MetricsInstancePtr metrics_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ metrics_.OnInstanceReady(std::move(metrics_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnNetInstanceReady(mojom::NetInstancePtr net_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ net_.OnInstanceReady(std::move(net_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnNotificationsInstanceReady( |
+ mojom::NotificationsInstancePtr notifications_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ notifications_.OnInstanceReady(std::move(notifications_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnObbMounterInstanceReady( |
+ mojom::ObbMounterInstancePtr obb_mounter_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ obb_mounter_.OnInstanceReady(std::move(obb_mounter_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnPolicyInstanceReady( |
+ mojom::PolicyInstancePtr policy_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ policy_.OnInstanceReady(std::move(policy_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnPowerInstanceReady( |
+ mojom::PowerInstancePtr power_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ power_.OnInstanceReady(std::move(power_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnProcessInstanceReady( |
+ mojom::ProcessInstancePtr process_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ process_.OnInstanceReady(std::move(process_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnStorageManagerInstanceReady( |
+ mojom::StorageManagerInstancePtr storage_manager_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ storage_manager_.OnInstanceReady(std::move(storage_manager_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnVideoInstanceReady( |
+ mojom::VideoInstancePtr video_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ video_.OnInstanceReady(std::move(video_ptr)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnWindowManagerInstanceReady( |
+ mojom::WindowManagerInstancePtr window_manager_ptr) { |
+ DCHECK(CalledOnValidThread()); |
+ window_manager_.OnInstanceReady(std::move(window_manager_ptr)); |
} |
} // namespace arc |