Pin Chrome's shortcut to the Win10 Start menu on install and OS upgrade.
[chromium-blink-merge.git] / extensions / common / api / _api_features.json
blob49dd75d469811d6ed8bbaf266f0829661536e522
1 // Copyright 2014 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/extensions.
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   "alarms": {
23     "dependencies": ["permission:alarms"],
24     "contexts": ["blessed_extension"]
25   },
26   "app.runtime": [{
27     "channel": "stable",
28     "contexts": ["blessed_extension"],
29     "extension_types": ["platform_app"],
30     "noparent": true
31   }, {
32     "channel": "stable",
33     "component_extensions_auto_granted": false,
34     "contexts": ["blessed_extension"],
35     "extension_types": ["extension"],
36     "noparent": true,
37     "whitelist": [
38       "2FC374607C2DF285634B67C64A2E356C607091C3",  // Quickoffice
39       "3727DD3E564B6055387425027AD74C58784ACC15",  // Quickoffice internal
40       "12E618C3C6E97495AAECF2AC12DEB082353241C6"   // QO component extension
41     ]
42   }],
43   "app.window": [{
44     "channel": "stable",
45     "contexts": ["blessed_extension"],
46     "extension_types": ["platform_app"],
47     "noparent": true
48   }, {
49     "channel": "stable",
50     "contexts": ["blessed_extension"],
51     "extension_types": ["extension"],
52     "noparent": true,
53     "component_extensions_auto_granted": false,
54     "whitelist": [
55       "B9EF10DDFEA11EF77873CC5009809E5037FC4C7A",  // Google input tools
56       "06BE211D5F014BAB34BC22D9DDA09C63A81D828E",  // Official xkb extension
57       "F94EE6AB36D6C6588670B2B01EB65212D9C64E33"   // Open source xkb extension
58     ]
59   }],
60   "app.currentWindowInternal": {
61     "noparent": true,
62     "internal": true,
63     "channel": "stable",
64     "contexts": ["blessed_extension"]
65   },
66   "app.currentWindowInternal.setShape": {
67     "dependencies": ["permission:app.window.shape"],
68     "contexts": ["blessed_extension"]
69   },
70   // The API for the *embedder* of appview. Appview has both an embedder and
71   // guest API, which are different.
72   "appViewEmbedderInternal": {
73     "internal": true,
74     "contexts": ["blessed_extension"],
75     "dependencies": ["permission:appview"]
76   },
77   // Note that exposing this doesn't necessarily expose AppView,
78   // appViewEmbedderInternal is required for that.
79   // See http://crbug.com/437891.
80   "appViewGuestInternal": {
81     "internal": true,
82     "channel": "stable",
83     "contexts": ["blessed_extension"]
84   },
85   "audio": {
86     "dependencies": ["permission:audio"],
87     "contexts": ["blessed_extension"]
88   },
89   "bluetooth": {
90     "dependencies": ["manifest:bluetooth"],
91     "contexts": ["blessed_extension"]
92   },
93   "bluetoothLowEnergy": {
94     "dependencies": ["manifest:bluetooth"],
95     "contexts": ["blessed_extension"]
96   },
97   "bluetoothPrivate": {
98     "dependencies": ["permission:bluetoothPrivate"],
99     "contexts": ["blessed_extension"]
100   },
101   "bluetoothSocket": {
102     "dependencies": ["manifest:bluetooth"],
103     "contexts": ["blessed_extension"]
104   },
105   "declarativeWebRequest": {
106     "dependencies": ["permission:declarativeWebRequest"],
107     "contexts": ["blessed_extension"]
108   },
109   "diagnostics": {
110     "dependencies": ["permission:diagnostics"],
111     "extension_types": ["platform_app"],
112     "contexts": ["blessed_extension"]
113   },
114   "dns": {
115     "dependencies": ["permission:dns"],
116     "contexts": ["blessed_extension"]
117   },
118   "documentScan": {
119     "dependencies": ["permission:documentScan"],
120     "contexts": ["blessed_extension"]
121   },
122   // This is not a real API, only here for documentation purposes.
123   // See http://crbug.com/275944 for background.
124   "extensionTypes": {
125     "internal": true,
126     "channel": "stable",
127     "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
128     "contexts": ["blessed_extension"]
129   },
130   "extensionViewInternal": {
131     "internal": true,
132     "contexts": ["blessed_extension"],
133     "dependencies": ["permission:extensionview"]
134   },
135   "events": {
136     "internal": true,
137     "channel": "stable",
138     "extension_types": ["platform_app", "extension"],
139     "contexts": "all",
140     "matches": ["<all_urls>"]
141   },
142   "guestViewInternal": [
143     {
144       "internal": true,
145       "channel": "stable",
146       "contexts": ["blessed_extension"]
147     }, {
148       "internal": true,
149       "channel": "trunk",
150       "contexts": ["webui"],
151       "matches": [
152         "chrome://extensions-frame/*",
153         "chrome://extensions/*",
154         "chrome://chrome-signin/*",
155         "chrome://media-router/*",
156         "chrome://oobe/*"
157       ]
158     },
159     // This allows GuestViews to be created on regular web pages for the Worker
160     // Thread Frame prototype: http://crbug.com/434226.
161     {
162       "internal": true,
163       "channel": "trunk",
164       "contexts": "all",
165       "matches": ["<all_urls>"]
166     }
167   ],
168   "hid": {
169     "dependencies": ["permission:hid"],
170     "contexts": ["blessed_extension"]
171   },
172   "hid.getUserSelectedDevices": {
173     "contexts": ["blessed_extension"],
174     "channel": "dev",
175     "dependencies": ["permission:hid"]
176   },
177   "idle": {
178     "dependencies": ["permission:idle"],
179     "contexts": ["blessed_extension"]
180   },
181   "management": [{
182     "dependencies": ["permission:management"],
183     "contexts": ["blessed_extension"],
184     "default_parent": true
185   }, {
186     "channel": "stable",
187     "contexts": ["webui"],
188     "matches": [
189       "chrome://extensions/*",
190       "chrome://extensions-frame/*",
191       "chrome://chrome/extensions/*"
192     ]
193   }],
194   "management.getPermissionWarningsByManifest": {
195     "dependencies": [],
196     "channel": "stable",
197     "extension_types": ["extension", "legacy_packaged_app", "platform_app"]
198   },
199   "management.getSelf": {
200     "dependencies": [],
201     "channel": "stable",
202     "extension_types": ["extension", "legacy_packaged_app", "platform_app"]
203   },
204   "management.uninstallSelf": {
205     "dependencies": [],
206     "channel": "stable",
207     "extension_types": ["extension", "legacy_packaged_app", "platform_app"]
208   },
209   "mimeHandlerPrivate": {
210     "dependencies": ["manifest:mime_types_handler"],
211     "contexts": ["blessed_extension"]
212   },
213   "mojoPrivate": {
214     "contexts": ["blessed_extension"],
215     "channel": "stable",
216     "extension_types": ["platform_app", "extension"],
217     "whitelist": [
218       "EF2AB692559EA97C3BBDEA018A8C45F92457BD4E",  // http://crbug.com/448569
219       "C17CD9E6868D7B9C67926E0EC612EA25C768418F",
220       "A45DABDB47A31CC812E5490AB748C7D05E2D32E9",
221       "BFEE2E3B80BE21A645E63E9346DFC383E7CB3BDA",
222       "63ED55E43214C211F82122ED56407FF1A807F2A3"
223     ]
224   },
225   "networking.config": {
226     "dependencies": ["permission:networking.config"],
227     "contexts": ["blessed_extension"]
228   },
229   "networkingPrivate": [{
230     "dependencies": ["permission:networkingPrivate"],
231     "contexts": ["blessed_extension"]
232   }, {
233     "channel": "stable",
234     "contexts": ["webui"],
235     "matches": [
236       "chrome://md-settings/*",
237       "chrome://network/*",
238       "chrome://settings/*",
239       "chrome://settings-frame/*"
240     ]
241   }],
242   "power": {
243     "dependencies": ["permission:power"],
244     "contexts": ["blessed_extension"]
245   },
246   "printerProvider": {
247     "dependencies": ["permission:printerProvider"],
248     "contexts": ["blessed_extension"]
249   },
250   "printerProviderInternal": {
251     "internal": true,
252     "dependencies": ["permission:printerProvider"],
253     "contexts": ["blessed_extension"]
254   },
255   "runtime": {
256     "channel": "stable",
257     "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
258     "contexts": ["blessed_extension"]
259   },
260   "runtime.getManifest": {
261     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
262   },
263   "runtime.connect": {
264     // Everything except WebUI.
265     "contexts": [
266       "blessed_web_page",
267       "content_script",
268       "blessed_extension",
269       "unblessed_extension",
270       "web_page"
271     ],
272     "matches": ["<all_urls>"]
273   },
274   "runtime.connectNative": {
275     "dependencies": ["permission:nativeMessaging"],
276     "contexts": ["blessed_extension"]
277   },
278   "runtime.getURL": {
279     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
280   },
281   "runtime.id": {
282     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
283   },
284   "runtime.lastError": {
285     "contexts": "all",
286     "extension_types": "all",
287     "matches": ["<all_urls>"]
288   },
289   "runtime.onConnect": {
290     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
291   },
292   "runtime.onMessage": {
293     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
294   },
295   "runtime.sendMessage": {
296     // Everything except WebUI.
297     "contexts": [
298       "blessed_web_page",
299       "content_script",
300       "blessed_extension",
301       "unblessed_extension",
302       "web_page"
303     ],
304     "matches": ["<all_urls>"]
305   },
306   "runtime.sendNativeMessage": {
307     "dependencies": ["permission:nativeMessaging"],
308     "contexts": ["blessed_extension"]
309   },
310   "serial": {
311     "dependencies": ["permission:serial"],
312     "contexts": ["blessed_extension"]
313   },
314   "socket": {
315     "dependencies": ["permission:socket"],
316     "contexts": ["blessed_extension"]
317   },
318   "sockets.tcp": {
319     "dependencies": ["manifest:sockets"],
320     "contexts": ["blessed_extension"]
321   },
322   "sockets.tcpServer": {
323     "dependencies": ["manifest:sockets"],
324     "contexts": ["blessed_extension"]
325   },
326   "sockets.udp": {
327     "dependencies": ["manifest:sockets"],
328     "contexts": ["blessed_extension"]
329   },
330   "storage": {
331     "dependencies": ["permission:storage"],
332     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
333   },
334   "surfaceWorkerInternal": {
335     "internal": true,
336     "channel": "trunk",
337     "contexts": "all",
338     "matches": ["<all_urls>"]
339   },
340   "system.cpu": {
341     "dependencies": ["permission:system.cpu"],
342     "contexts": ["blessed_extension"]
343   },
344   "system.display": {
345     "dependencies": ["permission:system.display"],
346     "contexts": ["blessed_extension"]
347   },
348   "system.memory": {
349     "dependencies": ["permission:system.memory"],
350     "contexts": ["blessed_extension"]
351   },
352   "system.network": {
353     "dependencies": ["permission:system.network"],
354     "contexts": ["blessed_extension"]
355   },
356   "system.storage": {
357     "dependencies": ["permission:system.storage"],
358     "contexts": ["blessed_extension"]
359   },
360   "system.storage.getAvailableCapacity": {
361     "channel": "dev"
362   },
363   "test": [{
364     "channel": "stable",
365     "extension_types": "all",
366     // Everything except web pages and WebUI. WebUI is declared in a separate
367     // rule to keep the "matches" property isolated.
368     "contexts": [
369       "blessed_extension",
370       "blessed_web_page",
371       "content_script",
372       "unblessed_extension"
373     ]
374   }, {
375     "channel": "stable",
376     "contexts": ["webui"],
377     "matches": [
378       "chrome://extensions/*",
379       "chrome://extensions-frame/*",
380       "chrome://chrome/extensions/*"
381     ]
382   }],
383   "types": {
384     "internal": true,
385     "channel": "stable",
386     "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
387     "contexts": ["blessed_extension"]
388   },
389   "types.private": {
390     // preferencesPrivate is the only API that uses types.private.
391     // If any other APIs need it then they'll need to be added in
392     // separate rules.
393     "dependencies": ["permission:preferencesPrivate"],
394     "contexts": ["blessed_extension"]
395   },
396   "usb": {
397     "dependencies": ["permission:usb"],
398     "contexts": ["blessed_extension"]
399   },
400   "vpnProvider": {
401     "dependencies": ["permission:vpnProvider"],
402     "contexts": ["blessed_extension"]
403   },
404   "webRequest": {
405     "dependencies": ["permission:webRequest"],
406     "contexts": ["blessed_extension"]
407   },
408   "webRequestInternal": [{
409     "internal": true,
410     "channel": "stable",
411     "contexts": ["blessed_extension"]
412   }, {
413     // webview uses webRequestInternal API.
414     "channel": "stable",
415     "internal": true,
416     "contexts": ["webui"],
417     "matches": [
418       "chrome://chrome-signin/*",
419       "chrome://media-router/*",
420       "chrome://oobe/*"
421     ]
422   }],
423   "webViewInternal": [{
424     "internal": true,
425     "dependencies": ["permission:webview"],
426     "contexts": ["blessed_extension"]
427   }, {
428     "internal": true,
429     "channel": "dev",
430     "contexts": ["webui"],
431     "matches": [
432       "chrome://chrome-signin/*",
433       "chrome://media-router/*",
434       "chrome://oobe/*"
435     ]
436   }],
437   "webViewRequest": [{
438     "dependencies": ["permission:webview"],
439     "contexts": ["blessed_extension"]
440   }, {
441     "channel": "stable",
442     "contexts": ["webui"],
443     "matches": [
444       "chrome://chrome-signin/*",
445       "chrome://media-router/*",
446       "chrome://oobe/*"
447     ]
448   }]