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_PPB_INSTANCE_PROXY_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_PROXY_PPB_INSTANCE_PROXY_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_instance.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_resource.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_var.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/proxy/interface_proxy.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/proxy/proxy_completion_callback_factory.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/shared_impl/host_resource.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/shared_impl/ppb_instance_shared.h"
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/shared_impl/singleton_resource_id.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/ppb_instance_api.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/utility/completion_callback_factory.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Windows headers interfere with this file.
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef PostMessage
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef PostMessage
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PP_DecryptedBlockInfo;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PP_DecryptedFrameInfo;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ppapi {
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace proxy {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SerializedVarReceiveInput;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SerializedVarOutParam;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SerializedVarReturnValue;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PPB_Instance_Proxy : public InterfaceProxy,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           public PPB_Instance_Shared {
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PPB_Instance_Proxy(Dispatcher* dispatcher);
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~PPB_Instance_Proxy();
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const Info* GetInfoPrivate();
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // InterfaceProxy implementation.
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool OnMessageReceived(const IPC::Message& msg);
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // PPB_Instance_API implementation.
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Bool BindGraphics(PP_Instance instance,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               PP_Resource device) OVERRIDE;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Bool IsFullFrame(PP_Instance instance) OVERRIDE;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const ViewData* GetViewData(PP_Instance instance) OVERRIDE;
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual PP_Bool FlashIsFullscreen(PP_Instance instance) OVERRIDE;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Var GetWindowObject(PP_Instance instance) OVERRIDE;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Var GetOwnerElementObject(PP_Instance instance) OVERRIDE;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Var ExecuteScript(PP_Instance instance,
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               PP_Var script,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               PP_Var* exception) OVERRIDE;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual uint32_t GetAudioHardwareOutputSampleRate(PP_Instance instance)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      OVERRIDE;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual uint32_t GetAudioHardwareOutputBufferSize(PP_Instance instance)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      OVERRIDE;
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Var GetDefaultCharSet(PP_Instance instance) OVERRIDE;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void NumberOfFindResultsChanged(PP_Instance instance,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          int32_t total,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          PP_Bool final_result) OVERRIDE;
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SelectedFindResultChanged(PP_Instance instance,
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         int32_t index) OVERRIDE;
68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual PP_Bool IsFullscreen(PP_Instance instance) OVERRIDE;
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Bool SetFullscreen(PP_Instance instance,
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                PP_Bool fullscreen) OVERRIDE;
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Bool GetScreenSize(PP_Instance instance,
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                PP_Size* size) OVERRIDE;
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual Resource* GetSingletonResource(PP_Instance instance,
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                         SingletonResourceID id) OVERRIDE;
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int32_t RequestInputEvents(PP_Instance instance,
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     uint32_t event_classes) OVERRIDE;
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int32_t RequestFilteringInputEvents(PP_Instance instance,
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                              uint32_t event_classes) OVERRIDE;
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ClearInputEventRequest(PP_Instance instance,
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      uint32_t event_classes) OVERRIDE;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ZoomChanged(PP_Instance instance, double factor) OVERRIDE;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ZoomLimitsChanged(PP_Instance instance,
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 double minimum_factor,
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 double maximium_factor) OVERRIDE;
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void PostMessage(PP_Instance instance, PP_Var message) OVERRIDE;
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Bool SetCursor(PP_Instance instance,
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            PP_MouseCursor_Type type,
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            PP_Resource image,
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const PP_Point* hot_spot) OVERRIDE;
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int32_t LockMouse(PP_Instance instance,
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            scoped_refptr<TrackedCallback> callback) OVERRIDE;
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UnlockMouse(PP_Instance instance) OVERRIDE;
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetTextInputType(PP_Instance instance,
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                PP_TextInput_Type type) OVERRIDE;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateCaretPosition(PP_Instance instance,
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   const PP_Rect& caret,
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   const PP_Rect& bounding_box) OVERRIDE;
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void CancelCompositionText(PP_Instance instance) OVERRIDE;
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SelectionChanged(PP_Instance instance) OVERRIDE;
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateSurroundingText(PP_Instance instance,
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     const char* text,
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     uint32_t caret,
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     uint32_t anchor) OVERRIDE;
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Var GetDocumentURL(PP_Instance instance,
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                PP_URLComponents_Dev* components) OVERRIDE;
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_NACL)
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Var ResolveRelativeToDocument(
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Instance instance,
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Var relative,
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_URLComponents_Dev* components) OVERRIDE;
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Bool DocumentCanRequest(PP_Instance instance, PP_Var url) OVERRIDE;
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Bool DocumentCanAccessDocument(PP_Instance instance,
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            PP_Instance target) OVERRIDE;
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Var GetPluginInstanceURL(
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Instance instance,
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_URLComponents_Dev* components) OVERRIDE;
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void NeedKey(PP_Instance instance,
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       PP_Var key_system,
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       PP_Var session_id,
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       PP_Var init_data) OVERRIDE;
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void KeyAdded(PP_Instance instance,
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_Var key_system,
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_Var session_id) OVERRIDE;
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void KeyMessage(PP_Instance instance,
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          PP_Var key_system,
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          PP_Var session_id,
1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                          PP_Var message,
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          PP_Var default_url) OVERRIDE;
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void KeyError(PP_Instance instance,
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_Var key_system,
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_Var session_id,
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        int32_t media_error,
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        int32_t system_code) OVERRIDE;
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DeliverBlock(PP_Instance instance,
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            PP_Resource decrypted_block,
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const PP_DecryptedBlockInfo* block_info) OVERRIDE;
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DecoderInitializeDone(PP_Instance instance,
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     PP_DecryptorStreamType decoder_type,
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     uint32_t request_id,
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     PP_Bool success) OVERRIDE;
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DecoderDeinitializeDone(PP_Instance instance,
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       PP_DecryptorStreamType decoder_type,
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       uint32_t request_id) OVERRIDE;
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DecoderResetDone(PP_Instance instance,
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                PP_DecryptorStreamType decoder_type,
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                uint32_t request_id) OVERRIDE;
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DeliverFrame(PP_Instance instance,
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            PP_Resource decrypted_frame,
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const PP_DecryptedFrameInfo* frame_info) OVERRIDE;
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DeliverSamples(PP_Instance instance,
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              PP_Resource audio_frames,
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const PP_DecryptedBlockInfo* block_info) OVERRIDE;
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // !defined(OS_NACL)
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const ApiID kApiID = API_ID_PPB_INSTANCE;
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Plugin -> Host message handlers.
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgGetWindowObject(PP_Instance instance,
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                SerializedVarReturnValue result);
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgGetOwnerElementObject(PP_Instance instance,
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      SerializedVarReturnValue result);
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgBindGraphics(PP_Instance instance,
1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                             PP_Resource device);
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgIsFullFrame(PP_Instance instance, PP_Bool* result);
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgExecuteScript(PP_Instance instance,
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              SerializedVarReceiveInput script,
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              SerializedVarOutParam out_exception,
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              SerializedVarReturnValue result);
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgGetAudioHardwareOutputSampleRate(PP_Instance instance,
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                 uint32_t *result);
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgGetAudioHardwareOutputBufferSize(PP_Instance instance,
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                 uint32_t *result);
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgGetDefaultCharSet(PP_Instance instance,
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  SerializedVarReturnValue result);
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgSetFullscreen(PP_Instance instance,
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              PP_Bool fullscreen,
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              PP_Bool* result);
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgGetScreenSize(PP_Instance instance,
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              PP_Bool* result,
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              PP_Size* size);
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgRequestInputEvents(PP_Instance instance,
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   bool is_filtering,
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   uint32_t event_classes);
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgClearInputEvents(PP_Instance instance,
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 uint32_t event_classes);
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgPostMessage(PP_Instance instance,
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            SerializedVarReceiveInput message);
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgLockMouse(PP_Instance instance);
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgUnlockMouse(PP_Instance instance);
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgSetCursor(PP_Instance instance,
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          int32_t type,
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          const ppapi::HostResource& custom_image,
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          const PP_Point& hot_spot);
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgSetTextInputType(PP_Instance instance, PP_TextInput_Type type);
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgUpdateCaretPosition(PP_Instance instance,
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    const PP_Rect& caret,
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    const PP_Rect& bounding_box);
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgCancelCompositionText(PP_Instance instance);
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgUpdateSurroundingText(
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Instance instance,
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& text,
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      uint32_t caret,
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      uint32_t anchor);
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgGetDocumentURL(PP_Instance instance,
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               PP_URLComponents_Dev* components,
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               SerializedVarReturnValue result);
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_NACL)
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgResolveRelativeToDocument(PP_Instance instance,
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          SerializedVarReceiveInput relative,
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          SerializedVarReturnValue result);
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgDocumentCanRequest(PP_Instance instance,
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   SerializedVarReceiveInput url,
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   PP_Bool* result);
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgDocumentCanAccessDocument(PP_Instance active,
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          PP_Instance target,
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          PP_Bool* result);
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnHostMsgGetPluginInstanceURL(PP_Instance instance,
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     SerializedVarReturnValue result);
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnHostMsgNeedKey(PP_Instance instance,
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                SerializedVarReceiveInput key_system,
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                SerializedVarReceiveInput session_id,
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                SerializedVarReceiveInput init_data);
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnHostMsgKeyAdded(PP_Instance instance,
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 SerializedVarReceiveInput key_system,
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 SerializedVarReceiveInput session_id);
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnHostMsgKeyMessage(PP_Instance instance,
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   SerializedVarReceiveInput key_system,
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   SerializedVarReceiveInput session_id,
2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                   SerializedVarReceiveInput message,
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   SerializedVarReceiveInput default_url);
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnHostMsgKeyError(PP_Instance instance,
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 SerializedVarReceiveInput key_system,
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 SerializedVarReceiveInput session_id,
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 int32_t media_error,
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 int32_t system_code);
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnHostMsgDecoderInitializeDone(
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Instance instance,
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_DecryptorStreamType decoder_type,
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      uint32_t request_id,
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Bool success);
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnHostMsgDecoderDeinitializeDone(
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Instance instance,
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_DecryptorStreamType decoder_type,
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      uint32_t request_id);
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnHostMsgDecoderResetDone(PP_Instance instance,
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         PP_DecryptorStreamType decoder_type,
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         uint32_t request_id);
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnHostMsgDeliverBlock(PP_Instance instance,
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     PP_Resource decrypted_block,
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     const std::string& serialized_block_info);
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnHostMsgDeliverFrame(PP_Instance instance,
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     PP_Resource decrypted_frame,
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     const std::string& serialized_block_info);
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnHostMsgDeliverSamples(
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Instance instance,
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Resource audio_frames,
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& serialized_block_info);
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // !defined(OS_NACL)
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Host -> Plugin message handlers.
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnPluginMsgMouseLockComplete(PP_Instance instance, int32_t result);
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void MouseLockCompleteInHost(int32_t result, PP_Instance instance);
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Other helpers.
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void CancelAnyPendingRequestSurroundingText(PP_Instance instance);
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ProxyCompletionCallbackFactory<PPB_Instance_Proxy> callback_factory_;
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace proxy
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ppapi
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // PPAPI_PROXY_PPB_INSTANCE_PROXY_H_
277