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