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

Unified Diff: content/browser/media/android/browser_media_session_manager.cc

Issue 2252783004: Implement MediaSession (metadata) per frame [NOT READY, HAS DEPENDENCY] (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed comments Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
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 {

Powered by Google App Engine
This is Rietveld 408576698