Atomic: Notify Watcher to observe device fd
[chromium-blink-merge.git] / extensions / common / api / _api_features.json
blob7d419386ec418be7e8659f64238899b36b579bf5
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     {
132       "internal": true,
133       "contexts": ["blessed_extension"],
134       "dependencies": ["permission:extensionview"]
135     }, {
136       "internal": true,
137       "channel": "stable",
138       "contexts": ["webui"],
139       "matches": [
140         "chrome://media-router/*"
141       ]
142     }
143   ],
144   "events": {
145     "internal": true,
146     "channel": "stable",
147     "extension_types": ["platform_app", "extension"],
148     "contexts": "all",
149     "matches": ["<all_urls>"]
150   },
151   "guestViewInternal": [
152     {
153       "internal": true,
154       "channel": "stable",
155       "contexts": ["blessed_extension"]
156     }, {
157       "internal": true,
158       "channel": "trunk",
159       "contexts": ["webui"],
160       "matches": [
161         "chrome://extensions-frame/*",
162         "chrome://extensions/*",
163         "chrome://chrome-signin/*",
164         "chrome://media-router/*",
165         "chrome://oobe/*"
166       ]
167     },
168     // This allows GuestViews to be created on regular web pages for the Worker
169     // Thread Frame prototype: http://crbug.com/434226.
170     {
171       "internal": true,
172       "channel": "trunk",
173       "contexts": "all",
174       "matches": ["<all_urls>"]
175     }
176   ],
177   "hid": {
178     "dependencies": ["permission:hid"],
179     "contexts": ["blessed_extension"]
180   },
181   "hid.getUserSelectedDevices": {
182     "contexts": ["blessed_extension"],
183     "channel": "dev",
184     "dependencies": ["permission:hid"]
185   },
186   "idle": {
187     "dependencies": ["permission:idle"],
188     "contexts": ["blessed_extension"]
189   },
190   "management": [{
191     "dependencies": ["permission:management"],
192     "contexts": ["blessed_extension"],
193     "default_parent": true
194   }, {
195     "channel": "stable",
196     "contexts": ["webui"],
197     "matches": [
198       "chrome://extensions/*",
199       "chrome://extensions-frame/*",
200       "chrome://chrome/extensions/*"
201     ]
202   }],
203   "management.getPermissionWarningsByManifest": {
204     "dependencies": [],
205     "channel": "stable",
206     "extension_types": ["extension", "legacy_packaged_app", "platform_app"]
207   },
208   "management.getSelf": {
209     "dependencies": [],
210     "channel": "stable",
211     "extension_types": ["extension", "legacy_packaged_app", "platform_app"]
212   },
213   "management.uninstallSelf": {
214     "dependencies": [],
215     "channel": "stable",
216     "extension_types": ["extension", "legacy_packaged_app", "platform_app"]
217   },
218   "mimeHandlerPrivate": {
219     "dependencies": ["manifest:mime_types_handler"],
220     "contexts": ["blessed_extension"]
221   },
222   "mojoPrivate": {
223     "contexts": ["blessed_extension"],
224     "channel": "stable",
225     "extension_types": ["platform_app", "extension"],
226     "whitelist": [
227       "EF2AB692559EA97C3BBDEA018A8C45F92457BD4E",  // http://crbug.com/448569
228       "C17CD9E6868D7B9C67926E0EC612EA25C768418F",
229       "A45DABDB47A31CC812E5490AB748C7D05E2D32E9",
230       "BFEE2E3B80BE21A645E63E9346DFC383E7CB3BDA",
231       "63ED55E43214C211F82122ED56407FF1A807F2A3"
232     ]
233   },
234   "networking.config": {
235     "dependencies": ["permission:networking.config"],
236     "contexts": ["blessed_extension"]
237   },
238   "networkingPrivate": [{
239     "dependencies": ["permission:networkingPrivate"],
240     "contexts": ["blessed_extension"]
241   }, {
242     "channel": "stable",
243     "contexts": ["webui"],
244     "matches": [
245       "chrome://md-settings/*",
246       "chrome://network/*",
247       "chrome://settings/*",
248       "chrome://settings-frame/*"
249     ]
250   }],
251   "power": {
252     "dependencies": ["permission:power"],
253     "contexts": ["blessed_extension"]
254   },
255   "printerProvider": {
256     "dependencies": ["permission:printerProvider"],
257     "contexts": ["blessed_extension"]
258   },
259   "printerProviderInternal": {
260     "internal": true,
261     "dependencies": ["permission:printerProvider"],
262     "contexts": ["blessed_extension"]
263   },
264   "runtime": {
265     "channel": "stable",
266     "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
267     "contexts": ["blessed_extension"]
268   },
269   "runtime.getManifest": {
270     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
271   },
272   "runtime.connect": {
273     // Everything except WebUI.
274     "contexts": [
275       "blessed_web_page",
276       "content_script",
277       "blessed_extension",
278       "unblessed_extension",
279       "web_page"
280     ],
281     "matches": ["<all_urls>"]
282   },
283   "runtime.connectNative": {
284     "dependencies": ["permission:nativeMessaging"],
285     "contexts": ["blessed_extension"]
286   },
287   "runtime.getURL": {
288     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
289   },
290   "runtime.id": {
291     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
292   },
293   "runtime.lastError": {
294     "contexts": "all",
295     "extension_types": "all",
296     "matches": ["<all_urls>"]
297   },
298   "runtime.onConnect": {
299     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
300   },
301   "runtime.onMessage": {
302     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
303   },
304   "runtime.sendMessage": {
305     // Everything except WebUI.
306     "contexts": [
307       "blessed_web_page",
308       "content_script",
309       "blessed_extension",
310       "unblessed_extension",
311       "web_page"
312     ],
313     "matches": ["<all_urls>"]
314   },
315   "runtime.sendNativeMessage": {
316     "dependencies": ["permission:nativeMessaging"],
317     "contexts": ["blessed_extension"]
318   },
319   "serial": {
320     "dependencies": ["permission:serial"],
321     "contexts": ["blessed_extension"]
322   },
323   "socket": {
324     "dependencies": ["permission:socket"],
325     "contexts": ["blessed_extension"]
326   },
327   "sockets.tcp": {
328     "dependencies": ["manifest:sockets"],
329     "contexts": ["blessed_extension"]
330   },
331   "sockets.tcpServer": {
332     "dependencies": ["manifest:sockets"],
333     "contexts": ["blessed_extension"]
334   },
335   "sockets.udp": {
336     "dependencies": ["manifest:sockets"],
337     "contexts": ["blessed_extension"]
338   },
339   "storage": {
340     "dependencies": ["permission:storage"],
341     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
342   },
343   "surfaceWorkerInternal": {
344     "internal": true,
345     "channel": "trunk",
346     "contexts": "all",
347     "matches": ["<all_urls>"]
348   },
349   "system.cpu": {
350     "dependencies": ["permission:system.cpu"],
351     "contexts": ["blessed_extension"]
352   },
353   "system.display": {
354     "dependencies": ["permission:system.display"],
355     "contexts": ["blessed_extension"]
356   },
357   "system.memory": {
358     "dependencies": ["permission:system.memory"],
359     "contexts": ["blessed_extension"]
360   },
361   "system.network": {
362     "dependencies": ["permission:system.network"],
363     "contexts": ["blessed_extension"]
364   },
365   "system.storage": {
366     "dependencies": ["permission:system.storage"],
367     "contexts": ["blessed_extension"]
368   },
369   "system.storage.getAvailableCapacity": {
370     "channel": "dev"
371   },
372   "test": [{
373     "channel": "stable",
374     "extension_types": "all",
375     // Everything except web pages and WebUI. WebUI is declared in a separate
376     // rule to keep the "matches" property isolated.
377     "contexts": [
378       "blessed_extension",
379       "blessed_web_page",
380       "content_script",
381       "unblessed_extension"
382     ]
383   }, {
384     "channel": "stable",
385     "contexts": ["webui"],
386     "matches": [
387       "chrome://extensions/*",
388       "chrome://extensions-frame/*",
389       "chrome://chrome/extensions/*"
390     ]
391   }],
392   "types": {
393     "internal": true,
394     "channel": "stable",
395     "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
396     "contexts": ["blessed_extension"]
397   },
398   "types.private": {
399     // preferencesPrivate is the only API that uses types.private.
400     // If any other APIs need it then they'll need to be added in
401     // separate rules.
402     "dependencies": ["permission:preferencesPrivate"],
403     "contexts": ["blessed_extension"]
404   },
405   "usb": {
406     "dependencies": ["permission:usb"],
407     "contexts": ["blessed_extension"]
408   },
409   "vpnProvider": {
410     "dependencies": ["permission:vpnProvider"],
411     "contexts": ["blessed_extension"]
412   },
413   "webRequest": {
414     "dependencies": ["permission:webRequest"],
415     "contexts": ["blessed_extension"]
416   },
417   "webRequestInternal": [{
418     "internal": true,
419     "channel": "stable",
420     "contexts": ["blessed_extension"]
421   }, {
422     // webview uses webRequestInternal API.
423     "channel": "stable",
424     "internal": true,
425     "contexts": ["webui"],
426     "matches": [
427       "chrome://chrome-signin/*",
428       "chrome://media-router/*",
429       "chrome://oobe/*"
430     ]
431   }],
432   "webViewInternal": [{
433     "internal": true,
434     "dependencies": ["permission:webview"],
435     "contexts": ["blessed_extension"]
436   }, {
437     "internal": true,
438     "channel": "dev",
439     "contexts": ["webui"],
440     "matches": [
441       "chrome://chrome-signin/*",
442       "chrome://media-router/*",
443       "chrome://oobe/*"
444     ]
445   }],
446   "webViewRequest": [{
447     "dependencies": ["permission:webview"],
448     "contexts": ["blessed_extension"]
449   }, {
450     "channel": "stable",
451     "contexts": ["webui"],
452     "matches": [
453       "chrome://chrome-signin/*",
454       "chrome://media-router/*",
455       "chrome://oobe/*"
456     ]
457   }]