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