Release the Settings API.
[chromium-blink-merge.git] / ppapi / proxy / ppb_instance_proxy.h
blob40bb3f1afc07c5169004d2b4828eac4e135f57e2
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_
8 #include <string>
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.
22 #ifdef PostMessage
23 #undef PostMessage
24 #endif
26 struct PP_DecryptedBlockInfo;
27 struct PP_DecryptedFrameInfo;
29 namespace ppapi {
30 namespace proxy {
32 class SerializedVarReceiveInput;
33 class SerializedVarOutParam;
34 class SerializedVarReturnValue;
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();
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,
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)
158 static const ApiID kApiID = API_ID_PPB_INSTANCE;
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);
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)
274 // Host -> Plugin message handlers.
275 void OnPluginMsgMouseLockComplete(PP_Instance instance, int32_t result);
277 void MouseLockCompleteInHost(int32_t result, PP_Instance instance);
279 // Other helpers.
280 void CancelAnyPendingRequestSurroundingText(PP_Instance instance);
282 ProxyCompletionCallbackFactory<PPB_Instance_Proxy> callback_factory_;
285 } // namespace proxy
286 } // namespace ppapi
288 #endif // PPAPI_PROXY_PPB_INSTANCE_PROXY_H_