Chromium Code Reviews| Index: chrome/browser/media/router/presentation_service_delegate_impl.cc |
| diff --git a/chrome/browser/media/router/presentation_service_delegate_impl.cc b/chrome/browser/media/router/presentation_service_delegate_impl.cc |
| index 6c6c379133c384e9ae444d0c0ab601dbfc617c2f..9bc4ddd41bd7c1faacdf7440b54a4c7342a5b77a 100644 |
| --- a/chrome/browser/media/router/presentation_service_delegate_impl.cc |
| +++ b/chrome/browser/media/router/presentation_service_delegate_impl.cc |
| @@ -67,7 +67,9 @@ GURL GetLastCommittedURLForFrame(RenderFrameHostId render_frame_host_id) { |
| // * PresentationFrameManager.RemoveDelegateObserver. |
| class PresentationFrame { |
| public: |
| - PresentationFrame(content::WebContents* web_contents, MediaRouter* router); |
| + PresentationFrame(const RenderFrameHostId& render_frame_host_id, |
| + content::WebContents* web_contents, |
| + MediaRouter* router); |
| ~PresentationFrame(); |
| // Mirror corresponding APIs in PresentationServiceDelegateImpl. |
| @@ -115,6 +117,8 @@ class PresentationFrame { |
| connection_state_subscriptions_; |
| ScopedVector<PresentationSessionMessagesObserver> session_messages_observers_; |
| + RenderFrameHostId render_frame_host_id_; |
| + |
| // References to the owning WebContents, and the corresponding MediaRouter. |
| const content::WebContents* web_contents_; |
| MediaRouter* router_; |
| @@ -122,9 +126,12 @@ class PresentationFrame { |
| DelegateObserver* delegate_observer_; |
| }; |
| -PresentationFrame::PresentationFrame(content::WebContents* web_contents, |
| - MediaRouter* router) |
| - : web_contents_(web_contents), |
| +PresentationFrame::PresentationFrame( |
| + const RenderFrameHostId& render_frame_host_id, |
| + content::WebContents* web_contents, |
| + MediaRouter* router) |
| + : render_frame_host_id_(render_frame_host_id), |
| + web_contents_(web_contents), |
| router_(router), |
| delegate_observer_(nullptr) { |
| DCHECK(web_contents_); |
| @@ -165,8 +172,9 @@ bool PresentationFrame::SetScreenAvailabilityListener( |
| if (sinks_observer && sinks_observer->listener() == listener) |
| return false; |
| - sinks_observer.reset( |
| - new PresentationMediaSinksObserver(router_, listener, source)); |
| + sinks_observer.reset(new PresentationMediaSinksObserver( |
| + router_, listener, source, |
| + GetLastCommittedURLForFrame(render_frame_host_id_).GetOrigin())); |
|
mark a. foltz
2016/03/11 01:20:23
Can GetLastCommittedURLForFrame() ever fail?
What
imcheng
2016/03/14 21:30:20
GetOrigin() will return empty for javascript:. I s
|
| if (!sinks_observer->Init()) { |
| url_to_sinks_observer_.erase(source.id()); |
| @@ -552,8 +560,8 @@ PresentationFrame* PresentationFrameManager::GetOrAddPresentationFrame( |
| if (!presentation_frames_.contains(render_frame_host_id)) { |
| presentation_frames_.add( |
| render_frame_host_id, |
| - scoped_ptr<PresentationFrame>( |
| - new PresentationFrame(web_contents_, router_))); |
| + scoped_ptr<PresentationFrame>(new PresentationFrame( |
| + render_frame_host_id, web_contents_, router_))); |
| } |
| return presentation_frames_.get(render_frame_host_id); |
| } |