15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// From private/ppb_content_decryptor_private.idl,
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci//   modified Mon Aug 25 13:52:39 2014.
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/pp_errors.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/private/ppb_content_decryptor_private.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/shared_impl/tracked_callback.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/enter.h"
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/thunk/ppapi_thunk_export.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ppapi {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace thunk {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void PromiseResolved(PP_Instance instance, uint32_t promise_id) {
20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  VLOG(4) << "PPB_ContentDecryptor_Private::PromiseResolved()";
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnterInstance enter(instance);
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (enter.failed())
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return;
24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  enter.functions()->PromiseResolved(instance, promise_id);
25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void PromiseResolvedWithSession(PP_Instance instance,
28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                uint32_t promise_id,
29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                struct PP_Var web_session_id) {
30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  VLOG(4) << "PPB_ContentDecryptor_Private::PromiseResolvedWithSession()";
31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EnterInstance enter(instance);
32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  if (enter.failed())
33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    return;
34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  enter.functions()->PromiseResolvedWithSession(instance,
35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                                promise_id,
36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                                web_session_id);
37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid PromiseResolvedWithKeyIds(PP_Instance instance,
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                               uint32_t promise_id,
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                               struct PP_Var key_ids_array) {
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  VLOG(4) << "PPB_ContentDecryptor_Private::PromiseResolvedWithKeyIds()";
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EnterInstance enter(instance);
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (enter.failed())
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return;
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  enter.functions()->PromiseResolvedWithKeyIds(instance,
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                               promise_id,
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                               key_ids_array);
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void PromiseRejected(PP_Instance instance,
52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                     uint32_t promise_id,
53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                     PP_CdmExceptionCode exception_code,
54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                     uint32_t system_code,
55f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                     struct PP_Var error_description) {
56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  VLOG(4) << "PPB_ContentDecryptor_Private::PromiseRejected()";
57f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EnterInstance enter(instance);
58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  if (enter.failed())
59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    return;
60f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  enter.functions()->PromiseRejected(instance,
61f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                     promise_id,
62f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                     exception_code,
63f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                     system_code,
64f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                     error_description);
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
67a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void SessionMessage(PP_Instance instance,
68f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                    struct PP_Var web_session_id,
69a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                    struct PP_Var message,
70a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                    struct PP_Var destination_url) {
71a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  VLOG(4) << "PPB_ContentDecryptor_Private::SessionMessage()";
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnterInstance enter(instance);
73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (enter.failed())
74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return;
75a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  enter.functions()->SessionMessage(instance,
76f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                    web_session_id,
77a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                    message,
78a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                    destination_url);
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid SessionKeysChange(PP_Instance instance,
821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                       struct PP_Var web_session_id,
831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                       PP_Bool has_additional_usable_key) {
841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  VLOG(4) << "PPB_ContentDecryptor_Private::SessionKeysChange()";
851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EnterInstance enter(instance);
861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (enter.failed())
871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return;
881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  enter.functions()->SessionKeysChange(instance,
891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                       web_session_id,
901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                       has_additional_usable_key);
911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid SessionExpirationChange(PP_Instance instance,
941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                             struct PP_Var web_session_id,
951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                             PP_Time new_expiry_time) {
961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  VLOG(4) << "PPB_ContentDecryptor_Private::SessionExpirationChange()";
971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EnterInstance enter(instance);
981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (enter.failed())
991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return;
1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  enter.functions()->SessionExpirationChange(instance,
1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                             web_session_id,
1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                             new_expiry_time);
1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
105f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void SessionReady(PP_Instance instance, struct PP_Var web_session_id) {
106a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  VLOG(4) << "PPB_ContentDecryptor_Private::SessionReady()";
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnterInstance enter(instance);
108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (enter.failed())
109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return;
110f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  enter.functions()->SessionReady(instance, web_session_id);
111f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
112f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
113f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void SessionClosed(PP_Instance instance, struct PP_Var web_session_id) {
114a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  VLOG(4) << "PPB_ContentDecryptor_Private::SessionClosed()";
115f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EnterInstance enter(instance);
116f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  if (enter.failed())
117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return;
118f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  enter.functions()->SessionClosed(instance, web_session_id);
119a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
120a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
121a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void SessionError(PP_Instance instance,
122f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                  struct PP_Var web_session_id,
123f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                  PP_CdmExceptionCode exception_code,
124f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                  uint32_t system_code,
125f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                  struct PP_Var error_description) {
126a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  VLOG(4) << "PPB_ContentDecryptor_Private::SessionError()";
127a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EnterInstance enter(instance);
128a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  if (enter.failed())
129a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return;
130a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  enter.functions()->SessionError(instance,
131f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                  web_session_id,
132f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                  exception_code,
133f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                  system_code,
134f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                  error_description);
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeliverBlock(PP_Instance instance,
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  PP_Resource decrypted_block,
1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                  const struct PP_DecryptedBlockInfo* decrypted_block_info) {
140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  VLOG(4) << "PPB_ContentDecryptor_Private::DeliverBlock()";
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnterInstance enter(instance);
142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (enter.failed())
143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return;
144c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  enter.functions()->DeliverBlock(instance,
145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                  decrypted_block,
146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                  decrypted_block_info);
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DecoderInitializeDone(PP_Instance instance,
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           PP_DecryptorStreamType decoder_type,
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           uint32_t request_id,
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           PP_Bool success) {
153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  VLOG(4) << "PPB_ContentDecryptor_Private::DecoderInitializeDone()";
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnterInstance enter(instance);
155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (enter.failed())
156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return;
157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  enter.functions()->DecoderInitializeDone(instance,
158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                           decoder_type,
159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                           request_id,
160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                           success);
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DecoderDeinitializeDone(PP_Instance instance,
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             PP_DecryptorStreamType decoder_type,
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             uint32_t request_id) {
166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  VLOG(4) << "PPB_ContentDecryptor_Private::DecoderDeinitializeDone()";
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnterInstance enter(instance);
168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (enter.failed())
169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return;
170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  enter.functions()->DecoderDeinitializeDone(instance,
171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                             decoder_type,
172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                             request_id);
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DecoderResetDone(PP_Instance instance,
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      PP_DecryptorStreamType decoder_type,
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      uint32_t request_id) {
178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  VLOG(4) << "PPB_ContentDecryptor_Private::DecoderResetDone()";
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnterInstance enter(instance);
180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (enter.failed())
181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return;
182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  enter.functions()->DecoderResetDone(instance, decoder_type, request_id);
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DeliverFrame(PP_Instance instance,
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  PP_Resource decrypted_frame,
1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                  const struct PP_DecryptedFrameInfo* decrypted_frame_info) {
188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  VLOG(4) << "PPB_ContentDecryptor_Private::DeliverFrame()";
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnterInstance enter(instance);
190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (enter.failed())
191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return;
192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  enter.functions()->DeliverFrame(instance,
193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                  decrypted_frame,
194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                  decrypted_frame_info);
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DeliverSamples(
1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PP_Instance instance,
1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PP_Resource audio_frames,
2001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    const struct PP_DecryptedSampleInfo* decrypted_sample_info) {
201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  VLOG(4) << "PPB_ContentDecryptor_Private::DeliverSamples()";
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnterInstance enter(instance);
203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (enter.failed())
204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return;
205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  enter.functions()->DeliverSamples(instance,
206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                    audio_frames,
2071e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                                    decrypted_sample_info);
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
210f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)const PPB_ContentDecryptor_Private_0_12
211f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    g_ppb_contentdecryptor_private_thunk_0_12 = {
212f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  &PromiseResolved,
213f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  &PromiseResolvedWithSession,
2141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  &PromiseResolvedWithKeyIds,
215f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  &PromiseRejected,
216a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  &SessionMessage,
2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  &SessionKeysChange,
2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  &SessionExpirationChange,
219a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  &SessionReady,
220a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  &SessionClosed,
221a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  &SessionError,
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &DeliverBlock,
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &DecoderInitializeDone,
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &DecoderDeinitializeDone,
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &DecoderResetDone,
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &DeliverFrame,
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &DeliverSamples
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
232f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)PPAPI_THUNK_EXPORT const PPB_ContentDecryptor_Private_0_12*
233f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    GetPPB_ContentDecryptor_Private_0_12_Thunk() {
234f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  return &g_ppb_contentdecryptor_private_thunk_0_12;
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace thunk
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ppapi
239