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

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

Issue 2666743002: Manual Revert of Convert MediaRouter mojom apis to intake url::Origin objects instead of strings (p… (Closed)
Patch Set: fix merge conflict Created 3 years, 10 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 <unordered_map> 8 #include <unordered_map>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 53
54 // Returns the unique identifier for the supplied RenderFrameHost. 54 // Returns the unique identifier for the supplied RenderFrameHost.
55 RenderFrameHostId GetRenderFrameHostId(RenderFrameHost* render_frame_host) { 55 RenderFrameHostId GetRenderFrameHostId(RenderFrameHost* render_frame_host) {
56 int render_process_id = render_frame_host->GetProcess()->GetID(); 56 int render_process_id = render_frame_host->GetProcess()->GetID();
57 int render_frame_id = render_frame_host->GetRoutingID(); 57 int render_frame_id = render_frame_host->GetRoutingID();
58 return RenderFrameHostId(render_process_id, render_frame_id); 58 return RenderFrameHostId(render_process_id, render_frame_id);
59 } 59 }
60 60
61 // Gets the last committed URL for the render frame specified by 61 // Gets the last committed URL for the render frame specified by
62 // |render_frame_host_id|. 62 // |render_frame_host_id|.
63 url::Origin GetLastCommittedURLForFrame( 63 GURL GetLastCommittedURLForFrame(RenderFrameHostId render_frame_host_id) {
64 RenderFrameHostId render_frame_host_id) {
65 RenderFrameHost* render_frame_host = RenderFrameHost::FromID( 64 RenderFrameHost* render_frame_host = RenderFrameHost::FromID(
66 render_frame_host_id.first, render_frame_host_id.second); 65 render_frame_host_id.first, render_frame_host_id.second);
67 DCHECK(render_frame_host); 66 if (!render_frame_host)
68 return render_frame_host->GetLastCommittedOrigin(); 67 return GURL();
68
69 // TODO(crbug.com/632623): Use url::Origin in place of GURL for origins
70 return render_frame_host->GetLastCommittedOrigin().GetURL();
69 } 71 }
70 72
71 // Observes messages originating from the MediaSink connected to a MediaRoute 73 // Observes messages originating from the MediaSink connected to a MediaRoute
72 // that represents a presentation. Converts the messages into 74 // that represents a presentation. Converts the messages into
73 // content::PresentationSessionMessages and dispatches them via the provided 75 // content::PresentationSessionMessages and dispatches them via the provided
74 // PresentationSessionMessageCallback. 76 // PresentationSessionMessageCallback.
75 class PresentationSessionMessagesObserver : public RouteMessageObserver { 77 class PresentationSessionMessagesObserver : public RouteMessageObserver {
76 public: 78 public:
77 // |message_cb|: The callback to invoke whenever messages are received. 79 // |message_cb|: The callback to invoke whenever messages are received.
78 // |route_id|: ID of MediaRoute to listen for messages. 80 // |route_id|: ID of MediaRoute to listen for messages.
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 224
223 bool PresentationFrame::SetScreenAvailabilityListener( 225 bool PresentationFrame::SetScreenAvailabilityListener(
224 content::PresentationScreenAvailabilityListener* listener) { 226 content::PresentationScreenAvailabilityListener* listener) {
225 MediaSource source(GetMediaSourceFromListener(listener)); 227 MediaSource source(GetMediaSourceFromListener(listener));
226 auto& sinks_observer = url_to_sinks_observer_[source.id()]; 228 auto& sinks_observer = url_to_sinks_observer_[source.id()];
227 if (sinks_observer && sinks_observer->listener() == listener) 229 if (sinks_observer && sinks_observer->listener() == listener)
228 return false; 230 return false;
229 231
230 sinks_observer.reset(new PresentationMediaSinksObserver( 232 sinks_observer.reset(new PresentationMediaSinksObserver(
231 router_, listener, source, 233 router_, listener, source,
232 GetLastCommittedURLForFrame(render_frame_host_id_))); 234 GetLastCommittedURLForFrame(render_frame_host_id_).GetOrigin()));
233 235
234 if (!sinks_observer->Init()) { 236 if (!sinks_observer->Init()) {
235 url_to_sinks_observer_.erase(source.id()); 237 url_to_sinks_observer_.erase(source.id());
236 listener->OnScreenAvailabilityNotSupported(); 238 listener->OnScreenAvailabilityNotSupported();
237 return false; 239 return false;
238 } 240 }
239 241
240 return true; 242 return true;
241 } 243 }
242 244
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 const RenderFrameHostId& render_frame_host_id, 543 const RenderFrameHostId& render_frame_host_id,
542 const std::vector<GURL>& default_presentation_urls, 544 const std::vector<GURL>& default_presentation_urls,
543 const content::PresentationSessionStartedCallback& callback) { 545 const content::PresentationSessionStartedCallback& callback) {
544 if (!IsMainFrame(render_frame_host_id)) 546 if (!IsMainFrame(render_frame_host_id))
545 return; 547 return;
546 548
547 if (default_presentation_urls.empty()) { 549 if (default_presentation_urls.empty()) {
548 ClearDefaultPresentationRequest(); 550 ClearDefaultPresentationRequest();
549 } else { 551 } else {
550 DCHECK(!callback.is_null()); 552 DCHECK(!callback.is_null());
551 const auto& frame_origin = 553 GURL frame_url(GetLastCommittedURLForFrame(render_frame_host_id));
552 GetLastCommittedURLForFrame(render_frame_host_id);
553 PresentationRequest request(render_frame_host_id, default_presentation_urls, 554 PresentationRequest request(render_frame_host_id, default_presentation_urls,
554 frame_origin); 555 frame_url);
555 default_presentation_started_callback_ = callback; 556 default_presentation_started_callback_ = callback;
556 SetDefaultPresentationRequest(request); 557 SetDefaultPresentationRequest(request);
557 } 558 }
558 } 559 }
559 560
560 void PresentationFrameManager::AddDefaultPresentationRequestObserver( 561 void PresentationFrameManager::AddDefaultPresentationRequestObserver(
561 PresentationServiceDelegateImpl::DefaultPresentationRequestObserver* 562 PresentationServiceDelegateImpl::DefaultPresentationRequestObserver*
562 observer) { 563 observer) {
563 default_presentation_request_observers_.AddObserver(observer); 564 default_presentation_request_observers_.AddObserver(observer);
564 } 565 }
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
797 const content::PresentationSessionStartedCallback& success_cb, 798 const content::PresentationSessionStartedCallback& success_cb,
798 const content::PresentationSessionErrorCallback& error_cb) { 799 const content::PresentationSessionErrorCallback& error_cb) {
799 DVLOG(2) << "PresentationServiceDelegateImpl::JoinSession"; 800 DVLOG(2) << "PresentationServiceDelegateImpl::JoinSession";
800 if (presentation_urls.empty()) { 801 if (presentation_urls.empty()) {
801 error_cb.Run(content::PresentationError( 802 error_cb.Run(content::PresentationError(
802 content::PRESENTATION_ERROR_NO_PRESENTATION_FOUND, 803 content::PRESENTATION_ERROR_NO_PRESENTATION_FOUND,
803 "Invalid presentation arguments.")); 804 "Invalid presentation arguments."));
804 return; 805 return;
805 } 806 }
806 807
807 const url::Origin& origin = GetLastCommittedURLForFrame( 808 const url::Origin& origin = url::Origin(GetLastCommittedURLForFrame(
808 RenderFrameHostId(render_process_id, render_frame_id)); 809 RenderFrameHostId(render_process_id, render_frame_id)));
809 810
810 #if !defined(OS_ANDROID) 811 #if !defined(OS_ANDROID)
811 if (IsAutoJoinPresentationId(presentation_id) && 812 if (IsAutoJoinPresentationId(presentation_id) &&
812 ShouldCancelAutoJoinForOrigin(origin)) { 813 ShouldCancelAutoJoinForOrigin(origin)) {
813 error_cb.Run(content::PresentationError( 814 error_cb.Run(content::PresentationError(
814 content::PRESENTATION_ERROR_SESSION_REQUEST_CANCELLED, 815 content::PRESENTATION_ERROR_SESSION_REQUEST_CANCELLED,
815 "Auto-join request cancelled by user preferences.")); 816 "Auto-join request cancelled by user preferences."));
816 return; 817 return;
817 } 818 }
818 #endif // !defined(OS_ANDROID) 819 #endif // !defined(OS_ANDROID)
819 820
820 // TODO(crbug.com/627655): Handle multiple URLs. 821 // TODO(crbug.com/627655): Handle multiple URLs.
821 const GURL& presentation_url = presentation_urls[0]; 822 const GURL& presentation_url = presentation_urls[0];
822 bool incognito = web_contents_->GetBrowserContext()->IsOffTheRecord(); 823 bool incognito = web_contents_->GetBrowserContext()->IsOffTheRecord();
823 std::vector<MediaRouteResponseCallback> route_response_callbacks; 824 std::vector<MediaRouteResponseCallback> route_response_callbacks;
824 route_response_callbacks.push_back( 825 route_response_callbacks.push_back(
825 base::Bind(&PresentationServiceDelegateImpl::OnJoinRouteResponse, 826 base::Bind(&PresentationServiceDelegateImpl::OnJoinRouteResponse,
826 weak_factory_.GetWeakPtr(), render_process_id, render_frame_id, 827 weak_factory_.GetWeakPtr(), render_process_id, render_frame_id,
827 presentation_url, presentation_id, success_cb, error_cb)); 828 presentation_url, presentation_id, success_cb, error_cb));
828 router_->JoinRoute(MediaSourceForPresentationUrl(presentation_url).id(), 829 router_->JoinRoute(MediaSourceForPresentationUrl(presentation_url).id(),
829 presentation_id, origin, web_contents_, 830 presentation_id, origin.GetURL(), web_contents_,
830 route_response_callbacks, base::TimeDelta(), incognito); 831 route_response_callbacks, base::TimeDelta(), incognito);
831 } 832 }
832 833
833 void PresentationServiceDelegateImpl::CloseConnection( 834 void PresentationServiceDelegateImpl::CloseConnection(
834 int render_process_id, 835 int render_process_id,
835 int render_frame_id, 836 int render_frame_id,
836 const std::string& presentation_id) { 837 const std::string& presentation_id) {
837 const RenderFrameHostId rfh_id(render_process_id, render_frame_id); 838 const RenderFrameHostId rfh_id(render_process_id, render_frame_id);
838 const MediaRoute::Id& route_id = 839 const MediaRoute::Id& route_id =
839 frame_manager_->GetRouteId(rfh_id, presentation_id); 840 frame_manager_->GetRouteId(rfh_id, presentation_id);
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
985 const base::ListValue* origins = 986 const base::ListValue* origins =
986 Profile::FromBrowserContext(web_contents_->GetBrowserContext()) 987 Profile::FromBrowserContext(web_contents_->GetBrowserContext())
987 ->GetPrefs() 988 ->GetPrefs()
988 ->GetList(prefs::kMediaRouterTabMirroringSources); 989 ->GetList(prefs::kMediaRouterTabMirroringSources);
989 return origins && 990 return origins &&
990 origins->Find(base::StringValue(origin.Serialize())) != origins->end(); 991 origins->Find(base::StringValue(origin.Serialize())) != origins->end();
991 } 992 }
992 #endif // !defined(OS_ANDROID) 993 #endif // !defined(OS_ANDROID)
993 994
994 } // namespace media_router 995 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698