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