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

Unified Diff: ppapi/proxy/ppb_instance_proxy.cc

Issue 496143002: Update Pepper interface for EME (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cdm_promise rebase Created 6 years, 4 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: ppapi/proxy/ppb_instance_proxy.cc
diff --git a/ppapi/proxy/ppb_instance_proxy.cc b/ppapi/proxy/ppb_instance_proxy.cc
index 2780022d605b2e13f7efa82dbb956e71ff575379..0bd5865219eda5c42ef985f8f8c5ef19e2dbb910 100644
--- a/ppapi/proxy/ppb_instance_proxy.cc
+++ b/ppapi/proxy/ppb_instance_proxy.cc
@@ -6,6 +6,7 @@
#include "base/memory/ref_counted.h"
#include "build/build_config.h"
+#include "media/base/limits.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/c/pp_time.h"
#include "ppapi/c/pp_var.h"
@@ -34,6 +35,7 @@
#include "ppapi/proxy/serialized_var.h"
#include "ppapi/proxy/truetype_font_singleton_resource.h"
#include "ppapi/proxy/uma_private_resource.h"
+#include "ppapi/shared_impl/array_var.h"
#include "ppapi/shared_impl/ppapi_globals.h"
#include "ppapi/shared_impl/ppb_url_util_shared.h"
#include "ppapi/shared_impl/ppb_view_shared.h"
@@ -179,10 +181,16 @@ bool PPB_Instance_Proxy::OnMessageReceived(const IPC::Message& msg) {
OnHostMsgPromiseResolved)
IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_PromiseResolvedWithSession,
OnHostMsgPromiseResolvedWithSession)
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_PromiseResolvedWithKeyIds,
+ OnHostMsgPromiseResolvedWithKeyIds)
IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_PromiseRejected,
OnHostMsgPromiseRejected)
IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_SessionMessage,
OnHostMsgSessionMessage)
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_SessionKeysChange,
+ OnHostMsgSessionKeysChange)
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_SessionExpirationChange,
+ OnHostMsgSessionExpirationChange)
IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_SessionReady,
OnHostMsgSessionReady)
IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_SessionClosed,
@@ -577,6 +585,35 @@ void PPB_Instance_Proxy::PromiseResolvedWithSession(PP_Instance instance,
SerializedVarSendInput(dispatcher(), web_session_id_var)));
}
+void PPB_Instance_Proxy::PromiseResolvedWithKeyIds(PP_Instance instance,
+ uint32 promise_id,
+ PP_Var key_ids_var) {
+ ArrayVar* key_ids_array = ArrayVar::FromPPVar(key_ids_var);
+ if (!key_ids_array ||
+ key_ids_array->GetLength() > media::limits::kMaxKeyIds) {
+ NOTREACHED();
+ return;
+ }
+
+ std::vector<std::vector<uint8_t> > key_ids;
+ for (size_t i = 0; i < key_ids_array->GetLength(); ++i) {
+ ArrayBufferVar* key_id = ArrayBufferVar::FromPPVar(key_ids_array->Get(i));
+ if (!key_id || key_id->ByteLength() < media::limits::kMinKeyIdLength ||
+ key_id->ByteLength() > media::limits::kMaxKeyIdLength) {
+ NOTREACHED();
+ continue;
+ }
+
+ const uint8_t* key_id_ptr = static_cast<const uint8_t*>(key_id->Map());
+ const uint32_t key_id_size = key_id->ByteLength();
+ std::vector<uint8_t> key_id_vector(key_id_ptr, key_id_ptr + key_id_size);
+ key_ids.push_back(key_id_vector);
+ }
+
+ dispatcher()->Send(new PpapiHostMsg_PPBInstance_PromiseResolvedWithKeyIds(
+ API_ID_PPB_INSTANCE, instance, promise_id, key_ids));
+}
+
void PPB_Instance_Proxy::PromiseRejected(PP_Instance instance,
uint32 promise_id,
PP_CdmExceptionCode exception_code,
@@ -603,6 +640,37 @@ void PPB_Instance_Proxy::SessionMessage(PP_Instance instance,
SerializedVarSendInput(dispatcher(), destination_url_var)));
}
+void PPB_Instance_Proxy::SessionKeysChange(PP_Instance instance,
+ PP_Var web_session_id_var,
+ PP_Bool has_additional_usable_key) {
+ StringVar* session_id = StringVar::FromPPVar(web_session_id_var);
+ if (!session_id ||
+ session_id->value().length() > media::limits::kMaxWebSessionIdLength) {
+ NOTREACHED();
+ return;
+ }
+
+ dispatcher()->Send(new PpapiHostMsg_PPBInstance_SessionKeysChange(
+ API_ID_PPB_INSTANCE,
+ instance,
+ session_id->value(),
+ has_additional_usable_key));
+}
+
+void PPB_Instance_Proxy::SessionExpirationChange(PP_Instance instance,
+ PP_Var web_session_id_var,
+ PP_Time new_expiry_time) {
+ StringVar* session_id = StringVar::FromPPVar(web_session_id_var);
+ if (!session_id ||
+ session_id->value().length() > media::limits::kMaxWebSessionIdLength) {
+ NOTREACHED();
+ return;
+ }
+
+ dispatcher()->Send(new PpapiHostMsg_PPBInstance_SessionExpirationChange(
+ API_ID_PPB_INSTANCE, instance, session_id->value(), new_expiry_time));
+}
+
void PPB_Instance_Proxy::SessionReady(PP_Instance instance,
PP_Var web_session_id_var) {
dispatcher()->Send(new PpapiHostMsg_PPBInstance_SessionReady(
@@ -1198,6 +1266,39 @@ void PPB_Instance_Proxy::OnHostMsgPromiseResolvedWithSession(
}
}
+void PPB_Instance_Proxy::OnHostMsgPromiseResolvedWithKeyIds(
+ PP_Instance instance,
+ uint32_t promise_id,
+ const std::vector<std::vector<uint8_t> >& key_ids) {
+ if (!dispatcher()->permissions().HasPermission(PERMISSION_PRIVATE))
+ return;
+ if (key_ids.size() > media::limits::kMaxKeyIds) {
+ NOTREACHED();
+ return;
+ }
+
+ scoped_refptr<ArrayVar> key_ids_array = new ArrayVar();
+ key_ids_array->SetLength(key_ids.size());
+ for (size_t i = 0; i < key_ids.size(); ++i) {
+ const std::vector<uint8_t>& entry = key_ids[i];
+ if (entry.size() < media::limits::kMinKeyIdLength ||
+ entry.size() > media::limits::kMaxKeyIdLength) {
+ NOTREACHED();
+ continue;
+ }
+ key_ids_array->Set(
+ i,
+ PpapiGlobals::Get()->GetVarTracker()->MakeArrayBufferPPVar(entry.size(),
+ &entry[0]));
+ }
+
+ EnterInstanceNoLock enter(instance);
+ if (enter.succeeded()) {
+ enter.functions()->PromiseResolvedWithKeyIds(
+ instance, promise_id, key_ids_array->GetPPVar());
dmichael (off chromium) 2014/09/04 21:17:11 GetPPVar increments the reference count, but you d
jrummell 2014/09/04 23:05:03 Done.
+ }
+}
+
void PPB_Instance_Proxy::OnHostMsgPromiseRejected(
PP_Instance instance,
uint32_t promise_id,
@@ -1232,6 +1333,34 @@ void PPB_Instance_Proxy::OnHostMsgSessionMessage(
}
}
+void PPB_Instance_Proxy::OnHostMsgSessionKeysChange(
+ PP_Instance instance,
+ const std::string& web_session_id,
+ PP_Bool has_additional_usable_key) {
+ if (!dispatcher()->permissions().HasPermission(PERMISSION_PRIVATE))
+ return;
+ EnterInstanceNoLock enter(instance);
+ if (enter.succeeded()) {
+ enter.functions()->SessionKeysChange(
+ instance,
+ StringVar::StringToPPVar(web_session_id),
dmichael (off chromium) 2014/09/04 21:17:11 Same problem here; StringToPPVar increments the re
jrummell 2014/09/04 23:05:03 Done.
+ has_additional_usable_key);
+ }
+}
+
+void PPB_Instance_Proxy::OnHostMsgSessionExpirationChange(
+ PP_Instance instance,
+ const std::string& web_session_id,
+ PP_Time new_expiry_time) {
+ if (!dispatcher()->permissions().HasPermission(PERMISSION_PRIVATE))
+ return;
+ EnterInstanceNoLock enter(instance);
+ if (enter.succeeded()) {
+ enter.functions()->SessionExpirationChange(
+ instance, StringVar::StringToPPVar(web_session_id), new_expiry_time);
dmichael (off chromium) 2014/09/04 21:17:11 ditto
jrummell 2014/09/04 23:05:03 Done.
+ }
+}
+
void PPB_Instance_Proxy::OnHostMsgSessionReady(
PP_Instance instance,
SerializedVarReceiveInput web_session_id) {

Powered by Google App Engine
This is Rietveld 408576698