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