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..1ce090fc2829f23eeafd5be8b0b5bc1823e1c443 100644 |
--- a/content/browser/media/android/browser_media_session_manager.cc |
+++ b/content/browser/media/android/browser_media_session_manager.cc |
@@ -11,13 +11,20 @@ |
#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; |
+ |
+const base::Optional<MediaMetadata>& |
+BrowserMediaSessionManager::media_metadata() const { |
+ return media_metadata_; |
whywhat
2016/09/13 16:23:26
nit: this is allowed to be inlined in the header I
Zhiqiang Zhang (Slow)
2016/09/13 18:51:52
Done.
|
+} |
void BrowserMediaSessionManager::OnActivate(int session_id, int request_id) { |
NOTIMPLEMENTED(); |
@@ -32,6 +39,12 @@ void BrowserMediaSessionManager::OnDeactivate(int session_id, int request_id) { |
void BrowserMediaSessionManager::OnSetMetadata( |
int session_id, |
const base::Optional<MediaMetadata>& insecure_metadata) { |
whywhat
2016/09/13 16:23:26
nit: the declaration of the method has this named
Zhiqiang Zhang (Slow)
2016/09/13 18:51:52
Done. Updated the header file.
|
+ // Non-top-level frames should not receive metadata. |
+ if (render_frame_host_->GetParent()) { |
+ render_frame_host_->GetProcess()->ShutdownForBadMessage(); |
whywhat
2016/09/13 16:23:26
This is a preventative measure against p0wned rend
Zhiqiang Zhang (Slow)
2016/09/13 17:15:56
There are sanity check and sanitizing when the ren
|
+ 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 +53,8 @@ void BrowserMediaSessionManager::OnSetMetadata( |
return; |
} |
- NOTIMPLEMENTED(); |
+ media_metadata_ = insecure_metadata; |
+ contents_->OnMediaSessionStateChanged(); |
} |
int BrowserMediaSessionManager::GetRoutingID() const { |