| 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()));
|
|
|
| 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);
|
| }
|
|
|