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 "chrome/browser/ui/webui/media_router/media_router_ui.h" | 5 #include "chrome/browser/ui/webui/media_router/media_router_ui.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 MediaRouterUI::~MediaRouterUI() { | 198 MediaRouterUI::~MediaRouterUI() { |
199 if (issues_observer_) issues_observer_->UnregisterObserver(); | 199 if (issues_observer_) issues_observer_->UnregisterObserver(); |
200 | 200 |
201 if (query_result_manager_.get()) query_result_manager_->RemoveObserver(this); | 201 if (query_result_manager_.get()) query_result_manager_->RemoveObserver(this); |
202 if (presentation_service_delegate_.get()) | 202 if (presentation_service_delegate_.get()) |
203 presentation_service_delegate_->RemoveDefaultPresentationRequestObserver( | 203 presentation_service_delegate_->RemoveDefaultPresentationRequestObserver( |
204 this); | 204 this); |
205 // If |create_session_request_| still exists, then it means presentation route | 205 // If |create_session_request_| still exists, then it means presentation route |
206 // request was never attempted. | 206 // request was never attempted. |
207 if (create_session_request_) { | 207 if (create_session_request_) { |
208 create_session_request_->InvokeErrorCallback(content::PresentationError( | 208 bool presentation_sinks_available = std::any_of( |
209 content::PRESENTATION_ERROR_SESSION_REQUEST_CANCELLED, | 209 sinks_.begin(), sinks_.end(), [](const MediaSinkWithCastModes& sink) { |
210 "Dialog closed.")); | 210 return ContainsValue(sink.cast_modes, MediaCastMode::DEFAULT); |
| 211 }); |
| 212 if (presentation_sinks_available) { |
| 213 create_session_request_->InvokeErrorCallback(content::PresentationError( |
| 214 content::PRESENTATION_ERROR_SESSION_REQUEST_CANCELLED, |
| 215 "Dialog closed.")); |
| 216 } else { |
| 217 create_session_request_->InvokeErrorCallback(content::PresentationError( |
| 218 content::PRESENTATION_ERROR_NO_AVAILABLE_SCREENS, |
| 219 "No screens found.")); |
| 220 } |
211 } | 221 } |
212 } | 222 } |
213 | 223 |
214 void MediaRouterUI::InitWithDefaultMediaSource( | 224 void MediaRouterUI::InitWithDefaultMediaSource( |
215 const base::WeakPtr<PresentationServiceDelegateImpl>& delegate) { | 225 const base::WeakPtr<PresentationServiceDelegateImpl>& delegate) { |
216 DCHECK(delegate); | 226 DCHECK(delegate); |
217 DCHECK(!presentation_service_delegate_); | 227 DCHECK(!presentation_service_delegate_); |
218 DCHECK(!query_result_manager_.get()); | 228 DCHECK(!query_result_manager_.get()); |
219 | 229 |
220 presentation_service_delegate_ = delegate; | 230 presentation_service_delegate_ = delegate; |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 initiator_ = initiator; | 289 initiator_ = initiator; |
280 SessionID::id_type tab_id = SessionTabHelper::IdForTab(initiator); | 290 SessionID::id_type tab_id = SessionTabHelper::IdForTab(initiator); |
281 if (tab_id != -1) { | 291 if (tab_id != -1) { |
282 MediaSource mirroring_source(MediaSourceForTab(tab_id)); | 292 MediaSource mirroring_source(MediaSourceForTab(tab_id)); |
283 query_result_manager_->StartSinksQuery(MediaCastMode::TAB_MIRROR, | 293 query_result_manager_->StartSinksQuery(MediaCastMode::TAB_MIRROR, |
284 mirroring_source, origin); | 294 mirroring_source, origin); |
285 } | 295 } |
286 UpdateCastModes(); | 296 UpdateCastModes(); |
287 } | 297 } |
288 | 298 |
289 void MediaRouterUI::InitForTest(MediaRouter* router, | 299 void MediaRouterUI::InitForTest( |
290 content::WebContents* initiator, | 300 MediaRouter* router, |
291 MediaRouterWebUIMessageHandler* handler) { | 301 content::WebContents* initiator, |
| 302 MediaRouterWebUIMessageHandler* handler, |
| 303 std::unique_ptr<CreatePresentationConnectionRequest> |
| 304 create_session_request) { |
292 router_ = router; | 305 router_ = router; |
293 handler_ = handler; | 306 handler_ = handler; |
| 307 create_session_request_ = std::move(create_session_request); |
294 InitCommon(initiator); | 308 InitCommon(initiator); |
| 309 if (create_session_request_) { |
| 310 OnDefaultPresentationChanged( |
| 311 create_session_request_->presentation_request()); |
| 312 } |
295 } | 313 } |
296 | 314 |
297 void MediaRouterUI::OnDefaultPresentationChanged( | 315 void MediaRouterUI::OnDefaultPresentationChanged( |
298 const PresentationRequest& presentation_request) { | 316 const PresentationRequest& presentation_request) { |
299 MediaSource source = presentation_request.GetMediaSource(); | 317 MediaSource source = presentation_request.GetMediaSource(); |
300 presentation_request_.reset(new PresentationRequest(presentation_request)); | 318 presentation_request_.reset(new PresentationRequest(presentation_request)); |
301 query_result_manager_->StartSinksQuery( | 319 query_result_manager_->StartSinksQuery( |
302 MediaCastMode::DEFAULT, source, | 320 MediaCastMode::DEFAULT, source, |
303 presentation_request_->frame_url().GetOrigin()); | 321 presentation_request_->frame_url().GetOrigin()); |
304 // Register for MediaRoute updates. | 322 // Register for MediaRoute updates. |
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
684 base::Time::Now() - start_time_); | 702 base::Time::Now() - start_time_); |
685 start_time_ = base::Time(); | 703 start_time_ = base::Time(); |
686 } | 704 } |
687 } | 705 } |
688 | 706 |
689 void MediaRouterUI::UpdateMaxDialogHeight(int height) { | 707 void MediaRouterUI::UpdateMaxDialogHeight(int height) { |
690 handler_->UpdateMaxDialogHeight(height); | 708 handler_->UpdateMaxDialogHeight(height); |
691 } | 709 } |
692 | 710 |
693 } // namespace media_router | 711 } // namespace media_router |
OLD | NEW |