service_resolver_64: Correctly check all the bytes of the service code.
[chromium-blink-merge.git] / extensions / common / api / _api_features.json
blob8e7d6fcd7d4c82e5895e14ac4d839dae6596b6b5
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       "63ED55E43214C211F82122ED56407FF1A807F2A3"   // http://crbug.com/448569
219     ]
220   },
221   "networking.config": {
222     "dependencies": ["permission:networking.config"],
223     "contexts": ["blessed_extension"]
224   },
225   "networkingPrivate": [{
226     "dependencies": ["permission:networkingPrivate"],
227     "contexts": ["blessed_extension"]
228   }, {
229     "channel": "stable",
230     "contexts": ["webui"],
231     "matches": [
232       "chrome://md-settings/*",
233       "chrome://network/*",
234       "chrome://settings/*",
235       "chrome://settings-frame/*"
236     ]
237   }],
238   "power": {
239     "dependencies": ["permission:power"],
240     "contexts": ["blessed_extension"]
241   },
242   "printerProvider": {
243     "dependencies": ["permission:printerProvider"],
244     "contexts": ["blessed_extension"]
245   },
246   "printerProviderInternal": {
247     "internal": true,
248     "dependencies": ["permission:printerProvider"],
249     "contexts": ["blessed_extension"]
250   },
251   "runtime": {
252     "channel": "stable",
253     "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
254     "contexts": ["blessed_extension"]
255   },
256   "runtime.getManifest": {
257     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
258   },
259   "runtime.connect": {
260     // Everything except WebUI.
261     "contexts": [
262       "blessed_web_page",
263       "content_script",
264       "blessed_extension",
265       "unblessed_extension",
266       "web_page"
267     ],
268     "matches": ["<all_urls>"]
269   },
270   "runtime.connectNative": {
271     "dependencies": ["permission:nativeMessaging"],
272     "contexts": ["blessed_extension"]
273   },
274   "runtime.getURL": {
275     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
276   },
277   "runtime.id": {
278     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
279   },
280   "runtime.lastError": {
281     "contexts": "all",
282     "extension_types": "all",
283     "matches": ["<all_urls>"]
284   },
285   "runtime.onConnect": {
286     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
287   },
288   "runtime.onMessage": {
289     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
290   },
291   "runtime.sendMessage": {
292     // Everything except WebUI.
293     "contexts": [
294       "blessed_web_page",
295       "content_script",
296       "blessed_extension",
297       "unblessed_extension",
298       "web_page"
299     ],
300     "matches": ["<all_urls>"]
301   },
302   "runtime.sendNativeMessage": {
303     "dependencies": ["permission:nativeMessaging"],
304     "contexts": ["blessed_extension"]
305   },
306   "serial": {
307     "dependencies": ["permission:serial"],
308     "contexts": ["blessed_extension"]
309   },
310   "socket": {
311     "dependencies": ["permission:socket"],
312     "contexts": ["blessed_extension"]
313   },
314   "sockets.tcp": {
315     "dependencies": ["manifest:sockets"],
316     "contexts": ["blessed_extension"]
317   },
318   "sockets.tcpServer": {
319     "dependencies": ["manifest:sockets"],
320     "contexts": ["blessed_extension"]
321   },
322   "sockets.udp": {
323     "dependencies": ["manifest:sockets"],
324     "contexts": ["blessed_extension"]
325   },
326   "storage": {
327     "dependencies": ["permission:storage"],
328     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
329   },
330   "surfaceWorkerInternal": {
331     "internal": true,
332     "channel": "trunk",
333     "contexts": "all",
334     "matches": ["<all_urls>"]
335   },
336   "system.cpu": {
337     "dependencies": ["permission:system.cpu"],
338     "contexts": ["blessed_extension"]
339   },
340   "system.display": {
341     "dependencies": ["permission:system.display"],
342     "contexts": ["blessed_extension"]
343   },
344   "system.memory": {
345     "dependencies": ["permission:system.memory"],
346     "contexts": ["blessed_extension"]
347   },
348   "system.network": {
349     "dependencies": ["permission:system.network"],
350     "contexts": ["blessed_extension"]
351   },
352   "system.storage": {
353     "dependencies": ["permission:system.storage"],
354     "contexts": ["blessed_extension"]
355   },
356   "system.storage.getAvailableCapacity": {
357     "channel": "dev"
358   },
359   "test": [{
360     "channel": "stable",
361     "extension_types": "all",
362     // Everything except web pages and WebUI. WebUI is declared in a separate
363     // rule to keep the "matches" property isolated.
364     "contexts": [
365       "blessed_extension",
366       "blessed_web_page",
367       "content_script",
368       "unblessed_extension"
369     ]
370   }, {
371     "channel": "stable",
372     "contexts": ["webui"],
373     "matches": [
374       "chrome://extensions/*",
375       "chrome://extensions-frame/*",
376       "chrome://chrome/extensions/*"
377     ]
378   }],
379   "types": {
380     "internal": true,
381     "channel": "stable",
382     "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
383     "contexts": ["blessed_extension"]
384   },
385   "types.private": {
386     // preferencesPrivate is the only API that uses types.private.
387     // If any other APIs need it then they'll need to be added in
388     // separate rules.
389     "dependencies": ["permission:preferencesPrivate"],
390     "contexts": ["blessed_extension"]
391   },
392   "usb": {
393     "dependencies": ["permission:usb"],
394     "contexts": ["blessed_extension"]
395   },
396   "vpnProvider": {
397     "dependencies": ["permission:vpnProvider"],
398     "contexts": ["blessed_extension"]
399   },
400   "webRequest": {
401     "dependencies": ["permission:webRequest"],
402     "contexts": ["blessed_extension"]
403   },
404   "webRequestInternal": [{
405     "internal": true,
406     "channel": "stable",
407     "contexts": ["blessed_extension"]
408   }, {
409     // webview uses webRequestInternal API.
410     "channel": "stable",
411     "internal": true,
412     "contexts": ["webui"],
413     "matches": [
414       "chrome://chrome-signin/*",
415       "chrome://media-router/*",
416       "chrome://oobe/*"
417     ]
418   }],
419   "webViewInternal": [{
420     "internal": true,
421     "dependencies": ["permission:webview"],
422     "contexts": ["blessed_extension"]
423   }, {
424     "internal": true,
425     "channel": "dev",
426     "contexts": ["webui"],
427     "matches": [
428       "chrome://chrome-signin/*",
429       "chrome://media-router/*",
430       "chrome://oobe/*"
431     ]
432   }],
433   "webViewRequest": [{
434     "dependencies": ["permission:webview"],
435     "contexts": ["blessed_extension"]
436   }, {
437     "channel": "stable",
438     "contexts": ["webui"],
439     "matches": [
440       "chrome://chrome-signin/*",
441       "chrome://media-router/*",
442       "chrome://oobe/*"
443     ]
444   }]