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

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

Issue 1838903006: [Media Router] Cherrypick "add sinks to origin list" to beta (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2661
Patch Set: Created 4 years, 8 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 25 matching lines...) Expand all
106 MediaSource GetMediaSourceFromListener( 107 MediaSource GetMediaSourceFromListener(
107 content::PresentationScreenAvailabilityListener* listener) const; 108 content::PresentationScreenAvailabilityListener* listener) const;
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 scoped_ptr<PresentationMediaSinksObserver> sinks_observer_; 111 scoped_ptr<PresentationMediaSinksObserver> sinks_observer_;
111 base::ScopedPtrHashMap<MediaRoute::Id, 112 base::ScopedPtrHashMap<MediaRoute::Id,
112 scoped_ptr<PresentationConnectionStateSubscription>> 113 scoped_ptr<PresentationConnectionStateSubscription>>
113 connection_state_subscriptions_; 114 connection_state_subscriptions_;
114 ScopedVector<PresentationSessionMessagesObserver> session_messages_observers_; 115 ScopedVector<PresentationSessionMessagesObserver> session_messages_observers_;
115 116
117 RenderFrameHostId render_frame_host_id_;
118
116 // References to the owning WebContents, and the corresponding MediaRouter. 119 // References to the owning WebContents, and the corresponding MediaRouter.
117 const content::WebContents* web_contents_; 120 const content::WebContents* web_contents_;
118 MediaRouter* router_; 121 MediaRouter* router_;
119 122
120 DelegateObserver* delegate_observer_; 123 DelegateObserver* delegate_observer_;
121 }; 124 };
122 125
123 PresentationFrame::PresentationFrame(content::WebContents* web_contents, 126 PresentationFrame::PresentationFrame(
124 MediaRouter* router) 127 const RenderFrameHostId& render_frame_host_id,
125 : web_contents_(web_contents), 128 content::WebContents* web_contents,
129 MediaRouter* router)
130 : render_frame_host_id_(render_frame_host_id),
131 web_contents_(web_contents),
126 router_(router), 132 router_(router),
127 delegate_observer_(nullptr) { 133 delegate_observer_(nullptr) {
128 DCHECK(web_contents_); 134 DCHECK(web_contents_);
129 DCHECK(router_); 135 DCHECK(router_);
130 } 136 }
131 137
132 PresentationFrame::~PresentationFrame() { 138 PresentationFrame::~PresentationFrame() {
133 } 139 }
134 140
135 void PresentationFrame::OnPresentationServiceDelegateDestroyed() const { 141 void PresentationFrame::OnPresentationServiceDelegateDestroyed() const {
(...skipping 19 matching lines...) Expand all
155 route_ids.push_back(e.second); 161 route_ids.push_back(e.second);
156 return route_ids; 162 return route_ids;
157 } 163 }
158 164
159 bool PresentationFrame::SetScreenAvailabilityListener( 165 bool PresentationFrame::SetScreenAvailabilityListener(
160 content::PresentationScreenAvailabilityListener* listener) { 166 content::PresentationScreenAvailabilityListener* listener) {
161 if (sinks_observer_ && sinks_observer_->listener() == listener) 167 if (sinks_observer_ && sinks_observer_->listener() == listener)
162 return false; 168 return false;
163 169
164 MediaSource source(GetMediaSourceFromListener(listener)); 170 MediaSource source(GetMediaSourceFromListener(listener));
165 sinks_observer_.reset( 171 sinks_observer_.reset(new PresentationMediaSinksObserver(
166 new PresentationMediaSinksObserver(router_, listener, source)); 172 router_, listener, source,
173 GetLastCommittedURLForFrame(render_frame_host_id_).GetOrigin()));
167 174
168 if (!sinks_observer_->Init()) { 175 if (!sinks_observer_->Init()) {
169 sinks_observer_.reset(); 176 sinks_observer_.reset();
170 listener->OnScreenAvailabilityNotSupported(); 177 listener->OnScreenAvailabilityNotSupported();
171 return false; 178 return false;
172 } 179 }
173 180
174 return true; 181 return true;
175 } 182 }
176 183
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 auto presentation_frame = presentation_frames_.get(render_frame_host_id); 546 auto presentation_frame = presentation_frames_.get(render_frame_host_id);
540 if (presentation_frame) 547 if (presentation_frame)
541 presentation_frame->RemoveConnection(route_id, presentation_id); 548 presentation_frame->RemoveConnection(route_id, presentation_id);
542 } 549 }
543 550
544 PresentationFrame* PresentationFrameManager::GetOrAddPresentationFrame( 551 PresentationFrame* PresentationFrameManager::GetOrAddPresentationFrame(
545 const RenderFrameHostId& render_frame_host_id) { 552 const RenderFrameHostId& render_frame_host_id) {
546 if (!presentation_frames_.contains(render_frame_host_id)) { 553 if (!presentation_frames_.contains(render_frame_host_id)) {
547 presentation_frames_.add( 554 presentation_frames_.add(
548 render_frame_host_id, 555 render_frame_host_id,
549 scoped_ptr<PresentationFrame>( 556 scoped_ptr<PresentationFrame>(new PresentationFrame(
550 new PresentationFrame(web_contents_, router_))); 557 render_frame_host_id, web_contents_, router_)));
551 } 558 }
552 return presentation_frames_.get(render_frame_host_id); 559 return presentation_frames_.get(render_frame_host_id);
553 } 560 }
554 561
555 void PresentationFrameManager::ClearDefaultPresentationRequest() { 562 void PresentationFrameManager::ClearDefaultPresentationRequest() {
556 default_presentation_started_callback_.Reset(); 563 default_presentation_started_callback_.Reset();
557 if (!default_presentation_request_) 564 if (!default_presentation_request_)
558 return; 565 return;
559 566
560 default_presentation_request_.reset(); 567 default_presentation_request_.reset();
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 bool PresentationServiceDelegateImpl::HasScreenAvailabilityListenerForTest( 882 bool PresentationServiceDelegateImpl::HasScreenAvailabilityListenerForTest(
876 int render_process_id, 883 int render_process_id,
877 int render_frame_id, 884 int render_frame_id,
878 const MediaSource::Id& source_id) const { 885 const MediaSource::Id& source_id) const {
879 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id); 886 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id);
880 return frame_manager_->HasScreenAvailabilityListenerForTest( 887 return frame_manager_->HasScreenAvailabilityListenerForTest(
881 render_frame_host_id, source_id); 888 render_frame_host_id, source_id);
882 } 889 }
883 890
884 } // namespace media_router 891 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698