diff options
author | jrummell@chromium.org <jrummell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-07 08:54:25 +0000 |
---|---|---|
committer | jrummell@chromium.org <jrummell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-07 08:54:25 +0000 |
commit | 0dbea5feff930c613725b56c11ab9663bfe949c5 (patch) | |
tree | bfbe08b3d3cfa12e6ce402b83c986f5a41c7033b /ppapi/proxy/ppp_content_decryptor_private_proxy.cc | |
parent | c29f10f1305b954d7629a05cf1cc59e56b482cf1 (diff) | |
download | chromium_src-0dbea5feff930c613725b56c11ab9663bfe949c5.zip chromium_src-0dbea5feff930c613725b56c11ab9663bfe949c5.tar.gz chromium_src-0dbea5feff930c613725b56c11ab9663bfe949c5.tar.bz2 |
Add Promises for EME (Chromium side)
Now that the EME-WD spec has changed to specify promises, implement
them on the Chromium side. They currently get converted back to
events before passing them to blink:: until the blink interface gets
changed.
Additional changes in this CL:
1. Pass a reference to the promise though PPAPI.
2. Roll DEPS for CDM.h to include CDM_5.
3. Update cdm_adapter to use CDM_5 (in addition to existing CDM_4).
4. Change External Clear Key to use CDM_5.
5. Since CDM_5 references sessions by the actual session id (a string,
web_session_id), switch to using it rather than the previously used
session_id (which is an integer, and used as a reference).
BUG=358271
TEST=all existing encrypted media layout and browser tests pass
Review URL: https://codereview.chromium.org/265993002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@275656 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/proxy/ppp_content_decryptor_private_proxy.cc')
-rw-r--r-- | ppapi/proxy/ppp_content_decryptor_private_proxy.cc | 82 |
1 files changed, 51 insertions, 31 deletions
diff --git a/ppapi/proxy/ppp_content_decryptor_private_proxy.cc b/ppapi/proxy/ppp_content_decryptor_private_proxy.cc index 1058a2e..eee3871 100644 --- a/ppapi/proxy/ppp_content_decryptor_private_proxy.cc +++ b/ppapi/proxy/ppp_content_decryptor_private_proxy.cc @@ -125,9 +125,10 @@ void Initialize(PP_Instance instance, } void CreateSession(PP_Instance instance, - uint32_t session_id, - PP_Var type, - PP_Var init_data) { + uint32_t promise_id, + PP_Var init_data_type, + PP_Var init_data, + PP_SessionType session_type) { HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance); if (!dispatcher) { NOTREACHED(); @@ -137,13 +138,14 @@ void CreateSession(PP_Instance instance, dispatcher->Send(new PpapiMsg_PPPContentDecryptor_CreateSession( API_ID_PPP_CONTENT_DECRYPTOR_PRIVATE, instance, - session_id, - SerializedVarSendInput(dispatcher, type), - SerializedVarSendInput(dispatcher, init_data))); + promise_id, + SerializedVarSendInput(dispatcher, init_data_type), + SerializedVarSendInput(dispatcher, init_data), + session_type)); } void LoadSession(PP_Instance instance, - uint32_t session_id, + uint32_t promise_id, PP_Var web_session_id) { HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance); if (!dispatcher) { @@ -154,11 +156,14 @@ void LoadSession(PP_Instance instance, dispatcher->Send(new PpapiMsg_PPPContentDecryptor_LoadSession( API_ID_PPP_CONTENT_DECRYPTOR_PRIVATE, instance, - session_id, + promise_id, SerializedVarSendInput(dispatcher, web_session_id))); } -void UpdateSession(PP_Instance instance, uint32_t session_id, PP_Var response) { +void UpdateSession(PP_Instance instance, + uint32_t promise_id, + PP_Var web_session_id, + PP_Var response) { HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance); if (!dispatcher) { NOTREACHED(); @@ -168,11 +173,14 @@ void UpdateSession(PP_Instance instance, uint32_t session_id, PP_Var response) { dispatcher->Send(new PpapiMsg_PPPContentDecryptor_UpdateSession( API_ID_PPP_CONTENT_DECRYPTOR_PRIVATE, instance, - session_id, + promise_id, + SerializedVarSendInput(dispatcher, web_session_id), SerializedVarSendInput(dispatcher, response))); } -void ReleaseSession(PP_Instance instance, uint32_t session_id) { +void ReleaseSession(PP_Instance instance, + uint32_t promise_id, + PP_Var web_session_id) { HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance); if (!dispatcher) { NOTREACHED(); @@ -180,7 +188,10 @@ void ReleaseSession(PP_Instance instance, uint32_t session_id) { } dispatcher->Send(new PpapiMsg_PPPContentDecryptor_ReleaseSession( - API_ID_PPP_CONTENT_DECRYPTOR_PRIVATE, instance, session_id)); + API_ID_PPP_CONTENT_DECRYPTOR_PRIVATE, + instance, + promise_id, + SerializedVarSendInput(dispatcher, web_session_id))); } void Decrypt(PP_Instance instance, @@ -455,50 +466,59 @@ void PPP_ContentDecryptor_Private_Proxy::OnMsgInitialize( void PPP_ContentDecryptor_Private_Proxy::OnMsgCreateSession( PP_Instance instance, - uint32_t session_id, - SerializedVarReceiveInput type, - SerializedVarReceiveInput init_data) { + uint32_t promise_id, + SerializedVarReceiveInput init_data_type, + SerializedVarReceiveInput init_data, + PP_SessionType session_type) { if (ppp_decryptor_impl_) { - CallWhileUnlocked(ppp_decryptor_impl_->CreateSession, - instance, - session_id, - ExtractReceivedVarAndAddRef(dispatcher(), &type), - ExtractReceivedVarAndAddRef(dispatcher(), &init_data)); + CallWhileUnlocked( + ppp_decryptor_impl_->CreateSession, + instance, + promise_id, + ExtractReceivedVarAndAddRef(dispatcher(), &init_data_type), + ExtractReceivedVarAndAddRef(dispatcher(), &init_data), + session_type); } } void PPP_ContentDecryptor_Private_Proxy::OnMsgLoadSession( PP_Instance instance, - uint32_t session_id, + uint32_t promise_id, SerializedVarReceiveInput web_session_id) { if (ppp_decryptor_impl_) { CallWhileUnlocked( ppp_decryptor_impl_->LoadSession, instance, - session_id, + promise_id, ExtractReceivedVarAndAddRef(dispatcher(), &web_session_id)); } } void PPP_ContentDecryptor_Private_Proxy::OnMsgUpdateSession( PP_Instance instance, - uint32_t session_id, + uint32_t promise_id, + SerializedVarReceiveInput web_session_id, SerializedVarReceiveInput response) { if (ppp_decryptor_impl_) { - CallWhileUnlocked(ppp_decryptor_impl_->UpdateSession, - instance, - session_id, - ExtractReceivedVarAndAddRef(dispatcher(), &response)); + CallWhileUnlocked( + ppp_decryptor_impl_->UpdateSession, + instance, + promise_id, + ExtractReceivedVarAndAddRef(dispatcher(), &web_session_id), + ExtractReceivedVarAndAddRef(dispatcher(), &response)); } } void PPP_ContentDecryptor_Private_Proxy::OnMsgReleaseSession( PP_Instance instance, - uint32_t session_id) { + uint32_t promise_id, + SerializedVarReceiveInput web_session_id) { if (ppp_decryptor_impl_) { - CallWhileUnlocked(ppp_decryptor_impl_->ReleaseSession, - instance, - session_id); + CallWhileUnlocked( + ppp_decryptor_impl_->ReleaseSession, + instance, + promise_id, + ExtractReceivedVarAndAddRef(dispatcher(), &web_session_id)); } } |