blob: f2382799f33c4303b4808cd5ab6721da381f9a73 [file] [log] [blame]
[email protected]0a424af2012-01-10 19:24:281// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]ceadc392011-06-15 23:04:242// 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_THUNK_INSTANCE_API_H_
6#define PPAPI_THUNK_INSTANCE_API_H_
7
[email protected]aed96532012-06-23 14:27:428#include "base/memory/ref_counted.h"
9#include "base/memory/scoped_ptr.h"
[email protected]a9b16dd2012-01-31 05:00:2610#include "ppapi/c/dev/ppb_console_dev.h"
[email protected]4c44183a2012-04-27 16:52:2311#include "ppapi/c/dev/ppb_text_input_dev.h"
[email protected]03460232011-10-10 17:23:5712#include "ppapi/c/dev/ppb_url_util_dev.h"
[email protected]3b98ced72012-03-09 02:08:3313#include "ppapi/c/pp_bool.h"
[email protected]18d871f2011-09-08 16:56:3414#include "ppapi/c/pp_completion_callback.h"
[email protected]3b98ced72012-03-09 02:08:3315#include "ppapi/c/pp_size.h"
16#include "ppapi/c/pp_time.h"
[email protected]c59ed5892012-02-18 01:10:1917#include "ppapi/c/ppb_audio_config.h"
[email protected]d5cc7192012-03-07 16:53:1618#include "ppapi/c/ppb_gamepad.h"
[email protected]ceadc392011-06-15 23:04:2419#include "ppapi/c/ppb_instance.h"
[email protected]33ec50562012-04-08 20:28:4320#include "ppapi/c/ppb_mouse_cursor.h"
[email protected]23de87452012-10-12 07:03:0921#include "ppapi/c/private/pp_content_decryptor.h"
[email protected]ceadc392011-06-15 23:04:2422#include "ppapi/c/private/ppb_instance_private.h"
[email protected]ac4b54d2011-10-20 23:09:2823#include "ppapi/shared_impl/api_id.h"
[email protected]ceadc392011-06-15 23:04:2424
[email protected]0f41c012011-10-21 19:49:2025// Windows headers interfere with this file.
26#ifdef PostMessage
27#undef PostMessage
28#endif
29
[email protected]98ad9782012-08-22 04:06:2230struct PP_DecryptedBlockInfo;
[email protected]181d9c12012-10-03 22:53:4831struct PP_DecryptedFrameInfo;
[email protected]98ad9782012-08-22 04:06:2232
[email protected]ceadc392011-06-15 23:04:2433namespace ppapi {
[email protected]e8f07ac2012-01-03 17:43:3634
[email protected]aed96532012-06-23 14:27:4235class TrackedCallback;
[email protected]e8f07ac2012-01-03 17:43:3636struct ViewData;
37
[email protected]ceadc392011-06-15 23:04:2438namespace thunk {
39
[email protected]a085aed72012-04-24 05:32:0440class PPB_Flash_API;
[email protected]11d0c362012-10-11 02:02:1141class PPB_Flash_Functions_API;
[email protected]f5118812012-08-24 19:54:3042class PPB_Gamepad_API;
[email protected]a085aed72012-04-24 05:32:0443
[email protected]4f2006122012-04-30 05:13:1744class PPB_Instance_API {
[email protected]ceadc392011-06-15 23:04:2445 public:
[email protected]4f2006122012-04-30 05:13:1746 virtual ~PPB_Instance_API() {}
[email protected]ceadc392011-06-15 23:04:2447
48 virtual PP_Bool BindGraphics(PP_Instance instance, PP_Resource device) = 0;
49 virtual PP_Bool IsFullFrame(PP_Instance instance) = 0;
50
[email protected]e8f07ac2012-01-03 17:43:3651 // Not an exposed PPAPI function, this returns the internal view data struct.
52 virtual const ViewData* GetViewData(PP_Instance instance) = 0;
53
[email protected]ceadc392011-06-15 23:04:2454 // InstancePrivate.
55 virtual PP_Var GetWindowObject(PP_Instance instance) = 0;
56 virtual PP_Var GetOwnerElementObject(PP_Instance instance) = 0;
57 virtual PP_Var ExecuteScript(PP_Instance instance,
58 PP_Var script,
59 PP_Var* exception) = 0;
60
[email protected]c59ed5892012-02-18 01:10:1961 // Audio.
62 virtual uint32_t GetAudioHardwareOutputSampleRate(PP_Instance instance) = 0;
63 virtual uint32_t GetAudioHardwareOutputBufferSize(PP_Instance instance) = 0;
64
[email protected]8d770e492011-10-11 04:54:3165 // CharSet.
66 virtual PP_Var GetDefaultCharSet(PP_Instance instance) = 0;
67
[email protected]5c966022011-09-13 18:09:3768 // Console.
69 virtual void Log(PP_Instance instance,
[email protected]a9b16dd2012-01-31 05:00:2670 PP_LogLevel_Dev log_level,
[email protected]5c966022011-09-13 18:09:3771 PP_Var value) = 0;
72 virtual void LogWithSource(PP_Instance instance,
[email protected]a9b16dd2012-01-31 05:00:2673 PP_LogLevel_Dev log_level,
[email protected]5c966022011-09-13 18:09:3774 PP_Var source,
75 PP_Var value) = 0;
76
[email protected]59cf7022011-09-14 22:44:1977 // Find.
78 virtual void NumberOfFindResultsChanged(PP_Instance instance,
79 int32_t total,
80 PP_Bool final_result) = 0;
81 virtual void SelectedFindResultChanged(PP_Instance instance,
82 int32_t index) = 0;
83
[email protected]7a26d92e2012-02-17 20:15:2584 // Font.
85 virtual PP_Var GetFontFamilies(PP_Instance instance) = 0;
86
[email protected]557730a2011-10-05 18:03:3887 // Fullscreen.
[email protected]06e0a342011-09-27 04:24:3088 virtual PP_Bool SetFullscreen(PP_Instance instance,
89 PP_Bool fullscreen) = 0;
90 virtual PP_Bool GetScreenSize(PP_Instance instance, PP_Size* size) = 0;
91
[email protected]11d0c362012-10-11 02:02:1192 // Flash (Deprecated for Flash_Functions).
[email protected]a085aed72012-04-24 05:32:0493 virtual PPB_Flash_API* GetFlashAPI() = 0;
[email protected]11d0c362012-10-11 02:02:1194 // Flash_Functions
95 virtual PPB_Flash_Functions_API* GetFlashFunctionsAPI(
96 PP_Instance instance) = 0;
[email protected]cb4fdad2011-06-27 22:25:2997
[email protected]0a424af2012-01-10 19:24:2898 // Gamepad.
[email protected]f5118812012-08-24 19:54:3099 virtual PPB_Gamepad_API* GetGamepadAPI(PP_Instance instance) = 0;
[email protected]0a424af2012-01-10 19:24:28100
[email protected]493d14212011-07-07 15:38:48101 // InputEvent.
102 virtual int32_t RequestInputEvents(PP_Instance instance,
103 uint32_t event_classes) = 0;
104 virtual int32_t RequestFilteringInputEvents(PP_Instance instance,
105 uint32_t event_classes) = 0;
106 virtual void ClearInputEventRequest(PP_Instance instance,
107 uint32_t event_classes) = 0;
[email protected]3b98ced72012-03-09 02:08:33108 virtual void ClosePendingUserGesture(PP_Instance instance,
109 PP_TimeTicks timestamp) = 0;
[email protected]493d14212011-07-07 15:38:48110
[email protected]55a5a522011-07-06 22:52:40111 // Messaging.
112 virtual void PostMessage(PP_Instance instance, PP_Var message) = 0;
113
[email protected]33ec50562012-04-08 20:28:43114 // Mouse cursor.
115 virtual PP_Bool SetCursor(PP_Instance instance,
116 PP_MouseCursor_Type type,
[email protected]c6da0bcc2012-04-11 23:10:36117 PP_Resource image,
118 const PP_Point* hot_spot) = 0;
[email protected]33ec50562012-04-08 20:28:43119
[email protected]18d871f2011-09-08 16:56:34120 // MouseLock.
121 virtual int32_t LockMouse(PP_Instance instance,
[email protected]aed96532012-06-23 14:27:42122 scoped_refptr<TrackedCallback> callback) = 0;
[email protected]18d871f2011-09-08 16:56:34123 virtual void UnlockMouse(PP_Instance instance) = 0;
124
[email protected]4c44183a2012-04-27 16:52:23125 // TextInput.
126 virtual void SetTextInputType(PP_Instance instance,
127 PP_TextInput_Type type) = 0;
128 virtual void UpdateCaretPosition(PP_Instance instance,
129 const PP_Rect& caret,
130 const PP_Rect& bounding_box) = 0;
131 virtual void CancelCompositionText(PP_Instance instance) = 0;
132 virtual void SelectionChanged(PP_Instance instance) = 0;
133 virtual void UpdateSurroundingText(PP_Instance instance,
134 const char* text,
135 uint32_t caret,
136 uint32_t anchor) = 0;
137
[email protected]15237942011-07-30 04:24:19138 // Zoom.
[email protected]55a5a522011-07-06 22:52:40139 virtual void ZoomChanged(PP_Instance instance, double factor) = 0;
140 virtual void ZoomLimitsChanged(PP_Instance instance,
141 double minimum_factor,
142 double maximium_factor) = 0;
[email protected]c962f862012-04-12 00:02:04143#if !defined(OS_NACL)
[email protected]e5aeef02012-08-17 00:18:43144 // Content Decryptor.
145 virtual void NeedKey(PP_Instance instance,
146 PP_Var key_system,
147 PP_Var session_id,
148 PP_Var init_data) = 0;
149 virtual void KeyAdded(PP_Instance instance,
150 PP_Var key_system,
151 PP_Var session_id) = 0;
152 virtual void KeyMessage(PP_Instance instance,
153 PP_Var key_system,
154 PP_Var session_id,
155 PP_Resource message,
156 PP_Var default_url) = 0;
157 virtual void KeyError(PP_Instance instance,
158 PP_Var key_system,
159 PP_Var session_id,
160 int32_t media_error,
161 int32_t system_error) = 0;
162 virtual void DeliverBlock(PP_Instance instance,
163 PP_Resource decrypted_block,
[email protected]98ad9782012-08-22 04:06:22164 const PP_DecryptedBlockInfo* block_info) = 0;
[email protected]e9d3a1022012-10-11 23:43:55165 virtual void DecoderInitialized(PP_Instance instance,
166 PP_Bool success,
167 uint32_t request_id) = 0;
[email protected]23de87452012-10-12 07:03:09168 virtual void DecoderDeinitializeDone(PP_Instance instance,
169 PP_DecryptorStreamType decoder_type,
170 uint32_t request_id) = 0;
171 virtual void DecoderResetDone(PP_Instance instance,
172 PP_DecryptorStreamType decoder_type,
173 uint32_t request_id) = 0;
[email protected]e5aeef02012-08-17 00:18:43174 virtual void DeliverFrame(PP_Instance instance,
175 PP_Resource decrypted_frame,
[email protected]181d9c12012-10-03 22:53:48176 const PP_DecryptedFrameInfo* frame_info) = 0;
[email protected]e5aeef02012-08-17 00:18:43177 virtual void DeliverSamples(PP_Instance instance,
178 PP_Resource decrypted_samples,
[email protected]98ad9782012-08-22 04:06:22179 const PP_DecryptedBlockInfo* block_info) = 0;
[email protected]e5aeef02012-08-17 00:18:43180
[email protected]03460232011-10-10 17:23:57181 // URLUtil.
182 virtual PP_Var ResolveRelativeToDocument(
183 PP_Instance instance,
184 PP_Var relative,
185 PP_URLComponents_Dev* components) = 0;
186 virtual PP_Bool DocumentCanRequest(PP_Instance instance, PP_Var url) = 0;
187 virtual PP_Bool DocumentCanAccessDocument(PP_Instance instance,
188 PP_Instance target) = 0;
189 virtual PP_Var GetDocumentURL(PP_Instance instance,
190 PP_URLComponents_Dev* components) = 0;
191 virtual PP_Var GetPluginInstanceURL(PP_Instance instance,
192 PP_URLComponents_Dev* components) = 0;
[email protected]c962f862012-04-12 00:02:04193#endif // !defined(OS_NACL)
[email protected]03460232011-10-10 17:23:57194
[email protected]ac4b54d2011-10-20 23:09:28195 static const ApiID kApiID = API_ID_PPB_INSTANCE;
[email protected]ceadc392011-06-15 23:04:24196};
197
198} // namespace thunk
199} // namespace ppapi
200
201#endif // PPAPI_THUNK_INSTANCE_API_H_