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.
5 #ifndef PPAPI_PROXY_PPB_INSTANCE_PROXY_H_
6 #define PPAPI_PROXY_PPB_INSTANCE_PROXY_H_
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"
21 // Windows headers interfere with this file.
26 struct PP_DecryptedBlockInfo
;
27 struct PP_DecryptedFrameInfo
;
32 class SerializedVarReceiveInput
;
33 class SerializedVarOutParam
;
34 class SerializedVarReturnValue
;
36 class PPB_Instance_Proxy
: public InterfaceProxy
,
37 public PPB_Instance_Shared
{
39 PPB_Instance_Proxy(Dispatcher
* dispatcher
);
40 virtual ~PPB_Instance_Proxy();
42 // InterfaceProxy implementation.
43 virtual bool OnMessageReceived(const IPC::Message
& msg
);
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
,
55 PP_Var
* exception
) OVERRIDE
;
56 virtual uint32_t GetAudioHardwareOutputSampleRate(PP_Instance instance
)
58 virtual uint32_t GetAudioHardwareOutputBufferSize(PP_Instance instance
)
60 virtual PP_Var
GetDefaultCharSet(PP_Instance instance
) OVERRIDE
;
61 virtual void NumberOfFindResultsChanged(PP_Instance instance
,
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
,
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
,
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
,
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
,
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
,
120 PP_Var web_session_id
) OVERRIDE
;
121 virtual void SessionMessage(PP_Instance instance
,
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
,
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
,
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)
154 static const ApiID kApiID
= API_ID_PPB_INSTANCE
;
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
,
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
,
171 void OnHostMsgGetAudioHardwareOutputBufferSize(PP_Instance instance
,
173 void OnHostMsgGetDefaultCharSet(PP_Instance instance
,
174 SerializedVarReturnValue result
);
175 void OnHostMsgSetFullscreen(PP_Instance instance
,
178 void OnHostMsgGetScreenSize(PP_Instance instance
,
181 void OnHostMsgRequestInputEvents(PP_Instance instance
,
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
,
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
,
204 void OnHostMsgGetDocumentURL(PP_Instance instance
,
205 PP_URLComponents_Dev
* components
,
206 SerializedVarReturnValue result
);
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
,
215 void OnHostMsgDocumentCanAccessDocument(PP_Instance active
,
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
,
225 SerializedVarReceiveInput web_session_id
);
226 virtual void OnHostMsgSessionMessage(
227 PP_Instance instance
,
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
,
237 int32_t system_code
);
238 virtual void OnHostMsgDecoderInitializeDone(
239 PP_Instance instance
,
240 PP_DecryptorStreamType decoder_type
,
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)
262 // Host -> Plugin message handlers.
263 void OnPluginMsgMouseLockComplete(PP_Instance instance
, int32_t result
);
265 void MouseLockCompleteInHost(int32_t result
, PP_Instance instance
);
268 void CancelAnyPendingRequestSurroundingText(PP_Instance instance
);
270 ProxyCompletionCallbackFactory
<PPB_Instance_Proxy
> callback_factory_
;
276 #endif // PPAPI_PROXY_PPB_INSTANCE_PROXY_H_