Index: ppapi/proxy/ppb_instance_proxy.cc |
diff --git a/ppapi/proxy/ppb_instance_proxy.cc b/ppapi/proxy/ppb_instance_proxy.cc |
index 1dfb897ca681e99acd45a7aea198da903fda2d19..32ee8b2dea7ce8a6d5bcf2c17656c735b4fdcc52 100644 |
--- a/ppapi/proxy/ppb_instance_proxy.cc |
+++ b/ppapi/proxy/ppb_instance_proxy.cc |
@@ -5,6 +5,7 @@ |
#include "ppapi/proxy/ppb_instance_proxy.h" |
#include "base/memory/ref_counted.h" |
+#include "base/stl_util.h" |
#include "build/build_config.h" |
#include "media/base/limits.h" |
#include "ppapi/c/pp_errors.h" |
@@ -182,8 +183,6 @@ 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, |
@@ -192,8 +191,6 @@ bool PPB_Instance_Proxy::OnMessageReceived(const IPC::Message& msg) { |
OnHostMsgSessionKeysChange) |
IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_SessionExpirationChange, |
OnHostMsgSessionExpirationChange) |
- IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_SessionReady, |
- OnHostMsgSessionReady) |
IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_SessionClosed, |
OnHostMsgSessionClosed) |
IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_SessionError, |
@@ -586,35 +583,6 @@ 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, |
@@ -631,19 +599,20 @@ void PPB_Instance_Proxy::PromiseRejected(PP_Instance instance, |
void PPB_Instance_Proxy::SessionMessage(PP_Instance instance, |
PP_Var web_session_id_var, |
- PP_Var message_var, |
- PP_Var destination_url_var) { |
+ PP_CdmMessageType message_type, |
+ PP_Var message_var) { |
dispatcher()->Send(new PpapiHostMsg_PPBInstance_SessionMessage( |
- API_ID_PPB_INSTANCE, |
- instance, |
- SerializedVarSendInput(dispatcher(), web_session_id_var), |
- SerializedVarSendInput(dispatcher(), message_var), |
- SerializedVarSendInput(dispatcher(), destination_url_var))); |
+ API_ID_PPB_INSTANCE, instance, |
+ SerializedVarSendInput(dispatcher(), web_session_id_var), message_type, |
+ SerializedVarSendInput(dispatcher(), message_var))); |
} |
-void PPB_Instance_Proxy::SessionKeysChange(PP_Instance instance, |
- PP_Var web_session_id_var, |
- PP_Bool has_additional_usable_key) { |
+void PPB_Instance_Proxy::SessionKeysChange( |
+ PP_Instance instance, |
+ PP_Var web_session_id_var, |
+ PP_Bool has_additional_usable_key, |
+ uint32_t key_count, |
+ const struct PP_KeyInformation key_information[]) { |
StringVar* session_id = StringVar::FromPPVar(web_session_id_var); |
if (!session_id || |
session_id->value().length() > media::limits::kMaxWebSessionIdLength) { |
@@ -651,11 +620,16 @@ void PPB_Instance_Proxy::SessionKeysChange(PP_Instance instance, |
return; |
} |
+ if (key_count > media::limits::kMaxKeyIds) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ |
dispatcher()->Send(new PpapiHostMsg_PPBInstance_SessionKeysChange( |
- API_ID_PPB_INSTANCE, |
- instance, |
- session_id->value(), |
- has_additional_usable_key)); |
+ API_ID_PPB_INSTANCE, instance, session_id->value(), |
+ has_additional_usable_key, |
+ std::vector<PP_KeyInformation>(key_information, |
+ key_information + key_count))); |
} |
void PPB_Instance_Proxy::SessionExpirationChange(PP_Instance instance, |
@@ -672,14 +646,6 @@ void PPB_Instance_Proxy::SessionExpirationChange(PP_Instance instance, |
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( |
- API_ID_PPB_INSTANCE, |
- instance, |
- SerializedVarSendInput(dispatcher(), web_session_id_var))); |
-} |
- |
void PPB_Instance_Proxy::SessionClosed(PP_Instance instance, |
PP_Var web_session_id_var) { |
dispatcher()->Send(new PpapiHostMsg_PPBInstance_SessionClosed( |
@@ -1286,40 +1252,6 @@ 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()) { |
- ScopedPPVar key_ids_var(ScopedPPVar::PassRef(), key_ids_array->GetPPVar()); |
- enter.functions()->PromiseResolvedWithKeyIds( |
- instance, promise_id, key_ids_var.get()); |
- } |
-} |
- |
void PPB_Instance_Proxy::OnHostMsgPromiseRejected( |
PP_Instance instance, |
uint32_t promise_id, |
@@ -1341,31 +1273,38 @@ void PPB_Instance_Proxy::OnHostMsgPromiseRejected( |
void PPB_Instance_Proxy::OnHostMsgSessionMessage( |
PP_Instance instance, |
SerializedVarReceiveInput web_session_id, |
- SerializedVarReceiveInput message, |
- SerializedVarReceiveInput destination_url) { |
+ PP_CdmMessageType message_type, |
+ SerializedVarReceiveInput message) { |
if (!dispatcher()->permissions().HasPermission(PERMISSION_PRIVATE)) |
return; |
EnterInstanceNoLock enter(instance); |
if (enter.succeeded()) { |
enter.functions()->SessionMessage(instance, |
web_session_id.Get(dispatcher()), |
- message.Get(dispatcher()), |
- destination_url.Get(dispatcher())); |
+ message_type, message.Get(dispatcher())); |
} |
} |
void PPB_Instance_Proxy::OnHostMsgSessionKeysChange( |
PP_Instance instance, |
const std::string& web_session_id, |
- PP_Bool has_additional_usable_key) { |
+ PP_Bool has_additional_usable_key, |
+ const std::vector<PP_KeyInformation>& key_information) { |
if (!dispatcher()->permissions().HasPermission(PERMISSION_PRIVATE)) |
return; |
+ |
+ if (key_information.size() > media::limits::kMaxKeyIds) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ |
EnterInstanceNoLock enter(instance); |
if (enter.succeeded()) { |
ScopedPPVar web_session_id_var(ScopedPPVar::PassRef(), |
StringVar::StringToPPVar(web_session_id)); |
enter.functions()->SessionKeysChange( |
- instance, web_session_id_var.get(), has_additional_usable_key); |
+ instance, web_session_id_var.get(), has_additional_usable_key, |
+ key_information.size(), vector_as_array(&key_information)); |
} |
} |
@@ -1384,17 +1323,6 @@ void PPB_Instance_Proxy::OnHostMsgSessionExpirationChange( |
} |
} |
-void PPB_Instance_Proxy::OnHostMsgSessionReady( |
- PP_Instance instance, |
- SerializedVarReceiveInput web_session_id) { |
- if (!dispatcher()->permissions().HasPermission(PERMISSION_PRIVATE)) |
- return; |
- EnterInstanceNoLock enter(instance); |
- if (enter.succeeded()) { |
- enter.functions()->SessionReady(instance, web_session_id.Get(dispatcher())); |
- } |
-} |
- |
void PPB_Instance_Proxy::OnHostMsgSessionClosed( |
PP_Instance instance, |
SerializedVarReceiveInput web_session_id) { |