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.
5 // This features file defines extension APIs implemented under src/chrome.
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.
22 "accessibilityFeatures": [{
23 "platforms": ["chromeos"],
24 "dependencies": ["permission:accessibilityFeatures.modify"],
25 "contexts": ["blessed_extension"]
27 "platforms": ["chromeos"],
28 "dependencies": ["permission:accessibilityFeatures.read"],
29 "contexts": ["blessed_extension"]
31 "accessibilityPrivate": {
32 "dependencies": ["permission:accessibilityPrivate"],
33 "contexts": ["blessed_extension"]
35 "activityLogPrivate": {
36 "dependencies": ["permission:activityLogPrivate"],
37 "contexts": ["blessed_extension"]
40 "dependencies": ["permission:adview"],
41 "contexts": ["blessed_extension"]
44 "dependencies": ["permission:alarms"],
45 "contexts": ["blessed_extension"]
49 "2FC374607C2DF285634B67C64A2E356C607091C3", // Quickoffice
50 "3727DD3E564B6055387425027AD74C58784ACC15", // Quickoffice internal
51 "12E618C3C6E97495AAECF2AC12DEB082353241C6" // QO component extension
54 "extension_types": ["hosted_app", "extension", "legacy_packaged_app"],
57 "unblessed_extension",
63 "http://*/*", "https://*/*", "chrome-extension://*/*", "file://*/*"
68 "contexts": ["blessed_extension"],
69 "extension_types": ["platform_app"],
73 "component_extensions_auto_granted": false,
74 "contexts": ["blessed_extension"],
75 "extension_types": ["extension"],
78 "2FC374607C2DF285634B67C64A2E356C607091C3", // Quickoffice
79 "3727DD3E564B6055387425027AD74C58784ACC15", // Quickoffice internal
80 "12E618C3C6E97495AAECF2AC12DEB082353241C6" // QO component extension
85 "contexts": ["blessed_extension"],
86 "extension_types": ["platform_app"],
89 "app.currentWindowInternal": {
93 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
95 "app.currentWindowInternal.setShape": {
96 "dependencies": ["permission:app.window.shape"],
97 "contexts": ["blessed_extension"]
100 "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
103 "app.getDetailsForFrame": {
104 "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
107 "app.getIsInstalled": {
108 "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
111 "app.installState": {
112 "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
115 "app.runningState": {
116 "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
120 "dependencies": ["permission:audio"],
121 "contexts": ["blessed_extension"]
123 "automationInternal": {
125 "dependencies": ["manifest:automation"],
126 "contexts": ["blessed_extension"]
129 "dependencies": ["manifest:automation"],
130 "contexts": ["blessed_extension"]
133 "dependencies": ["permission:autotestPrivate"],
134 "contexts": ["blessed_extension"]
137 "dependencies": ["manifest:bluetooth"],
138 "contexts": ["blessed_extension"]
140 "bluetoothLowEnergy": {
141 "dependencies": ["manifest:bluetooth"],
142 "contexts": ["blessed_extension"]
144 "bluetoothPrivate": {
145 "dependencies": ["permission:bluetoothPrivate"],
146 "contexts": ["blessed_extension"]
149 "dependencies": ["manifest:bluetooth"],
150 "contexts": ["blessed_extension"]
152 "bookmarkManagerPrivate": {
153 "dependencies": ["permission:bookmarkManagerPrivate"],
154 "contexts": ["blessed_extension"]
157 "dependencies": ["permission:bookmarks"],
158 "contexts": ["blessed_extension"]
160 "bookmarks.export": {
161 "extension_types": ["extension"],
162 "location": "component"
164 "bookmarks.import": {
165 "extension_types": ["extension"],
166 "location": "component"
168 "brailleDisplayPrivate": {
169 "dependencies": ["permission:brailleDisplayPrivate"],
170 "contexts": ["blessed_extension"]
173 "dependencies": ["permission:browser"],
174 "contexts": ["blessed_extension"]
177 "dependencies": ["manifest:browser_action"],
178 "contexts": ["blessed_extension"]
180 // This API is whitelisted on stable and should not be enabled for a wider
181 // audience without resolving security issues raised in API proposal and
182 // review (https://codereview.chromium.org/25305002).
183 "browserAction.openPopup": [{
185 "dependencies": ["manifest:browser_action"],
186 "contexts": ["blessed_extension"]
189 "dependencies": ["manifest:browser_action"],
191 "63ED55E43214C211F82122ED56407FF1A807F2A3", // Dev
192 "FA01E0B81978950F2BC5A50512FD769725F57510", // Beta
193 "B11A93E7E5B541F8010245EBDE2C74647D6C14B9", // Canary
194 "F155646B5D1CA545F7E1E4E20D573DFDD44C2540", // Google Cast Beta
195 "16CA7A47AAE4BE49B1E75A6B960C3875E945B264" // Google Cast Stable
197 "contexts": ["blessed_extension"]
200 "dependencies": ["permission:browsingData"],
201 "contexts": ["blessed_extension"]
204 "dependencies": ["permission:cast"],
205 "contexts": ["blessed_extension"]
207 "cast.streaming.rtpStream": {
208 "dependencies": ["permission:cast.streaming"],
209 "contexts": ["blessed_extension"]
211 "cast.streaming.session": {
212 "dependencies": ["permission:cast.streaming"],
213 "contexts": ["blessed_extension"]
215 "cast.streaming.udpTransport": {
216 "dependencies": ["permission:cast.streaming"],
217 "contexts": ["blessed_extension"]
219 "chromeosInfoPrivate": {
220 "platforms": ["chromeos"],
221 "dependencies": ["permission:chromeosInfoPrivate"],
222 "contexts": ["blessed_extension"]
224 "cloudPrintPrivate": {
225 "dependencies": ["permission:cloudPrintPrivate"],
226 "contexts": ["blessed_extension"]
228 "commandLinePrivate": {
229 "dependencies": ["permission:commandLinePrivate"],
230 "contexts": ["blessed_extension"]
233 "dependencies": ["manifest:commands"],
234 "contexts": ["blessed_extension"]
237 "dependencies": ["permission:contentSettings"],
238 "contexts": ["blessed_extension"]
241 "dependencies": ["permission:contextMenus"],
242 "contexts": ["blessed_extension"]
244 "contextMenusInternal": {
247 "contexts": ["blessed_extension"]
250 "dependencies": ["permission:cookies"],
251 "contexts": ["blessed_extension"]
254 "dependencies": ["permission:debugger"],
255 "contexts": ["blessed_extension"]
257 "declarativeContent": {
258 "dependencies": ["permission:declarativeContent"],
259 "contexts": ["blessed_extension"]
261 "declarativeWebRequest": {
262 "dependencies": ["permission:declarativeWebRequest"],
263 "contexts": ["blessed_extension"]
266 "dependencies": ["permission:desktopCapture"],
267 "contexts": ["blessed_extension"]
269 "developerPrivate": {
270 "dependencies": ["permission:developerPrivate"],
271 "contexts": ["blessed_extension"]
273 "devtools.inspectedWindow": {
274 "dependencies": ["manifest:devtools_page"],
275 "contexts": ["blessed_extension"]
277 "devtools.network": {
278 "dependencies": ["manifest:devtools_page"],
279 "contexts": ["blessed_extension"]
282 "dependencies": ["manifest:devtools_page"],
283 "contexts": ["blessed_extension"]
286 "dependencies": ["permission:diagnostics"],
287 "extension_types": ["platform_app"],
288 "contexts": ["blessed_extension"]
291 "dependencies": ["permission:dial"],
292 "contexts": ["blessed_extension"]
295 "dependencies": ["permission:downloads"],
296 "contexts": ["blessed_extension"]
298 "downloadsInternal": {
301 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
304 "platforms": ["chromeos"],
305 "dependencies": ["permission:echoPrivate"],
306 "contexts": ["blessed_extension"]
308 "enterprise.platformKeys": {
309 "dependencies": ["permission:enterprise.platformKeys"],
310 "contexts": ["blessed_extension"]
312 "enterprise.platformKeysInternal": {
313 "dependencies": ["permission:enterprise.platformKeys"],
315 "contexts": ["blessed_extension"]
317 "enterprise.platformKeysPrivate": {
318 "platforms": ["chromeos"],
319 "dependencies": ["permission:enterprise.platformKeysPrivate"],
320 "contexts": ["blessed_extension"]
325 "extension_types": ["platform_app", "extension"],
327 "matches": ["<all_urls>"]
329 "experimental.devtools.audits": {
330 "dependencies": ["permission:experimental", "manifest:devtools_page"],
331 "contexts": ["blessed_extension"]
333 "experimental.devtools.console": {
334 "dependencies": ["permission:experimental", "manifest:devtools_page"],
335 "contexts": ["blessed_extension"]
339 "extension_types": ["extension", "legacy_packaged_app"],
340 "contexts": ["blessed_extension"]
342 "extension.getURL": {
343 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
345 "extension.getViews": [
348 "contexts": ["blessed_extension"],
349 "extension_types": ["extension", "legacy_packaged_app"]
352 // TODO(yoz): Eliminate this usage.
354 "contexts": ["blessed_extension"],
355 "extension_types": ["platform_app"],
357 "A948368FC53BE437A55FEB414106E207925482F5" // File manager
361 "extension.inIncognitoContext": {
362 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
364 "extension.lastError": {
365 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
367 "extension.onRequest": {
368 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
370 "extension.sendNativeMessage": {
371 "dependencies": ["permission:nativeMessaging"]
373 "extension.sendRequest": {
374 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
376 // This is not a real API, only here for documentation purposes.
377 // See http://crbug.com/275944 for background.
378 "extensionsManifestTypes": {
381 "contexts": ["blessed_extension"]
384 "dependencies": ["permission:feedbackPrivate"],
385 "contexts": ["blessed_extension"]
387 "fileBrowserHandler": {
388 "platforms": ["chromeos"],
389 "dependencies": ["permission:fileBrowserHandler"],
390 "contexts": ["blessed_extension"]
392 "fileBrowserHandlerInternal": {
394 "platforms": ["chromeos"],
396 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
398 "screenlockPrivate": {
399 "dependencies": ["permission:screenlockPrivate"],
400 "extension_types": ["platform_app"],
401 "contexts": ["blessed_extension", "unblessed_extension"]
403 "fileBrowserPrivate": {
404 "platforms": ["chromeos"],
405 "dependencies": ["permission:fileBrowserPrivate"],
406 "contexts": ["blessed_extension"]
408 "fileBrowserPrivateInternal": {
410 "platforms": ["chromeos"],
411 "dependencies": ["permission:fileBrowserPrivate"],
412 "contexts": ["blessed_extension"]
415 "dependencies": ["permission:fileSystem"],
416 "contexts": ["blessed_extension"]
418 "fileSystemProvider": {
419 "dependencies": ["permission:fileSystemProvider"],
420 "contexts": ["blessed_extension"]
422 "fileSystemProviderInternal": {
424 "dependencies": ["permission:fileSystemProvider"],
425 "contexts": ["blessed_extension"]
428 "platforms": ["chromeos"],
429 "dependencies": ["permission:firstRunPrivate"],
430 "contexts": ["blessed_extension"]
433 "dependencies": ["permission:fontSettings"],
434 "contexts": ["blessed_extension"]
437 "dependencies": ["permission:gcm"],
438 "contexts": ["blessed_extension"]
442 "contexts": ["blessed_extension"],
444 // http://crbug.com/309737
445 "nckgahadagoaajjgafhacjanaoiihapd",
446 "ljclpkphhpbpinifbeabbhlfddcpfdde",
447 "ppleadejekpmccmnpjdimmlfljlkdfej",
448 "eggnbpckecmjlblplehfpjjdhhidfdoj"
452 "dependencies": ["permission:hid"],
453 "contexts": ["blessed_extension"]
456 "dependencies": ["permission:history"],
457 "contexts": ["blessed_extension"]
460 "dependencies": ["permission:hotwordPrivate"],
461 "contexts": ["blessed_extension"]
465 "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
466 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
469 "dependencies": ["permission:identity"],
470 "contexts": ["blessed_extension"]
472 "identity.getAccounts": {
474 "dependencies": ["permission:identity"],
475 "contexts": ["blessed_extension"]
478 "dependencies": ["permission:identityPrivate"],
479 "contexts": ["blessed_extension"]
482 "dependencies": ["permission:idltest"],
483 "contexts": ["blessed_extension"]
486 "dependencies": ["permission:idle"],
487 "contexts": ["blessed_extension"]
490 "dependencies": ["permission:infobars"],
491 "contexts": ["blessed_extension"]
494 "platforms": ["chromeos"],
495 "dependencies": ["permission:input"],
496 "contexts": ["blessed_extension"]
498 "inputMethodPrivate": {
499 "platforms": ["chromeos"],
500 "dependencies": ["permission:inputMethodPrivate"],
501 "contexts": ["blessed_extension"]
504 "platforms": ["chromeos"],
505 "dependencies": ["permission:ledger"],
506 "contexts": ["blessed_extension"]
509 "dependencies": ["permission:location"],
510 "contexts": ["blessed_extension"]
513 "dependencies": ["permission:logPrivate"],
514 "extension_types": ["extension", "legacy_packaged_app"],
515 "contexts": ["blessed_extension"]
518 "dependencies": ["permission:webcamPrivate"],
519 "contexts": ["blessed_extension"]
522 "dependencies": ["permission:management"],
523 "contexts": ["blessed_extension"]
525 "management.getPermissionWarningsByManifest": {
528 "extension_types": ["extension", "legacy_packaged_app", "platform_app"]
530 "management.uninstallSelf": {
533 "extension_types": ["extension", "legacy_packaged_app", "platform_app"]
535 "management.createAppShortcut": {
536 "dependencies": ["permission:management"],
538 "contexts": ["blessed_extension"]
540 "management.setLaunchType": {
541 "dependencies": ["permission:management"],
543 "contexts": ["blessed_extension"]
545 // This is not a real API, only here for documentation purposes.
546 // See http://crbug.com/275944 for background.
550 "contexts": ["blessed_extension"]
553 "dependencies": ["permission:mediaGalleries"],
554 "contexts": ["blessed_extension"]
556 "mediaGalleries.getMetadata": {
558 "dependencies": ["permission:mediaGalleries"],
559 "contexts": ["blessed_extension"]
561 "mediaGalleriesPrivate": {
562 "dependencies": ["permission:mediaGalleriesPrivate"],
563 "contexts": ["blessed_extension"]
565 "mediaPlayerPrivate": {
566 "platforms": ["chromeos"],
567 "dependencies": ["permission:mediaPlayerPrivate"],
568 "contexts": ["blessed_extension"]
571 "dependencies": ["permission:metricsPrivate"],
572 "contexts": ["blessed_extension"]
575 "dependencies": ["permission:mdns"],
576 "contexts": ["blessed_extension"]
578 "musicManagerPrivate": {
579 "dependencies": ["permission:musicManagerPrivate"],
580 "contexts": ["blessed_extension"]
582 "networkingPrivate": {
583 "platforms": ["chromeos", "mac", "win"],
584 "dependencies": ["permission:networkingPrivate"],
585 "contexts": ["blessed_extension"]
588 "dependencies": ["permission:notifications"],
589 "contexts": ["blessed_extension"]
592 "dependencies": ["manifest:omnibox"],
593 "contexts": ["blessed_extension"]
596 "dependencies": ["manifest:page_action"],
597 "contexts": ["blessed_extension"]
600 "dependencies": ["manifest:page_actions"],
601 "contexts": ["blessed_extension"]
604 "dependencies": ["permission:pageCapture"],
605 "contexts": ["blessed_extension"]
609 "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
610 "contexts": ["blessed_extension"]
613 "dependencies": ["permission:power"],
614 "contexts": ["blessed_extension"]
616 "preferencesPrivate": {
617 "dependencies": ["permission:preferencesPrivate"],
618 "contexts": ["blessed_extension"]
620 "principalsPrivate": {
621 "dependencies": ["permission:principalsPrivate"],
622 "contexts": ["blessed_extension"]
625 "dependencies": ["permission:privacy"],
626 "contexts": ["blessed_extension"]
629 "dependencies": ["permission:processes"],
630 "contexts": ["blessed_extension"]
633 "dependencies": ["permission:proxy"],
634 "contexts": ["blessed_extension"]
637 "dependencies": ["permission:pushMessaging"],
638 "contexts": ["blessed_extension"]
640 "imageWriterPrivate": {
641 "dependencies": ["permission:imageWriterPrivate"],
642 "extension_types": ["platform_app"],
643 "contexts": ["blessed_extension"]
645 "readingListPrivate": {
646 "dependencies": ["permission:readingListPrivate"],
647 "contexts": ["blessed_extension"]
650 "dependencies": ["permission:rtcPrivate"],
651 "contexts": ["blessed_extension"]
654 "dependencies": ["manifest:script_badge"],
655 "contexts": ["blessed_extension"]
658 "dependencies": ["permission:serial"],
659 "contexts": ["blessed_extension"]
662 "dependencies": ["permission:sessions"],
663 "contexts": ["blessed_extension"]
666 "dependencies": ["permission:signedInDevices"],
667 "contexts": ["blessed_extension"]
670 "dependencies": ["permission:streamsPrivate"],
671 "contexts": ["blessed_extension"]
674 "dependencies": ["permission:syncFileSystem"],
675 "contexts": ["blessed_extension"]
677 "syncedNotificationsPrivate": {
678 "contexts": ["blessed_extension"],
679 "dependencies": ["permission:syncedNotificationsPrivate"]
682 "dependencies": ["manifest:system_indicator"],
683 "contexts": ["blessed_extension"]
686 "dependencies": ["permission:system.cpu"],
687 "contexts": ["blessed_extension"]
690 "dependencies": ["permission:system.display"],
691 "contexts": ["blessed_extension"]
694 "dependencies": ["permission:system.memory"],
695 "contexts": ["blessed_extension"]
698 "dependencies": ["permission:system.network"],
699 "contexts": ["blessed_extension"]
702 "dependencies": ["permission:system.storage"],
703 "contexts": ["blessed_extension"]
705 "system.storage.getAvailableCapacity": {
709 "dependencies": ["permission:systemPrivate"],
710 "contexts": ["blessed_extension"]
713 "dependencies": ["permission:tabCapture"],
714 "contexts": ["blessed_extension"]
718 "extension_types": ["extension", "legacy_packaged_app"],
719 "contexts": ["blessed_extension"]
722 "platforms": ["chromeos"],
723 "dependencies": ["permission:terminalPrivate"],
724 "contexts": ["blessed_extension"]
727 "dependencies": ["permission:topSites"],
728 "contexts": ["blessed_extension"]
731 "dependencies": ["permission:tts"],
732 "contexts": ["blessed_extension"]
735 "dependencies": ["permission:ttsEngine"],
736 "contexts": ["blessed_extension"]
738 "virtualKeyboardPrivate": {
739 "platforms": ["chromeos"],
740 "dependencies": ["permission:virtualKeyboardPrivate"],
741 "contexts": ["blessed_extension"]
744 "platforms": ["chromeos"],
745 "dependencies": ["permission:wallpaper"],
746 "contexts": ["blessed_extension"]
748 "wallpaperPrivate": {
749 "platforms": ["chromeos"],
750 "dependencies": ["permission:wallpaperPrivate"],
751 "contexts": ["blessed_extension"]
754 "dependencies": ["permission:webNavigation"],
755 "contexts": ["blessed_extension"]
758 "dependencies": ["permission:webRequest"],
759 "contexts": ["blessed_extension"]
761 "webRequestInternal": {
764 "contexts": ["blessed_extension", "unblessed_extension"]
766 "webrtcAudioPrivate": {
767 "dependencies": ["permission:webrtcAudioPrivate"],
768 "contexts": ["blessed_extension"]
770 "webrtcLoggingPrivate": {
771 "dependencies": ["permission:webrtcLoggingPrivate"],
772 "contexts": ["blessed_extension"]
775 // Hosted apps can use the webstore API from within a blessed context.
777 "extension_types": ["hosted_app"],
778 "contexts": ["blessed_web_page", "web_page"],
779 // Any webpage can use the webstore API.
780 "matches": ["http://*/*", "https://*/*"]
783 "dependencies": ["permission:webstorePrivate"],
784 "contexts": ["blessed_extension"]
788 "dependencies": ["permission:webview"],
789 "contexts": ["blessed_extension", "unblessed_extension"]
792 "dependencies": ["permission:webview"],
793 "contexts": ["blessed_extension", "unblessed_extension"]
798 "dependencies": ["permission:webview"],
799 "contexts": ["blessed_extension"]
802 "dependencies": ["api:tabs"],
803 "contexts": ["blessed_extension"]