1 // Copyright 2014 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.
5 // This features file defines extension APIs implemented under src/extensions.
6 // See extensions/common/features/* to understand this file, in particular
7 // feature.h, simple_feature.h, and base_feature_provider.h.
9 // Note that specifying "web_page", "blessed_web_page", or "all" as a context
10 // type will require manually updating chrome/renderer/resources/dispatcher.cc.
12 // To add a new whitelisted ID, SHA-1 it and force it to uppercase. In Bash:
14 // $ echo -n "aaaabbbbccccddddeeeeffffgggghhhh" | \
15 // sha1sum | tr '[:lower:]' '[:upper:]'
16 // 9A0417016F345C934A1A88F55CA17C05014EEEBA -
18 // Google employees: please update http://go/chrome-api-whitelist to map
19 // hashes back to ids.
24 "contexts": ["blessed_extension"],
25 "extension_types": ["platform_app"],
29 "component_extensions_auto_granted": false,
30 "contexts": ["blessed_extension"],
31 "extension_types": ["extension"],
34 "2FC374607C2DF285634B67C64A2E356C607091C3", // Quickoffice
35 "3727DD3E564B6055387425027AD74C58784ACC15", // Quickoffice internal
36 "12E618C3C6E97495AAECF2AC12DEB082353241C6" // QO component extension
41 "contexts": ["blessed_extension"],
42 "extension_types": ["platform_app"],
45 "app.window.canSetVisibleOnAllWorkspaces": {
48 "app.currentWindowInternal": {
52 "contexts": ["blessed_extension"]
54 "app.currentWindowInternal.setShape": {
55 "dependencies": ["permission:app.window.shape"],
56 "contexts": ["blessed_extension"]
59 "dependencies": ["permission:dns"],
60 "contexts": ["blessed_extension"]
62 // This is not a real API, only here for documentation purposes.
63 // See http://crbug.com/275944 for background.
67 "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
68 "contexts": ["blessed_extension"]
71 "dependencies": ["permission:hid"],
72 "contexts": ["blessed_extension"]
75 "dependencies": ["permission:power"],
76 "contexts": ["blessed_extension"]
80 "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
81 "contexts": ["blessed_extension"]
83 "runtime.getManifest": {
84 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
87 // Everything except WebUI.
92 "unblessed_extension",
95 "matches": ["<all_urls>"]
98 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
101 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
103 "runtime.lastError": {
105 "extension_types": "all",
106 "matches": ["<all_urls>"]
108 "runtime.onConnect": {
109 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
111 "runtime.onMessage": {
112 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
114 "runtime.sendMessage": {
115 // Everything except WebUI.
120 "unblessed_extension",
123 "matches": ["<all_urls>"]
125 "runtime.setUninstallURL": {
129 "dependencies": ["permission:serial"],
130 "contexts": ["blessed_extension"]
133 "dependencies": ["permission:socket"],
134 "contexts": ["blessed_extension"]
137 "dependencies": ["manifest:sockets"],
138 "contexts": ["blessed_extension"]
140 "sockets.tcpServer": {
141 "dependencies": ["manifest:sockets"],
142 "contexts": ["blessed_extension"]
145 "dependencies": ["manifest:sockets"],
146 "contexts": ["blessed_extension"]
149 "dependencies": ["permission:storage"],
150 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
153 "dependencies": ["permission:system.cpu"],
154 "contexts": ["blessed_extension"]
157 "dependencies": ["permission:system.display"],
158 "contexts": ["blessed_extension"]
161 "dependencies": ["permission:system.memory"],
162 "contexts": ["blessed_extension"]
165 "dependencies": ["permission:system.network"],
166 "contexts": ["blessed_extension"]
169 "dependencies": ["permission:system.storage"],
170 "contexts": ["blessed_extension"]
172 "system.storage.getAvailableCapacity": {
177 "extension_types": "all",
178 // Everything except web pages and WebUI. WebUI is declared in a separate
179 // rule to keep the "matches" property isolated.
184 "unblessed_extension"
188 "contexts": ["webui"],
190 "chrome://extensions/*",
191 "chrome://extensions-frame/*",
192 "chrome://chrome/extensions/*"
198 "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
199 "contexts": ["blessed_extension"]
203 "extension_types": ["extension"],
204 "location": "component"
207 "dependencies": ["permission:usb"],
208 "contexts": ["blessed_extension"]
212 "contexts": ["webui"]
214 "webViewExperimentalInternal": [{
217 "contexts": ["blessed_extension"],
218 "dependencies": ["permission:webview"]
223 "contexts": ["blessed_extension"],
224 "dependencies": ["permission:webview"],
226 "8C3741E3AF0B93B6E8E0DDD499BB0B74839EA578",
227 "E703483CEF33DEC18B4B6DD84B5C776FB9182BDB",
228 "1A26E32DE447A17CBE5E9750CDBA78F58539B39C",
229 "59048028102D7B4C681DBC7BC6CD980C3DC66DA3"
232 "webViewInternal": [{
234 "dependencies": ["permission:webview"],
235 "contexts": ["blessed_extension"]
237 // Component extensions can use the webViewInternal API from iframes.
238 "location": "component",
240 "dependencies": ["permission:webview"],
241 "contexts": ["unblessed_extension"]