Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / ppapi / proxy / ppb_instance_proxy.h
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
26 struct PP_DecryptedBlockInfo;
27 struct PP_DecryptedFrameInfo;
28
29 namespace ppapi {
30 namespace proxy {
31
32 class SerializedVarReceiveInput;
33 class SerializedVarOutParam;
34 class SerializedVarReturnValue;
35
36 class 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 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,
90                             PP_Resource image,
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,
98                                    const PP_Rect& caret,
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,
103                                      const char* text,
104                                      uint32_t caret,
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,
111       PP_Var relative,
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,
123                               uint32_t session_id,
124                               PP_Var web_session_id) OVERRIDE;
125   virtual void SessionMessage(PP_Instance instance,
126                               uint32_t session_id,
127                               PP_Var message,
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,
133                             uint32_t session_id,
134                             int32_t media_error,
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,
141                                      uint32_t request_id,
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)
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 OnHostMsgSetPluginToHandleFindRequests(PP_Instance instance);
180   void OnHostMsgNumberOfFindResultsChanged(PP_Instance instance,
181                                            int32_t total,
182                                            PP_Bool final_result);
183   void OnHostMsgSelectFindResultChanged(PP_Instance instance,
184                                         int32_t index);
185   void OnHostMsgSetTickmarks(PP_Instance instance,
186                              const std::vector<PP_Rect>& tickmarks);
187   void OnHostMsgSetFullscreen(PP_Instance instance,
188                               PP_Bool fullscreen,
189                               PP_Bool* result);
190   void OnHostMsgGetScreenSize(PP_Instance instance,
191                               PP_Bool* result,
192                               PP_Size* size);
193   void OnHostMsgRequestInputEvents(PP_Instance instance,
194                                    bool is_filtering,
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,
203                           int32_t type,
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,
214       uint32_t caret,
215       uint32_t anchor);
216   void OnHostMsgGetDocumentURL(PP_Instance instance,
217                                PP_URLComponents_Dev* components,
218                                SerializedVarReturnValue result);
219
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,
226                                    PP_Bool* result);
227   void OnHostMsgDocumentCanAccessDocument(PP_Instance active,
228                                           PP_Instance target,
229                                           PP_Bool* result);
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,
236       uint32_t session_id,
237       SerializedVarReceiveInput web_session_id);
238   virtual void OnHostMsgSessionMessage(
239       PP_Instance instance,
240       uint32_t session_id,
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,
247                                      uint32_t session_id,
248                                      int32_t media_error,
249                                      uint32_t system_code);
250   virtual void OnHostMsgDecoderInitializeDone(
251       PP_Instance instance,
252       PP_DecryptorStreamType decoder_type,
253       uint32_t request_id,
254       PP_Bool success);
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)
273
274   // Host -> Plugin message handlers.
275   void OnPluginMsgMouseLockComplete(PP_Instance instance, int32_t result);
276
277   void MouseLockCompleteInHost(int32_t result, PP_Instance instance);
278
279   // Other helpers.
280   void CancelAnyPendingRequestSurroundingText(PP_Instance instance);
281
282   ProxyCompletionCallbackFactory<PPB_Instance_Proxy> callback_factory_;
283 };
284
285 }  // namespace proxy
286 }  // namespace ppapi
287
288 #endif  // PPAPI_PROXY_PPB_INSTANCE_PROXY_H_