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