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

Unified Diff: content/renderer/media/android/renderer_media_player_manager.cc

Issue 100323004: Update Android IPC messages to EME WD (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add constants for maximum sizes Created 7 years 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
« no previous file with comments | « content/renderer/media/android/renderer_media_player_manager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/android/renderer_media_player_manager.cc
diff --git a/content/renderer/media/android/renderer_media_player_manager.cc b/content/renderer/media/android/renderer_media_player_manager.cc
index f94185f5cad643aa7c48b599334265cce960937b..4767b17aaadb8bfcb37d217ef78ddb72987b119b 100644
--- a/content/renderer/media/android/renderer_media_player_manager.cc
+++ b/content/renderer/media/android/renderer_media_player_manager.cc
@@ -12,6 +12,13 @@
#include "content/renderer/media/android/webmediaplayer_android.h"
#include "ui/gfx/rect_f.h"
+// Maximum sizes for various EME message parameters. These are checks to
+// prevent unnecessarily large messages from being passed around, and the sizes
+// are somewhat arbitrary as the EME specification doesn't specify any limits.
+static const size_t kEmeWebSessionIdMaximum = 512;
+static const size_t kEmeMessageMaximum = 10240; // 10 KB
+static const size_t kEmeDestinationUrlMaximum = 2048; // 2 KB
+
namespace content {
RendererMediaPlayerManager::RendererMediaPlayerManager(RenderView* render_view)
@@ -57,11 +64,11 @@ bool RendererMediaPlayerManager::OnMessageReceived(const IPC::Message& msg) {
IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidExitFullscreen, OnDidExitFullscreen)
IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidMediaPlayerPlay, OnPlayerPlay)
IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidMediaPlayerPause, OnPlayerPause)
- // TODO(jrummell): Update IPC names for EME WD and add Closed.
- IPC_MESSAGE_HANDLER(MediaKeysMsg_KeyAdded, OnSessionReady)
- IPC_MESSAGE_HANDLER(MediaKeysMsg_KeyError, OnSessionError)
- IPC_MESSAGE_HANDLER(MediaKeysMsg_KeyMessage, OnSessionMessage)
- IPC_MESSAGE_HANDLER(MediaKeysMsg_SetSessionId, OnSessionCreated)
+ IPC_MESSAGE_HANDLER(MediaKeysMsg_SessionCreated, OnSessionCreated)
+ IPC_MESSAGE_HANDLER(MediaKeysMsg_SessionMessage, OnSessionMessage)
+ IPC_MESSAGE_HANDLER(MediaKeysMsg_SessionReady, OnSessionReady)
+ IPC_MESSAGE_HANDLER(MediaKeysMsg_SessionClosed, OnSessionClosed)
+ IPC_MESSAGE_HANDLER(MediaKeysMsg_SessionError, OnSessionError)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
@@ -233,26 +240,26 @@ void RendererMediaPlayerManager::InitializeCDM(int media_keys_id,
routing_id(), media_keys_id, uuid, frame_url));
}
-void RendererMediaPlayerManager::GenerateKeyRequest(
+void RendererMediaPlayerManager::CreateSession(
int media_keys_id,
uint32 session_id,
const std::string& type,
const std::vector<uint8>& init_data) {
- Send(new MediaKeysHostMsg_GenerateKeyRequest(
+ Send(new MediaKeysHostMsg_CreateSession(
routing_id(), media_keys_id, session_id, type, init_data));
}
-void RendererMediaPlayerManager::AddKey(int media_keys_id,
- uint32 session_id,
- const std::vector<uint8>& key,
- const std::vector<uint8>& init_data) {
- Send(new MediaKeysHostMsg_AddKey(
- routing_id(), media_keys_id, session_id, key, init_data));
+void RendererMediaPlayerManager::UpdateSession(
+ int media_keys_id,
+ uint32 session_id,
+ const std::vector<uint8>& response) {
+ Send(new MediaKeysHostMsg_UpdateSession(
+ routing_id(), media_keys_id, session_id, response));
}
-void RendererMediaPlayerManager::CancelKeyRequest(int media_keys_id,
- uint32 session_id) {
- Send(new MediaKeysHostMsg_CancelKeyRequest(
+void RendererMediaPlayerManager::ReleaseSession(int media_keys_id,
+ uint32 session_id) {
+ Send(new MediaKeysHostMsg_ReleaseSession(
routing_id(), media_keys_id, session_id));
}
@@ -260,6 +267,12 @@ void RendererMediaPlayerManager::OnSessionCreated(
int media_keys_id,
uint32 session_id,
const std::string& web_session_id) {
+ if (web_session_id.length() > kEmeWebSessionIdMaximum) {
+ OnSessionError(
+ media_keys_id, session_id, media::MediaKeys::kUnknownError, 0);
+ return;
+ }
+
ProxyMediaKeys* media_keys = GetMediaKeys(media_keys_id);
if (media_keys)
media_keys->OnSessionCreated(session_id, web_session_id);
@@ -270,6 +283,17 @@ void RendererMediaPlayerManager::OnSessionMessage(
uint32 session_id,
const std::vector<uint8>& message,
const std::string& destination_url) {
+ if (message.size() > kEmeMessageMaximum) {
+ OnSessionError(
+ media_keys_id, session_id, media::MediaKeys::kUnknownError, 0);
+ return;
+ }
+ if (destination_url.length() > kEmeDestinationUrlMaximum) {
+ OnSessionError(
+ media_keys_id, session_id, media::MediaKeys::kUnknownError, 0);
+ return;
+ }
+
ProxyMediaKeys* media_keys = GetMediaKeys(media_keys_id);
if (media_keys)
media_keys->OnSessionMessage(session_id, message, destination_url);
« no previous file with comments | « content/renderer/media/android/renderer_media_player_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698