• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
6 /* From private/ppp_flash_browser_operations.idl,
7  *   modified Thu Mar 28 10:23:11 2013.
8  */
9 
10 #ifndef PPAPI_C_PRIVATE_PPP_FLASH_BROWSER_OPERATIONS_H_
11 #define PPAPI_C_PRIVATE_PPP_FLASH_BROWSER_OPERATIONS_H_
12 
13 #include "ppapi/c/pp_bool.h"
14 #include "ppapi/c/pp_macros.h"
15 #include "ppapi/c/pp_stdint.h"
16 
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
25 
26 /**
27  * @file
28  * This file contains the <code>PPP_Flash_BrowserOperations</code> interface.
29  */
30 
31 
32 /**
33  * @addtogroup Enums
34  * @{
35  */
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);
41 
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  * @}
52  */
53 
54 /**
55  * @addtogroup Structs
56  * @{
57  */
58 struct PP_Flash_BrowserOperations_SiteSetting {
59   const char* site;
60   PP_Flash_BrowserOperations_Permission permission;
61 };
62 /**
63  * @}
64  */
65 
66 /**
67  * @addtogroup Typedefs
68  * @{
69  */
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  * @}
78  */
79 
80 /**
81  * @addtogroup Interfaces
82  * @{
83  */
84 /**
85  * This interface allows the browser to request the plugin do things.
86  */
87 struct PPP_Flash_BrowserOperations_1_3 {
88   /**
89    * This function allows the plugin to implement the "Clear site data" feature.
90    *
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.
103    *
104    * @return PP_TRUE on success, PP_FALSE on failure.
105    *
106    * See also the NPP_ClearSiteData function in NPAPI.
107    * https://wiki.mozilla.org/NPAPI:ClearSiteData
108    */
109   PP_Bool (*ClearSiteData)(const char* plugin_data_path,
110                            const char* site,
111                            uint64_t flags,
112                            uint64_t max_age);
113   /**
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.
117    *
118    * @param[in] plugin_data_path String containing the directory where the
119    * plugin settings are stored.
120    *
121    * @return <code>PP_TRUE</code> on success, <code>PP_FALSE</code> on failure.
122    */
123   PP_Bool (*DeauthorizeContentLicenses)(const char* plugin_data_path);
124   /**
125    * Gets permission settings. <code>callback</code> will be called exactly once
126    * to return the settings.
127    *
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>.
134    */
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);
140   /**
141    * Sets default permission. It applies to all sites except those with
142    * site-specific settings.
143    *
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.
150    *
151    * @return <code>PP_TRUE</code> on success, <code>PP_FALSE</code> on failure.
152    */
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);
158   /**
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.
161    *
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.
169    *
170    * @return <code>PP_TRUE</code> on success, <code>PP_FALSE</code> on failure.
171    */
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[]);
177   /**
178    * Returns a list of sites that have stored data, for use with the
179    * "Clear site data" feature.
180    *
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.
185    *
186    * See also the NPP_GetSitesWithData function in NPAPI:
187    * https://wiki.mozilla.org/NPAPI:ClearSiteData
188    */
189   void (*GetSitesWithData)(const char* plugin_data_path, char** sites[]);
190   /**
191    * Frees the list of sites returned by GetSitesWithData.
192    *
193    * @param[in] sites A NULL-terminated array of strings.
194    */
195   void (*FreeSiteList)(char* sites[]);
196 };
197 
198 typedef struct PPP_Flash_BrowserOperations_1_3 PPP_Flash_BrowserOperations;
199 
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);
205 };
206 
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[]);
228 };
229 /**
230  * @}
231  */
232 
233 #endif  /* PPAPI_C_PRIVATE_PPP_FLASH_BROWSER_OPERATIONS_H_ */
234 
235