- add sources.
[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   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 KeyAdded(PP_Instance instance,
121                         PP_Var key_system,
122                         PP_Var session_id) OVERRIDE;
123   virtual void KeyMessage(PP_Instance instance,
124                           PP_Var key_system,
125                           PP_Var session_id,
126                           PP_Var message,
127                           PP_Var default_url) OVERRIDE;
128   virtual void KeyError(PP_Instance instance,
129                         PP_Var key_system,
130                         PP_Var session_id,
131                         int32_t media_error,
132                         int32_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 OnHostMsgSetFullscreen(PP_Instance instance,
177                               PP_Bool fullscreen,
178                               PP_Bool* result);
179   void OnHostMsgGetScreenSize(PP_Instance instance,
180                               PP_Bool* result,
181                               PP_Size* size);
182   void OnHostMsgRequestInputEvents(PP_Instance instance,
183                                    bool is_filtering,
184                                    uint32_t event_classes);
185   void OnHostMsgClearInputEvents(PP_Instance instance,
186                                  uint32_t event_classes);
187   void OnHostMsgPostMessage(PP_Instance instance,
188                             SerializedVarReceiveInput message);
189   void OnHostMsgLockMouse(PP_Instance instance);
190   void OnHostMsgUnlockMouse(PP_Instance instance);
191   void OnHostMsgSetCursor(PP_Instance instance,
192                           int32_t type,
193                           const ppapi::HostResource& custom_image,
194                           const PP_Point& hot_spot);
195   void OnHostMsgSetTextInputType(PP_Instance instance, PP_TextInput_Type type);
196   void OnHostMsgUpdateCaretPosition(PP_Instance instance,
197                                     const PP_Rect& caret,
198                                     const PP_Rect& bounding_box);
199   void OnHostMsgCancelCompositionText(PP_Instance instance);
200   void OnHostMsgUpdateSurroundingText(
201       PP_Instance instance,
202       const std::string& text,
203       uint32_t caret,
204       uint32_t anchor);
205   void OnHostMsgGetDocumentURL(PP_Instance instance,
206                                PP_URLComponents_Dev* components,
207                                SerializedVarReturnValue result);
208
209 #if !defined(OS_NACL)
210   void OnHostMsgResolveRelativeToDocument(PP_Instance instance,
211                                           SerializedVarReceiveInput relative,
212                                           SerializedVarReturnValue result);
213   void OnHostMsgDocumentCanRequest(PP_Instance instance,
214                                    SerializedVarReceiveInput url,
215                                    PP_Bool* result);
216   void OnHostMsgDocumentCanAccessDocument(PP_Instance active,
217                                           PP_Instance target,
218                                           PP_Bool* result);
219   void OnHostMsgGetPluginInstanceURL(PP_Instance instance,
220                                      SerializedVarReturnValue result);
221   void OnHostMsgGetPluginReferrerURL(PP_Instance instance,
222                                      SerializedVarReturnValue result);
223   virtual void OnHostMsgKeyAdded(PP_Instance instance,
224                                  SerializedVarReceiveInput key_system,
225                                  SerializedVarReceiveInput session_id);
226   virtual void OnHostMsgKeyMessage(PP_Instance instance,
227                                    SerializedVarReceiveInput key_system,
228                                    SerializedVarReceiveInput session_id,
229                                    SerializedVarReceiveInput message,
230                                    SerializedVarReceiveInput default_url);
231   virtual void OnHostMsgKeyError(PP_Instance instance,
232                                  SerializedVarReceiveInput key_system,
233                                  SerializedVarReceiveInput session_id,
234                                  int32_t media_error,
235                                  int32_t system_code);
236   virtual void OnHostMsgDecoderInitializeDone(
237       PP_Instance instance,
238       PP_DecryptorStreamType decoder_type,
239       uint32_t request_id,
240       PP_Bool success);
241   virtual void OnHostMsgDecoderDeinitializeDone(
242       PP_Instance instance,
243       PP_DecryptorStreamType decoder_type,
244       uint32_t request_id);
245   virtual void OnHostMsgDecoderResetDone(PP_Instance instance,
246                                          PP_DecryptorStreamType decoder_type,
247                                          uint32_t request_id);
248   virtual void OnHostMsgDeliverBlock(PP_Instance instance,
249                                      PP_Resource decrypted_block,
250                                      const std::string& serialized_block_info);
251   virtual void OnHostMsgDeliverFrame(PP_Instance instance,
252                                      PP_Resource decrypted_frame,
253                                      const std::string& serialized_block_info);
254   virtual void OnHostMsgDeliverSamples(
255       PP_Instance instance,
256       PP_Resource audio_frames,
257       const std::string& serialized_sample_info);
258 #endif  // !defined(OS_NACL)
259
260   // Host -> Plugin message handlers.
261   void OnPluginMsgMouseLockComplete(PP_Instance instance, int32_t result);
262
263   void MouseLockCompleteInHost(int32_t result, PP_Instance instance);
264
265   // Other helpers.
266   void CancelAnyPendingRequestSurroundingText(PP_Instance instance);
267
268   ProxyCompletionCallbackFactory<PPB_Instance_Proxy> callback_factory_;
269 };
270
271 }  // namespace proxy
272 }  // namespace ppapi
273
274 #endif  // PPAPI_PROXY_PPB_INSTANCE_PROXY_H_