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 SetPluginToHandleFindRequests(PP_Instance instance
) OVERRIDE
;
62 virtual void NumberOfFindResultsChanged(PP_Instance instance
,
64 PP_Bool final_result
) OVERRIDE
;
65 virtual void SelectedFindResultChanged(PP_Instance instance
,
66 int32_t index
) OVERRIDE
;
67 virtual void SetTickmarks(PP_Instance instance
,
68 const PP_Rect
* tickmarks
,
69 uint32_t count
) OVERRIDE
;
70 virtual PP_Bool
IsFullscreen(PP_Instance instance
) OVERRIDE
;
71 virtual PP_Bool
SetFullscreen(PP_Instance instance
,
72 PP_Bool fullscreen
) OVERRIDE
;
73 virtual PP_Bool
GetScreenSize(PP_Instance instance
,
74 PP_Size
* size
) OVERRIDE
;
75 virtual Resource
* GetSingletonResource(PP_Instance instance
,
76 SingletonResourceID id
) OVERRIDE
;
77 virtual int32_t RequestInputEvents(PP_Instance instance
,
78 uint32_t event_classes
) OVERRIDE
;
79 virtual int32_t RequestFilteringInputEvents(PP_Instance instance
,
80 uint32_t event_classes
) OVERRIDE
;
81 virtual void ClearInputEventRequest(PP_Instance instance
,
82 uint32_t event_classes
) OVERRIDE
;
83 virtual void ZoomChanged(PP_Instance instance
, double factor
) OVERRIDE
;
84 virtual void ZoomLimitsChanged(PP_Instance instance
,
85 double minimum_factor
,
86 double maximium_factor
) OVERRIDE
;
87 virtual void PostMessage(PP_Instance instance
, PP_Var message
) OVERRIDE
;
88 virtual PP_Bool
SetCursor(PP_Instance instance
,
89 PP_MouseCursor_Type type
,
91 const PP_Point
* hot_spot
) OVERRIDE
;
92 virtual int32_t LockMouse(PP_Instance instance
,
93 scoped_refptr
<TrackedCallback
> callback
) OVERRIDE
;
94 virtual void UnlockMouse(PP_Instance instance
) OVERRIDE
;
95 virtual void SetTextInputType(PP_Instance instance
,
96 PP_TextInput_Type type
) OVERRIDE
;
97 virtual void UpdateCaretPosition(PP_Instance instance
,
99 const PP_Rect
& bounding_box
) OVERRIDE
;
100 virtual void CancelCompositionText(PP_Instance instance
) OVERRIDE
;
101 virtual void SelectionChanged(PP_Instance instance
) OVERRIDE
;
102 virtual void UpdateSurroundingText(PP_Instance instance
,
105 uint32_t anchor
) OVERRIDE
;
106 virtual PP_Var
GetDocumentURL(PP_Instance instance
,
107 PP_URLComponents_Dev
* components
) OVERRIDE
;
108 #if !defined(OS_NACL)
109 virtual PP_Var
ResolveRelativeToDocument(
110 PP_Instance instance
,
112 PP_URLComponents_Dev
* components
) OVERRIDE
;
113 virtual PP_Bool
DocumentCanRequest(PP_Instance instance
, PP_Var url
) OVERRIDE
;
114 virtual PP_Bool
DocumentCanAccessDocument(PP_Instance instance
,
115 PP_Instance target
) OVERRIDE
;
116 virtual PP_Var
GetPluginInstanceURL(
117 PP_Instance instance
,
118 PP_URLComponents_Dev
* components
) OVERRIDE
;
119 virtual PP_Var
GetPluginReferrerURL(
120 PP_Instance instance
,
121 PP_URLComponents_Dev
* components
) OVERRIDE
;
122 virtual void SessionCreated(PP_Instance instance
,
124 PP_Var web_session_id
) OVERRIDE
;
125 virtual void SessionMessage(PP_Instance instance
,
128 PP_Var destination_url
) OVERRIDE
;
129 virtual void SessionReady(PP_Instance instance
, uint32_t session_id
) OVERRIDE
;
130 virtual void SessionClosed(PP_Instance instance
,
131 uint32_t session_id
) OVERRIDE
;
132 virtual void SessionError(PP_Instance instance
,
135 uint32_t system_code
) OVERRIDE
;
136 virtual void DeliverBlock(PP_Instance instance
,
137 PP_Resource decrypted_block
,
138 const PP_DecryptedBlockInfo
* block_info
) OVERRIDE
;
139 virtual void DecoderInitializeDone(PP_Instance instance
,
140 PP_DecryptorStreamType decoder_type
,
142 PP_Bool success
) OVERRIDE
;
143 virtual void DecoderDeinitializeDone(PP_Instance instance
,
144 PP_DecryptorStreamType decoder_type
,
145 uint32_t request_id
) OVERRIDE
;
146 virtual void DecoderResetDone(PP_Instance instance
,
147 PP_DecryptorStreamType decoder_type
,
148 uint32_t request_id
) OVERRIDE
;
149 virtual void DeliverFrame(PP_Instance instance
,
150 PP_Resource decrypted_frame
,
151 const PP_DecryptedFrameInfo
* frame_info
) OVERRIDE
;
152 virtual void DeliverSamples(
153 PP_Instance instance
,
154 PP_Resource audio_frames
,
155 const PP_DecryptedSampleInfo
* sample_info
) OVERRIDE
;
156 #endif // !defined(OS_NACL)
158 static const ApiID kApiID
= API_ID_PPB_INSTANCE
;
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
,
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
,
175 void OnHostMsgGetAudioHardwareOutputBufferSize(PP_Instance instance
,
177 void OnHostMsgGetDefaultCharSet(PP_Instance instance
,
178 SerializedVarReturnValue result
);
179 void OnHostMsgSetPluginToHandleFindRequests(PP_Instance instance
);
180 void OnHostMsgNumberOfFindResultsChanged(PP_Instance instance
,
182 PP_Bool final_result
);
183 void OnHostMsgSelectFindResultChanged(PP_Instance instance
,
185 void OnHostMsgSetTickmarks(PP_Instance instance
,
186 const std::vector
<PP_Rect
>& tickmarks
);
187 void OnHostMsgSetFullscreen(PP_Instance instance
,
190 void OnHostMsgGetScreenSize(PP_Instance instance
,
193 void OnHostMsgRequestInputEvents(PP_Instance instance
,
195 uint32_t event_classes
);
196 void OnHostMsgClearInputEvents(PP_Instance instance
,
197 uint32_t event_classes
);
198 void OnHostMsgPostMessage(PP_Instance instance
,
199 SerializedVarReceiveInput message
);
200 void OnHostMsgLockMouse(PP_Instance instance
);
201 void OnHostMsgUnlockMouse(PP_Instance instance
);
202 void OnHostMsgSetCursor(PP_Instance instance
,
204 const ppapi::HostResource
& custom_image
,
205 const PP_Point
& hot_spot
);
206 void OnHostMsgSetTextInputType(PP_Instance instance
, PP_TextInput_Type type
);
207 void OnHostMsgUpdateCaretPosition(PP_Instance instance
,
208 const PP_Rect
& caret
,
209 const PP_Rect
& bounding_box
);
210 void OnHostMsgCancelCompositionText(PP_Instance instance
);
211 void OnHostMsgUpdateSurroundingText(
212 PP_Instance instance
,
213 const std::string
& text
,
216 void OnHostMsgGetDocumentURL(PP_Instance instance
,
217 PP_URLComponents_Dev
* components
,
218 SerializedVarReturnValue result
);
220 #if !defined(OS_NACL)
221 void OnHostMsgResolveRelativeToDocument(PP_Instance instance
,
222 SerializedVarReceiveInput relative
,
223 SerializedVarReturnValue result
);
224 void OnHostMsgDocumentCanRequest(PP_Instance instance
,
225 SerializedVarReceiveInput url
,
227 void OnHostMsgDocumentCanAccessDocument(PP_Instance active
,
230 void OnHostMsgGetPluginInstanceURL(PP_Instance instance
,
231 SerializedVarReturnValue result
);
232 void OnHostMsgGetPluginReferrerURL(PP_Instance instance
,
233 SerializedVarReturnValue result
);
234 virtual void OnHostMsgSessionCreated(
235 PP_Instance instance
,
237 SerializedVarReceiveInput web_session_id
);
238 virtual void OnHostMsgSessionMessage(
239 PP_Instance instance
,
241 SerializedVarReceiveInput message
,
242 SerializedVarReceiveInput destination_url
);
243 virtual void OnHostMsgSessionReady(PP_Instance instance
, uint32_t session_id
);
244 virtual void OnHostMsgSessionClosed(PP_Instance instance
,
245 uint32_t session_id
);
246 virtual void OnHostMsgSessionError(PP_Instance instance
,
249 uint32_t system_code
);
250 virtual void OnHostMsgDecoderInitializeDone(
251 PP_Instance instance
,
252 PP_DecryptorStreamType decoder_type
,
255 virtual void OnHostMsgDecoderDeinitializeDone(
256 PP_Instance instance
,
257 PP_DecryptorStreamType decoder_type
,
258 uint32_t request_id
);
259 virtual void OnHostMsgDecoderResetDone(PP_Instance instance
,
260 PP_DecryptorStreamType decoder_type
,
261 uint32_t request_id
);
262 virtual void OnHostMsgDeliverBlock(PP_Instance instance
,
263 PP_Resource decrypted_block
,
264 const std::string
& serialized_block_info
);
265 virtual void OnHostMsgDeliverFrame(PP_Instance instance
,
266 PP_Resource decrypted_frame
,
267 const std::string
& serialized_block_info
);
268 virtual void OnHostMsgDeliverSamples(
269 PP_Instance instance
,
270 PP_Resource audio_frames
,
271 const std::string
& serialized_sample_info
);
272 #endif // !defined(OS_NACL)
274 // Host -> Plugin message handlers.
275 void OnPluginMsgMouseLockComplete(PP_Instance instance
, int32_t result
);
277 void MouseLockCompleteInHost(int32_t result
, PP_Instance instance
);
280 void CancelAnyPendingRequestSurroundingText(PP_Instance instance
);
282 ProxyCompletionCallbackFactory
<PPB_Instance_Proxy
> callback_factory_
;
288 #endif // PPAPI_PROXY_PPB_INSTANCE_PROXY_H_