Skia roll 790ffe3:0b36e6b
[chromium-blink-merge.git] / extensions / common / api / _api_features.json
blob929ea424f126d2b72f0aaaad2cc0a813448845ea
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   "app.runtime": [{
23     "channel": "stable",
24     "contexts": ["blessed_extension"],
25     "extension_types": ["platform_app"],
26     "noparent": true
27   }, {
28     "channel": "stable",
29     "component_extensions_auto_granted": false,
30     "contexts": ["blessed_extension"],
31     "extension_types": ["extension"],
32     "noparent": true,
33     "whitelist": [
34       "2FC374607C2DF285634B67C64A2E356C607091C3",  // Quickoffice
35       "3727DD3E564B6055387425027AD74C58784ACC15",  // Quickoffice internal
36       "12E618C3C6E97495AAECF2AC12DEB082353241C6"   // QO component extension
37     ]
38   }],
39   "app.window": {
40     "channel": "stable",
41     "contexts": ["blessed_extension"],
42     "extension_types": ["platform_app"],
43     "noparent": true
44   },
45   "app.window.canSetVisibleOnAllWorkspaces": {
46     "channel": "dev"
47   },
48   "app.currentWindowInternal": {
49     "noparent": true,
50     "internal": true,
51     "channel": "stable",
52     "contexts": ["blessed_extension"]
53   },
54   "app.currentWindowInternal.setShape": {
55     "dependencies": ["permission:app.window.shape"],
56     "contexts": ["blessed_extension"]
57   },
58   "dns": {
59     "dependencies": ["permission:dns"],
60     "contexts": ["blessed_extension"]
61   },
62   // This is not a real API, only here for documentation purposes.
63   // See http://crbug.com/275944 for background.
64   "extensionTypes": {
65     "internal": true,
66     "channel": "stable",
67     "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
68     "contexts": ["blessed_extension"]
69   },
70   "hid": {
71     "dependencies": ["permission:hid"],
72     "contexts": ["blessed_extension"]
73   },
74   "power": {
75     "dependencies": ["permission:power"],
76     "contexts": ["blessed_extension"]
77   },
78   "runtime": {
79     "channel": "stable",
80     "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
81     "contexts": ["blessed_extension"]
82   },
83   "runtime.getManifest": {
84     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
85   },
86   "runtime.connect": {
87     // Everything except WebUI.
88     "contexts": [
89       "blessed_web_page",
90       "content_script",
91       "blessed_extension",
92       "unblessed_extension",
93       "web_page"
94     ],
95     "matches": ["<all_urls>"]
96   },
97   "runtime.getURL": {
98     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
99   },
100   "runtime.id": {
101     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
102   },
103   "runtime.lastError": {
104     "contexts": "all",
105     "extension_types": "all",
106     "matches": ["<all_urls>"]
107   },
108   "runtime.onConnect": {
109     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
110   },
111   "runtime.onMessage": {
112     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
113   },
114   "runtime.sendMessage": {
115     // Everything except WebUI.
116     "contexts": [
117       "blessed_web_page",
118       "content_script",
119       "blessed_extension",
120       "unblessed_extension",
121       "web_page"
122     ],
123     "matches": ["<all_urls>"]
124   },
125   "runtime.setUninstallURL": {
126     "channel": "dev"
127   },
128   "serial": {
129     "dependencies": ["permission:serial"],
130     "contexts": ["blessed_extension"]
131   },
132   "socket": {
133     "dependencies": ["permission:socket"],
134     "contexts": ["blessed_extension"]
135   },
136   "sockets.tcp": {
137     "dependencies": ["manifest:sockets"],
138     "contexts": ["blessed_extension"]
139   },
140   "sockets.tcpServer": {
141     "dependencies": ["manifest:sockets"],
142     "contexts": ["blessed_extension"]
143   },
144   "sockets.udp": {
145     "dependencies": ["manifest:sockets"],
146     "contexts": ["blessed_extension"]
147   },
148   "storage": {
149     "dependencies": ["permission:storage"],
150     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
151   },
152   "system.cpu": {
153     "dependencies": ["permission:system.cpu"],
154     "contexts": ["blessed_extension"]
155   },
156   "system.display": {
157     "dependencies": ["permission:system.display"],
158     "contexts": ["blessed_extension"]
159   },
160   "system.memory": {
161     "dependencies": ["permission:system.memory"],
162     "contexts": ["blessed_extension"]
163   },
164   "system.network": {
165     "dependencies": ["permission:system.network"],
166     "contexts": ["blessed_extension"]
167   },
168   "system.storage": {
169     "dependencies": ["permission:system.storage"],
170     "contexts": ["blessed_extension"]
171   },
172   "system.storage.getAvailableCapacity": {
173     "channel": "dev"
174   },
175   "test": [{
176     "channel": "stable",
177     "extension_types": "all",
178     // Everything except web pages and WebUI. WebUI is declared in a separate
179     // rule to keep the "matches" property isolated.
180     "contexts": [
181       "blessed_extension",
182       "blessed_web_page",
183       "content_script",
184       "unblessed_extension"
185     ]
186   }, {
187     "channel": "stable",
188     "contexts": ["webui"],
189     "matches": [
190       "chrome://extensions/*",
191       "chrome://extensions-frame/*",
192       "chrome://chrome/extensions/*"
193     ]
194   }],
195   "types": {
196     "internal": true,
197     "channel": "stable",
198     "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
199     "contexts": ["blessed_extension"]
200   },
201   "types.private": {
202     "channel": "dev",
203     "extension_types": ["extension"],
204     "location": "component"
205   },
206   "usb": {
207     "dependencies": ["permission:usb"],
208     "contexts": ["blessed_extension"]
209   },
210   "usbPrivate": {
211     "channel": "dev",
212     "contexts": ["webui"]
213   },
214   "webViewExperimentalInternal": [{
215     "internal": true,
216     "channel": "dev",
217     "contexts": ["blessed_extension"],
218     "dependencies": ["permission:webview"]
219   },
220   {
221     "internal": true,
222     "channel": "stable",
223     "contexts": ["blessed_extension"],
224     "dependencies": ["permission:webview"],
225     "whitelist": [
226       "8C3741E3AF0B93B6E8E0DDD499BB0B74839EA578",
227       "E703483CEF33DEC18B4B6DD84B5C776FB9182BDB",
228       "1A26E32DE447A17CBE5E9750CDBA78F58539B39C",
229       "59048028102D7B4C681DBC7BC6CD980C3DC66DA3"
230     ]
231   }],
232   "webViewInternal": [{
233     "internal": true,
234     "dependencies": ["permission:webview"],
235     "contexts": ["blessed_extension"]
236   }, {
237     // Component extensions can use the webViewInternal API from iframes.
238     "location": "component",
239     "internal": true,
240     "dependencies": ["permission:webview"],
241     "contexts": ["unblessed_extension"]
242   }]