| OLD | NEW |
| 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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 void ArcBridgeService::OnAppInstanceReady(AppInstancePtr app_ptr) { | 59 void ArcBridgeService::OnAppInstanceReady(AppInstancePtr app_ptr) { |
| 60 DCHECK(CalledOnValidThread()); | 60 DCHECK(CalledOnValidThread()); |
| 61 temporary_app_ptr_ = std::move(app_ptr); | 61 temporary_app_ptr_ = std::move(app_ptr); |
| 62 temporary_app_ptr_.QueryVersion(base::Bind( | 62 temporary_app_ptr_.QueryVersion(base::Bind( |
| 63 &ArcBridgeService::OnAppVersionReady, weak_factory_.GetWeakPtr())); | 63 &ArcBridgeService::OnAppVersionReady, weak_factory_.GetWeakPtr())); |
| 64 } | 64 } |
| 65 | 65 |
| 66 void ArcBridgeService::OnAppVersionReady(int32_t version) { | 66 void ArcBridgeService::OnAppVersionReady(int32_t version) { |
| 67 DCHECK(CalledOnValidThread()); | 67 DCHECK(CalledOnValidThread()); |
| 68 app_ptr_ = std::move(temporary_app_ptr_); | 68 app_ptr_ = std::move(temporary_app_ptr_); |
| 69 FOR_EACH_OBSERVER(Observer, observer_list(), OnAppInstanceReady()); | |
| 70 app_ptr_.set_connection_error_handler(base::Bind( | 69 app_ptr_.set_connection_error_handler(base::Bind( |
| 71 &ArcBridgeService::CloseAppChannel, weak_factory_.GetWeakPtr())); | 70 &ArcBridgeService::CloseAppChannel, weak_factory_.GetWeakPtr())); |
| 71 FOR_EACH_OBSERVER(Observer, observer_list(), OnAppInstanceReady()); |
| 72 } | 72 } |
| 73 | 73 |
| 74 void ArcBridgeService::CloseAppChannel() { | 74 void ArcBridgeService::CloseAppChannel() { |
| 75 DCHECK(CalledOnValidThread()); | 75 DCHECK(CalledOnValidThread()); |
| 76 if (!app_ptr_) | 76 if (!app_ptr_) |
| 77 return; | 77 return; |
| 78 | 78 |
| 79 app_ptr_.reset(); | 79 app_ptr_.reset(); |
| 80 FOR_EACH_OBSERVER(Observer, observer_list(), OnAppInstanceClosed()); | 80 FOR_EACH_OBSERVER(Observer, observer_list(), OnAppInstanceClosed()); |
| 81 } | 81 } |
| 82 | 82 |
| 83 void ArcBridgeService::OnAuthInstanceReady(AuthInstancePtr auth_ptr) { | 83 void ArcBridgeService::OnAuthInstanceReady(AuthInstancePtr auth_ptr) { |
| 84 DCHECK(CalledOnValidThread()); | 84 DCHECK(CalledOnValidThread()); |
| 85 temporary_auth_ptr_ = std::move(auth_ptr); | 85 temporary_auth_ptr_ = std::move(auth_ptr); |
| 86 temporary_auth_ptr_.QueryVersion(base::Bind( | 86 temporary_auth_ptr_.QueryVersion(base::Bind( |
| 87 &ArcBridgeService::OnAuthVersionReady, weak_factory_.GetWeakPtr())); | 87 &ArcBridgeService::OnAuthVersionReady, weak_factory_.GetWeakPtr())); |
| 88 } | 88 } |
| 89 | 89 |
| 90 void ArcBridgeService::OnAuthVersionReady(int32_t version) { | 90 void ArcBridgeService::OnAuthVersionReady(int32_t version) { |
| 91 DCHECK(CalledOnValidThread()); | 91 DCHECK(CalledOnValidThread()); |
| 92 auth_ptr_ = std::move(temporary_auth_ptr_); | 92 auth_ptr_ = std::move(temporary_auth_ptr_); |
| 93 FOR_EACH_OBSERVER(Observer, observer_list(), OnAuthInstanceReady()); | |
| 94 auth_ptr_.set_connection_error_handler(base::Bind( | 93 auth_ptr_.set_connection_error_handler(base::Bind( |
| 95 &ArcBridgeService::CloseAuthChannel, weak_factory_.GetWeakPtr())); | 94 &ArcBridgeService::CloseAuthChannel, weak_factory_.GetWeakPtr())); |
| 95 FOR_EACH_OBSERVER(Observer, observer_list(), OnAuthInstanceReady()); |
| 96 } | 96 } |
| 97 | 97 |
| 98 void ArcBridgeService::CloseAuthChannel() { | 98 void ArcBridgeService::CloseAuthChannel() { |
| 99 DCHECK(CalledOnValidThread()); | 99 DCHECK(CalledOnValidThread()); |
| 100 if (!input_ptr_) | 100 if (!input_ptr_) |
| 101 return; | 101 return; |
| 102 | 102 |
| 103 auth_ptr_.reset(); | 103 auth_ptr_.reset(); |
| 104 FOR_EACH_OBSERVER(Observer, observer_list(), OnAuthInstanceClosed()); | 104 FOR_EACH_OBSERVER(Observer, observer_list(), OnAuthInstanceClosed()); |
| 105 } | 105 } |
| 106 | 106 |
| 107 void ArcBridgeService::OnClipboardInstanceReady( | 107 void ArcBridgeService::OnClipboardInstanceReady( |
| 108 ClipboardInstancePtr clipboard_ptr) { | 108 ClipboardInstancePtr clipboard_ptr) { |
| 109 DCHECK(CalledOnValidThread()); | 109 DCHECK(CalledOnValidThread()); |
| 110 temporary_clipboard_ptr_ = std::move(clipboard_ptr); | 110 temporary_clipboard_ptr_ = std::move(clipboard_ptr); |
| 111 temporary_clipboard_ptr_.QueryVersion(base::Bind( | 111 temporary_clipboard_ptr_.QueryVersion(base::Bind( |
| 112 &ArcBridgeService::OnClipboardVersionReady, weak_factory_.GetWeakPtr())); | 112 &ArcBridgeService::OnClipboardVersionReady, weak_factory_.GetWeakPtr())); |
| 113 } | 113 } |
| 114 | 114 |
| 115 void ArcBridgeService::OnClipboardVersionReady(int32_t version) { | 115 void ArcBridgeService::OnClipboardVersionReady(int32_t version) { |
| 116 DCHECK(CalledOnValidThread()); | 116 DCHECK(CalledOnValidThread()); |
| 117 clipboard_ptr_ = std::move(temporary_clipboard_ptr_); | 117 clipboard_ptr_ = std::move(temporary_clipboard_ptr_); |
| 118 FOR_EACH_OBSERVER(Observer, observer_list(), OnClipboardInstanceReady()); | |
| 119 clipboard_ptr_.set_connection_error_handler(base::Bind( | 118 clipboard_ptr_.set_connection_error_handler(base::Bind( |
| 120 &ArcBridgeService::CloseClipboardChannel, weak_factory_.GetWeakPtr())); | 119 &ArcBridgeService::CloseClipboardChannel, weak_factory_.GetWeakPtr())); |
| 120 FOR_EACH_OBSERVER(Observer, observer_list(), OnClipboardInstanceReady()); |
| 121 } | 121 } |
| 122 | 122 |
| 123 void ArcBridgeService::CloseClipboardChannel() { | 123 void ArcBridgeService::CloseClipboardChannel() { |
| 124 DCHECK(CalledOnValidThread()); | 124 DCHECK(CalledOnValidThread()); |
| 125 if (!clipboard_ptr_) | 125 if (!clipboard_ptr_) |
| 126 return; | 126 return; |
| 127 | 127 |
| 128 clipboard_ptr_.reset(); | 128 clipboard_ptr_.reset(); |
| 129 FOR_EACH_OBSERVER(Observer, observer_list(), OnClipboardInstanceClosed()); | 129 FOR_EACH_OBSERVER(Observer, observer_list(), OnClipboardInstanceClosed()); |
| 130 } | 130 } |
| 131 | 131 |
| 132 void ArcBridgeService::OnInputInstanceReady(InputInstancePtr input_ptr) { | 132 void ArcBridgeService::OnInputInstanceReady(InputInstancePtr input_ptr) { |
| 133 DCHECK(CalledOnValidThread()); | 133 DCHECK(CalledOnValidThread()); |
| 134 temporary_input_ptr_ = std::move(input_ptr); | 134 temporary_input_ptr_ = std::move(input_ptr); |
| 135 temporary_input_ptr_.QueryVersion(base::Bind( | 135 temporary_input_ptr_.QueryVersion(base::Bind( |
| 136 &ArcBridgeService::OnInputVersionReady, weak_factory_.GetWeakPtr())); | 136 &ArcBridgeService::OnInputVersionReady, weak_factory_.GetWeakPtr())); |
| 137 } | 137 } |
| 138 | 138 |
| 139 void ArcBridgeService::OnInputVersionReady(int32_t version) { | 139 void ArcBridgeService::OnInputVersionReady(int32_t version) { |
| 140 DCHECK(CalledOnValidThread()); | 140 DCHECK(CalledOnValidThread()); |
| 141 input_ptr_ = std::move(temporary_input_ptr_); | 141 input_ptr_ = std::move(temporary_input_ptr_); |
| 142 FOR_EACH_OBSERVER(Observer, observer_list(), OnInputInstanceReady()); | |
| 143 input_ptr_.set_connection_error_handler(base::Bind( | 142 input_ptr_.set_connection_error_handler(base::Bind( |
| 144 &ArcBridgeService::CloseInputChannel, weak_factory_.GetWeakPtr())); | 143 &ArcBridgeService::CloseInputChannel, weak_factory_.GetWeakPtr())); |
| 144 FOR_EACH_OBSERVER(Observer, observer_list(), OnInputInstanceReady()); |
| 145 } | 145 } |
| 146 | 146 |
| 147 void ArcBridgeService::CloseInputChannel() { | 147 void ArcBridgeService::CloseInputChannel() { |
| 148 DCHECK(CalledOnValidThread()); | 148 DCHECK(CalledOnValidThread()); |
| 149 if (!input_ptr_) | 149 if (!input_ptr_) |
| 150 return; | 150 return; |
| 151 | 151 |
| 152 input_ptr_.reset(); | 152 input_ptr_.reset(); |
| 153 FOR_EACH_OBSERVER(Observer, observer_list(), OnInputInstanceClosed()); | 153 FOR_EACH_OBSERVER(Observer, observer_list(), OnInputInstanceClosed()); |
| 154 } | 154 } |
| 155 | 155 |
| 156 void ArcBridgeService::OnNotificationsInstanceReady( | 156 void ArcBridgeService::OnNotificationsInstanceReady( |
| 157 NotificationsInstancePtr notifications_ptr) { | 157 NotificationsInstancePtr notifications_ptr) { |
| 158 DCHECK(CalledOnValidThread()); | 158 DCHECK(CalledOnValidThread()); |
| 159 temporary_notifications_ptr_ = std::move(notifications_ptr); | 159 temporary_notifications_ptr_ = std::move(notifications_ptr); |
| 160 temporary_notifications_ptr_.QueryVersion( | 160 temporary_notifications_ptr_.QueryVersion( |
| 161 base::Bind(&ArcBridgeService::OnNotificationsVersionReady, | 161 base::Bind(&ArcBridgeService::OnNotificationsVersionReady, |
| 162 weak_factory_.GetWeakPtr())); | 162 weak_factory_.GetWeakPtr())); |
| 163 } | 163 } |
| 164 | 164 |
| 165 void ArcBridgeService::OnNotificationsVersionReady(int32_t version) { | 165 void ArcBridgeService::OnNotificationsVersionReady(int32_t version) { |
| 166 DCHECK(CalledOnValidThread()); | 166 DCHECK(CalledOnValidThread()); |
| 167 notifications_ptr_ = std::move(temporary_notifications_ptr_); | 167 notifications_ptr_ = std::move(temporary_notifications_ptr_); |
| 168 FOR_EACH_OBSERVER(Observer, observer_list(), OnNotificationsInstanceReady()); | |
| 169 notifications_ptr_.set_connection_error_handler( | 168 notifications_ptr_.set_connection_error_handler( |
| 170 base::Bind(&ArcBridgeService::CloseNotificationsChannel, | 169 base::Bind(&ArcBridgeService::CloseNotificationsChannel, |
| 171 weak_factory_.GetWeakPtr())); | 170 weak_factory_.GetWeakPtr())); |
| 171 FOR_EACH_OBSERVER(Observer, observer_list(), OnNotificationsInstanceReady()); |
| 172 } | 172 } |
| 173 | 173 |
| 174 void ArcBridgeService::CloseNotificationsChannel() { | 174 void ArcBridgeService::CloseNotificationsChannel() { |
| 175 DCHECK(CalledOnValidThread()); | 175 DCHECK(CalledOnValidThread()); |
| 176 if (!notifications_ptr_) | 176 if (!notifications_ptr_) |
| 177 return; | 177 return; |
| 178 | 178 |
| 179 notifications_ptr_.reset(); | 179 notifications_ptr_.reset(); |
| 180 FOR_EACH_OBSERVER(Observer, observer_list(), OnNotificationsInstanceClosed()); | 180 FOR_EACH_OBSERVER(Observer, observer_list(), OnNotificationsInstanceClosed()); |
| 181 } | 181 } |
| 182 | 182 |
| 183 void ArcBridgeService::OnPowerInstanceReady(PowerInstancePtr power_ptr) { | 183 void ArcBridgeService::OnPowerInstanceReady(PowerInstancePtr power_ptr) { |
| 184 DCHECK(CalledOnValidThread()); | 184 DCHECK(CalledOnValidThread()); |
| 185 temporary_power_ptr_ = std::move(power_ptr); | 185 temporary_power_ptr_ = std::move(power_ptr); |
| 186 temporary_power_ptr_.QueryVersion(base::Bind( | 186 temporary_power_ptr_.QueryVersion(base::Bind( |
| 187 &ArcBridgeService::OnPowerVersionReady, weak_factory_.GetWeakPtr())); | 187 &ArcBridgeService::OnPowerVersionReady, weak_factory_.GetWeakPtr())); |
| 188 } | 188 } |
| 189 | 189 |
| 190 void ArcBridgeService::OnPowerVersionReady(int32_t version) { | 190 void ArcBridgeService::OnPowerVersionReady(int32_t version) { |
| 191 DCHECK(CalledOnValidThread()); | 191 DCHECK(CalledOnValidThread()); |
| 192 power_ptr_ = std::move(temporary_power_ptr_); | 192 power_ptr_ = std::move(temporary_power_ptr_); |
| 193 FOR_EACH_OBSERVER(Observer, observer_list(), OnPowerInstanceReady()); | |
| 194 power_ptr_.set_connection_error_handler(base::Bind( | 193 power_ptr_.set_connection_error_handler(base::Bind( |
| 195 &ArcBridgeService::ClosePowerChannel, weak_factory_.GetWeakPtr())); | 194 &ArcBridgeService::ClosePowerChannel, weak_factory_.GetWeakPtr())); |
| 195 FOR_EACH_OBSERVER(Observer, observer_list(), OnPowerInstanceReady()); |
| 196 } | 196 } |
| 197 | 197 |
| 198 void ArcBridgeService::ClosePowerChannel() { | 198 void ArcBridgeService::ClosePowerChannel() { |
| 199 DCHECK(CalledOnValidThread()); | 199 DCHECK(CalledOnValidThread()); |
| 200 if (!power_ptr_) | 200 if (!power_ptr_) |
| 201 return; | 201 return; |
| 202 | 202 |
| 203 power_ptr_.reset(); | 203 power_ptr_.reset(); |
| 204 FOR_EACH_OBSERVER(Observer, observer_list(), OnPowerInstanceClosed()); | 204 FOR_EACH_OBSERVER(Observer, observer_list(), OnPowerInstanceClosed()); |
| 205 } | 205 } |
| 206 | 206 |
| 207 void ArcBridgeService::OnProcessInstanceReady(ProcessInstancePtr process_ptr) { | 207 void ArcBridgeService::OnProcessInstanceReady(ProcessInstancePtr process_ptr) { |
| 208 DCHECK(CalledOnValidThread()); | 208 DCHECK(CalledOnValidThread()); |
| 209 temporary_process_ptr_ = std::move(process_ptr); | 209 temporary_process_ptr_ = std::move(process_ptr); |
| 210 temporary_process_ptr_.QueryVersion(base::Bind( | 210 temporary_process_ptr_.QueryVersion(base::Bind( |
| 211 &ArcBridgeService::OnProcessVersionReady, weak_factory_.GetWeakPtr())); | 211 &ArcBridgeService::OnProcessVersionReady, weak_factory_.GetWeakPtr())); |
| 212 } | 212 } |
| 213 | 213 |
| 214 void ArcBridgeService::OnProcessVersionReady(int32_t version) { | 214 void ArcBridgeService::OnProcessVersionReady(int32_t version) { |
| 215 DCHECK(CalledOnValidThread()); | 215 DCHECK(CalledOnValidThread()); |
| 216 process_ptr_ = std::move(temporary_process_ptr_); | 216 process_ptr_ = std::move(temporary_process_ptr_); |
| 217 FOR_EACH_OBSERVER(Observer, observer_list(), OnProcessInstanceReady()); | |
| 218 process_ptr_.set_connection_error_handler(base::Bind( | 217 process_ptr_.set_connection_error_handler(base::Bind( |
| 219 &ArcBridgeService::CloseProcessChannel, weak_factory_.GetWeakPtr())); | 218 &ArcBridgeService::CloseProcessChannel, weak_factory_.GetWeakPtr())); |
| 219 FOR_EACH_OBSERVER(Observer, observer_list(), OnProcessInstanceReady()); |
| 220 } | 220 } |
| 221 | 221 |
| 222 void ArcBridgeService::CloseProcessChannel() { | 222 void ArcBridgeService::CloseProcessChannel() { |
| 223 DCHECK(CalledOnValidThread()); | 223 DCHECK(CalledOnValidThread()); |
| 224 if (!process_ptr_) | 224 if (!process_ptr_) |
| 225 return; | 225 return; |
| 226 | 226 |
| 227 process_ptr_.reset(); | 227 process_ptr_.reset(); |
| 228 FOR_EACH_OBSERVER(Observer, observer_list(), OnProcessInstanceClosed()); | 228 FOR_EACH_OBSERVER(Observer, observer_list(), OnProcessInstanceClosed()); |
| 229 } | 229 } |
| 230 | 230 |
| 231 void ArcBridgeService::OnSettingsInstanceReady( | 231 void ArcBridgeService::OnSettingsInstanceReady( |
| 232 SettingsInstancePtr settings_ptr) { | 232 SettingsInstancePtr settings_ptr) { |
| 233 DCHECK(CalledOnValidThread()); | 233 DCHECK(CalledOnValidThread()); |
| 234 temporary_settings_ptr_ = std::move(settings_ptr); | 234 temporary_settings_ptr_ = std::move(settings_ptr); |
| 235 temporary_settings_ptr_.QueryVersion(base::Bind( | 235 temporary_settings_ptr_.QueryVersion(base::Bind( |
| 236 &ArcBridgeService::OnSettingsVersionReady, weak_factory_.GetWeakPtr())); | 236 &ArcBridgeService::OnSettingsVersionReady, weak_factory_.GetWeakPtr())); |
| 237 } | 237 } |
| 238 | 238 |
| 239 void ArcBridgeService::OnSettingsVersionReady(int32_t version) { | 239 void ArcBridgeService::OnSettingsVersionReady(int32_t version) { |
| 240 DCHECK(CalledOnValidThread()); |
| 240 settings_ptr_ = std::move(temporary_settings_ptr_); | 241 settings_ptr_ = std::move(temporary_settings_ptr_); |
| 241 FOR_EACH_OBSERVER(Observer, observer_list(), OnSettingsInstanceReady()); | |
| 242 settings_ptr_.set_connection_error_handler(base::Bind( | 242 settings_ptr_.set_connection_error_handler(base::Bind( |
| 243 &ArcBridgeService::CloseSettingsChannel, weak_factory_.GetWeakPtr())); | 243 &ArcBridgeService::CloseSettingsChannel, weak_factory_.GetWeakPtr())); |
| 244 FOR_EACH_OBSERVER(Observer, observer_list(), OnSettingsInstanceReady()); |
| 244 } | 245 } |
| 245 | 246 |
| 246 void ArcBridgeService::CloseSettingsChannel() { | 247 void ArcBridgeService::CloseSettingsChannel() { |
| 247 DCHECK(CalledOnValidThread()); | 248 DCHECK(CalledOnValidThread()); |
| 248 if (!settings_ptr_) | 249 if (!settings_ptr_) |
| 249 return; | 250 return; |
| 250 | 251 |
| 251 settings_ptr_.reset(); | 252 settings_ptr_.reset(); |
| 252 FOR_EACH_OBSERVER(Observer, observer_list(), OnSettingsInstanceClosed()); | 253 FOR_EACH_OBSERVER(Observer, observer_list(), OnSettingsInstanceClosed()); |
| 253 } | 254 } |
| 254 | 255 |
| 255 void ArcBridgeService::OnVideoInstanceReady(VideoInstancePtr video_ptr) { | 256 void ArcBridgeService::OnVideoInstanceReady(VideoInstancePtr video_ptr) { |
| 256 DCHECK(CalledOnValidThread()); | 257 DCHECK(CalledOnValidThread()); |
| 257 temporary_video_ptr_ = std::move(video_ptr); | 258 temporary_video_ptr_ = std::move(video_ptr); |
| 258 temporary_video_ptr_.QueryVersion(base::Bind( | 259 temporary_video_ptr_.QueryVersion(base::Bind( |
| 259 &ArcBridgeService::OnVideoVersionReady, weak_factory_.GetWeakPtr())); | 260 &ArcBridgeService::OnVideoVersionReady, weak_factory_.GetWeakPtr())); |
| 260 } | 261 } |
| 261 | 262 |
| 262 void ArcBridgeService::OnVideoVersionReady(int32_t version) { | 263 void ArcBridgeService::OnVideoVersionReady(int32_t version) { |
| 264 DCHECK(CalledOnValidThread()); |
| 263 video_ptr_ = std::move(temporary_video_ptr_); | 265 video_ptr_ = std::move(temporary_video_ptr_); |
| 264 FOR_EACH_OBSERVER(Observer, observer_list(), OnVideoInstanceReady()); | |
| 265 video_ptr_.set_connection_error_handler(base::Bind( | 266 video_ptr_.set_connection_error_handler(base::Bind( |
| 266 &ArcBridgeService::CloseVideoChannel, weak_factory_.GetWeakPtr())); | 267 &ArcBridgeService::CloseVideoChannel, weak_factory_.GetWeakPtr())); |
| 268 FOR_EACH_OBSERVER(Observer, observer_list(), OnVideoInstanceReady()); |
| 267 } | 269 } |
| 268 | 270 |
| 269 void ArcBridgeService::CloseVideoChannel() { | 271 void ArcBridgeService::CloseVideoChannel() { |
| 270 DCHECK(CalledOnValidThread()); | 272 DCHECK(CalledOnValidThread()); |
| 271 if (!video_ptr_) | 273 if (!video_ptr_) |
| 272 return; | 274 return; |
| 273 | 275 |
| 274 video_ptr_.reset(); | 276 video_ptr_.reset(); |
| 275 FOR_EACH_OBSERVER(Observer, observer_list(), OnVideoInstanceClosed()); | 277 FOR_EACH_OBSERVER(Observer, observer_list(), OnVideoInstanceClosed()); |
| 276 } | 278 } |
| (...skipping 25 matching lines...) Expand all Loading... |
| 302 CloseClipboardChannel(); | 304 CloseClipboardChannel(); |
| 303 CloseInputChannel(); | 305 CloseInputChannel(); |
| 304 CloseNotificationsChannel(); | 306 CloseNotificationsChannel(); |
| 305 ClosePowerChannel(); | 307 ClosePowerChannel(); |
| 306 CloseProcessChannel(); | 308 CloseProcessChannel(); |
| 307 CloseSettingsChannel(); | 309 CloseSettingsChannel(); |
| 308 CloseVideoChannel(); | 310 CloseVideoChannel(); |
| 309 } | 311 } |
| 310 | 312 |
| 311 } // namespace arc | 313 } // namespace arc |
| OLD | NEW |