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