ppb_instance_proxy.h revision 23730a6e56a168d1879203e4b3819bb36e3d8f1f
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 SetPluginToHandleFindRequests(PP_Instance instance) OVERRIDE; 62 virtual void NumberOfFindResultsChanged(PP_Instance instance, 63 int32_t total, 64 PP_Bool final_result) OVERRIDE; 65 virtual void SelectedFindResultChanged(PP_Instance instance, 66 int32_t index) OVERRIDE; 67 virtual PP_Bool IsFullscreen(PP_Instance instance) OVERRIDE; 68 virtual PP_Bool SetFullscreen(PP_Instance instance, 69 PP_Bool fullscreen) OVERRIDE; 70 virtual PP_Bool GetScreenSize(PP_Instance instance, 71 PP_Size* size) OVERRIDE; 72 virtual Resource* GetSingletonResource(PP_Instance instance, 73 SingletonResourceID id) OVERRIDE; 74 virtual int32_t RequestInputEvents(PP_Instance instance, 75 uint32_t event_classes) OVERRIDE; 76 virtual int32_t RequestFilteringInputEvents(PP_Instance instance, 77 uint32_t event_classes) OVERRIDE; 78 virtual void ClearInputEventRequest(PP_Instance instance, 79 uint32_t event_classes) OVERRIDE; 80 virtual void ZoomChanged(PP_Instance instance, double factor) OVERRIDE; 81 virtual void ZoomLimitsChanged(PP_Instance instance, 82 double minimum_factor, 83 double maximium_factor) OVERRIDE; 84 virtual void PostMessage(PP_Instance instance, PP_Var message) OVERRIDE; 85 virtual PP_Bool SetCursor(PP_Instance instance, 86 PP_MouseCursor_Type type, 87 PP_Resource image, 88 const PP_Point* hot_spot) OVERRIDE; 89 virtual int32_t LockMouse(PP_Instance instance, 90 scoped_refptr<TrackedCallback> callback) OVERRIDE; 91 virtual void UnlockMouse(PP_Instance instance) OVERRIDE; 92 virtual void SetTextInputType(PP_Instance instance, 93 PP_TextInput_Type type) OVERRIDE; 94 virtual void UpdateCaretPosition(PP_Instance instance, 95 const PP_Rect& caret, 96 const PP_Rect& bounding_box) OVERRIDE; 97 virtual void CancelCompositionText(PP_Instance instance) OVERRIDE; 98 virtual void SelectionChanged(PP_Instance instance) OVERRIDE; 99 virtual void UpdateSurroundingText(PP_Instance instance, 100 const char* text, 101 uint32_t caret, 102 uint32_t anchor) OVERRIDE; 103 virtual PP_Var GetDocumentURL(PP_Instance instance, 104 PP_URLComponents_Dev* components) OVERRIDE; 105#if !defined(OS_NACL) 106 virtual PP_Var ResolveRelativeToDocument( 107 PP_Instance instance, 108 PP_Var relative, 109 PP_URLComponents_Dev* components) OVERRIDE; 110 virtual PP_Bool DocumentCanRequest(PP_Instance instance, PP_Var url) OVERRIDE; 111 virtual PP_Bool DocumentCanAccessDocument(PP_Instance instance, 112 PP_Instance target) OVERRIDE; 113 virtual PP_Var GetPluginInstanceURL( 114 PP_Instance instance, 115 PP_URLComponents_Dev* components) OVERRIDE; 116 virtual PP_Var GetPluginReferrerURL( 117 PP_Instance instance, 118 PP_URLComponents_Dev* components) OVERRIDE; 119 virtual void SessionCreated(PP_Instance instance, 120 uint32_t session_id, 121 PP_Var web_session_id) OVERRIDE; 122 virtual void SessionMessage(PP_Instance instance, 123 uint32_t session_id, 124 PP_Var message, 125 PP_Var destination_url) OVERRIDE; 126 virtual void SessionReady(PP_Instance instance, uint32_t session_id) OVERRIDE; 127 virtual void SessionClosed(PP_Instance instance, 128 uint32_t session_id) OVERRIDE; 129 virtual void SessionError(PP_Instance instance, 130 uint32_t session_id, 131 int32_t media_error, 132 uint32_t system_code) OVERRIDE; 133 virtual void DeliverBlock(PP_Instance instance, 134 PP_Resource decrypted_block, 135 const PP_DecryptedBlockInfo* block_info) OVERRIDE; 136 virtual void DecoderInitializeDone(PP_Instance instance, 137 PP_DecryptorStreamType decoder_type, 138 uint32_t request_id, 139 PP_Bool success) OVERRIDE; 140 virtual void DecoderDeinitializeDone(PP_Instance instance, 141 PP_DecryptorStreamType decoder_type, 142 uint32_t request_id) OVERRIDE; 143 virtual void DecoderResetDone(PP_Instance instance, 144 PP_DecryptorStreamType decoder_type, 145 uint32_t request_id) OVERRIDE; 146 virtual void DeliverFrame(PP_Instance instance, 147 PP_Resource decrypted_frame, 148 const PP_DecryptedFrameInfo* frame_info) OVERRIDE; 149 virtual void DeliverSamples( 150 PP_Instance instance, 151 PP_Resource audio_frames, 152 const PP_DecryptedSampleInfo* sample_info) OVERRIDE; 153#endif // !defined(OS_NACL) 154 155 static const ApiID kApiID = API_ID_PPB_INSTANCE; 156 157 private: 158 // Plugin -> Host message handlers. 159 void OnHostMsgGetWindowObject(PP_Instance instance, 160 SerializedVarReturnValue result); 161 void OnHostMsgGetOwnerElementObject(PP_Instance instance, 162 SerializedVarReturnValue result); 163 void OnHostMsgBindGraphics(PP_Instance instance, 164 PP_Resource device); 165 void OnHostMsgIsFullFrame(PP_Instance instance, PP_Bool* result); 166 void OnHostMsgExecuteScript(PP_Instance instance, 167 SerializedVarReceiveInput script, 168 SerializedVarOutParam out_exception, 169 SerializedVarReturnValue result); 170 void OnHostMsgGetAudioHardwareOutputSampleRate(PP_Instance instance, 171 uint32_t *result); 172 void OnHostMsgGetAudioHardwareOutputBufferSize(PP_Instance instance, 173 uint32_t *result); 174 void OnHostMsgGetDefaultCharSet(PP_Instance instance, 175 SerializedVarReturnValue result); 176 void OnHostMsgSetPluginToHandleFindRequests(PP_Instance instance); 177 void OnHostMsgNumberOfFindResultsChanged(PP_Instance instance, 178 int32_t total, 179 PP_Bool final_result); 180 void OnHostMsgSelectFindResultChanged(PP_Instance instance, 181 int32_t index); 182 void OnHostMsgSetFullscreen(PP_Instance instance, 183 PP_Bool fullscreen, 184 PP_Bool* result); 185 void OnHostMsgGetScreenSize(PP_Instance instance, 186 PP_Bool* result, 187 PP_Size* size); 188 void OnHostMsgRequestInputEvents(PP_Instance instance, 189 bool is_filtering, 190 uint32_t event_classes); 191 void OnHostMsgClearInputEvents(PP_Instance instance, 192 uint32_t event_classes); 193 void OnHostMsgPostMessage(PP_Instance instance, 194 SerializedVarReceiveInput message); 195 void OnHostMsgLockMouse(PP_Instance instance); 196 void OnHostMsgUnlockMouse(PP_Instance instance); 197 void OnHostMsgSetCursor(PP_Instance instance, 198 int32_t type, 199 const ppapi::HostResource& custom_image, 200 const PP_Point& hot_spot); 201 void OnHostMsgSetTextInputType(PP_Instance instance, PP_TextInput_Type type); 202 void OnHostMsgUpdateCaretPosition(PP_Instance instance, 203 const PP_Rect& caret, 204 const PP_Rect& bounding_box); 205 void OnHostMsgCancelCompositionText(PP_Instance instance); 206 void OnHostMsgUpdateSurroundingText( 207 PP_Instance instance, 208 const std::string& text, 209 uint32_t caret, 210 uint32_t anchor); 211 void OnHostMsgGetDocumentURL(PP_Instance instance, 212 PP_URLComponents_Dev* components, 213 SerializedVarReturnValue result); 214 215#if !defined(OS_NACL) 216 void OnHostMsgResolveRelativeToDocument(PP_Instance instance, 217 SerializedVarReceiveInput relative, 218 SerializedVarReturnValue result); 219 void OnHostMsgDocumentCanRequest(PP_Instance instance, 220 SerializedVarReceiveInput url, 221 PP_Bool* result); 222 void OnHostMsgDocumentCanAccessDocument(PP_Instance active, 223 PP_Instance target, 224 PP_Bool* result); 225 void OnHostMsgGetPluginInstanceURL(PP_Instance instance, 226 SerializedVarReturnValue result); 227 void OnHostMsgGetPluginReferrerURL(PP_Instance instance, 228 SerializedVarReturnValue result); 229 virtual void OnHostMsgSessionCreated( 230 PP_Instance instance, 231 uint32_t session_id, 232 SerializedVarReceiveInput web_session_id); 233 virtual void OnHostMsgSessionMessage( 234 PP_Instance instance, 235 uint32_t session_id, 236 SerializedVarReceiveInput message, 237 SerializedVarReceiveInput destination_url); 238 virtual void OnHostMsgSessionReady(PP_Instance instance, uint32_t session_id); 239 virtual void OnHostMsgSessionClosed(PP_Instance instance, 240 uint32_t session_id); 241 virtual void OnHostMsgSessionError(PP_Instance instance, 242 uint32_t session_id, 243 int32_t media_error, 244 uint32_t system_code); 245 virtual void OnHostMsgDecoderInitializeDone( 246 PP_Instance instance, 247 PP_DecryptorStreamType decoder_type, 248 uint32_t request_id, 249 PP_Bool success); 250 virtual void OnHostMsgDecoderDeinitializeDone( 251 PP_Instance instance, 252 PP_DecryptorStreamType decoder_type, 253 uint32_t request_id); 254 virtual void OnHostMsgDecoderResetDone(PP_Instance instance, 255 PP_DecryptorStreamType decoder_type, 256 uint32_t request_id); 257 virtual void OnHostMsgDeliverBlock(PP_Instance instance, 258 PP_Resource decrypted_block, 259 const std::string& serialized_block_info); 260 virtual void OnHostMsgDeliverFrame(PP_Instance instance, 261 PP_Resource decrypted_frame, 262 const std::string& serialized_block_info); 263 virtual void OnHostMsgDeliverSamples( 264 PP_Instance instance, 265 PP_Resource audio_frames, 266 const std::string& serialized_sample_info); 267#endif // !defined(OS_NACL) 268 269 // Host -> Plugin message handlers. 270 void OnPluginMsgMouseLockComplete(PP_Instance instance, int32_t result); 271 272 void MouseLockCompleteInHost(int32_t result, PP_Instance instance); 273 274 // Other helpers. 275 void CancelAnyPendingRequestSurroundingText(PP_Instance instance); 276 277 ProxyCompletionCallbackFactory<PPB_Instance_Proxy> callback_factory_; 278}; 279 280} // namespace proxy 281} // namespace ppapi 282 283#endif // PPAPI_PROXY_PPB_INSTANCE_PROXY_H_ 284