- add sources.
[platform/framework/web/crosswalk.git] / src / ppapi / api / private / ppp_flash_browser_operations.idl
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 /**
7  * This file contains the <code>PPP_Flash_BrowserOperations</code> interface.
8  */
9
10 label Chrome {
11   M20 = 1.0,
12   M21 = 1.2,
13   M22 = 1.3
14 };
15
16 [assert_size(4)]
17 enum PP_Flash_BrowserOperations_SettingType {
18   PP_FLASH_BROWSEROPERATIONS_SETTINGTYPE_CAMERAMIC = 0,
19   PP_FLASH_BROWSEROPERATIONS_SETTINGTYPE_PEERNETWORKING = 1
20 };
21
22 [assert_size(4)]
23 enum PP_Flash_BrowserOperations_Permission {
24   // This value is only used with <code>SetSitePermission()</code>.
25   PP_FLASH_BROWSEROPERATIONS_PERMISSION_DEFAULT = 0,
26   PP_FLASH_BROWSEROPERATIONS_PERMISSION_ALLOW = 1,
27   PP_FLASH_BROWSEROPERATIONS_PERMISSION_BLOCK = 2,
28   PP_FLASH_BROWSEROPERATIONS_PERMISSION_ASK = 3
29 };
30
31 struct PP_Flash_BrowserOperations_SiteSetting {
32   cstr_t site;
33   PP_Flash_BrowserOperations_Permission permission;
34 };
35
36 typedef void PPB_Flash_BrowserOperations_GetSettingsCallback(
37     [inout] mem_t user_data,
38     [in] PP_Bool success,
39     [in] PP_Flash_BrowserOperations_Permission default_permission,
40     [in] uint32_t site_count,
41     [in, size_is(site_count)] PP_Flash_BrowserOperations_SiteSetting[] sites);
42
43 /**
44  * This interface allows the browser to request the plugin do things.
45  */
46 interface PPP_Flash_BrowserOperations {
47   /**
48    * This function allows the plugin to implement the "Clear site data" feature.
49    *
50    * @param[in] plugin_data_path String containing the directory where the
51    * plugin data is
52    * stored. On UTF16 systems (Windows), this will be encoded as UTF-8. It will
53    * be an absolute path and will not have a directory separator (slash) at the
54    * end.
55    * @param[in] site String specifying which site to clear the data for. This
56    * will be null to clear data for all sites.
57    * @param[in] flags Currently always 0 in Chrome to clear all data. This may
58    * be extended in the future to clear only specific types of data.
59    * @param[in] max_age The maximum age in seconds to clear data for. This
60    * allows the plugin to implement "clear past hour" and "clear past data",
61    * etc.
62    *
63    * @return PP_TRUE on success, PP_FALSE on failure.
64    *
65    * See also the NPP_ClearSiteData function in NPAPI.
66    * https://wiki.mozilla.org/NPAPI:ClearSiteData
67    */
68   PP_Bool ClearSiteData([in] str_t plugin_data_path,
69                         [in] str_t site,
70                         [in] uint64_t flags,
71                         [in] uint64_t max_age);
72
73   /**
74    * Requests the plugin to deauthorize content licenses. It prevents Flash from
75    * playing protected content, such as movies and music the user may have
76    * rented or purchased.
77    *
78    * @param[in] plugin_data_path String containing the directory where the
79    * plugin settings are stored.
80    *
81    * @return <code>PP_TRUE</code> on success, <code>PP_FALSE</code> on failure.
82    */
83   [version=1.2]
84   PP_Bool DeauthorizeContentLicenses([in] str_t plugin_data_path);
85
86   /**
87    * Gets permission settings. <code>callback</code> will be called exactly once
88    * to return the settings.
89    *
90    * @param[in] plugin_data_path String containing the directory where the
91    * plugin settings are stored.
92    * @param[in] setting_type What type of setting to retrieve.
93    * @param[in] callback The callback to return retrieved data.
94    * @param[inout] user_data An opaque pointer that will be passed to
95    * <code>callback</code>.
96    */
97   [version=1.2]
98   void GetPermissionSettings(
99       [in] str_t plugin_data_path,
100       [in] PP_Flash_BrowserOperations_SettingType setting_type,
101       [in] PPB_Flash_BrowserOperations_GetSettingsCallback callback,
102       [inout] mem_t user_data);
103
104   /**
105    * Sets default permission. It applies to all sites except those with
106    * site-specific settings.
107    *
108    * @param[in] plugin_data_path String containing the directory where the
109    * plugin settings are stored.
110    * @param[in] setting_type What type of setting to set.
111    * @param[in] permission The default permission.
112    * @param[in] clear_site_specific Whether to remove all site-specific
113    * settings.
114    *
115    * @return <code>PP_TRUE</code> on success, <code>PP_FALSE</code> on failure.
116    */
117   [version=1.2]
118   PP_Bool SetDefaultPermission(
119       [in] str_t plugin_data_path,
120       [in] PP_Flash_BrowserOperations_SettingType setting_type,
121       [in] PP_Flash_BrowserOperations_Permission permission,
122       [in] PP_Bool clear_site_specific);
123
124   /**
125    * Sets site-specific permission. If a site has already got site-specific
126    * permission and it is not in <code>sites</code>, it won't be affected.
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 set.
131    * @param[in] site_count How many items are there in <code>sites</code>.
132    * @param[in] sites The site-specific settings. If a site is specified with
133    * <code>PP_FLASH_BROWSEROPERATIONS_PERMISSION_DEFAULT</code> permission, it
134    * will be removed from the site-specific list.
135    *
136    * @return <code>PP_TRUE</code> on success, <code>PP_FALSE</code> on failure.
137    */
138   [version=1.2]
139   PP_Bool SetSitePermission(
140       [in] str_t plugin_data_path,
141       [in] PP_Flash_BrowserOperations_SettingType setting_type,
142       [in] uint32_t site_count,
143       [in, size_is(site_count)] PP_Flash_BrowserOperations_SiteSetting[] sites);
144
145   /**
146    * Returns a list of sites that have stored data, for use with the
147    * "Clear site data" feature.
148    *
149    * @param[in] plugin_data_path String containing the directory where the
150    * plugin data is stored.
151    * @param[out] sites A NULL-terminated array of sites that have stored data.
152    * Use FreeSiteList on the array when done.
153    *
154    * See also the NPP_GetSitesWithData function in NPAPI:
155    * https://wiki.mozilla.org/NPAPI:ClearSiteData
156    */
157   [version=1.3]
158   void GetSitesWithData([in] str_t plugin_data_path,
159                         [out] str_t[] sites);
160
161   /**
162    * Frees the list of sites returned by GetSitesWithData.
163    *
164    * @param[in] sites A NULL-terminated array of strings.
165    */
166   [version=1.3]
167   void FreeSiteList([inout] str_t[] sites);
168 };