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.
23 "dependencies": ["permission:alarms"],
24 "contexts": ["blessed_extension"]
28 "contexts": ["blessed_extension"],
29 "extension_types": ["platform_app"],
33 "component_extensions_auto_granted": false,
34 "contexts": ["blessed_extension"],
35 "extension_types": ["extension"],
38 "2FC374607C2DF285634B67C64A2E356C607091C3", // Quickoffice
39 "3727DD3E564B6055387425027AD74C58784ACC15", // Quickoffice internal
40 "12E618C3C6E97495AAECF2AC12DEB082353241C6" // QO component extension
45 "contexts": ["blessed_extension"],
46 "extension_types": ["platform_app"],
50 "contexts": ["blessed_extension"],
51 "extension_types": ["extension"],
53 "component_extensions_auto_granted": false,
55 "B9EF10DDFEA11EF77873CC5009809E5037FC4C7A", // Google input tools
56 "06BE211D5F014BAB34BC22D9DDA09C63A81D828E", // Official xkb extension
57 "F94EE6AB36D6C6588670B2B01EB65212D9C64E33" // Open source xkb extension
60 "app.currentWindowInternal": {
64 "contexts": ["blessed_extension"]
66 "app.currentWindowInternal.setShape": {
67 "dependencies": ["permission:app.window.shape"],
68 "contexts": ["blessed_extension"]
70 // The API for the *embedder* of appview. Appview has both an embedder and
71 // guest API, which are different.
72 "appViewEmbedderInternal": {
74 "contexts": ["blessed_extension"],
75 "dependencies": ["permission:appview"]
77 // Note that exposing this doesn't necessarily expose AppView,
78 // appViewEmbedderInternal is required for that.
79 // See http://crbug.com/437891.
80 "appViewGuestInternal": {
83 "contexts": ["blessed_extension"]
86 "dependencies": ["permission:audio"],
87 "contexts": ["blessed_extension"]
90 "dependencies": ["manifest:bluetooth"],
91 "contexts": ["blessed_extension"]
93 "bluetoothLowEnergy": {
94 "dependencies": ["manifest:bluetooth"],
95 "contexts": ["blessed_extension"]
98 "dependencies": ["permission:bluetoothPrivate"],
99 "contexts": ["blessed_extension"]
102 "dependencies": ["manifest:bluetooth"],
103 "contexts": ["blessed_extension"]
105 "declarativeWebRequest": {
106 "dependencies": ["permission:declarativeWebRequest"],
107 "contexts": ["blessed_extension"]
110 "dependencies": ["permission:diagnostics"],
111 "extension_types": ["platform_app"],
112 "contexts": ["blessed_extension"]
115 "dependencies": ["permission:dns"],
116 "contexts": ["blessed_extension"]
119 "dependencies": ["permission:documentScan"],
120 "contexts": ["blessed_extension"]
122 // This is not a real API, only here for documentation purposes.
123 // See http://crbug.com/275944 for background.
127 "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
128 "contexts": ["blessed_extension"]
130 "extensionViewInternal": [
133 "contexts": ["blessed_extension"],
134 "dependencies": ["permission:extensionview"]
138 "contexts": ["webui"],
139 "matches": ["chrome://media-router/*"]
145 "extension_types": ["platform_app", "extension"],
147 "matches": ["<all_urls>"]
149 "guestViewInternal": [
153 "contexts": ["blessed_extension"]
157 "contexts": ["webui"],
159 "chrome://extensions-frame/*",
160 "chrome://extensions/*",
161 "chrome://chrome-signin/*",
162 "chrome://media-router/*",
166 // This allows GuestViews to be created on regular web pages for the Worker
167 // Thread Frame prototype: http://crbug.com/434226.
172 "matches": ["<all_urls>"]
176 "dependencies": ["permission:hid"],
177 "contexts": ["blessed_extension"]
179 "hid.getUserSelectedDevices": {
180 "contexts": ["blessed_extension"],
182 "dependencies": ["permission:hid"]
185 "dependencies": ["permission:idle"],
186 "contexts": ["blessed_extension"]
189 "dependencies": ["permission:management"],
190 "contexts": ["blessed_extension"],
191 "default_parent": true
194 "contexts": ["webui"],
196 "chrome://extensions/*",
197 "chrome://extensions-frame/*",
198 "chrome://chrome/extensions/*",
199 "chrome://md-settings/*",
200 "chrome://settings/*",
201 "chrome://settings-frame/*"
204 "management.getPermissionWarningsByManifest": {
207 "extension_types": ["extension", "legacy_packaged_app", "platform_app"]
209 "management.getSelf": {
212 "extension_types": ["extension", "legacy_packaged_app", "platform_app"]
214 "management.uninstallSelf": {
217 "extension_types": ["extension", "legacy_packaged_app", "platform_app"]
219 "mimeHandlerPrivate": {
220 "dependencies": ["manifest:mime_types_handler"],
221 "contexts": ["blessed_extension"]
224 "contexts": ["blessed_extension"],
226 "extension_types": ["platform_app", "extension"],
228 "EF2AB692559EA97C3BBDEA018A8C45F92457BD4E", // http://crbug.com/448569
229 "C17CD9E6868D7B9C67926E0EC612EA25C768418F",
230 "A45DABDB47A31CC812E5490AB748C7D05E2D32E9",
231 "BFEE2E3B80BE21A645E63E9346DFC383E7CB3BDA",
232 "63ED55E43214C211F82122ED56407FF1A807F2A3"
235 "networking.config": {
236 "dependencies": ["permission:networking.config"],
237 "contexts": ["blessed_extension"]
239 "networkingPrivate": [{
240 "dependencies": ["permission:networkingPrivate"],
241 "contexts": ["blessed_extension"]
244 "contexts": ["webui"],
246 "chrome://md-settings/*",
247 "chrome://network/*",
248 "chrome://settings/*",
249 "chrome://settings-frame/*"
253 "dependencies": ["permission:power"],
254 "contexts": ["blessed_extension"]
257 "dependencies": ["permission:printerProvider"],
258 "contexts": ["blessed_extension"]
260 "printerProviderInternal": {
262 "dependencies": ["permission:printerProvider"],
263 "contexts": ["blessed_extension"]
267 "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
268 "contexts": ["blessed_extension"]
270 "runtime.getManifest": {
271 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
274 // Everything except WebUI.
279 "unblessed_extension",
282 "matches": ["<all_urls>"]
284 "runtime.connectNative": {
285 "dependencies": ["permission:nativeMessaging"],
286 "contexts": ["blessed_extension"]
289 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
292 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
294 "runtime.lastError": {
296 "extension_types": "all",
297 "matches": ["<all_urls>"]
299 "runtime.onConnect": {
300 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
302 "runtime.onMessage": {
303 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
305 "runtime.sendMessage": {
306 // Everything except WebUI.
311 "unblessed_extension",
314 "matches": ["<all_urls>"]
316 "runtime.sendNativeMessage": {
317 "dependencies": ["permission:nativeMessaging"],
318 "contexts": ["blessed_extension"]
321 "dependencies": ["permission:serial"],
322 "contexts": ["blessed_extension"]
325 "dependencies": ["permission:socket"],
326 "contexts": ["blessed_extension"]
329 "dependencies": ["manifest:sockets"],
330 "contexts": ["blessed_extension"]
332 "sockets.tcpServer": {
333 "dependencies": ["manifest:sockets"],
334 "contexts": ["blessed_extension"]
337 "dependencies": ["manifest:sockets"],
338 "contexts": ["blessed_extension"]
341 "dependencies": ["permission:storage"],
342 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
345 "dependencies": ["permission:system.cpu"],
346 "contexts": ["blessed_extension"]
349 "dependencies": ["permission:system.display"],
350 "contexts": ["blessed_extension"]
353 "dependencies": ["permission:system.memory"],
354 "contexts": ["blessed_extension"]
357 "dependencies": ["permission:system.network"],
358 "contexts": ["blessed_extension"]
361 "dependencies": ["permission:system.storage"],
362 "contexts": ["blessed_extension"]
364 "system.storage.getAvailableCapacity": {
369 "extension_types": "all",
370 // Everything except web pages and WebUI. WebUI is declared in a separate
371 // rule to keep the "matches" property isolated.
376 "unblessed_extension"
380 "contexts": ["webui"],
382 "chrome://extensions/*",
383 "chrome://extensions-frame/*",
384 "chrome://chrome/extensions/*"
390 "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
391 "contexts": ["blessed_extension"]
394 // preferencesPrivate is the only API that uses types.private.
395 // If any other APIs need it then they'll need to be added in
397 "dependencies": ["permission:preferencesPrivate"],
398 "contexts": ["blessed_extension"]
401 "dependencies": ["permission:usb"],
402 "contexts": ["blessed_extension"]
405 "dependencies": ["permission:vpnProvider"],
406 "contexts": ["blessed_extension"]
409 "dependencies": ["permission:webRequest"],
410 "contexts": ["blessed_extension"]
412 "webRequestInternal": [{
415 "contexts": ["blessed_extension"]
417 // webview uses webRequestInternal API.
420 "contexts": ["webui"],
422 "chrome://chrome-signin/*",
423 "chrome://media-router/*",
427 "webViewInternal": [{
429 "dependencies": ["permission:webview"],
430 "contexts": ["blessed_extension"]
434 "contexts": ["webui"],
436 "chrome://chrome-signin/*",
437 "chrome://media-router/*",
442 "dependencies": ["permission:webview"],
443 "contexts": ["blessed_extension"]
446 "contexts": ["webui"],
448 "chrome://chrome-signin/*",
449 "chrome://media-router/*",