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

Side by Side Diff: chrome/browser/media/router/presentation_service_delegate_impl.cc

Issue 2174693004: [Presentation API] Add support to content/ for multiple URLs per PresentationRequest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated unittests. 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/media/router/presentation_service_delegate_impl.h" 5 #include "chrome/browser/media/router/presentation_service_delegate_impl.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 644 matching lines...) Expand 10 before | Expand all | Expand 10 after
655 frame_manager_->RemoveScreenAvailabilityListener( 655 frame_manager_->RemoveScreenAvailabilityListener(
656 RenderFrameHostId(render_process_id, render_frame_id), listener); 656 RenderFrameHostId(render_process_id, render_frame_id), listener);
657 } 657 }
658 658
659 void PresentationServiceDelegateImpl::Reset(int render_process_id, 659 void PresentationServiceDelegateImpl::Reset(int render_process_id,
660 int render_frame_id) { 660 int render_frame_id) {
661 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id); 661 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id);
662 frame_manager_->Reset(render_frame_host_id); 662 frame_manager_->Reset(render_frame_host_id);
663 } 663 }
664 664
665 void PresentationServiceDelegateImpl::SetDefaultPresentationUrl( 665 void PresentationServiceDelegateImpl::SetDefaultPresentationUrls(
666 int render_process_id, 666 int render_process_id,
667 int render_frame_id, 667 int render_frame_id,
668 const std::string& default_presentation_url, 668 const std::vector<std::string>& default_presentation_urls,
669 const content::PresentationSessionStartedCallback& callback) { 669 const content::PresentationSessionStartedCallback& callback) {
670 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id); 670 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id);
671 frame_manager_->SetDefaultPresentationUrl(render_frame_host_id, 671 if (default_presentation_urls.empty()) {
672 default_presentation_url, callback); 672 frame_manager_->SetDefaultPresentationUrl(render_frame_host_id,
673 std::string(), callback);
674 } else {
675 // TODO(crbug.com/627655): Handle multiple URLs
apacible 2016/07/26 00:39:44 nitty nit: here and below, period at the end of a
mark a. foltz 2016/08/29 23:54:54 Done.
676 frame_manager_->SetDefaultPresentationUrl(
677 render_frame_host_id, default_presentation_urls[0], callback);
678 }
673 } 679 }
674 680
675 void PresentationServiceDelegateImpl::OnJoinRouteResponse( 681 void PresentationServiceDelegateImpl::OnJoinRouteResponse(
676 int render_process_id, 682 int render_process_id,
677 int render_frame_id, 683 int render_frame_id,
678 const content::PresentationSessionInfo& session, 684 const content::PresentationSessionInfo& session,
679 const content::PresentationSessionStartedCallback& success_cb, 685 const content::PresentationSessionStartedCallback& success_cb,
680 const content::PresentationSessionErrorCallback& error_cb, 686 const content::PresentationSessionErrorCallback& error_cb,
681 const RouteRequestResult& result) { 687 const RouteRequestResult& result) {
682 if (!result.route()) { 688 if (!result.route()) {
(...skipping 24 matching lines...) Expand all
707 << ", presentation ID: " << new_session.presentation_id; 713 << ", presentation ID: " << new_session.presentation_id;
708 frame_manager_->OnPresentationSessionStarted( 714 frame_manager_->OnPresentationSessionStarted(
709 RenderFrameHostId(render_process_id, render_frame_id), new_session, 715 RenderFrameHostId(render_process_id, render_frame_id), new_session,
710 route_id); 716 route_id);
711 success_cb.Run(new_session); 717 success_cb.Run(new_session);
712 } 718 }
713 719
714 void PresentationServiceDelegateImpl::StartSession( 720 void PresentationServiceDelegateImpl::StartSession(
715 int render_process_id, 721 int render_process_id,
716 int render_frame_id, 722 int render_frame_id,
717 const std::string& presentation_url, 723 const std::vector<std::string>& presentation_urls,
718 const content::PresentationSessionStartedCallback& success_cb, 724 const content::PresentationSessionStartedCallback& success_cb,
719 const content::PresentationSessionErrorCallback& error_cb) { 725 const content::PresentationSessionErrorCallback& error_cb) {
726 if (presentation_urls.empty()) {
727 error_cb.Run(content::PresentationError(content::PRESENTATION_ERROR_UNKNOWN,
728 "Invalid presentation arguments."));
729 return;
730 }
731
732 // TODO(crbug.com/627655): Handle multiple URLs
733 const std::string& presentation_url = presentation_urls[0];
720 if (presentation_url.empty() || !IsValidPresentationUrl(presentation_url)) { 734 if (presentation_url.empty() || !IsValidPresentationUrl(presentation_url)) {
721 error_cb.Run(content::PresentationError(content::PRESENTATION_ERROR_UNKNOWN, 735 error_cb.Run(content::PresentationError(content::PRESENTATION_ERROR_UNKNOWN,
722 "Invalid presentation arguments.")); 736 "Invalid presentation arguments."));
723 return; 737 return;
724 } 738 }
725 739
726 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id); 740 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id);
727 std::unique_ptr<CreatePresentationConnectionRequest> request( 741 std::unique_ptr<CreatePresentationConnectionRequest> request(
728 new CreatePresentationConnectionRequest( 742 new CreatePresentationConnectionRequest(
729 render_frame_host_id, presentation_url, 743 render_frame_host_id, presentation_url,
730 GetLastCommittedURLForFrame(render_frame_host_id), 744 GetLastCommittedURLForFrame(render_frame_host_id),
731 base::Bind(&PresentationServiceDelegateImpl::OnStartSessionSucceeded, 745 base::Bind(&PresentationServiceDelegateImpl::OnStartSessionSucceeded,
732 weak_factory_.GetWeakPtr(), render_process_id, 746 weak_factory_.GetWeakPtr(), render_process_id,
733 render_frame_id, success_cb), 747 render_frame_id, success_cb),
734 error_cb)); 748 error_cb));
735 MediaRouterDialogController* controller = 749 MediaRouterDialogController* controller =
736 MediaRouterDialogController::GetOrCreateForWebContents(web_contents_); 750 MediaRouterDialogController::GetOrCreateForWebContents(web_contents_);
737 if (!controller->ShowMediaRouterDialogForPresentation(std::move(request))) { 751 if (!controller->ShowMediaRouterDialogForPresentation(std::move(request))) {
738 LOG(ERROR) << "Media router dialog already exists. Ignoring StartSession."; 752 LOG(ERROR) << "Media router dialog already exists. Ignoring StartSession.";
739 error_cb.Run(content::PresentationError(content::PRESENTATION_ERROR_UNKNOWN, 753 error_cb.Run(content::PresentationError(content::PRESENTATION_ERROR_UNKNOWN,
740 "Unable to create dialog.")); 754 "Unable to create dialog."));
741 return; 755 return;
742 } 756 }
743 } 757 }
744 758
745 void PresentationServiceDelegateImpl::JoinSession( 759 void PresentationServiceDelegateImpl::JoinSession(
746 int render_process_id, 760 int render_process_id,
747 int render_frame_id, 761 int render_frame_id,
748 const std::string& presentation_url, 762 const std::vector<std::string>& presentation_urls,
749 const std::string& presentation_id, 763 const std::string& presentation_id,
750 const content::PresentationSessionStartedCallback& success_cb, 764 const content::PresentationSessionStartedCallback& success_cb,
751 const content::PresentationSessionErrorCallback& error_cb) { 765 const content::PresentationSessionErrorCallback& error_cb) {
766 if (presentation_urls.empty()) {
767 error_cb.Run(content::PresentationError(
768 content::PRESENTATION_ERROR_NO_PRESENTATION_FOUND,
769 "Invalid presentation arguments."));
770 }
771
772 // TODO(crbug.com/627655): Handle multiple URLs.
773 const std::string& presentation_url = presentation_urls[0];
752 bool off_the_record = web_contents_->GetBrowserContext()->IsOffTheRecord(); 774 bool off_the_record = web_contents_->GetBrowserContext()->IsOffTheRecord();
753 std::vector<MediaRouteResponseCallback> route_response_callbacks; 775 std::vector<MediaRouteResponseCallback> route_response_callbacks;
754 route_response_callbacks.push_back(base::Bind( 776 route_response_callbacks.push_back(base::Bind(
755 &PresentationServiceDelegateImpl::OnJoinRouteResponse, 777 &PresentationServiceDelegateImpl::OnJoinRouteResponse,
756 weak_factory_.GetWeakPtr(), render_process_id, render_frame_id, 778 weak_factory_.GetWeakPtr(), render_process_id, render_frame_id,
757 content::PresentationSessionInfo(presentation_url, presentation_id), 779 content::PresentationSessionInfo(presentation_url, presentation_id),
758 success_cb, error_cb)); 780 success_cb, error_cb));
759 router_->JoinRoute(MediaSourceForPresentationUrl(presentation_url).id(), 781 router_->JoinRoute(MediaSourceForPresentationUrl(presentation_url).id(),
760 presentation_id, 782 presentation_id,
761 GetLastCommittedURLForFrame( 783 GetLastCommittedURLForFrame(
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
889 bool PresentationServiceDelegateImpl::HasScreenAvailabilityListenerForTest( 911 bool PresentationServiceDelegateImpl::HasScreenAvailabilityListenerForTest(
890 int render_process_id, 912 int render_process_id,
891 int render_frame_id, 913 int render_frame_id,
892 const MediaSource::Id& source_id) const { 914 const MediaSource::Id& source_id) const {
893 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id); 915 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id);
894 return frame_manager_->HasScreenAvailabilityListenerForTest( 916 return frame_manager_->HasScreenAvailabilityListenerForTest(
895 render_frame_host_id, source_id); 917 render_frame_host_id, source_id);
896 } 918 }
897 919
898 } // namespace media_router 920 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698