Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(424)

Side by Side Diff: chrome/browser/ui/webui/media_router/media_router_ui.cc

Issue 2108973002: [Media Router] Return NotFoundError on dialog exit if appropriate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments, add no-sinks integration test, update test data json format Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698