| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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_host_impl.h" | 5 #include "components/arc/arc_bridge_host_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 | 60 |
| 61 // Put as a last member to ensure that any callback tied to the |ptr_| | 61 // Put as a last member to ensure that any callback tied to the |ptr_| |
| 62 // is not invoked. | 62 // is not invoked. |
| 63 mojo::InterfacePtr<T> ptr_; | 63 mojo::InterfacePtr<T> ptr_; |
| 64 | 64 |
| 65 DISALLOW_COPY_AND_ASSIGN(MojoChannelImpl); | 65 DISALLOW_COPY_AND_ASSIGN(MojoChannelImpl); |
| 66 }; | 66 }; |
| 67 | 67 |
| 68 } // namespace | 68 } // namespace |
| 69 | 69 |
| 70 ArcBridgeHostImpl::ArcBridgeHostImpl(mojom::ArcBridgeInstancePtr instance) | 70 ArcBridgeHostImpl::ArcBridgeHostImpl(ArcBridgeService* arc_bridge_service, |
| 71 : binding_(this), instance_(std::move(instance)) { | 71 mojom::ArcBridgeInstancePtr instance) |
| 72 : arc_bridge_service_(arc_bridge_service), |
| 73 binding_(this), |
| 74 instance_(std::move(instance)) { |
| 75 DCHECK(arc_bridge_service_); |
| 72 DCHECK(instance_.is_bound()); | 76 DCHECK(instance_.is_bound()); |
| 73 instance_.set_connection_error_handler( | 77 instance_.set_connection_error_handler( |
| 74 base::Bind(&ArcBridgeHostImpl::OnClosed, base::Unretained(this))); | 78 base::Bind(&ArcBridgeHostImpl::OnClosed, base::Unretained(this))); |
| 75 instance_->Init(binding_.CreateInterfacePtrAndBind()); | 79 instance_->Init(binding_.CreateInterfacePtrAndBind()); |
| 76 } | 80 } |
| 77 | 81 |
| 78 ArcBridgeHostImpl::~ArcBridgeHostImpl() { | 82 ArcBridgeHostImpl::~ArcBridgeHostImpl() { |
| 79 OnClosed(); | 83 OnClosed(); |
| 80 } | 84 } |
| 81 | 85 |
| 82 void ArcBridgeHostImpl::OnAppInstanceReady(mojom::AppInstancePtr app_ptr) { | 86 void ArcBridgeHostImpl::OnAppInstanceReady(mojom::AppInstancePtr app_ptr) { |
| 83 OnInstanceReady(ArcBridgeService::Get()->app(), std::move(app_ptr)); | 87 OnInstanceReady(arc_bridge_service_->app(), std::move(app_ptr)); |
| 84 } | 88 } |
| 85 | 89 |
| 86 void ArcBridgeHostImpl::OnAudioInstanceReady( | 90 void ArcBridgeHostImpl::OnAudioInstanceReady( |
| 87 mojom::AudioInstancePtr audio_ptr) { | 91 mojom::AudioInstancePtr audio_ptr) { |
| 88 OnInstanceReady(ArcBridgeService::Get()->audio(), std::move(audio_ptr)); | 92 OnInstanceReady(arc_bridge_service_->audio(), std::move(audio_ptr)); |
| 89 } | 93 } |
| 90 | 94 |
| 91 void ArcBridgeHostImpl::OnAuthInstanceReady(mojom::AuthInstancePtr auth_ptr) { | 95 void ArcBridgeHostImpl::OnAuthInstanceReady(mojom::AuthInstancePtr auth_ptr) { |
| 92 OnInstanceReady(ArcBridgeService::Get()->auth(), std::move(auth_ptr)); | 96 OnInstanceReady(arc_bridge_service_->auth(), std::move(auth_ptr)); |
| 93 } | 97 } |
| 94 | 98 |
| 95 void ArcBridgeHostImpl::OnBluetoothInstanceReady( | 99 void ArcBridgeHostImpl::OnBluetoothInstanceReady( |
| 96 mojom::BluetoothInstancePtr bluetooth_ptr) { | 100 mojom::BluetoothInstancePtr bluetooth_ptr) { |
| 97 OnInstanceReady(ArcBridgeService::Get()->bluetooth(), | 101 OnInstanceReady(arc_bridge_service_->bluetooth(), std::move(bluetooth_ptr)); |
| 98 std::move(bluetooth_ptr)); | |
| 99 } | 102 } |
| 100 | 103 |
| 101 void ArcBridgeHostImpl::OnBootPhaseMonitorInstanceReady( | 104 void ArcBridgeHostImpl::OnBootPhaseMonitorInstanceReady( |
| 102 mojom::BootPhaseMonitorInstancePtr boot_phase_monitor_ptr) { | 105 mojom::BootPhaseMonitorInstancePtr boot_phase_monitor_ptr) { |
| 103 OnInstanceReady(ArcBridgeService::Get()->boot_phase_monitor(), | 106 OnInstanceReady(arc_bridge_service_->boot_phase_monitor(), |
| 104 std::move(boot_phase_monitor_ptr)); | 107 std::move(boot_phase_monitor_ptr)); |
| 105 } | 108 } |
| 106 | 109 |
| 107 void ArcBridgeHostImpl::OnClipboardInstanceReady( | 110 void ArcBridgeHostImpl::OnClipboardInstanceReady( |
| 108 mojom::ClipboardInstancePtr clipboard_ptr) { | 111 mojom::ClipboardInstancePtr clipboard_ptr) { |
| 109 OnInstanceReady(ArcBridgeService::Get()->clipboard(), | 112 OnInstanceReady(arc_bridge_service_->clipboard(), std::move(clipboard_ptr)); |
| 110 std::move(clipboard_ptr)); | |
| 111 } | 113 } |
| 112 | 114 |
| 113 void ArcBridgeHostImpl::OnCrashCollectorInstanceReady( | 115 void ArcBridgeHostImpl::OnCrashCollectorInstanceReady( |
| 114 mojom::CrashCollectorInstancePtr crash_collector_ptr) { | 116 mojom::CrashCollectorInstancePtr crash_collector_ptr) { |
| 115 OnInstanceReady(ArcBridgeService::Get()->crash_collector(), | 117 OnInstanceReady(arc_bridge_service_->crash_collector(), |
| 116 std::move(crash_collector_ptr)); | 118 std::move(crash_collector_ptr)); |
| 117 } | 119 } |
| 118 | 120 |
| 119 void ArcBridgeHostImpl::OnEnterpriseReportingInstanceReady( | 121 void ArcBridgeHostImpl::OnEnterpriseReportingInstanceReady( |
| 120 mojom::EnterpriseReportingInstancePtr enterprise_reporting_ptr) { | 122 mojom::EnterpriseReportingInstancePtr enterprise_reporting_ptr) { |
| 121 OnInstanceReady(ArcBridgeService::Get()->enterprise_reporting(), | 123 OnInstanceReady(arc_bridge_service_->enterprise_reporting(), |
| 122 std::move(enterprise_reporting_ptr)); | 124 std::move(enterprise_reporting_ptr)); |
| 123 } | 125 } |
| 124 | 126 |
| 125 void ArcBridgeHostImpl::OnFileSystemInstanceReady( | 127 void ArcBridgeHostImpl::OnFileSystemInstanceReady( |
| 126 mojom::FileSystemInstancePtr file_system_ptr) { | 128 mojom::FileSystemInstancePtr file_system_ptr) { |
| 127 OnInstanceReady(ArcBridgeService::Get()->file_system(), | 129 OnInstanceReady(arc_bridge_service_->file_system(), |
| 128 std::move(file_system_ptr)); | 130 std::move(file_system_ptr)); |
| 129 } | 131 } |
| 130 | 132 |
| 131 void ArcBridgeHostImpl::OnImeInstanceReady(mojom::ImeInstancePtr ime_ptr) { | 133 void ArcBridgeHostImpl::OnImeInstanceReady(mojom::ImeInstancePtr ime_ptr) { |
| 132 OnInstanceReady(ArcBridgeService::Get()->ime(), std::move(ime_ptr)); | 134 OnInstanceReady(arc_bridge_service_->ime(), std::move(ime_ptr)); |
| 133 } | 135 } |
| 134 | 136 |
| 135 void ArcBridgeHostImpl::OnIntentHelperInstanceReady( | 137 void ArcBridgeHostImpl::OnIntentHelperInstanceReady( |
| 136 mojom::IntentHelperInstancePtr intent_helper_ptr) { | 138 mojom::IntentHelperInstancePtr intent_helper_ptr) { |
| 137 OnInstanceReady(ArcBridgeService::Get()->intent_helper(), | 139 OnInstanceReady(arc_bridge_service_->intent_helper(), |
| 138 std::move(intent_helper_ptr)); | 140 std::move(intent_helper_ptr)); |
| 139 } | 141 } |
| 140 | 142 |
| 141 void ArcBridgeHostImpl::OnKioskInstanceReady( | 143 void ArcBridgeHostImpl::OnKioskInstanceReady( |
| 142 mojom::KioskInstancePtr kiosk_ptr) { | 144 mojom::KioskInstancePtr kiosk_ptr) { |
| 143 OnInstanceReady(ArcBridgeService::Get()->kiosk(), std::move(kiosk_ptr)); | 145 OnInstanceReady(arc_bridge_service_->kiosk(), std::move(kiosk_ptr)); |
| 144 } | 146 } |
| 145 | 147 |
| 146 void ArcBridgeHostImpl::OnMetricsInstanceReady( | 148 void ArcBridgeHostImpl::OnMetricsInstanceReady( |
| 147 mojom::MetricsInstancePtr metrics_ptr) { | 149 mojom::MetricsInstancePtr metrics_ptr) { |
| 148 OnInstanceReady(ArcBridgeService::Get()->metrics(), std::move(metrics_ptr)); | 150 OnInstanceReady(arc_bridge_service_->metrics(), std::move(metrics_ptr)); |
| 149 } | 151 } |
| 150 | 152 |
| 151 void ArcBridgeHostImpl::OnNetInstanceReady(mojom::NetInstancePtr net_ptr) { | 153 void ArcBridgeHostImpl::OnNetInstanceReady(mojom::NetInstancePtr net_ptr) { |
| 152 OnInstanceReady(ArcBridgeService::Get()->net(), std::move(net_ptr)); | 154 OnInstanceReady(arc_bridge_service_->net(), std::move(net_ptr)); |
| 153 } | 155 } |
| 154 | 156 |
| 155 void ArcBridgeHostImpl::OnNotificationsInstanceReady( | 157 void ArcBridgeHostImpl::OnNotificationsInstanceReady( |
| 156 mojom::NotificationsInstancePtr notifications_ptr) { | 158 mojom::NotificationsInstancePtr notifications_ptr) { |
| 157 OnInstanceReady(ArcBridgeService::Get()->notifications(), | 159 OnInstanceReady(arc_bridge_service_->notifications(), |
| 158 std::move(notifications_ptr)); | 160 std::move(notifications_ptr)); |
| 159 } | 161 } |
| 160 | 162 |
| 161 void ArcBridgeHostImpl::OnObbMounterInstanceReady( | 163 void ArcBridgeHostImpl::OnObbMounterInstanceReady( |
| 162 mojom::ObbMounterInstancePtr obb_mounter_ptr) { | 164 mojom::ObbMounterInstancePtr obb_mounter_ptr) { |
| 163 OnInstanceReady(ArcBridgeService::Get()->obb_mounter(), | 165 OnInstanceReady(arc_bridge_service_->obb_mounter(), |
| 164 std::move(obb_mounter_ptr)); | 166 std::move(obb_mounter_ptr)); |
| 165 } | 167 } |
| 166 | 168 |
| 167 void ArcBridgeHostImpl::OnPolicyInstanceReady( | 169 void ArcBridgeHostImpl::OnPolicyInstanceReady( |
| 168 mojom::PolicyInstancePtr policy_ptr) { | 170 mojom::PolicyInstancePtr policy_ptr) { |
| 169 OnInstanceReady(ArcBridgeService::Get()->policy(), std::move(policy_ptr)); | 171 OnInstanceReady(arc_bridge_service_->policy(), std::move(policy_ptr)); |
| 170 } | 172 } |
| 171 | 173 |
| 172 void ArcBridgeHostImpl::OnPowerInstanceReady( | 174 void ArcBridgeHostImpl::OnPowerInstanceReady( |
| 173 mojom::PowerInstancePtr power_ptr) { | 175 mojom::PowerInstancePtr power_ptr) { |
| 174 OnInstanceReady(ArcBridgeService::Get()->power(), std::move(power_ptr)); | 176 OnInstanceReady(arc_bridge_service_->power(), std::move(power_ptr)); |
| 175 } | 177 } |
| 176 | 178 |
| 177 void ArcBridgeHostImpl::OnPrintInstanceReady( | 179 void ArcBridgeHostImpl::OnPrintInstanceReady( |
| 178 mojom::PrintInstancePtr print_ptr) { | 180 mojom::PrintInstancePtr print_ptr) { |
| 179 OnInstanceReady(ArcBridgeService::Get()->print(), std::move(print_ptr)); | 181 OnInstanceReady(arc_bridge_service_->print(), std::move(print_ptr)); |
| 180 } | 182 } |
| 181 | 183 |
| 182 void ArcBridgeHostImpl::OnProcessInstanceReady( | 184 void ArcBridgeHostImpl::OnProcessInstanceReady( |
| 183 mojom::ProcessInstancePtr process_ptr) { | 185 mojom::ProcessInstancePtr process_ptr) { |
| 184 OnInstanceReady(ArcBridgeService::Get()->process(), std::move(process_ptr)); | 186 OnInstanceReady(arc_bridge_service_->process(), std::move(process_ptr)); |
| 185 } | 187 } |
| 186 | 188 |
| 187 void ArcBridgeHostImpl::OnStorageManagerInstanceReady( | 189 void ArcBridgeHostImpl::OnStorageManagerInstanceReady( |
| 188 mojom::StorageManagerInstancePtr storage_manager_ptr) { | 190 mojom::StorageManagerInstancePtr storage_manager_ptr) { |
| 189 OnInstanceReady(ArcBridgeService::Get()->storage_manager(), | 191 OnInstanceReady(arc_bridge_service_->storage_manager(), |
| 190 std::move(storage_manager_ptr)); | 192 std::move(storage_manager_ptr)); |
| 191 } | 193 } |
| 192 | 194 |
| 193 void ArcBridgeHostImpl::OnTtsInstanceReady(mojom::TtsInstancePtr tts_ptr) { | 195 void ArcBridgeHostImpl::OnTtsInstanceReady(mojom::TtsInstancePtr tts_ptr) { |
| 194 OnInstanceReady(ArcBridgeService::Get()->tts(), std::move(tts_ptr)); | 196 OnInstanceReady(arc_bridge_service_->tts(), std::move(tts_ptr)); |
| 195 } | 197 } |
| 196 | 198 |
| 197 void ArcBridgeHostImpl::OnVideoInstanceReady( | 199 void ArcBridgeHostImpl::OnVideoInstanceReady( |
| 198 mojom::VideoInstancePtr video_ptr) { | 200 mojom::VideoInstancePtr video_ptr) { |
| 199 OnInstanceReady(ArcBridgeService::Get()->video(), std::move(video_ptr)); | 201 OnInstanceReady(arc_bridge_service_->video(), std::move(video_ptr)); |
| 200 } | 202 } |
| 201 | 203 |
| 202 void ArcBridgeHostImpl::OnWallpaperInstanceReady( | 204 void ArcBridgeHostImpl::OnWallpaperInstanceReady( |
| 203 mojom::WallpaperInstancePtr wallpaper_ptr) { | 205 mojom::WallpaperInstancePtr wallpaper_ptr) { |
| 204 OnInstanceReady(ArcBridgeService::Get()->wallpaper(), | 206 OnInstanceReady(arc_bridge_service_->wallpaper(), std::move(wallpaper_ptr)); |
| 205 std::move(wallpaper_ptr)); | |
| 206 } | 207 } |
| 207 | 208 |
| 208 void ArcBridgeHostImpl::OnClosed() { | 209 void ArcBridgeHostImpl::OnClosed() { |
| 209 DCHECK(thread_checker_.CalledOnValidThread()); | 210 DCHECK(thread_checker_.CalledOnValidThread()); |
| 210 VLOG(1) << "Mojo connection lost"; | 211 VLOG(1) << "Mojo connection lost"; |
| 211 | 212 |
| 212 // Close all mojo channels. | 213 // Close all mojo channels. |
| 213 mojo_channels_.clear(); | 214 mojo_channels_.clear(); |
| 214 instance_.reset(); | 215 instance_.reset(); |
| 215 if (binding_.is_bound()) | 216 if (binding_.is_bound()) |
| (...skipping 27 matching lines...) Expand all Loading... |
| 243 void ArcBridgeHostImpl::OnChannelClosed(MojoChannel* channel) { | 244 void ArcBridgeHostImpl::OnChannelClosed(MojoChannel* channel) { |
| 244 DCHECK(thread_checker_.CalledOnValidThread()); | 245 DCHECK(thread_checker_.CalledOnValidThread()); |
| 245 mojo_channels_.erase( | 246 mojo_channels_.erase( |
| 246 std::find_if(mojo_channels_.begin(), mojo_channels_.end(), | 247 std::find_if(mojo_channels_.begin(), mojo_channels_.end(), |
| 247 [channel](std::unique_ptr<MojoChannel>& ptr) { | 248 [channel](std::unique_ptr<MojoChannel>& ptr) { |
| 248 return ptr.get() == channel; | 249 return ptr.get() == channel; |
| 249 })); | 250 })); |
| 250 } | 251 } |
| 251 | 252 |
| 252 } // namespace arc | 253 } // namespace arc |
| OLD | NEW |