Index: content/browser/media/android/browser_media_session_manager.cc |
diff --git a/content/browser/media/android/browser_media_session_manager.cc b/content/browser/media/android/browser_media_session_manager.cc |
index dffee6cdfd7f3719977e6ae927251828a97bbfa6..6155d0b6f9d83667b1afb2e9320a8771df635a92 100644 |
--- a/content/browser/media/android/browser_media_session_manager.cc |
+++ b/content/browser/media/android/browser_media_session_manager.cc |
@@ -11,13 +11,15 @@ |
#include "content/common/media/media_session_messages_android.h" |
#include "content/public/browser/render_frame_host.h" |
#include "content/public/browser/render_process_host.h" |
-#include "content/public/common/media_metadata.h" |
namespace content { |
BrowserMediaSessionManager::BrowserMediaSessionManager( |
- RenderFrameHost* render_frame_host) |
- : render_frame_host_(render_frame_host) {} |
+ RenderFrameHost* render_frame_host, |
+ WebContentsImpl* contents) |
+ : render_frame_host_(render_frame_host), contents_(contents) {} |
+ |
+BrowserMediaSessionManager::~BrowserMediaSessionManager() = default; |
void BrowserMediaSessionManager::OnActivate(int session_id, int request_id) { |
NOTIMPLEMENTED(); |
@@ -32,6 +34,12 @@ void BrowserMediaSessionManager::OnDeactivate(int session_id, int request_id) { |
void BrowserMediaSessionManager::OnSetMetadata( |
int session_id, |
const base::Optional<MediaMetadata>& insecure_metadata) { |
+ // Non-top-level frames should not receive metadata. |
+ if (render_frame_host_->GetParent()) { |
+ render_frame_host_->GetProcess()->ShutdownForBadMessage(); |
+ return; |
+ } |
+ |
// When receiving a MediaMetadata, the browser process can't trust that it is |
// coming from a known and secure source. It must be processed accordingly. |
if (insecure_metadata.has_value() && |
@@ -40,7 +48,8 @@ void BrowserMediaSessionManager::OnSetMetadata( |
return; |
} |
- NOTIMPLEMENTED(); |
+ media_metadata_ = insecure_metadata; |
+ contents_->OnMediaSessionStateChanged(); |
} |
int BrowserMediaSessionManager::GetRoutingID() const { |