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.
13 "accessibilityFeatures": [{
14 "platforms": ["chromeos"],
15 "dependencies": ["permission:accessibilityFeatures.modify"],
16 "contexts": ["blessed_extension"]
18 "platforms": ["chromeos"],
19 "dependencies": ["permission:accessibilityFeatures.read"],
20 "contexts": ["blessed_extension"]
22 "activityLogPrivate": {
23 "dependencies": ["permission:activityLogPrivate"],
24 "contexts": ["blessed_extension"]
27 "dependencies": ["permission:adview"],
28 "contexts": ["blessed_extension"]
31 "dependencies": ["permission:alarms"],
32 "contexts": ["blessed_extension"]
36 "extension_types": ["hosted_app", "extension", "legacy_packaged_app"],
39 "unblessed_extension",
45 "http://*/*", "https://*/*", "chrome-extension://*/*", "file://*/*"
50 "contexts": ["blessed_extension"],
51 "extension_types": ["platform_app"],
56 "contexts": ["blessed_extension"],
57 "extension_types": ["platform_app"],
60 "app.currentWindowInternal": {
64 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
66 "app.currentWindowInternal.setShape": {
67 "dependencies": ["permission:app.window.shape"],
68 "contexts": ["blessed_extension"]
71 "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
74 "app.getDetailsForFrame": {
75 "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
78 "app.getIsInstalled": {
79 "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
83 "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
87 "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
91 "dependencies": ["permission:audio"],
92 "contexts": ["blessed_extension"]
94 "automationInternal": {
96 "dependencies": ["permission:automation"],
97 "contexts": ["blessed_extension"]
100 "dependencies": ["permission:automation"],
101 "contexts": ["blessed_extension"]
104 "dependencies": ["permission:autotestPrivate"],
105 "contexts": ["blessed_extension"]
108 "dependencies": ["manifest:bluetooth"],
109 "contexts": ["blessed_extension"]
111 "bluetoothLowEnergy": {
112 "dependencies": ["manifest:bluetooth"],
113 "contexts": ["blessed_extension"]
115 "bluetoothPrivate": {
116 "dependencies": ["permission:bluetoothPrivate"],
117 "contexts": ["blessed_extension"]
120 "dependencies": ["manifest:bluetooth"],
121 "contexts": ["blessed_extension"]
123 "bookmarkManagerPrivate": {
124 "dependencies": ["permission:bookmarkManagerPrivate"],
125 "contexts": ["blessed_extension"]
128 "dependencies": ["permission:bookmarks"],
129 "contexts": ["blessed_extension"]
131 "bookmarks.export": {
132 "extension_types": ["extension"],
133 "location": "component"
135 "bookmarks.import": {
136 "extension_types": ["extension"],
137 "location": "component"
139 "brailleDisplayPrivate": {
140 "dependencies": ["permission:brailleDisplayPrivate"],
141 "contexts": ["blessed_extension"]
144 "dependencies": ["permission:browser"],
145 "contexts": ["blessed_extension"]
148 "dependencies": ["manifest:browser_action"],
149 "contexts": ["blessed_extension"]
151 // This API is whitelisted on stable and should not be enabled for a wider
152 // audience without resolving security issues raised in API proposal and
153 // review (https://codereview.chromium.org/25305002).
154 "browserAction.openPopup": [{
156 "dependencies": ["manifest:browser_action"],
157 "contexts": ["blessed_extension"]
160 "dependencies": ["manifest:browser_action"],
162 "63ED55E43214C211F82122ED56407FF1A807F2A3", // Dev
163 "FA01E0B81978950F2BC5A50512FD769725F57510", // Beta
164 "B11A93E7E5B541F8010245EBDE2C74647D6C14B9", // Canary
165 "F155646B5D1CA545F7E1E4E20D573DFDD44C2540", // Google Cast Beta
166 "16CA7A47AAE4BE49B1E75A6B960C3875E945B264" // Google Cast Stable
168 "contexts": ["blessed_extension"]
171 "dependencies": ["permission:browsingData"],
172 "contexts": ["blessed_extension"]
175 "dependencies": ["permission:cast"],
176 "contexts": ["blessed_extension"]
178 "cast.streaming.rtpStream": {
179 "dependencies": ["permission:cast.streaming"],
180 "contexts": ["blessed_extension"]
182 "cast.streaming.session": {
183 "dependencies": ["permission:cast.streaming"],
184 "contexts": ["blessed_extension"]
186 "cast.streaming.udpTransport": {
187 "dependencies": ["permission:cast.streaming"],
188 "contexts": ["blessed_extension"]
190 "chromeosInfoPrivate": {
191 "platforms": ["chromeos"],
192 "dependencies": ["permission:chromeosInfoPrivate"],
193 "contexts": ["blessed_extension"]
195 "cloudPrintPrivate": {
196 "dependencies": ["permission:cloudPrintPrivate"],
197 "contexts": ["blessed_extension"]
199 "commandLinePrivate": {
200 "dependencies": ["permission:commandLinePrivate"],
201 "contexts": ["blessed_extension"]
204 "dependencies": ["manifest:commands"],
205 "contexts": ["blessed_extension"]
208 "dependencies": ["permission:contentSettings"],
209 "contexts": ["blessed_extension"]
212 "dependencies": ["permission:contextMenus"],
213 "contexts": ["blessed_extension"]
215 "contextMenusInternal": {
218 "contexts": ["blessed_extension"]
221 "dependencies": ["permission:cookies"],
222 "contexts": ["blessed_extension"]
225 "dependencies": ["permission:debugger"],
226 "contexts": ["blessed_extension"]
228 "declarativeContent": {
229 "dependencies": ["permission:declarativeContent"],
230 "contexts": ["blessed_extension"]
232 "declarativeWebRequest": {
233 "dependencies": ["permission:declarativeWebRequest"],
234 "contexts": ["blessed_extension"]
237 "dependencies": ["permission:desktopCapture"],
238 "contexts": ["blessed_extension"]
240 "developerPrivate": {
241 "dependencies": ["permission:developerPrivate"],
242 "contexts": ["blessed_extension"]
244 "devtools.inspectedWindow": {
245 "dependencies": ["manifest:devtools_page"],
246 "contexts": ["blessed_extension"]
248 "devtools.network": {
249 "dependencies": ["manifest:devtools_page"],
250 "contexts": ["blessed_extension"]
253 "dependencies": ["manifest:devtools_page"],
254 "contexts": ["blessed_extension"]
257 "dependencies": ["permission:diagnostics"],
258 "extension_types": ["platform_app"],
259 "contexts": ["blessed_extension"]
262 "dependencies": ["permission:dial"],
263 "contexts": ["blessed_extension"]
266 "dependencies": ["permission:downloads"],
267 "contexts": ["blessed_extension"]
269 "downloadsInternal": {
272 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
275 "platforms": ["chromeos"],
276 "dependencies": ["permission:echoPrivate"],
277 "contexts": ["blessed_extension"]
279 "enterprise.platformKeysPrivate": {
280 "platforms": ["chromeos"],
281 "dependencies": ["permission:enterprise.platformKeysPrivate"],
282 "contexts": ["blessed_extension"]
287 "extension_types": ["platform_app", "extension"],
289 "matches": ["<all_urls>"]
291 "experimental.accessibility": {
292 "dependencies": ["permission:experimental"],
293 "contexts": ["blessed_extension"]
295 "experimental.devtools.audits": {
296 "dependencies": ["permission:experimental", "manifest:devtools_page"],
297 "extension_types": ["platform_app"],
298 "contexts": ["blessed_extension"]
300 "experimental.devtools.console": {
301 "dependencies": ["permission:experimental", "manifest:devtools_page"],
302 "extension_types": ["platform_app"],
303 "contexts": ["blessed_extension"]
307 "extension_types": ["extension", "legacy_packaged_app"],
308 "contexts": ["blessed_extension"]
310 "extension.getURL": {
311 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
313 "extension.getViews": [
316 "contexts": ["blessed_extension"],
317 "extension_types": ["extension", "legacy_packaged_app"]
320 // TODO(yoz): Eliminate this usage.
322 "contexts": ["blessed_extension"],
323 "extension_types": ["platform_app"],
325 "A948368FC53BE437A55FEB414106E207925482F5" // File manager
329 "extension.inIncognitoContext": {
330 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
332 "extension.lastError": {
333 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
335 "extension.onRequest": {
336 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
338 "extension.sendNativeMessage": {
339 "dependencies": ["permission:nativeMessaging"]
341 "extension.sendRequest": {
342 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
344 // This is not a real API, only here for documentation purposes.
345 // See http://crbug.com/275944 for background.
346 "extensionsManifestTypes": {
349 "contexts": ["blessed_extension"]
352 "dependencies": ["permission:feedbackPrivate"],
353 "contexts": ["blessed_extension"]
355 "fileBrowserHandler": {
356 "platforms": ["chromeos"],
357 "dependencies": ["permission:fileBrowserHandler"],
358 "contexts": ["blessed_extension"]
360 "fileBrowserHandlerInternal": {
362 "platforms": ["chromeos"],
364 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
366 "screenlockPrivate": {
367 "platforms": ["chromeos"],
368 "dependencies": ["permission:screenlockPrivate"],
369 "extension_types": ["platform_app"],
370 "contexts": ["blessed_extension", "unblessed_extension"]
372 "fileBrowserPrivate": {
373 "platforms": ["chromeos"],
374 "dependencies": ["permission:fileBrowserPrivate"],
375 "contexts": ["blessed_extension"]
378 "dependencies": ["permission:fileSystem"],
379 "contexts": ["blessed_extension"]
381 "fileSystemProvider": {
382 "dependencies": ["permission:fileSystemProvider"],
383 "contexts": ["blessed_extension"]
385 "fileSystemProviderInternal": {
387 "dependencies": ["permission:fileSystemProvider"],
388 "contexts": ["blessed_extension"]
391 "platforms": ["chromeos"],
392 "dependencies": ["permission:firstRunPrivate"],
393 "contexts": ["blessed_extension"]
396 "dependencies": ["permission:fontSettings"],
397 "contexts": ["blessed_extension"]
400 "dependencies": ["permission:gcm"],
401 "contexts": ["blessed_extension"]
405 "contexts": ["blessed_extension"],
407 // http://crbug.com/309737
408 "nckgahadagoaajjgafhacjanaoiihapd",
409 "ljclpkphhpbpinifbeabbhlfddcpfdde",
410 "ppleadejekpmccmnpjdimmlfljlkdfej",
411 "eggnbpckecmjlblplehfpjjdhhidfdoj"
415 "dependencies": ["permission:hid"],
416 "contexts": ["blessed_extension"]
419 "dependencies": ["permission:history"],
420 "contexts": ["blessed_extension"]
423 "dependencies": ["permission:hotwordPrivate"],
424 "contexts": ["blessed_extension"]
428 "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
429 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
432 "dependencies": ["permission:identity"],
433 "contexts": ["blessed_extension"]
436 "dependencies": ["permission:identityPrivate"],
437 "contexts": ["blessed_extension"]
440 "dependencies": ["permission:idltest"],
441 "contexts": ["blessed_extension"]
444 "dependencies": ["permission:idle"],
445 "contexts": ["blessed_extension"]
448 "dependencies": ["permission:infobars"],
449 "contexts": ["blessed_extension"]
452 "platforms": ["chromeos"],
453 "dependencies": ["permission:input"],
454 "contexts": ["blessed_extension"]
456 "inputMethodPrivate": {
457 "platforms": ["chromeos"],
458 "dependencies": ["permission:inputMethodPrivate"],
459 "contexts": ["blessed_extension"]
462 "dependencies": ["permission:location"],
463 "contexts": ["blessed_extension"]
466 "dependencies": ["permission:logPrivate"],
467 "extension_types": ["extension", "legacy_packaged_app"],
468 "contexts": ["blessed_extension"]
471 "dependencies": ["permission:webcamPrivate"],
472 "contexts": ["blessed_extension"]
475 "dependencies": ["permission:management"],
476 "contexts": ["blessed_extension"]
478 "management.getPermissionWarningsByManifest": {
481 "extension_types": ["extension", "legacy_packaged_app", "platform_app"]
483 "management.uninstallSelf": {
486 "extension_types": ["extension", "legacy_packaged_app", "platform_app"]
488 "management.createAppShortcut": {
489 "dependencies": ["permission:management"],
491 "contexts": ["blessed_extension"]
493 // This is not a real API, only here for documentation purposes.
494 // See http://crbug.com/275944 for background.
498 "contexts": ["blessed_extension"]
501 "dependencies": ["permission:mediaGalleries"],
502 "contexts": ["blessed_extension"]
504 "mediaGalleries.getMetadata": {
506 "dependencies": ["permission:mediaGalleries"],
507 "contexts": ["blessed_extension"]
509 "mediaGalleriesPrivate": {
510 "dependencies": ["permission:mediaGalleriesPrivate"],
511 "contexts": ["blessed_extension"]
513 "mediaPlayerPrivate": {
514 "platforms": ["chromeos"],
515 "dependencies": ["permission:mediaPlayerPrivate"],
516 "contexts": ["blessed_extension"]
519 "dependencies": ["permission:metricsPrivate"],
520 "contexts": ["blessed_extension"]
523 "dependencies": ["permission:mdns"],
524 "contexts": ["blessed_extension"]
526 "musicManagerPrivate": {
527 "dependencies": ["permission:musicManagerPrivate"],
528 "contexts": ["blessed_extension"]
530 "networkingPrivate": {
531 "platforms": ["chromeos", "mac", "win"],
532 "dependencies": ["permission:networkingPrivate"],
533 "contexts": ["blessed_extension"]
536 "dependencies": ["permission:notifications"],
537 "contexts": ["blessed_extension"]
540 "dependencies": ["manifest:omnibox"],
541 "contexts": ["blessed_extension"]
544 "dependencies": ["manifest:page_action"],
545 "contexts": ["blessed_extension"]
548 "dependencies": ["manifest:page_actions"],
549 "contexts": ["blessed_extension"]
552 "dependencies": ["permission:pageCapture"],
553 "contexts": ["blessed_extension"]
557 "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
558 "contexts": ["blessed_extension"]
561 "dependencies": ["permission:power"],
562 "contexts": ["blessed_extension"]
564 "preferencesPrivate": {
565 "dependencies": ["permission:preferencesPrivate"],
566 "contexts": ["blessed_extension"]
568 "principalsPrivate": {
569 "dependencies": ["permission:principalsPrivate"],
570 "contexts": ["blessed_extension"]
573 "dependencies": ["permission:privacy"],
574 "contexts": ["blessed_extension"]
577 "dependencies": ["permission:processes"],
578 "contexts": ["blessed_extension"]
581 "dependencies": ["permission:proxy"],
582 "contexts": ["blessed_extension"]
585 "dependencies": ["permission:pushMessaging"],
586 "contexts": ["blessed_extension"]
588 "imageWriterPrivate": {
589 "dependencies": ["permission:imageWriterPrivate"],
590 "extension_types": ["platform_app"],
591 "contexts": ["blessed_extension"]
593 "readingListPrivate": {
594 "dependencies": ["permission:readingListPrivate"],
595 "contexts": ["blessed_extension"]
598 "dependencies": ["permission:rtcPrivate"],
599 "contexts": ["blessed_extension"]
603 "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
604 "contexts": ["blessed_extension"]
608 "matches": ["<all_urls>"]
610 "runtime.getManifest": {
611 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
614 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
617 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
619 "runtime.lastError": {
621 "extension_types": "all",
622 "matches": ["<all_urls>"]
624 "runtime.onConnect": {
625 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
627 "runtime.onMessage": {
628 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
631 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
633 "runtime.requestUpdateCheck": {
634 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
636 "runtime.sendMessage": {
638 "matches": ["<all_urls>"]
640 "runtime.setUninstallURL": {
642 "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
645 "dependencies": ["manifest:script_badge"],
646 "contexts": ["blessed_extension"]
649 "dependencies": ["permission:serial"],
650 "contexts": ["blessed_extension"]
653 "dependencies": ["permission:sessions"],
654 "contexts": ["blessed_extension"]
657 "dependencies": ["permission:signedInDevices"],
658 "contexts": ["blessed_extension"]
661 "dependencies": ["permission:streamsPrivate"],
662 "contexts": ["blessed_extension"]
665 "dependencies": ["permission:syncFileSystem"],
666 "contexts": ["blessed_extension"]
669 "dependencies": ["manifest:system_indicator"],
670 "contexts": ["blessed_extension"]
673 "dependencies": ["permission:system.cpu"],
674 "contexts": ["blessed_extension"]
677 "dependencies": ["permission:system.display"],
678 "contexts": ["blessed_extension"]
681 "dependencies": ["permission:system.memory"],
682 "contexts": ["blessed_extension"]
685 "dependencies": ["permission:system.network"],
686 "contexts": ["blessed_extension"]
689 "dependencies": ["permission:system.storage"],
690 "contexts": ["blessed_extension"]
692 "system.storage.getAvailableCapacity": {
696 "dependencies": ["permission:systemPrivate"],
697 "contexts": ["blessed_extension"]
700 "dependencies": ["permission:tabCapture"],
701 "contexts": ["blessed_extension"]
705 "extension_types": ["extension", "legacy_packaged_app"],
706 "contexts": ["blessed_extension"]
709 "platforms": ["chromeos"],
710 "dependencies": ["permission:terminalPrivate"],
711 "contexts": ["blessed_extension"]
714 "dependencies": ["permission:topSites"],
715 "contexts": ["blessed_extension"]
718 "dependencies": ["permission:tts"],
719 "contexts": ["blessed_extension"]
722 "dependencies": ["permission:ttsEngine"],
723 "contexts": ["blessed_extension"]
727 "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
728 "contexts": ["blessed_extension"]
732 "extension_types": ["extension"],
733 "location": "component"
736 "dependencies": ["permission:usb"],
737 "contexts": ["blessed_extension"]
739 "virtualKeyboardPrivate": {
740 "platforms": ["chromeos"],
741 "dependencies": ["permission:virtualKeyboardPrivate"],
742 "contexts": ["blessed_extension"]
745 "platforms": ["chromeos"],
746 "dependencies": ["permission:wallpaper"],
747 "contexts": ["blessed_extension"]
749 "wallpaperPrivate": {
750 "platforms": ["chromeos"],
751 "dependencies": ["permission:wallpaperPrivate"],
752 "contexts": ["blessed_extension"]
755 "dependencies": ["permission:webNavigation"],
756 "contexts": ["blessed_extension"]
759 "dependencies": ["permission:webRequest"],
760 "contexts": ["blessed_extension"]
762 "webRequestInternal": {
765 "contexts": ["blessed_extension", "unblessed_extension"]
767 "webrtcAudioPrivate": {
768 "dependencies": ["permission:webrtcAudioPrivate"],
769 "contexts": ["blessed_extension"]
771 "webrtcLoggingPrivate": {
772 "dependencies": ["permission:webrtcLoggingPrivate"],
773 "contexts": ["blessed_extension"]
776 // Hosted apps can use the webstore API from within a blessed context.
778 "extension_types": ["hosted_app"],
779 "contexts": ["blessed_web_page", "web_page"],
780 // Any webpage can use the webstore API.
781 "matches": ["http://*/*", "https://*/*"]
784 "dependencies": ["permission:webstorePrivate"],
785 "contexts": ["blessed_extension"]
789 "dependencies": ["permission:webview"],
790 "contexts": ["blessed_extension", "unblessed_extension"]
793 "dependencies": ["permission:webview"],
794 "contexts": ["blessed_extension", "unblessed_extension"]
799 "dependencies": ["permission:webview"],
800 "contexts": ["blessed_extension"]
803 "dependencies": ["api:tabs"],
804 "contexts": ["blessed_extension"]