Index: content/browser/media/media_web_contents_observer.cc |
diff --git a/content/browser/media/media_web_contents_observer.cc b/content/browser/media/media_web_contents_observer.cc |
index ef3f5dc9c9d5194480f0a5c99e351f872ac0491c..a2713aba92f61c5cfcd3a364c0f202c1ec312db7 100644 |
--- a/content/browser/media/media_web_contents_observer.cc |
+++ b/content/browser/media/media_web_contents_observer.cc |
@@ -10,6 +10,7 @@ |
#include "build/build_config.h" |
#include "content/browser/media/audible_metrics.h" |
#include "content/browser/media/audio_stream_monitor.h" |
+#include "content/browser/media/session/browser_media_session_manager.h" |
#include "content/browser/web_contents/web_contents_impl.h" |
#include "content/common/media/media_player_delegate_messages.h" |
#include "content/public/browser/render_frame_host.h" |
@@ -32,6 +33,25 @@ MediaWebContentsObserver::MediaWebContentsObserver(WebContents* web_contents) |
MediaWebContentsObserver::~MediaWebContentsObserver() {} |
+BrowserMediaSessionManager* |
+MediaWebContentsObserver::GetMediaSessionManager( |
+ RenderFrameHost* render_frame_host) { |
+ auto it = media_session_managers_.find(render_frame_host); |
+ if (it != media_session_managers_.end()) |
+ return it->second; |
+ |
+ BrowserMediaSessionManager* manager = |
+ new BrowserMediaSessionManager(render_frame_host); |
+ media_session_managers_.set(render_frame_host, base::WrapUnique(manager)); |
+ return manager; |
+} |
+ |
+void MediaWebContentsObserver::SetMediaSessionManagerForTest( |
+ RenderFrameHost* render_frame_host, |
+ std::unique_ptr<BrowserMediaSessionManager> manager) { |
+ media_session_managers_.set(render_frame_host, std::move(manager)); |
+} |
+ |
void MediaWebContentsObserver::WebContentsDestroyed() { |
g_audible_metrics.Get().UpdateAudibleWebContentsState(web_contents(), false); |
} |
@@ -40,6 +60,7 @@ void MediaWebContentsObserver::RenderFrameDeleted( |
RenderFrameHost* render_frame_host) { |
ClearPowerSaveBlockers(render_frame_host); |
session_controllers_manager_.RenderFrameDeleted(render_frame_host); |
+ media_session_managers_.erase(render_frame_host); |
} |
void MediaWebContentsObserver::MaybeUpdateAudibleState() { |