Fix infinite recursion on hiding panel when created during fullscreen mode.
[chromium-blink-merge.git] / ppapi / c / private / ppp_flash_browser_operations.h
blob301b74c6fd1413742b4a43547cb08637090704a2
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 */
6 /* From private/ppp_flash_browser_operations.idl,
7 * modified Thu Mar 28 10:23:11 2013.
8 */
10 #ifndef PPAPI_C_PRIVATE_PPP_FLASH_BROWSER_OPERATIONS_H_
11 #define PPAPI_C_PRIVATE_PPP_FLASH_BROWSER_OPERATIONS_H_
13 #include "ppapi/c/pp_bool.h"
14 #include "ppapi/c/pp_macros.h"
15 #include "ppapi/c/pp_stdint.h"
17 #define PPP_FLASH_BROWSEROPERATIONS_INTERFACE_1_0 \
18 "PPP_Flash_BrowserOperations;1.0"
19 #define PPP_FLASH_BROWSEROPERATIONS_INTERFACE_1_2 \
20 "PPP_Flash_BrowserOperations;1.2"
21 #define PPP_FLASH_BROWSEROPERATIONS_INTERFACE_1_3 \
22 "PPP_Flash_BrowserOperations;1.3"
23 #define PPP_FLASH_BROWSEROPERATIONS_INTERFACE \
24 PPP_FLASH_BROWSEROPERATIONS_INTERFACE_1_3
26 /**
27 * @file
28 * This file contains the <code>PPP_Flash_BrowserOperations</code> interface.
32 /**
33 * @addtogroup Enums
34 * @{
36 typedef enum {
37 PP_FLASH_BROWSEROPERATIONS_SETTINGTYPE_CAMERAMIC = 0,
38 PP_FLASH_BROWSEROPERATIONS_SETTINGTYPE_PEERNETWORKING = 1
39 } PP_Flash_BrowserOperations_SettingType;
40 PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_Flash_BrowserOperations_SettingType, 4);
42 typedef enum {
43 /* This value is only used with <code>SetSitePermission()</code>. */
44 PP_FLASH_BROWSEROPERATIONS_PERMISSION_DEFAULT = 0,
45 PP_FLASH_BROWSEROPERATIONS_PERMISSION_ALLOW = 1,
46 PP_FLASH_BROWSEROPERATIONS_PERMISSION_BLOCK = 2,
47 PP_FLASH_BROWSEROPERATIONS_PERMISSION_ASK = 3
48 } PP_Flash_BrowserOperations_Permission;
49 PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_Flash_BrowserOperations_Permission, 4);
50 /**
51 * @}
54 /**
55 * @addtogroup Structs
56 * @{
58 struct PP_Flash_BrowserOperations_SiteSetting {
59 const char* site;
60 PP_Flash_BrowserOperations_Permission permission;
62 /**
63 * @}
66 /**
67 * @addtogroup Typedefs
68 * @{
70 typedef void (*PPB_Flash_BrowserOperations_GetSettingsCallback)(
71 void* user_data,
72 PP_Bool success,
73 PP_Flash_BrowserOperations_Permission default_permission,
74 uint32_t site_count,
75 const struct PP_Flash_BrowserOperations_SiteSetting sites[]);
76 /**
77 * @}
80 /**
81 * @addtogroup Interfaces
82 * @{
84 /**
85 * This interface allows the browser to request the plugin do things.
87 struct PPP_Flash_BrowserOperations_1_3 {
88 /**
89 * This function allows the plugin to implement the "Clear site data" feature.
91 * @param[in] plugin_data_path String containing the directory where the
92 * plugin data is
93 * stored. On UTF16 systems (Windows), this will be encoded as UTF-8. It will
94 * be an absolute path and will not have a directory separator (slash) at the
95 * end.
96 * @param[in] site String specifying which site to clear the data for. This
97 * will be null to clear data for all sites.
98 * @param[in] flags Currently always 0 in Chrome to clear all data. This may
99 * be extended in the future to clear only specific types of data.
100 * @param[in] max_age The maximum age in seconds to clear data for. This
101 * allows the plugin to implement "clear past hour" and "clear past data",
102 * etc.
104 * @return PP_TRUE on success, PP_FALSE on failure.
106 * See also the NPP_ClearSiteData function in NPAPI.
107 * https://wiki.mozilla.org/NPAPI:ClearSiteData
109 PP_Bool (*ClearSiteData)(const char* plugin_data_path,
110 const char* site,
111 uint64_t flags,
112 uint64_t max_age);
114 * Requests the plugin to deauthorize content licenses. It prevents Flash from
115 * playing protected content, such as movies and music the user may have
116 * rented or purchased.
118 * @param[in] plugin_data_path String containing the directory where the
119 * plugin settings are stored.
121 * @return <code>PP_TRUE</code> on success, <code>PP_FALSE</code> on failure.
123 PP_Bool (*DeauthorizeContentLicenses)(const char* plugin_data_path);
125 * Gets permission settings. <code>callback</code> will be called exactly once
126 * to return the settings.
128 * @param[in] plugin_data_path String containing the directory where the
129 * plugin settings are stored.
130 * @param[in] setting_type What type of setting to retrieve.
131 * @param[in] callback The callback to return retrieved data.
132 * @param[inout] user_data An opaque pointer that will be passed to
133 * <code>callback</code>.
135 void (*GetPermissionSettings)(
136 const char* plugin_data_path,
137 PP_Flash_BrowserOperations_SettingType setting_type,
138 PPB_Flash_BrowserOperations_GetSettingsCallback callback,
139 void* user_data);
141 * Sets default permission. It applies to all sites except those with
142 * site-specific settings.
144 * @param[in] plugin_data_path String containing the directory where the
145 * plugin settings are stored.
146 * @param[in] setting_type What type of setting to set.
147 * @param[in] permission The default permission.
148 * @param[in] clear_site_specific Whether to remove all site-specific
149 * settings.
151 * @return <code>PP_TRUE</code> on success, <code>PP_FALSE</code> on failure.
153 PP_Bool (*SetDefaultPermission)(
154 const char* plugin_data_path,
155 PP_Flash_BrowserOperations_SettingType setting_type,
156 PP_Flash_BrowserOperations_Permission permission,
157 PP_Bool clear_site_specific);
159 * Sets site-specific permission. If a site has already got site-specific
160 * permission and it is not in <code>sites</code>, it won't be affected.
162 * @param[in] plugin_data_path String containing the directory where the
163 * plugin settings are stored.
164 * @param[in] setting_type What type of setting to set.
165 * @param[in] site_count How many items are there in <code>sites</code>.
166 * @param[in] sites The site-specific settings. If a site is specified with
167 * <code>PP_FLASH_BROWSEROPERATIONS_PERMISSION_DEFAULT</code> permission, it
168 * will be removed from the site-specific list.
170 * @return <code>PP_TRUE</code> on success, <code>PP_FALSE</code> on failure.
172 PP_Bool (*SetSitePermission)(
173 const char* plugin_data_path,
174 PP_Flash_BrowserOperations_SettingType setting_type,
175 uint32_t site_count,
176 const struct PP_Flash_BrowserOperations_SiteSetting sites[]);
178 * Returns a list of sites that have stored data, for use with the
179 * "Clear site data" feature.
181 * @param[in] plugin_data_path String containing the directory where the
182 * plugin data is stored.
183 * @param[out] sites A NULL-terminated array of sites that have stored data.
184 * Use FreeSiteList on the array when done.
186 * See also the NPP_GetSitesWithData function in NPAPI:
187 * https://wiki.mozilla.org/NPAPI:ClearSiteData
189 void (*GetSitesWithData)(const char* plugin_data_path, char** sites[]);
191 * Frees the list of sites returned by GetSitesWithData.
193 * @param[in] sites A NULL-terminated array of strings.
195 void (*FreeSiteList)(char* sites[]);
198 typedef struct PPP_Flash_BrowserOperations_1_3 PPP_Flash_BrowserOperations;
200 struct PPP_Flash_BrowserOperations_1_0 {
201 PP_Bool (*ClearSiteData)(const char* plugin_data_path,
202 const char* site,
203 uint64_t flags,
204 uint64_t max_age);
207 struct PPP_Flash_BrowserOperations_1_2 {
208 PP_Bool (*ClearSiteData)(const char* plugin_data_path,
209 const char* site,
210 uint64_t flags,
211 uint64_t max_age);
212 PP_Bool (*DeauthorizeContentLicenses)(const char* plugin_data_path);
213 void (*GetPermissionSettings)(
214 const char* plugin_data_path,
215 PP_Flash_BrowserOperations_SettingType setting_type,
216 PPB_Flash_BrowserOperations_GetSettingsCallback callback,
217 void* user_data);
218 PP_Bool (*SetDefaultPermission)(
219 const char* plugin_data_path,
220 PP_Flash_BrowserOperations_SettingType setting_type,
221 PP_Flash_BrowserOperations_Permission permission,
222 PP_Bool clear_site_specific);
223 PP_Bool (*SetSitePermission)(
224 const char* plugin_data_path,
225 PP_Flash_BrowserOperations_SettingType setting_type,
226 uint32_t site_count,
227 const struct PP_Flash_BrowserOperations_SiteSetting sites[]);
230 * @}
233 #endif /* PPAPI_C_PRIVATE_PPP_FLASH_BROWSER_OPERATIONS_H_ */