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 }; 169