ppb_instance_proxy.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef PPAPI_PROXY_PPB_INSTANCE_PROXY_H_ 6#define PPAPI_PROXY_PPB_INSTANCE_PROXY_H_ 7 8#include <string> 9 10#include "ppapi/c/pp_instance.h" 11#include "ppapi/c/pp_resource.h" 12#include "ppapi/c/pp_var.h" 13#include "ppapi/proxy/interface_proxy.h" 14#include "ppapi/proxy/proxy_completion_callback_factory.h" 15#include "ppapi/shared_impl/host_resource.h" 16#include "ppapi/shared_impl/ppb_instance_shared.h" 17#include "ppapi/shared_impl/singleton_resource_id.h" 18#include "ppapi/thunk/ppb_instance_api.h" 19#include "ppapi/utility/completion_callback_factory.h" 20 21// Windows headers interfere with this file. 22#ifdef PostMessage 23#undef PostMessage 24#endif 25 26struct PP_DecryptedBlockInfo; 27struct PP_DecryptedFrameInfo; 28 29namespace ppapi { 30namespace proxy { 31 32class SerializedVarReceiveInput; 33class SerializedVarOutParam; 34class SerializedVarReturnValue; 35 36class PPB_Instance_Proxy : public InterfaceProxy, 37 public PPB_Instance_Shared { 38 public: 39 PPB_Instance_Proxy(Dispatcher* dispatcher); 40 virtual ~PPB_Instance_Proxy(); 41 42 // InterfaceProxy implementation. 43 virtual bool OnMessageReceived(const IPC::Message& msg); 44 45 // PPB_Instance_API implementation. 46 virtual PP_Bool BindGraphics(PP_Instance instance, 47 PP_Resource device) OVERRIDE; 48 virtual PP_Bool IsFullFrame(PP_Instance instance) OVERRIDE; 49 virtual const ViewData* GetViewData(PP_Instance instance) OVERRIDE; 50 virtual PP_Bool FlashIsFullscreen(PP_Instance instance) OVERRIDE; 51 virtual PP_Var GetWindowObject(PP_Instance instance) OVERRIDE; 52 virtual PP_Var GetOwnerElementObject(PP_Instance instance) OVERRIDE; 53 virtual PP_Var ExecuteScript(PP_Instance instance, 54 PP_Var script, 55 PP_Var* exception) OVERRIDE; 56 virtual uint32_t GetAudioHardwareOutputSampleRate(PP_Instance instance) 57 OVERRIDE; 58 virtual uint32_t GetAudioHardwareOutputBufferSize(PP_Instance instance) 59 OVERRIDE; 60 virtual PP_Var GetDefaultCharSet(PP_Instance instance) OVERRIDE; 61 virtual void NumberOfFindResultsChanged(PP_Instance instance, 62 int32_t total, 63 PP_Bool final_result) OVERRIDE; 64 virtual void SelectedFindResultChanged(PP_Instance instance, 65 int32_t index) OVERRIDE; 66 virtual PP_Bool IsFullscreen(PP_Instance instance) OVERRIDE; 67 virtual PP_Bool SetFullscreen(PP_Instance instance, 68 PP_Bool fullscreen) OVERRIDE; 69 virtual PP_Bool GetScreenSize(PP_Instance instance, 70 PP_Size* size) OVERRIDE; 71 virtual Resource* GetSingletonResource(PP_Instance instance, 72 SingletonResourceID id) OVERRIDE; 73 virtual int32_t RequestInputEvents(PP_Instance instance, 74 uint32_t event_classes) OVERRIDE; 75 virtual int32_t RequestFilteringInputEvents(PP_Instance instance, 76 uint32_t event_classes) OVERRIDE; 77 virtual void ClearInputEventRequest(PP_Instance instance, 78 uint32_t event_classes) OVERRIDE; 79 virtual void ZoomChanged(PP_Instance instance, double factor) OVERRIDE; 80 virtual void ZoomLimitsChanged(PP_Instance instance, 81 double minimum_factor, 82 double maximium_factor) OVERRIDE; 83 virtual void PostMessage(PP_Instance instance, PP_Var message) OVERRIDE; 84 virtual PP_Bool SetCursor(PP_Instance instance, 85 PP_MouseCursor_Type type, 86 PP_Resource image, 87 const PP_Point* hot_spot) OVERRIDE; 88 virtual int32_t LockMouse(PP_Instance instance, 89 scoped_refptr<TrackedCallback> callback) OVERRIDE; 90 virtual void UnlockMouse(PP_Instance instance) OVERRIDE; 91 virtual void SetTextInputType(PP_Instance instance, 92 PP_TextInput_Type type) OVERRIDE; 93 virtual void UpdateCaretPosition(PP_Instance instance, 94 const PP_Rect& caret, 95 const PP_Rect& bounding_box) OVERRIDE; 96 virtual void CancelCompositionText(PP_Instance instance) OVERRIDE; 97 virtual void SelectionChanged(PP_Instance instance) OVERRIDE; 98 virtual void UpdateSurroundingText(PP_Instance instance, 99 const char* text, 100 uint32_t caret, 101 uint32_t anchor) OVERRIDE; 102 virtual PP_Var GetDocumentURL(PP_Instance instance, 103 PP_URLComponents_Dev* components) OVERRIDE; 104#if !defined(OS_NACL) 105 virtual PP_Var ResolveRelativeToDocument( 106 PP_Instance instance, 107 PP_Var relative, 108 PP_URLComponents_Dev* components) OVERRIDE; 109 virtual PP_Bool DocumentCanRequest(PP_Instance instance, PP_Var url) OVERRIDE; 110 virtual PP_Bool DocumentCanAccessDocument(PP_Instance instance, 111 PP_Instance target) OVERRIDE; 112 virtual PP_Var GetPluginInstanceURL( 113 PP_Instance instance, 114 PP_URLComponents_Dev* components) OVERRIDE; 115 virtual PP_Var GetPluginReferrerURL( 116 PP_Instance instance, 117 PP_URLComponents_Dev* components) OVERRIDE; 118 virtual void SessionCreated(PP_Instance instance, 119 uint32_t session_id, 120 PP_Var web_session_id) OVERRIDE; 121 virtual void SessionMessage(PP_Instance instance, 122 uint32_t session_id, 123 PP_Var message, 124 PP_Var destination_url) OVERRIDE; 125 virtual void SessionReady(PP_Instance instance, uint32_t session_id) OVERRIDE; 126 virtual void SessionClosed(PP_Instance instance, 127 uint32_t session_id) OVERRIDE; 128 virtual void SessionError(PP_Instance instance, 129 uint32_t session_id, 130 int32_t media_error, 131 int32_t system_code) OVERRIDE; 132 virtual void DeliverBlock(PP_Instance instance, 133 PP_Resource decrypted_block, 134 const PP_DecryptedBlockInfo* block_info) OVERRIDE; 135 virtual void DecoderInitializeDone(PP_Instance instance, 136 PP_DecryptorStreamType decoder_type, 137 uint32_t request_id, 138 PP_Bool success) OVERRIDE; 139 virtual void DecoderDeinitializeDone(PP_Instance instance, 140 PP_DecryptorStreamType decoder_type, 141 uint32_t request_id) OVERRIDE; 142 virtual void DecoderResetDone(PP_Instance instance, 143 PP_DecryptorStreamType decoder_type, 144 uint32_t request_id) OVERRIDE; 145 virtual void DeliverFrame(PP_Instance instance, 146 PP_Resource decrypted_frame, 147 const PP_DecryptedFrameInfo* frame_info) OVERRIDE; 148 virtual void DeliverSamples( 149 PP_Instance instance, 150 PP_Resource audio_frames, 151 const PP_DecryptedSampleInfo* sample_info) OVERRIDE; 152#endif // !defined(OS_NACL) 153 154 static const ApiID kApiID = API_ID_PPB_INSTANCE; 155 156 private: 157 // Plugin -> Host message handlers. 158 void OnHostMsgGetWindowObject(PP_Instance instance, 159 SerializedVarReturnValue result); 160 void OnHostMsgGetOwnerElementObject(PP_Instance instance, 161 SerializedVarReturnValue result); 162 void OnHostMsgBindGraphics(PP_Instance instance, 163 PP_Resource device); 164 void OnHostMsgIsFullFrame(PP_Instance instance, PP_Bool* result); 165 void OnHostMsgExecuteScript(PP_Instance instance, 166 SerializedVarReceiveInput script, 167 SerializedVarOutParam out_exception, 168 SerializedVarReturnValue result); 169 void OnHostMsgGetAudioHardwareOutputSampleRate(PP_Instance instance, 170 uint32_t *result); 171 void OnHostMsgGetAudioHardwareOutputBufferSize(PP_Instance instance, 172 uint32_t *result); 173 void OnHostMsgGetDefaultCharSet(PP_Instance instance, 174 SerializedVarReturnValue result); 175 void OnHostMsgSetFullscreen(PP_Instance instance, 176 PP_Bool fullscreen, 177 PP_Bool* result); 178 void OnHostMsgGetScreenSize(PP_Instance instance, 179 PP_Bool* result, 180 PP_Size* size); 181 void OnHostMsgRequestInputEvents(PP_Instance instance, 182 bool is_filtering, 183 uint32_t event_classes); 184 void OnHostMsgClearInputEvents(PP_Instance instance, 185 uint32_t event_classes); 186 void OnHostMsgPostMessage(PP_Instance instance, 187 SerializedVarReceiveInput message); 188 void OnHostMsgLockMouse(PP_Instance instance); 189 void OnHostMsgUnlockMouse(PP_Instance instance); 190 void OnHostMsgSetCursor(PP_Instance instance, 191 int32_t type, 192 const ppapi::HostResource& custom_image, 193 const PP_Point& hot_spot); 194 void OnHostMsgSetTextInputType(PP_Instance instance, PP_TextInput_Type type); 195 void OnHostMsgUpdateCaretPosition(PP_Instance instance, 196 const PP_Rect& caret, 197 const PP_Rect& bounding_box); 198 void OnHostMsgCancelCompositionText(PP_Instance instance); 199 void OnHostMsgUpdateSurroundingText( 200 PP_Instance instance, 201 const std::string& text, 202 uint32_t caret, 203 uint32_t anchor); 204 void OnHostMsgGetDocumentURL(PP_Instance instance, 205 PP_URLComponents_Dev* components, 206 SerializedVarReturnValue result); 207 208#if !defined(OS_NACL) 209 void OnHostMsgResolveRelativeToDocument(PP_Instance instance, 210 SerializedVarReceiveInput relative, 211 SerializedVarReturnValue result); 212 void OnHostMsgDocumentCanRequest(PP_Instance instance, 213 SerializedVarReceiveInput url, 214 PP_Bool* result); 215 void OnHostMsgDocumentCanAccessDocument(PP_Instance active, 216 PP_Instance target, 217 PP_Bool* result); 218 void OnHostMsgGetPluginInstanceURL(PP_Instance instance, 219 SerializedVarReturnValue result); 220 void OnHostMsgGetPluginReferrerURL(PP_Instance instance, 221 SerializedVarReturnValue result); 222 virtual void OnHostMsgSessionCreated( 223 PP_Instance instance, 224 uint32_t session_id, 225 SerializedVarReceiveInput web_session_id); 226 virtual void OnHostMsgSessionMessage( 227 PP_Instance instance, 228 uint32_t session_id, 229 SerializedVarReceiveInput message, 230 SerializedVarReceiveInput destination_url); 231 virtual void OnHostMsgSessionReady(PP_Instance instance, uint32_t session_id); 232 virtual void OnHostMsgSessionClosed(PP_Instance instance, 233 uint32_t session_id); 234 virtual void OnHostMsgSessionError(PP_Instance instance, 235 uint32_t session_id, 236 int32_t media_error, 237 int32_t system_code); 238 virtual void OnHostMsgDecoderInitializeDone( 239 PP_Instance instance, 240 PP_DecryptorStreamType decoder_type, 241 uint32_t request_id, 242 PP_Bool success); 243 virtual void OnHostMsgDecoderDeinitializeDone( 244 PP_Instance instance, 245 PP_DecryptorStreamType decoder_type, 246 uint32_t request_id); 247 virtual void OnHostMsgDecoderResetDone(PP_Instance instance, 248 PP_DecryptorStreamType decoder_type, 249 uint32_t request_id); 250 virtual void OnHostMsgDeliverBlock(PP_Instance instance, 251 PP_Resource decrypted_block, 252 const std::string& serialized_block_info); 253 virtual void OnHostMsgDeliverFrame(PP_Instance instance, 254 PP_Resource decrypted_frame, 255 const std::string& serialized_block_info); 256 virtual void OnHostMsgDeliverSamples( 257 PP_Instance instance, 258 PP_Resource audio_frames, 259 const std::string& serialized_sample_info); 260#endif // !defined(OS_NACL) 261 262 // Host -> Plugin message handlers. 263 void OnPluginMsgMouseLockComplete(PP_Instance instance, int32_t result); 264 265 void MouseLockCompleteInHost(int32_t result, PP_Instance instance); 266 267 // Other helpers. 268 void CancelAnyPendingRequestSurroundingText(PP_Instance instance); 269 270 ProxyCompletionCallbackFactory<PPB_Instance_Proxy> callback_factory_; 271}; 272 273} // namespace proxy 274} // namespace ppapi 275 276#endif // PPAPI_PROXY_PPB_INSTANCE_PROXY_H_ 277