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)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_PROXY_PPP_CONTENT_DECRYPTOR_PRIVATE_PROXY_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_PROXY_PPP_CONTENT_DECRYPTOR_PRIVATE_PROXY_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <vector>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_instance.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/private/ppp_content_decryptor_private.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/proxy/interface_proxy.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/proxy/serialized_structs.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/shared_impl/host_resource.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ppapi {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace proxy {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SerializedVarReceiveInput;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PPP_ContentDecryptor_Private_Proxy : public InterfaceProxy {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  explicit PPP_ContentDecryptor_Private_Proxy(Dispatcher* dispatcher);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~PPP_ContentDecryptor_Private_Proxy();
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const PPP_ContentDecryptor_Private* GetProxyInterface();
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // InterfaceProxy implementation.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool OnMessageReceived(const IPC::Message& msg);
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Message handlers.
3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  void OnMsgInitialize(PP_Instance instance,
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                       SerializedVarReceiveInput key_system);
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void OnMsgSetServerCertificate(PP_Instance instance,
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                 uint32_t promise_id,
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                 std::vector<uint8_t> server_certificate);
39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void OnMsgCreateSession(PP_Instance instance,
40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                          uint32_t promise_id,
41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                          SerializedVarReceiveInput init_data_type,
42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                          SerializedVarReceiveInput init_data,
43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                          PP_SessionType session_type);
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void OnMsgLoadSession(PP_Instance instance,
45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                        uint32_t promise_id,
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                        SerializedVarReceiveInput web_session_id);
47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void OnMsgUpdateSession(PP_Instance instance,
48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                          uint32_t promise_id,
49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                          SerializedVarReceiveInput web_session_id,
50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                          SerializedVarReceiveInput response);
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void OnMsgCloseSession(PP_Instance instance,
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                         uint32_t promise_id,
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                         const std::string& web_session_id);
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void OnMsgRemoveSession(PP_Instance instance,
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                          uint32_t promise_id,
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                          const std::string& web_session_id);
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void OnMsgGetUsableKeyIds(PP_Instance instance,
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                            uint32_t promise_id,
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                            const std::string& web_session_id);
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgDecrypt(PP_Instance instance,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    const PPPDecryptor_Buffer& encrypted_buffer,
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    const std::string& serialized_encrypted_block_info);
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgInitializeAudioDecoder(
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Instance instance,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& decoder_config,
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const PPPDecryptor_Buffer& extra_data_buffer);
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgInitializeVideoDecoder(
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Instance instance,
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& decoder_config,
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const PPPDecryptor_Buffer& extra_data_buffer);
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgDeinitializeDecoder(PP_Instance instance,
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                PP_DecryptorStreamType decoder_type,
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                uint32_t request_id);
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgResetDecoder(PP_Instance instance,
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         PP_DecryptorStreamType decoder_type,
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         uint32_t request_id);
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgDecryptAndDecode(
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Instance instance,
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_DecryptorStreamType decoder_type,
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const PPPDecryptor_Buffer& encrypted_buffer,
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& serialized_encrypted_block_info);
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const PPP_ContentDecryptor_Private* ppp_decryptor_impl_;
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(PPP_ContentDecryptor_Private_Proxy);
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace proxy
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ppapi
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // PPAPI_PROXY_PPP_CONTENT_DECRYPTOR_PRIVATE_PROXY_H_
92