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