| 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 156a9bb5c7f38ac59025fd616d19b39ba11a0e42..59e441a9ffb9a75dd0ddd9d2672d7bee415f6a40 100644
|
| --- a/chrome/browser/media/router/presentation_service_delegate_impl.cc
|
| +++ b/chrome/browser/media/router/presentation_service_delegate_impl.cc
|
| @@ -20,6 +20,8 @@
|
| #include "chrome/browser/media/router/media_router_factory.h"
|
| #include "chrome/browser/media/router/media_sink.h"
|
| #include "chrome/browser/media/router/media_source_helper.h"
|
| +#include "chrome/browser/media/router/offscreen_presentation_manager.h"
|
| +#include "chrome/browser/media/router/offscreen_presentation_manager_factory.h"
|
| #include "chrome/browser/media/router/presentation_media_sinks_observer.h"
|
| #include "chrome/browser/media/router/route_message.h"
|
| #include "chrome/browser/media/router/route_message_observer.h"
|
| @@ -30,6 +32,7 @@
|
| #include "content/public/browser/render_frame_host.h"
|
| #include "content/public/browser/render_process_host.h"
|
| #include "content/public/common/presentation_session.h"
|
| +#include "url/gurl.h"
|
|
|
| #if !defined(OS_ANDROID)
|
| #include "chrome/browser/profiles/profile.h"
|
| @@ -193,8 +196,7 @@ PresentationFrame::PresentationFrame(
|
| MediaRouter* router)
|
| : render_frame_host_id_(render_frame_host_id),
|
| web_contents_(web_contents),
|
| - router_(router),
|
| - delegate_observer_(nullptr) {
|
| + router_(router) {
|
| DCHECK(web_contents_);
|
| DCHECK(router_);
|
| }
|
| @@ -202,11 +204,6 @@ PresentationFrame::PresentationFrame(
|
| PresentationFrame::~PresentationFrame() {
|
| }
|
|
|
| -void PresentationFrame::OnPresentationServiceDelegateDestroyed() const {
|
| - if (delegate_observer_)
|
| - delegate_observer_->OnDelegateDestroyed();
|
| -}
|
| -
|
| void PresentationFrame::OnPresentationSessionStarted(
|
| const content::PresentationSessionInfo& session,
|
| const MediaRoute& route) {
|
| @@ -458,10 +455,7 @@ PresentationFrameManager::PresentationFrameManager(
|
| DCHECK(router_);
|
| }
|
|
|
| -PresentationFrameManager::~PresentationFrameManager() {
|
| - for (auto& frame : presentation_frames_)
|
| - frame.second->OnPresentationServiceDelegateDestroyed();
|
| -}
|
| +PresentationFrameManager::~PresentationFrameManager() {}
|
|
|
| void PresentationFrameManager::OnPresentationSessionStarted(
|
| const RenderFrameHostId& render_frame_host_id,
|
| @@ -568,22 +562,6 @@ void PresentationFrameManager::SetDefaultPresentationUrls(
|
| }
|
| }
|
|
|
| -void PresentationFrameManager::AddDelegateObserver(
|
| - const RenderFrameHostId& render_frame_host_id,
|
| - DelegateObserver* observer) {
|
| - auto* presentation_frame = GetOrAddPresentationFrame(render_frame_host_id);
|
| - presentation_frame->set_delegate_observer(observer);
|
| -}
|
| -
|
| -void PresentationFrameManager::RemoveDelegateObserver(
|
| - const RenderFrameHostId& render_frame_host_id) {
|
| - const auto it = presentation_frames_.find(render_frame_host_id);
|
| - if (it != presentation_frames_.end()) {
|
| - it->second->set_delegate_observer(nullptr);
|
| - presentation_frames_.erase(it);
|
| - }
|
| -}
|
| -
|
| void PresentationFrameManager::AddDefaultPresentationRequestObserver(
|
| PresentationServiceDelegateImpl::DefaultPresentationRequestObserver*
|
| observer) {
|
| @@ -688,14 +666,12 @@ void PresentationServiceDelegateImpl::AddObserver(int render_process_id,
|
| int render_frame_id,
|
| DelegateObserver* observer) {
|
| DCHECK(observer);
|
| - frame_manager_->AddDelegateObserver(
|
| - RenderFrameHostId(render_process_id, render_frame_id), observer);
|
| + observers_.AddObserver(render_process_id, render_frame_id, observer);
|
| }
|
|
|
| void PresentationServiceDelegateImpl::RemoveObserver(int render_process_id,
|
| int render_frame_id) {
|
| - frame_manager_->RemoveDelegateObserver(
|
| - RenderFrameHostId(render_process_id, render_frame_id));
|
| + observers_.RemoveObserver(render_process_id, render_frame_id);
|
| }
|
|
|
| bool PresentationServiceDelegateImpl::AddScreenAvailabilityListener(
|
| @@ -935,6 +911,22 @@ void PresentationServiceDelegateImpl::ListenForConnectionStateChange(
|
| state_changed_cb);
|
| }
|
|
|
| +void PresentationServiceDelegateImpl::ConnectToOffscreenPresentation(
|
| + int render_process_id,
|
| + int render_frame_id,
|
| + const content::PresentationSessionInfo& session,
|
| + content::PresentationConnectionPtr controller_connection_ptr,
|
| + content::PresentationConnectionRequest receiver_connection_request) {
|
| + RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id);
|
| + auto* const offscreen_presentation_manager =
|
| + OffscreenPresentationManagerFactory::GetOrCreateForWebContents(
|
| + web_contents_);
|
| + offscreen_presentation_manager->RegisterOffscreenPresentationController(
|
| + session.presentation_id, session.presentation_url, render_frame_host_id,
|
| + std::move(controller_connection_ptr),
|
| + std::move(receiver_connection_request));
|
| +}
|
| +
|
| void PresentationServiceDelegateImpl::OnRouteResponse(
|
| const PresentationRequest& presentation_request,
|
| const RouteRequestResult& result) {
|
|
|