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

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

Issue 1784533004: [Media Router] Add origins to sink query results. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix test Created 4 years, 9 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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 int render_process_id = render_frame_host->GetProcess()->GetID(); 46 int render_process_id = render_frame_host->GetProcess()->GetID();
47 int render_frame_id = render_frame_host->GetRoutingID(); 47 int render_frame_id = render_frame_host->GetRoutingID();
48 return RenderFrameHostId(render_process_id, render_frame_id); 48 return RenderFrameHostId(render_process_id, render_frame_id);
49 } 49 }
50 50
51 // Gets the last committed URL for the render frame specified by 51 // Gets the last committed URL for the render frame specified by
52 // |render_frame_host_id|. 52 // |render_frame_host_id|.
53 GURL GetLastCommittedURLForFrame(RenderFrameHostId render_frame_host_id) { 53 GURL GetLastCommittedURLForFrame(RenderFrameHostId render_frame_host_id) {
54 RenderFrameHost* render_frame_host = RenderFrameHost::FromID( 54 RenderFrameHost* render_frame_host = RenderFrameHost::FromID(
55 render_frame_host_id.first, render_frame_host_id.second); 55 render_frame_host_id.first, render_frame_host_id.second);
56 DCHECK(render_frame_host); 56 return render_frame_host ? render_frame_host->GetLastCommittedURL() : GURL();
57 return render_frame_host->GetLastCommittedURL();
58 } 57 }
59 58
60 } // namespace 59 } // namespace
61 60
62 // Used by PresentationServiceDelegateImpl to manage 61 // Used by PresentationServiceDelegateImpl to manage
63 // listeners and default presentation info in a render frame. 62 // listeners and default presentation info in a render frame.
64 // Its lifetime: 63 // Its lifetime:
65 // * PresentationFrameManager AddDelegateObserver 64 // * PresentationFrameManager AddDelegateObserver
66 // * Reset 0+ times. 65 // * Reset 0+ times.
67 // * PresentationFrameManager.RemoveDelegateObserver. 66 // * PresentationFrameManager.RemoveDelegateObserver.
68 class PresentationFrame { 67 class PresentationFrame {
69 public: 68 public:
70 PresentationFrame(content::WebContents* web_contents, MediaRouter* router); 69 PresentationFrame(const RenderFrameHostId& render_frame_host_id,
70 content::WebContents* web_contents,
71 MediaRouter* router);
71 ~PresentationFrame(); 72 ~PresentationFrame();
72 73
73 // Mirror corresponding APIs in PresentationServiceDelegateImpl. 74 // Mirror corresponding APIs in PresentationServiceDelegateImpl.
74 bool SetScreenAvailabilityListener( 75 bool SetScreenAvailabilityListener(
75 content::PresentationScreenAvailabilityListener* listener); 76 content::PresentationScreenAvailabilityListener* listener);
76 bool RemoveScreenAvailabilityListener( 77 bool RemoveScreenAvailabilityListener(
77 content::PresentationScreenAvailabilityListener* listener); 78 content::PresentationScreenAvailabilityListener* listener);
78 bool HasScreenAvailabilityListenerForTest( 79 bool HasScreenAvailabilityListenerForTest(
79 const MediaSource::Id& source_id) const; 80 const MediaSource::Id& source_id) const;
80 std::string GetDefaultPresentationId() const; 81 std::string GetDefaultPresentationId() const;
(...skipping 27 matching lines...) Expand all
108 base::SmallMap<std::map<std::string, MediaRoute::Id>> 109 base::SmallMap<std::map<std::string, MediaRoute::Id>>
109 presentation_id_to_route_id_; 110 presentation_id_to_route_id_;
110 base::SmallMap< 111 base::SmallMap<
111 std::map<std::string, scoped_ptr<PresentationMediaSinksObserver>>> 112 std::map<std::string, scoped_ptr<PresentationMediaSinksObserver>>>
112 url_to_sinks_observer_; 113 url_to_sinks_observer_;
113 base::ScopedPtrHashMap<MediaRoute::Id, 114 base::ScopedPtrHashMap<MediaRoute::Id,
114 scoped_ptr<PresentationConnectionStateSubscription>> 115 scoped_ptr<PresentationConnectionStateSubscription>>
115 connection_state_subscriptions_; 116 connection_state_subscriptions_;
116 ScopedVector<PresentationSessionMessagesObserver> session_messages_observers_; 117 ScopedVector<PresentationSessionMessagesObserver> session_messages_observers_;
117 118
119 RenderFrameHostId render_frame_host_id_;
120
118 // References to the owning WebContents, and the corresponding MediaRouter. 121 // References to the owning WebContents, and the corresponding MediaRouter.
119 const content::WebContents* web_contents_; 122 const content::WebContents* web_contents_;
120 MediaRouter* router_; 123 MediaRouter* router_;
121 124
122 DelegateObserver* delegate_observer_; 125 DelegateObserver* delegate_observer_;
123 }; 126 };
124 127
125 PresentationFrame::PresentationFrame(content::WebContents* web_contents, 128 PresentationFrame::PresentationFrame(
126 MediaRouter* router) 129 const RenderFrameHostId& render_frame_host_id,
127 : web_contents_(web_contents), 130 content::WebContents* web_contents,
131 MediaRouter* router)
132 : render_frame_host_id_(render_frame_host_id),
133 web_contents_(web_contents),
128 router_(router), 134 router_(router),
129 delegate_observer_(nullptr) { 135 delegate_observer_(nullptr) {
130 DCHECK(web_contents_); 136 DCHECK(web_contents_);
131 DCHECK(router_); 137 DCHECK(router_);
132 } 138 }
133 139
134 PresentationFrame::~PresentationFrame() { 140 PresentationFrame::~PresentationFrame() {
135 } 141 }
136 142
137 void PresentationFrame::OnPresentationServiceDelegateDestroyed() const { 143 void PresentationFrame::OnPresentationServiceDelegateDestroyed() const {
(...skipping 20 matching lines...) Expand all
158 return route_ids; 164 return route_ids;
159 } 165 }
160 166
161 bool PresentationFrame::SetScreenAvailabilityListener( 167 bool PresentationFrame::SetScreenAvailabilityListener(
162 content::PresentationScreenAvailabilityListener* listener) { 168 content::PresentationScreenAvailabilityListener* listener) {
163 MediaSource source(GetMediaSourceFromListener(listener)); 169 MediaSource source(GetMediaSourceFromListener(listener));
164 auto& sinks_observer = url_to_sinks_observer_[source.id()]; 170 auto& sinks_observer = url_to_sinks_observer_[source.id()];
165 if (sinks_observer && sinks_observer->listener() == listener) 171 if (sinks_observer && sinks_observer->listener() == listener)
166 return false; 172 return false;
167 173
168 sinks_observer.reset( 174 sinks_observer.reset(new PresentationMediaSinksObserver(
169 new PresentationMediaSinksObserver(router_, listener, source)); 175 router_, listener, source,
176 GetLastCommittedURLForFrame(render_frame_host_id_).GetOrigin()));
170 177
171 if (!sinks_observer->Init()) { 178 if (!sinks_observer->Init()) {
172 url_to_sinks_observer_.erase(source.id()); 179 url_to_sinks_observer_.erase(source.id());
173 listener->OnScreenAvailabilityNotSupported(); 180 listener->OnScreenAvailabilityNotSupported();
174 return false; 181 return false;
175 } 182 }
176 183
177 return true; 184 return true;
178 } 185 }
179 186
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 auto presentation_frame = presentation_frames_.get(render_frame_host_id); 552 auto presentation_frame = presentation_frames_.get(render_frame_host_id);
546 if (presentation_frame) 553 if (presentation_frame)
547 presentation_frame->RemoveConnection(route_id, presentation_id); 554 presentation_frame->RemoveConnection(route_id, presentation_id);
548 } 555 }
549 556
550 PresentationFrame* PresentationFrameManager::GetOrAddPresentationFrame( 557 PresentationFrame* PresentationFrameManager::GetOrAddPresentationFrame(
551 const RenderFrameHostId& render_frame_host_id) { 558 const RenderFrameHostId& render_frame_host_id) {
552 if (!presentation_frames_.contains(render_frame_host_id)) { 559 if (!presentation_frames_.contains(render_frame_host_id)) {
553 presentation_frames_.add( 560 presentation_frames_.add(
554 render_frame_host_id, 561 render_frame_host_id,
555 scoped_ptr<PresentationFrame>( 562 scoped_ptr<PresentationFrame>(new PresentationFrame(
556 new PresentationFrame(web_contents_, router_))); 563 render_frame_host_id, web_contents_, router_)));
557 } 564 }
558 return presentation_frames_.get(render_frame_host_id); 565 return presentation_frames_.get(render_frame_host_id);
559 } 566 }
560 567
561 void PresentationFrameManager::ClearDefaultPresentationRequest() { 568 void PresentationFrameManager::ClearDefaultPresentationRequest() {
562 default_presentation_started_callback_.Reset(); 569 default_presentation_started_callback_.Reset();
563 if (!default_presentation_request_) 570 if (!default_presentation_request_)
564 return; 571 return;
565 572
566 default_presentation_request_.reset(); 573 default_presentation_request_.reset();
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 bool PresentationServiceDelegateImpl::HasScreenAvailabilityListenerForTest( 888 bool PresentationServiceDelegateImpl::HasScreenAvailabilityListenerForTest(
882 int render_process_id, 889 int render_process_id,
883 int render_frame_id, 890 int render_frame_id,
884 const MediaSource::Id& source_id) const { 891 const MediaSource::Id& source_id) const {
885 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id); 892 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id);
886 return frame_manager_->HasScreenAvailabilityListenerForTest( 893 return frame_manager_->HasScreenAvailabilityListenerForTest(
887 render_frame_host_id, source_id); 894 render_frame_host_id, source_id);
888 } 895 }
889 896
890 } // namespace media_router 897 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698