| 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( |
| 71 : binding_(this), instance_(std::move(instance)) { | 71 ArcBridgeService* arc_bridge_service, |
| 72 mojom::ArcBridgeInstancePtr instance) |
| 73 : arc_bridge_service_(arc_bridge_service), |
| 74 binding_(this), 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(), |
| 98 std::move(bluetooth_ptr)); | 102 std::move(bluetooth_ptr)); |
| 99 } | 103 } |
| 100 | 104 |
| 101 void ArcBridgeHostImpl::OnBootPhaseMonitorInstanceReady( | 105 void ArcBridgeHostImpl::OnBootPhaseMonitorInstanceReady( |
| 102 mojom::BootPhaseMonitorInstancePtr boot_phase_monitor_ptr) { | 106 mojom::BootPhaseMonitorInstancePtr boot_phase_monitor_ptr) { |
| 103 OnInstanceReady(ArcBridgeService::Get()->boot_phase_monitor(), | 107 OnInstanceReady(arc_bridge_service_->boot_phase_monitor(), |
| 104 std::move(boot_phase_monitor_ptr)); | 108 std::move(boot_phase_monitor_ptr)); |
| 105 } | 109 } |
| 106 | 110 |
| 107 void ArcBridgeHostImpl::OnClipboardInstanceReady( | 111 void ArcBridgeHostImpl::OnClipboardInstanceReady( |
| 108 mojom::ClipboardInstancePtr clipboard_ptr) { | 112 mojom::ClipboardInstancePtr clipboard_ptr) { |
| 109 OnInstanceReady(ArcBridgeService::Get()->clipboard(), | 113 OnInstanceReady(arc_bridge_service_->clipboard(), |
| 110 std::move(clipboard_ptr)); | 114 std::move(clipboard_ptr)); |
| 111 } | 115 } |
| 112 | 116 |
| 113 void ArcBridgeHostImpl::OnCrashCollectorInstanceReady( | 117 void ArcBridgeHostImpl::OnCrashCollectorInstanceReady( |
| 114 mojom::CrashCollectorInstancePtr crash_collector_ptr) { | 118 mojom::CrashCollectorInstancePtr crash_collector_ptr) { |
| 115 OnInstanceReady(ArcBridgeService::Get()->crash_collector(), | 119 OnInstanceReady(arc_bridge_service_->crash_collector(), |
| 116 std::move(crash_collector_ptr)); | 120 std::move(crash_collector_ptr)); |
| 117 } | 121 } |
| 118 | 122 |
| 119 void ArcBridgeHostImpl::OnEnterpriseReportingInstanceReady( | 123 void ArcBridgeHostImpl::OnEnterpriseReportingInstanceReady( |
| 120 mojom::EnterpriseReportingInstancePtr enterprise_reporting_ptr) { | 124 mojom::EnterpriseReportingInstancePtr enterprise_reporting_ptr) { |
| 121 OnInstanceReady(ArcBridgeService::Get()->enterprise_reporting(), | 125 OnInstanceReady(arc_bridge_service_->enterprise_reporting(), |
| 122 std::move(enterprise_reporting_ptr)); | 126 std::move(enterprise_reporting_ptr)); |
| 123 } | 127 } |
| 124 | 128 |
| 125 void ArcBridgeHostImpl::OnFileSystemInstanceReady( | 129 void ArcBridgeHostImpl::OnFileSystemInstanceReady( |
| 126 mojom::FileSystemInstancePtr file_system_ptr) { | 130 mojom::FileSystemInstancePtr file_system_ptr) { |
| 127 OnInstanceReady(ArcBridgeService::Get()->file_system(), | 131 OnInstanceReady(arc_bridge_service_->file_system(), |
| 128 std::move(file_system_ptr)); | 132 std::move(file_system_ptr)); |
| 129 } | 133 } |
| 130 | 134 |
| 131 void ArcBridgeHostImpl::OnImeInstanceReady(mojom::ImeInstancePtr ime_ptr) { | 135 void ArcBridgeHostImpl::OnImeInstanceReady(mojom::ImeInstancePtr ime_ptr) { |
| 132 OnInstanceReady(ArcBridgeService::Get()->ime(), std::move(ime_ptr)); | 136 OnInstanceReady(arc_bridge_service_->ime(), std::move(ime_ptr)); |
| 133 } | 137 } |
| 134 | 138 |
| 135 void ArcBridgeHostImpl::OnIntentHelperInstanceReady( | 139 void ArcBridgeHostImpl::OnIntentHelperInstanceReady( |
| 136 mojom::IntentHelperInstancePtr intent_helper_ptr) { | 140 mojom::IntentHelperInstancePtr intent_helper_ptr) { |
| 137 OnInstanceReady(ArcBridgeService::Get()->intent_helper(), | 141 OnInstanceReady(arc_bridge_service_->intent_helper(), |
| 138 std::move(intent_helper_ptr)); | 142 std::move(intent_helper_ptr)); |
| 139 } | 143 } |
| 140 | 144 |
| 141 void ArcBridgeHostImpl::OnKioskInstanceReady( | 145 void ArcBridgeHostImpl::OnKioskInstanceReady( |
| 142 mojom::KioskInstancePtr kiosk_ptr) { | 146 mojom::KioskInstancePtr kiosk_ptr) { |
| 143 OnInstanceReady(ArcBridgeService::Get()->kiosk(), std::move(kiosk_ptr)); | 147 OnInstanceReady(arc_bridge_service_->kiosk(), std::move(kiosk_ptr)); |
| 144 } | 148 } |
| 145 | 149 |
| 146 void ArcBridgeHostImpl::OnMetricsInstanceReady( | 150 void ArcBridgeHostImpl::OnMetricsInstanceReady( |
| 147 mojom::MetricsInstancePtr metrics_ptr) { | 151 mojom::MetricsInstancePtr metrics_ptr) { |
| 148 OnInstanceReady(ArcBridgeService::Get()->metrics(), std::move(metrics_ptr)); | 152 OnInstanceReady(arc_bridge_service_->metrics(), std::move(metrics_ptr)); |
| 149 } | 153 } |
| 150 | 154 |
| 151 void ArcBridgeHostImpl::OnNetInstanceReady(mojom::NetInstancePtr net_ptr) { | 155 void ArcBridgeHostImpl::OnNetInstanceReady(mojom::NetInstancePtr net_ptr) { |
| 152 OnInstanceReady(ArcBridgeService::Get()->net(), std::move(net_ptr)); | 156 OnInstanceReady(arc_bridge_service_->net(), std::move(net_ptr)); |
| 153 } | 157 } |
| 154 | 158 |
| 155 void ArcBridgeHostImpl::OnNotificationsInstanceReady( | 159 void ArcBridgeHostImpl::OnNotificationsInstanceReady( |
| 156 mojom::NotificationsInstancePtr notifications_ptr) { | 160 mojom::NotificationsInstancePtr notifications_ptr) { |
| 157 OnInstanceReady(ArcBridgeService::Get()->notifications(), | 161 OnInstanceReady(arc_bridge_service_->notifications(), |
| 158 std::move(notifications_ptr)); | 162 std::move(notifications_ptr)); |
| 159 } | 163 } |
| 160 | 164 |
| 161 void ArcBridgeHostImpl::OnObbMounterInstanceReady( | 165 void ArcBridgeHostImpl::OnObbMounterInstanceReady( |
| 162 mojom::ObbMounterInstancePtr obb_mounter_ptr) { | 166 mojom::ObbMounterInstancePtr obb_mounter_ptr) { |
| 163 OnInstanceReady(ArcBridgeService::Get()->obb_mounter(), | 167 OnInstanceReady(arc_bridge_service_->obb_mounter(), |
| 164 std::move(obb_mounter_ptr)); | 168 std::move(obb_mounter_ptr)); |
| 165 } | 169 } |
| 166 | 170 |
| 167 void ArcBridgeHostImpl::OnPolicyInstanceReady( | 171 void ArcBridgeHostImpl::OnPolicyInstanceReady( |
| 168 mojom::PolicyInstancePtr policy_ptr) { | 172 mojom::PolicyInstancePtr policy_ptr) { |
| 169 OnInstanceReady(ArcBridgeService::Get()->policy(), std::move(policy_ptr)); | 173 OnInstanceReady(arc_bridge_service_->policy(), std::move(policy_ptr)); |
| 170 } | 174 } |
| 171 | 175 |
| 172 void ArcBridgeHostImpl::OnPowerInstanceReady( | 176 void ArcBridgeHostImpl::OnPowerInstanceReady( |
| 173 mojom::PowerInstancePtr power_ptr) { | 177 mojom::PowerInstancePtr power_ptr) { |
| 174 OnInstanceReady(ArcBridgeService::Get()->power(), std::move(power_ptr)); | 178 OnInstanceReady(arc_bridge_service_->power(), std::move(power_ptr)); |
| 175 } | 179 } |
| 176 | 180 |
| 177 void ArcBridgeHostImpl::OnPrintInstanceReady( | 181 void ArcBridgeHostImpl::OnPrintInstanceReady( |
| 178 mojom::PrintInstancePtr print_ptr) { | 182 mojom::PrintInstancePtr print_ptr) { |
| 179 OnInstanceReady(ArcBridgeService::Get()->print(), std::move(print_ptr)); | 183 OnInstanceReady(arc_bridge_service_->print(), std::move(print_ptr)); |
| 180 } | 184 } |
| 181 | 185 |
| 182 void ArcBridgeHostImpl::OnProcessInstanceReady( | 186 void ArcBridgeHostImpl::OnProcessInstanceReady( |
| 183 mojom::ProcessInstancePtr process_ptr) { | 187 mojom::ProcessInstancePtr process_ptr) { |
| 184 OnInstanceReady(ArcBridgeService::Get()->process(), std::move(process_ptr)); | 188 OnInstanceReady(arc_bridge_service_->process(), std::move(process_ptr)); |
| 185 } | 189 } |
| 186 | 190 |
| 187 void ArcBridgeHostImpl::OnStorageManagerInstanceReady( | 191 void ArcBridgeHostImpl::OnStorageManagerInstanceReady( |
| 188 mojom::StorageManagerInstancePtr storage_manager_ptr) { | 192 mojom::StorageManagerInstancePtr storage_manager_ptr) { |
| 189 OnInstanceReady(ArcBridgeService::Get()->storage_manager(), | 193 OnInstanceReady(arc_bridge_service_->storage_manager(), |
| 190 std::move(storage_manager_ptr)); | 194 std::move(storage_manager_ptr)); |
| 191 } | 195 } |
| 192 | 196 |
| 193 void ArcBridgeHostImpl::OnTtsInstanceReady(mojom::TtsInstancePtr tts_ptr) { | 197 void ArcBridgeHostImpl::OnTtsInstanceReady(mojom::TtsInstancePtr tts_ptr) { |
| 194 OnInstanceReady(ArcBridgeService::Get()->tts(), std::move(tts_ptr)); | 198 OnInstanceReady(arc_bridge_service_->tts(), std::move(tts_ptr)); |
| 195 } | 199 } |
| 196 | 200 |
| 197 void ArcBridgeHostImpl::OnVideoInstanceReady( | 201 void ArcBridgeHostImpl::OnVideoInstanceReady( |
| 198 mojom::VideoInstancePtr video_ptr) { | 202 mojom::VideoInstancePtr video_ptr) { |
| 199 OnInstanceReady(ArcBridgeService::Get()->video(), std::move(video_ptr)); | 203 OnInstanceReady(arc_bridge_service_->video(), std::move(video_ptr)); |
| 200 } | 204 } |
| 201 | 205 |
| 202 void ArcBridgeHostImpl::OnWallpaperInstanceReady( | 206 void ArcBridgeHostImpl::OnWallpaperInstanceReady( |
| 203 mojom::WallpaperInstancePtr wallpaper_ptr) { | 207 mojom::WallpaperInstancePtr wallpaper_ptr) { |
| 204 OnInstanceReady(ArcBridgeService::Get()->wallpaper(), | 208 OnInstanceReady(arc_bridge_service_->wallpaper(), |
| 205 std::move(wallpaper_ptr)); | 209 std::move(wallpaper_ptr)); |
| 206 } | 210 } |
| 207 | 211 |
| 208 void ArcBridgeHostImpl::OnClosed() { | 212 void ArcBridgeHostImpl::OnClosed() { |
| 209 DCHECK(thread_checker_.CalledOnValidThread()); | 213 DCHECK(thread_checker_.CalledOnValidThread()); |
| 210 VLOG(1) << "Mojo connection lost"; | 214 VLOG(1) << "Mojo connection lost"; |
| 211 | 215 |
| 212 // Close all mojo channels. | 216 // Close all mojo channels. |
| 213 mojo_channels_.clear(); | 217 mojo_channels_.clear(); |
| 214 instance_.reset(); | 218 instance_.reset(); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 243 void ArcBridgeHostImpl::OnChannelClosed(MojoChannel* channel) { | 247 void ArcBridgeHostImpl::OnChannelClosed(MojoChannel* channel) { |
| 244 DCHECK(thread_checker_.CalledOnValidThread()); | 248 DCHECK(thread_checker_.CalledOnValidThread()); |
| 245 mojo_channels_.erase( | 249 mojo_channels_.erase( |
| 246 std::find_if(mojo_channels_.begin(), mojo_channels_.end(), | 250 std::find_if(mojo_channels_.begin(), mojo_channels_.end(), |
| 247 [channel](std::unique_ptr<MojoChannel>& ptr) { | 251 [channel](std::unique_ptr<MojoChannel>& ptr) { |
| 248 return ptr.get() == channel; | 252 return ptr.get() == channel; |
| 249 })); | 253 })); |
| 250 } | 254 } |
| 251 | 255 |
| 252 } // namespace arc | 256 } // namespace arc |
| OLD | NEW |