Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / api / _api_features.json
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 // 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.
8 //
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.
11
12 // To add a new whitelisted ID, SHA-1 it and force it to uppercase. In Bash:
13 //
14 // $ echo -n "aaaabbbbccccddddeeeeffffgggghhhh" | \
15 // sha1sum | tr '[:lower:]' '[:upper:]'
16 // 9A0417016F345C934A1A88F55CA17C05014EEEBA  -
17 //
18 // Google employees: please update http://go/chrome-api-whitelist to map
19 // hashes back to ids.
20
21 {
22   "accessibilityFeatures": [{
23     "dependencies": ["permission:accessibilityFeatures.modify"],
24     "contexts": ["blessed_extension"]
25   }, {
26     "dependencies": ["permission:accessibilityFeatures.read"],
27     "contexts": ["blessed_extension"]
28   }],
29   "accessibilityPrivate": {
30     "dependencies": ["permission:accessibilityPrivate"],
31     "contexts": ["blessed_extension"]
32   },
33   "activityLogPrivate": {
34     "dependencies": ["permission:activityLogPrivate"],
35     "contexts": ["blessed_extension"]
36   },
37   "alarms": {
38     "dependencies": ["permission:alarms"],
39     "contexts": ["blessed_extension"]
40   },
41   "app": {
42     "blacklist": [
43       "2FC374607C2DF285634B67C64A2E356C607091C3",  // Quickoffice
44       "3727DD3E564B6055387425027AD74C58784ACC15",  // Quickoffice internal
45       "12E618C3C6E97495AAECF2AC12DEB082353241C6"   // QO component extension
46     ],
47     "channel": "stable",
48     "extension_types": ["hosted_app", "extension", "legacy_packaged_app"],
49     "contexts": [
50       "blessed_extension",
51       "unblessed_extension",
52       "content_script",
53       "web_page",
54       "blessed_web_page"
55     ],
56     // Any webpage can use the app API.
57     "matches": ["<all_urls>"]
58   },
59   // The API for the *embedder* of appview. Appview has both an embedder and
60   // guest API, which are different.
61   "appViewEmbedderInternal": {
62     "internal": true,
63     "contexts": ["blessed_extension"],
64     "dependencies": ["permission:appview"]
65   },
66   // TODO(fsamuel,kalman): Rename this appViewGuestInternal.
67   "appViewInternal": {
68     "internal": true,
69     "channel": "dev",
70     "contexts": ["blessed_extension"]
71   },
72   "app.window": {
73     "channel": "stable",
74     "contexts": ["blessed_extension"],
75     "extension_types": ["platform_app"],
76     "noparent": true
77   },
78   "app.currentWindowInternal": {
79     "noparent": true,
80     "internal": true,
81     "channel": "stable",
82     "contexts": ["blessed_extension"]
83   },
84   "app.currentWindowInternal.setShape": {
85     "dependencies": ["permission:app.window.shape"],
86     "contexts": ["blessed_extension"]
87   },
88   "app.getDetails": {
89     "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
90     "matches": []
91   },
92   "app.getDetailsForFrame": {
93     "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
94     "matches": []
95   },
96   "app.getIsInstalled": {
97     "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
98     "matches": []
99   },
100   "app.installState": {
101     "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
102     "matches": []
103   },
104   "app.runningState": {
105     "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
106     "matches": []
107   },
108   "audio": {
109     "dependencies": ["permission:audio"],
110     "contexts": ["blessed_extension"]
111   },
112   "automationInternal": {
113     "internal": true,
114     "dependencies": ["manifest:automation"],
115     "contexts": ["blessed_extension"]
116   },
117   "automation": {
118     "dependencies": ["manifest:automation"],
119     "contexts": ["blessed_extension"]
120   },
121   "autotestPrivate": {
122     "dependencies": ["permission:autotestPrivate"],
123     "contexts": ["blessed_extension"]
124   },
125   "bluetooth": {
126     "dependencies": ["manifest:bluetooth"],
127     "contexts": ["blessed_extension"]
128   },
129   "bluetoothLowEnergy": {
130     "dependencies": ["manifest:bluetooth"],
131     "contexts": ["blessed_extension"]
132   },
133   "bluetoothPrivate": {
134     "dependencies": ["permission:bluetoothPrivate"],
135     "contexts": ["blessed_extension"]
136   },
137   "bluetoothSocket": {
138     "dependencies": ["manifest:bluetooth"],
139     "contexts": ["blessed_extension"]
140   },
141   "bookmarkManagerPrivate": {
142     "dependencies": ["permission:bookmarkManagerPrivate"],
143     "contexts": ["blessed_extension"]
144   },
145   "bookmarks": {
146     "dependencies": ["permission:bookmarks"],
147     "contexts": ["blessed_extension"]
148   },
149   "bookmarks.export": {
150     "extension_types": ["extension"],
151     "location": "component"
152   },
153   "bookmarks.import": {
154     "extension_types": ["extension"],
155     "location": "component"
156   },
157   "brailleDisplayPrivate": {
158     "dependencies": ["permission:brailleDisplayPrivate"],
159     "contexts": ["blessed_extension"]
160   },
161   "browser": {
162     "dependencies": ["permission:browser"],
163     "contexts": ["blessed_extension"]
164   },
165   "browserAction": {
166     "dependencies": ["manifest:browser_action"],
167     "contexts": ["blessed_extension"]
168   },
169   // This API is whitelisted on stable and should not be enabled for a wider
170   // audience without resolving security issues raised in API proposal and
171   // review (https://codereview.chromium.org/25305002).
172   "browserAction.openPopup": [{
173     "channel": "dev",
174     "dependencies": ["manifest:browser_action"],
175     "contexts": ["blessed_extension"]
176   }, {
177     "channel": "stable",
178     "dependencies": ["manifest:browser_action"],
179     "whitelist": [
180       "63ED55E43214C211F82122ED56407FF1A807F2A3",  // Dev
181       "FA01E0B81978950F2BC5A50512FD769725F57510",  // Beta
182       "B11A93E7E5B541F8010245EBDE2C74647D6C14B9",  // Canary
183       "F155646B5D1CA545F7E1E4E20D573DFDD44C2540",  // Google Cast Beta
184       "16CA7A47AAE4BE49B1E75A6B960C3875E945B264"   // Google Cast Stable
185     ],
186     "contexts": ["blessed_extension"]
187   }],
188   "browsingData": {
189     "dependencies": ["permission:browsingData"],
190     "contexts": ["blessed_extension"]
191   },
192   "cast.channel": {
193     "dependencies": ["permission:cast"],
194     "contexts": ["blessed_extension"]
195   },
196   "cast.streaming.rtpStream": {
197     "dependencies": ["permission:cast.streaming"],
198     "contexts": ["blessed_extension"]
199   },
200   "cast.streaming.session": {
201     "dependencies": ["permission:cast.streaming"],
202     "contexts": ["blessed_extension"]
203   },
204   "cast.streaming.udpTransport": {
205     "dependencies": ["permission:cast.streaming"],
206     "contexts": ["blessed_extension"]
207   },
208   "chromeosInfoPrivate": {
209     "dependencies": ["permission:chromeosInfoPrivate"],
210     "contexts": ["blessed_extension"]
211   },
212   "cloudPrintPrivate": {
213     "dependencies": ["permission:cloudPrintPrivate"],
214     "contexts": ["blessed_extension"]
215   },
216   "commandLinePrivate": {
217     "dependencies": ["permission:commandLinePrivate"],
218     "contexts": ["blessed_extension"]
219   },
220   "commands": {
221     "dependencies": ["manifest:commands"],
222     "contexts": ["blessed_extension"]
223   },
224   "contentSettings": {
225     "dependencies": ["permission:contentSettings"],
226     "contexts": ["blessed_extension"]
227   },
228   "contextMenus": {
229     "dependencies": ["permission:contextMenus"],
230     "contexts": ["blessed_extension"]
231   },
232   "contextMenusInternal": {
233     "internal": true,
234     "channel": "stable",
235     "contexts": ["blessed_extension"]
236   },
237   "cookies": {
238     "dependencies": ["permission:cookies"],
239     "contexts": ["blessed_extension"]
240   },
241   "copresence": {
242     "dependencies": ["permission:copresence"],
243     "contexts": ["blessed_extension"]
244   },
245   "copresencePrivate": {
246     "dependencies": ["permission:copresencePrivate"],
247     "contexts": ["blessed_extension"]
248   },
249   "debugger": {
250     "dependencies": ["permission:debugger"],
251     "contexts": ["blessed_extension"]
252   },
253   "declarativeContent": {
254     "dependencies": ["permission:declarativeContent"],
255     "contexts": ["blessed_extension"]
256   },
257   "declarativeWebRequest": {
258     "dependencies": ["permission:declarativeWebRequest"],
259     "contexts": ["blessed_extension"]
260   },
261   "desktopCapture": {
262     "dependencies": ["permission:desktopCapture"],
263     "contexts": ["blessed_extension"]
264   },
265   "developerPrivate": {
266     "dependencies": ["permission:developerPrivate"],
267     "contexts": ["blessed_extension"]
268   },
269   "devtools.inspectedWindow": {
270     "dependencies": ["manifest:devtools_page"],
271     "contexts": ["blessed_extension"]
272   },
273   "devtools.network": {
274     "dependencies": ["manifest:devtools_page"],
275     "contexts": ["blessed_extension"]
276   },
277   "devtools.panels": {
278     "dependencies": ["manifest:devtools_page"],
279     "contexts": ["blessed_extension"]
280   },
281   "diagnostics": {
282     "dependencies": ["permission:diagnostics"],
283     "extension_types": ["platform_app"],
284     "contexts": ["blessed_extension"]
285   },
286   "dial": {
287     "dependencies": ["permission:dial"],
288     "contexts": ["blessed_extension"]
289   },
290   "downloads": {
291     "dependencies": ["permission:downloads"],
292     "contexts": ["blessed_extension"]
293   },
294   "downloadsInternal": {
295     "internal": true,
296     "channel": "stable",
297     "contexts": ["blessed_extension"]
298   },
299   "easyUnlockPrivate": {
300     "dependencies": ["permission:easyUnlockPrivate"],
301     "contexts": ["blessed_extension"]
302   },
303   "echoPrivate": {
304     "dependencies": ["permission:echoPrivate"],
305     "contexts": ["blessed_extension"]
306   },
307   "enterprise.platformKeys": {
308     "dependencies": ["permission:enterprise.platformKeys"],
309     "contexts": ["blessed_extension"]
310   },
311   "enterprise.platformKeysInternal": {
312     "dependencies": ["permission:enterprise.platformKeys"],
313     "internal": true,
314     "contexts": ["blessed_extension"]
315   },
316   "enterprise.platformKeysPrivate": {
317     "dependencies": ["permission:enterprise.platformKeysPrivate"],
318     "contexts": ["blessed_extension"]
319   },
320   "events": {
321     "internal": true,
322     "channel": "stable",
323     "extension_types": ["platform_app", "extension"],
324     "contexts": "all",
325     "matches": ["<all_urls>"]
326   },
327   "experienceSamplingPrivate": {
328     "dependencies": ["permission:experienceSamplingPrivate"],
329     "contexts": ["blessed_extension"]
330   },
331   "experimental.devtools.audits": {
332     "dependencies": ["permission:experimental", "manifest:devtools_page"],
333     "contexts": ["blessed_extension"]
334   },
335   "experimental.devtools.console": {
336     "dependencies": ["permission:experimental", "manifest:devtools_page"],
337     "contexts": ["blessed_extension"]
338   },
339   "extension": {
340     "channel": "stable",
341     "extension_types": ["extension", "legacy_packaged_app"],
342     "contexts": ["blessed_extension"]
343   },
344   "extension.getURL": {
345     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
346   },
347   "extension.getViews": [
348     {
349       "channel": "stable",
350       "contexts": ["blessed_extension"],
351       "extension_types": ["extension", "legacy_packaged_app"]
352     },
353     {
354       // TODO(yoz): Eliminate this usage.
355       "channel": "stable",
356       "contexts": ["blessed_extension"],
357       "extension_types": ["platform_app"],
358       "whitelist": [
359         "A948368FC53BE437A55FEB414106E207925482F5"  // File manager
360       ]
361     }
362   ],
363   "extension.inIncognitoContext": {
364     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
365   },
366   "extension.lastError": {
367     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
368   },
369   "extension.onRequest": {
370     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
371   },
372   "extension.sendNativeMessage": {
373     "dependencies": ["permission:nativeMessaging"]
374   },
375   "extension.sendRequest": {
376     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
377   },
378   "extensionOptionsInternal": [{
379     "internal": true,
380     "contexts": ["blessed_extension"],
381     "dependencies": ["permission:embeddedExtensionOptions"]
382   }, {
383     "internal": true,
384     "channel": "trunk",
385     "contexts": ["webui"],
386     "matches": ["chrome://extensions-frame/*", "chrome://extensions/*"]
387   }],
388   // This is not a real API, only here for documentation purposes.
389   // See http://crbug.com/275944 for background.
390   "extensionsManifestTypes": {
391     "internal": true,
392     "channel": "stable",
393     "contexts": ["blessed_extension"]
394   },
395   "feedbackPrivate": {
396     "dependencies": ["permission:feedbackPrivate"],
397     "contexts": ["blessed_extension"]
398   },
399   "fileBrowserHandler": {
400     "dependencies": ["permission:fileBrowserHandler"],
401     "contexts": ["blessed_extension"]
402   },
403   "fileBrowserHandlerInternal": {
404     "internal": true,
405     "dependencies": ["permission:fileBrowserHandler"],
406     "contexts": ["blessed_extension"]
407   },
408   "screenlockPrivate": {
409     "dependencies": ["permission:screenlockPrivate"],
410     "extension_types": ["platform_app"],
411     "contexts": ["blessed_extension", "unblessed_extension"]
412   },
413   "fileBrowserPrivate": {
414     "dependencies": ["permission:fileBrowserPrivate"],
415     "contexts": ["blessed_extension"]
416   },
417   "fileBrowserPrivateInternal": {
418     "internal": true,
419     "dependencies": ["permission:fileBrowserPrivate"],
420     "contexts": ["blessed_extension"]
421   },
422   "fileSystem": {
423     "dependencies": ["permission:fileSystem"],
424     "contexts": ["blessed_extension"]
425   },
426   "fileSystemProvider": {
427     "dependencies": ["permission:fileSystemProvider"],
428     "contexts": ["blessed_extension"]
429   },
430   "fileSystemProviderInternal": {
431     "internal": true,
432     "dependencies": ["permission:fileSystemProvider"],
433     "contexts": ["blessed_extension"]
434   },
435   "firstRunPrivate": {
436     "dependencies": ["permission:firstRunPrivate"],
437     "contexts": ["blessed_extension"]
438   },
439   "fontSettings": {
440     "dependencies": ["permission:fontSettings"],
441     "contexts": ["blessed_extension"]
442   },
443   "gcdPrivate": {
444     "dependencies": ["permission:gcdPrivate"],
445     "contexts": ["blessed_extension"]
446   },
447   "gcm": {
448     "dependencies": ["permission:gcm"],
449     "contexts": ["blessed_extension"]
450   },
451   "guestViewInternal": [{
452     "internal": true,
453     "channel": "stable",
454     "contexts": ["blessed_extension"]
455   }, {
456     // Component extensions can use the guestViewInternal API from iframes.
457     "location": "component",
458     "internal": true,
459     "dependencies": ["permission:webview"],
460     "contexts": ["unblessed_extension"]
461   }, {
462     "internal": true,
463     "channel": "trunk",
464     "contexts": ["webui"],
465     "matches": ["chrome://extensions-frame/*", "chrome://extensions/*"]
466   }],
467   "hangoutsPrivate": {
468     "channel": "stable",
469     "contexts": ["blessed_extension"],
470     "whitelist": [
471       // http://crbug.com/309737
472       "nckgahadagoaajjgafhacjanaoiihapd",
473       "ljclpkphhpbpinifbeabbhlfddcpfdde",
474       "ppleadejekpmccmnpjdimmlfljlkdfej",
475       "eggnbpckecmjlblplehfpjjdhhidfdoj",
476       "jfjjdfefebklmdbmenmlehlopoocnoeh",
477       "knipolnnllmklapflnccelgolnpehhpl"
478     ]
479   },
480   "history": {
481     "dependencies": ["permission:history"],
482     "contexts": ["blessed_extension"]
483   },
484   "hotwordPrivate": {
485     "dependencies": ["permission:hotwordPrivate"],
486     "contexts": ["blessed_extension"]
487   },
488   "i18n": {
489     "channel": "stable",
490     "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
491     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
492   },
493   "identity": {
494     "dependencies": ["permission:identity"],
495     "contexts": ["blessed_extension"]
496   },
497   "identity.getAccounts": {
498     "channel": "dev",
499     "dependencies": ["permission:identity"],
500     "contexts": ["blessed_extension"]
501   },
502   "identityPrivate": {
503     "dependencies": ["permission:identityPrivate"],
504     "contexts": ["blessed_extension"]
505   },
506   "idltest": {
507     "dependencies": ["permission:idltest"],
508     "contexts": ["blessed_extension"]
509   },
510   "idle": {
511     "dependencies": ["permission:idle"],
512     "contexts": ["blessed_extension"]
513   },
514   "infobars": {
515     "dependencies": ["permission:infobars"],
516     "contexts": ["blessed_extension"]
517   },
518   "input.ime": {
519     "dependencies": ["permission:input"],
520     "contexts": ["blessed_extension"]
521   },
522   "inputMethodPrivate": {
523     "dependencies": ["permission:inputMethodPrivate"],
524     "contexts": ["blessed_extension"]
525   },
526   "ledger": {
527     "dependencies": ["permission:ledger"],
528     "contexts": ["blessed_extension"]
529   },
530   "location": {
531     "dependencies": ["permission:location"],
532     "contexts": ["blessed_extension"]
533   },
534   "logPrivate": {
535     "dependencies": ["permission:logPrivate"],
536     "contexts": ["blessed_extension"]
537   },
538   "webcamPrivate": {
539     "dependencies": ["permission:webcamPrivate"],
540     "contexts": ["blessed_extension"]
541   },
542   "management": {
543     "dependencies": ["permission:management"],
544     "contexts": ["blessed_extension"]
545   },
546   "management.getPermissionWarningsByManifest": {
547     "dependencies": [],
548     "channel": "stable",
549     "extension_types": ["extension", "legacy_packaged_app", "platform_app"]
550   },
551   "management.uninstallSelf": {
552     "dependencies": [],
553     "channel": "stable",
554     "extension_types": ["extension", "legacy_packaged_app", "platform_app"]
555   },
556   // This is not a real API, only here for documentation purposes.
557   // See http://crbug.com/275944 for background.
558   "manifestTypes": {
559     "internal": true,
560     "channel": "stable",
561     "contexts": ["blessed_extension"]
562   },
563   "mediaGalleries": {
564     "dependencies": ["permission:mediaGalleries"],
565     "contexts": ["blessed_extension"]
566   },
567   "mediaGalleriesPrivate": {
568     "dependencies": ["permission:mediaGalleriesPrivate"],
569     "contexts": ["blessed_extension"]
570   },
571   "mediaPlayerPrivate": {
572     "dependencies": ["permission:mediaPlayerPrivate"],
573     "contexts": ["blessed_extension"]
574   },
575   "metricsPrivate": {
576     "dependencies": ["permission:metricsPrivate"],
577     "contexts": ["blessed_extension"]
578   },
579   "mdns": {
580     "dependencies": ["permission:mdns"],
581     "contexts": ["blessed_extension"]
582   },
583   "musicManagerPrivate": {
584     "dependencies": ["permission:musicManagerPrivate"],
585     "contexts": ["blessed_extension"]
586   },
587   "networkingPrivate": {
588     "dependencies": ["permission:networkingPrivate"],
589     "contexts": ["blessed_extension"]
590   },
591   "notificationProvider": {
592     "dependencies": ["permission:notificationProvider"],
593     "contexts": ["blessed_extension"]
594   },
595   "notifications": {
596     "dependencies": ["permission:notifications"],
597     "contexts": ["blessed_extension"]
598   },
599   "omnibox": {
600     "dependencies": ["manifest:omnibox"],
601     "contexts": ["blessed_extension"]
602   },
603   "pageAction": {
604     "dependencies": ["manifest:page_action"],
605     "contexts": ["blessed_extension"]
606   },
607   "pageActions": {
608     "dependencies": ["manifest:page_actions"],
609     "contexts": ["blessed_extension"]
610   },
611   "pageCapture": {
612     "dependencies": ["permission:pageCapture"],
613     "contexts": ["blessed_extension"]
614   },
615   "permissions": {
616     "channel": "stable",
617     "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
618     "contexts": ["blessed_extension"]
619   },
620   "preferencesPrivate": {
621     "dependencies": ["permission:preferencesPrivate"],
622     "contexts": ["blessed_extension"]
623   },
624   "principalsPrivate": {
625     "dependencies": ["permission:principalsPrivate"],
626     "contexts": ["blessed_extension"]
627   },
628   "privacy": {
629     "dependencies": ["permission:privacy"],
630     "contexts": ["blessed_extension"]
631   },
632   "processes": {
633     "dependencies": ["permission:processes"],
634     "contexts": ["blessed_extension"]
635   },
636   "proxy": {
637     "dependencies": ["permission:proxy"],
638     "contexts": ["blessed_extension"]
639   },
640   "pushMessaging": {
641     "dependencies": ["permission:pushMessaging"],
642     "contexts": ["blessed_extension"]
643   },
644   "imageWriterPrivate": {
645     "dependencies": ["permission:imageWriterPrivate"],
646     "extension_types": ["platform_app"],
647     "contexts": ["blessed_extension"]
648   },
649   "readingListPrivate": {
650     "dependencies": ["permission:readingListPrivate"],
651     "contexts": ["blessed_extension"]
652   },
653   "rtcPrivate": {
654     "dependencies": ["permission:rtcPrivate"],
655     "contexts": ["blessed_extension"]
656   },
657   "scriptBadge": {
658     "dependencies": ["manifest:script_badge"],
659     "contexts": ["blessed_extension"]
660   },
661   "sessions": {
662     "dependencies": ["permission:sessions"],
663     "contexts": ["blessed_extension"]
664   },
665   "signedInDevices": {
666     "dependencies": ["permission:signedInDevices"],
667     "contexts": ["blessed_extension"]
668   },
669   "streamsPrivate": {
670     "dependencies": ["permission:streamsPrivate"],
671     "contexts": ["blessed_extension"]
672   },
673   "syncFileSystem": {
674     "dependencies": ["permission:syncFileSystem"],
675     "contexts": ["blessed_extension"]
676   },
677   "syncedNotificationsPrivate": {
678     "contexts": ["blessed_extension"],
679     "dependencies": ["permission:syncedNotificationsPrivate"]
680   },
681   "systemIndicator": {
682     "dependencies": ["manifest:system_indicator"],
683     "contexts": ["blessed_extension"]
684   },
685   "system.cpu": {
686     "dependencies": ["permission:system.cpu"],
687     "contexts": ["blessed_extension"]
688   },
689   "system.display": {
690     "dependencies": ["permission:system.display"],
691     "contexts": ["blessed_extension"]
692   },
693   "system.memory": {
694     "dependencies": ["permission:system.memory"],
695     "contexts": ["blessed_extension"]
696   },
697   "system.network": {
698     "dependencies": ["permission:system.network"],
699     "contexts": ["blessed_extension"]
700   },
701   "system.storage": {
702     "dependencies": ["permission:system.storage"],
703     "contexts": ["blessed_extension"]
704   },
705   "system.storage.getAvailableCapacity": {
706     "channel": "dev"
707   },
708   "systemPrivate": {
709     "dependencies": ["permission:systemPrivate"],
710     "contexts": ["blessed_extension"]
711   },
712   "tabCapture": {
713     "dependencies": ["permission:tabCapture"],
714     "contexts": ["blessed_extension"]
715   },
716   "tabs": {
717     "channel": "stable",
718     "extension_types": ["extension", "legacy_packaged_app"],
719     "contexts": ["blessed_extension"]
720   },
721   "tabs.setZoom": {
722     "channel": "dev"
723   },
724   "tabs.getZoom": {
725     "channel": "dev"
726   },
727   "tabs.setZoomSettings": {
728     "channel": "dev"
729   },
730   "tabs.getZoomSettings": {
731     "channel": "dev"
732   },
733   "terminalPrivate": {
734     "dependencies": ["permission:terminalPrivate"],
735     "contexts": ["blessed_extension"]
736   },
737   "topSites": {
738     "dependencies": ["permission:topSites"],
739     "contexts": ["blessed_extension"]
740   },
741   "tts": {
742     "dependencies": ["permission:tts"],
743     "contexts": ["blessed_extension"]
744   },
745   "ttsEngine": {
746     "dependencies": ["permission:ttsEngine"],
747     "contexts": ["blessed_extension"]
748   },
749   "virtualKeyboardPrivate": {
750     "dependencies": ["permission:virtualKeyboardPrivate"],
751     "contexts": ["blessed_extension"]
752   },
753   "wallpaper": {
754     "dependencies": ["permission:wallpaper"],
755     "contexts": ["blessed_extension"]
756   },
757   "wallpaperPrivate": {
758     "dependencies": ["permission:wallpaperPrivate"],
759     "contexts": ["blessed_extension"]
760   },
761   "webNavigation": {
762     "dependencies": ["permission:webNavigation"],
763     "contexts": ["blessed_extension"]
764   },
765   "webRequest": {
766     "dependencies": ["permission:webRequest"],
767     "contexts": ["blessed_extension"]
768   },
769   "webRequestInternal": [{
770     "internal": true,
771     "channel": "stable",
772     "contexts": ["blessed_extension"]
773   }, {
774     // webview uses webRequestInternal API.
775     "channel": "stable",
776     "internal": true,
777     "dependencies": ["permission:webview"],
778     "contexts": ["unblessed_extension"]
779   }],
780   "webrtcAudioPrivate": {
781     "dependencies": ["permission:webrtcAudioPrivate"],
782     "contexts": ["blessed_extension"]
783   },
784   "webrtcLoggingPrivate": {
785     "dependencies": ["permission:webrtcLoggingPrivate"],
786     "contexts": ["blessed_extension"]
787   },
788   "webstore": {
789     // Hosted apps can use the webstore API from within a blessed context.
790     "channel": "stable",
791     // Set extension_types to 'all' to prevent webstore from being filtered.
792     // Technically, webstore is not in apps or extensions, but it is currently
793     // displayed on /extensions/webstore and /apps/webstore. The "contexts"
794     // restriction effectively restricts this to hosted apps and webpages.
795     "extension_types": "all",
796     "contexts": ["blessed_web_page", "web_page"],
797     // Any webpage can use the webstore API.
798     "matches": ["<all_urls>"]
799   },
800   "webstorePrivate": {
801     "dependencies": ["permission:webstorePrivate"],
802     // NOTE: even though this is only used by the webstore hosted app, which
803     // normally would mean blessed_web_page, component hosted apps are actually
804     // given the blessed_extension denomination. Confusing.
805     "contexts": ["blessed_extension"]
806   },
807   "webViewInternal": [{
808     "internal": true,
809     "dependencies": ["permission:webview"],
810     "contexts": ["blessed_extension"]
811   }, {
812     // Component extensions can use the webViewInternal API from iframes.
813     "location": "component",
814     "internal": true,
815     "dependencies": ["permission:webview"],
816     "contexts": ["unblessed_extension"]
817   }],
818   "webViewRequest": [{
819     "dependencies": ["permission:webview"],
820     "contexts": ["blessed_extension"]
821   }, {
822     // Component extensions can use the webViewRequest API from iframes.
823     "location": "component",
824     "dependencies": ["permission:webview"],
825     "contexts": ["unblessed_extension"]
826   }],
827   "webviewTag": {
828     "internal": true,
829     "channel": "stable",
830     "dependencies": ["permission:webview"],
831     "contexts": ["blessed_extension"]
832   },
833   "windows": {
834     "dependencies": ["api:tabs"],
835     "contexts": ["blessed_extension"]
836   }
837 }