Index: content/browser/media/session/media_session_impl.cc |
diff --git a/content/browser/media/session/media_session_impl.cc b/content/browser/media/session/media_session_impl.cc |
index 778ce3a09edcb4e5f1ad5da49a2b2049c5a5ff2f..dd2e1db067dc363fa7430afe2cb94ef57b74acdb 100644 |
--- a/content/browser/media/session/media_session_impl.cc |
+++ b/content/browser/media/session/media_session_impl.cc |
@@ -110,6 +110,11 @@ void MediaSessionImpl::WebContentsDestroyed() { |
AbandonSystemAudioFocusIfNeeded(); |
} |
+void MediaSessionImpl::RenderFrameDeleted(RenderFrameHost* rfh) { |
+ if (services_.count(rfh)) |
+ OnServiceDestroyed(services_[rfh]); |
+} |
+ |
void MediaSessionImpl::AddObserver(MediaSessionObserver* observer) { |
observers_.AddObserver(observer); |
} |
@@ -574,7 +579,11 @@ bool MediaSessionImpl::AddOneShotPlayer(MediaSessionPlayerObserver* observer, |
// MediaSessionService-related methods |
void MediaSessionImpl::OnServiceCreated(MediaSessionServiceImpl* service) { |
- services_[service->GetRenderFrameHost()] = service; |
+ RenderFrameHost* rfh = service->GetRenderFrameHost(); |
+ if (!rfh) |
+ return; |
+ |
+ services_[rfh] = service; |
UpdateRoutedService(); |
} |