OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Use the <code>chrome.downloads</code> API to programmatically initiate, | 5 // Use the <code>chrome.downloads</code> API to programmatically initiate, |
6 // monitor, manipulate, and search for downloads. | 6 // monitor, manipulate, and search for downloads. |
7 [permissions=downloads] | 7 [permissions=downloads] |
8 namespace downloads { | 8 namespace downloads { |
9 [inline_doc] dictionary HeaderNameValuePair { | 9 [inline_doc] dictionary HeaderNameValuePair { |
10 // Name of the HTTP header. | 10 // Name of the HTTP header. |
11 DOMString name; | 11 DOMString name; |
12 | 12 |
13 // Value of the HTTP header. | 13 // Value of the HTTP header. |
14 DOMString value; | 14 DOMString value; |
15 }; | 15 }; |
16 | 16 |
17 // <dl><dt>uniquify</dt> | 17 // <dl><dt>uniquify</dt> |
18 // <dd>To avoid duplication, the <code>filename</code> is changed to | 18 // <dd>To avoid duplication, the <code>filename</code> is changed to |
19 // include a counter before the filename extension.</dd> | 19 // include a counter before the filename extension.</dd> |
20 // <dt>overwrite</dt> | 20 // <dt>overwrite</dt> |
21 // <dd>The existing file will be overwritten with the new file.</dd> | 21 // <dd>The existing file will be overwritten with the new file.</dd> |
22 // <dt>prompt</dt> | 22 // <dt>prompt</dt> |
23 // <dd>The user will be prompted with a file chooser dialog.</dd> | 23 // <dd>The user will be prompted with a file chooser dialog.</dd> |
24 // </dl> | 24 // </dl> |
25 [inline_doc] enum FilenameConflictAction {uniquify, overwrite, prompt}; | 25 enum FilenameConflictAction {uniquify, overwrite, prompt}; |
26 | 26 |
27 [inline_doc] dictionary FilenameSuggestion { | 27 [inline_doc] dictionary FilenameSuggestion { |
28 // The $ref:DownloadItem's new target $ref:DownloadItem.filename, as a path | 28 // The $ref:DownloadItem's new target $ref:DownloadItem.filename, as a path |
29 // relative to the user's default Downloads directory, possibly containing | 29 // relative to the user's default Downloads directory, possibly containing |
30 // subdirectories. Absolute paths, empty paths, and paths containing | 30 // subdirectories. Absolute paths, empty paths, and paths containing |
31 // back-references ".." will be ignored. | 31 // back-references ".." will be ignored. |
32 DOMString filename; | 32 DOMString filename; |
33 | 33 |
34 // The action to take if <code>filename</code> already exists. | 34 // The action to take if <code>filename</code> already exists. |
35 FilenameConflictAction? conflict_action; | 35 FilenameConflictAction? conflictAction; |
36 }; | 36 }; |
37 | 37 |
38 [inline_doc] enum HttpMethod {GET, POST}; | 38 [inline_doc] enum HttpMethod {GET, POST}; |
39 | 39 |
| 40 enum InterruptReason { |
| 41 FILE_FAILED, |
| 42 FILE_ACCESS_DENIED, |
| 43 FILE_NO_SPACE, |
| 44 FILE_NAME_TOO_LONG, |
| 45 FILE_TOO_LARGE, |
| 46 FILE_VIRUS_INFECTED, |
| 47 FILE_TRANSIENT_ERROR, |
| 48 FILE_BLOCKED, |
| 49 FILE_SECURITY_CHECK_FAILED, |
| 50 FILE_TOO_SHORT, |
| 51 NETWORK_FAILED, |
| 52 NETWORK_TIMEOUT, |
| 53 NETWORK_DISCONNECTED, |
| 54 NETWORK_SERVER_DOWN, |
| 55 SERVER_FAILED, |
| 56 SERVER_NO_RANGE, |
| 57 SERVER_PRECONDITION, |
| 58 SERVER_BAD_CONTENT, |
| 59 USER_CANCELED, |
| 60 USER_SHUTDOWN, |
| 61 CRASH}; |
| 62 |
40 [inline_doc] dictionary DownloadOptions { | 63 [inline_doc] dictionary DownloadOptions { |
41 // The URL to download. | 64 // The URL to download. |
42 DOMString url; | 65 DOMString url; |
43 | 66 |
44 // A file path relative to the Downloads directory to contain the downloaded | 67 // A file path relative to the Downloads directory to contain the downloaded |
45 // file. Cannot yet contain subdirectories; support for subdirectories will | 68 // file, possibly containing subdirectories. Absolute paths, empty paths, |
46 // be implemented before this API is released to the stable channel. See | 69 // and paths containing back-references ".." will cause an error. |
47 // $ref:onDeterminingFilename for how to dynamically suggest a filename | 70 // $ref:onDeterminingFilename allows suggesting a filename after the file's |
48 // after the file's MIME type and a tentative filename have been determined. | 71 // MIME type and a tentative filename have been determined. |
49 DOMString? filename; | 72 DOMString? filename; |
50 | 73 |
51 // Use a file-chooser to allow the user to select a filename. | 74 // The action to take if <code>filename</code> already exists. |
| 75 FilenameConflictAction? conflictAction; |
| 76 |
| 77 // Use a file-chooser to allow the user to select a filename regardless of |
| 78 // whether <code>filename</code> is set or already exists. |
52 boolean? saveAs; | 79 boolean? saveAs; |
53 | 80 |
54 // The HTTP method to use if the URL uses the HTTP[S] protocol. | 81 // The HTTP method to use if the URL uses the HTTP[S] protocol. |
55 HttpMethod? method; | 82 HttpMethod? method; |
56 | 83 |
57 // Extra HTTP headers to send with the request if the URL uses the HTTP[s] | 84 // Extra HTTP headers to send with the request if the URL uses the HTTP[s] |
58 // protocol. Each header is represented as a dictionary containing the keys | 85 // protocol. Each header is represented as a dictionary containing the keys |
59 // <code>name</code> and either <code>value</code> or | 86 // <code>name</code> and either <code>value</code> or |
60 // <code>binaryValue</code>, restricted to those allowed by XMLHttpRequest. | 87 // <code>binaryValue</code>, restricted to those allowed by XMLHttpRequest. |
61 HeaderNameValuePair[]? headers; | 88 HeaderNameValuePair[]? headers; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 enum State {in_progress, interrupted, complete}; | 123 enum State {in_progress, interrupted, complete}; |
97 | 124 |
98 // The state of the process of downloading a file. | 125 // The state of the process of downloading a file. |
99 dictionary DownloadItem { | 126 dictionary DownloadItem { |
100 // An identifier that is persistent across browser sessions. | 127 // An identifier that is persistent across browser sessions. |
101 long id; | 128 long id; |
102 | 129 |
103 // Absolute URL. | 130 // Absolute URL. |
104 DOMString url; | 131 DOMString url; |
105 | 132 |
| 133 // Absolute URL. |
| 134 DOMString referrer; |
| 135 |
106 // Absolute local path. | 136 // Absolute local path. |
107 DOMString filename; | 137 DOMString filename; |
108 | 138 |
109 // False if this download is recorded in the history, true if it is not | 139 // False if this download is recorded in the history, true if it is not |
110 // recorded. | 140 // recorded. |
111 boolean incognito; | 141 boolean incognito; |
112 | 142 |
113 // Indication of whether this download is thought to be safe or known to be | 143 // Indication of whether this download is thought to be safe or known to be |
114 // suspicious. | 144 // suspicious. |
115 DangerType danger; | 145 DangerType danger; |
116 | 146 |
117 // True if the user has accepted the download's danger. | |
118 boolean? dangerAccepted; | |
119 | |
120 // The file's MIME type. | 147 // The file's MIME type. |
121 DOMString mime; | 148 DOMString mime; |
122 | 149 |
123 // The time when the download began in ISO 8601 format. May be passed | 150 // The time when the download began in ISO 8601 format. May be passed |
124 // directly to the Date constructor: <code>chrome.downloads.search({}, | 151 // directly to the Date constructor: <code>chrome.downloads.search({}, |
125 // function(items){items.forEach(function(item){console.log(new | 152 // function(items){items.forEach(function(item){console.log(new |
126 // Date(item.startTime))})})</code> | 153 // Date(item.startTime))})})</code> |
127 DOMString startTime; | 154 DOMString startTime; |
128 | 155 |
129 // The time when the download ended in ISO 8601 format. May be passed | 156 // The time when the download ended in ISO 8601 format. May be passed |
130 // directly to the Date constructor: <code>chrome.downloads.search({}, | 157 // directly to the Date constructor: <code>chrome.downloads.search({}, |
131 // function(items){items.forEach(function(item){if (item.endTime) | 158 // function(items){items.forEach(function(item){if (item.endTime) |
132 // console.log(new Date(item.endTime))})})</code> | 159 // console.log(new Date(item.endTime))})})</code> |
133 DOMString? endTime; | 160 DOMString? endTime; |
134 | 161 |
| 162 // Estimated time when the download will complete in ISO 8601 format. May be |
| 163 // passed directly to the Date constructor: |
| 164 // <code>chrome.downloads.search({}, |
| 165 // function(items){items.forEach(function(item){if (item.estimatedEndTime) |
| 166 // console.log(new Date(item.estimatedEndTime))})})</code> |
| 167 DOMString? estimatedEndTime; |
| 168 |
135 // Indicates whether the download is progressing, interrupted, or complete. | 169 // Indicates whether the download is progressing, interrupted, or complete. |
136 State state; | 170 State state; |
137 | 171 |
138 // True if the download has stopped reading data from the host, but kept the | 172 // True if the download has stopped reading data from the host, but kept the |
139 // connection open. | 173 // connection open. |
140 boolean paused; | 174 boolean paused; |
141 | 175 |
142 // Number indicating why a download was interrupted. | 176 // True if the download is in progress and paused, or else if it is |
143 long? error; | 177 // interrupted and can be resumed starting from where it was interrupted. |
| 178 boolean canResume; |
| 179 |
| 180 // Why the download was interrupted. Several kinds of HTTP errors may be |
| 181 // grouped under one of the errors beginning with <code>SERVER_</code>. |
| 182 // Errors relating to the network begin with <code>NETWORK_</code>, errors |
| 183 // relating to the process of writing the file to the file system begin with |
| 184 // <code>FILE_</code>, and interruptions initiated by the user begin with |
| 185 // <code>USER_</code>. |
| 186 InterruptReason? error; |
144 | 187 |
145 // Number of bytes received so far from the host, without considering file | 188 // Number of bytes received so far from the host, without considering file |
146 // compression. | 189 // compression. |
147 long bytesReceived; | 190 long bytesReceived; |
148 | 191 |
149 // Number of bytes in the whole file, without considering file compression, | 192 // Number of bytes in the whole file, without considering file compression, |
150 // or -1 if unknown. | 193 // or -1 if unknown. |
151 long totalBytes; | 194 long totalBytes; |
152 | 195 |
153 // Number of bytes in the whole file post-decompression, or -1 if unknown. | 196 // Number of bytes in the whole file post-decompression, or -1 if unknown. |
154 long fileSize; | 197 long fileSize; |
155 | 198 |
156 // Whether the downloaded file still exists. This information may be out of | 199 // Whether the downloaded file still exists. This information may be out of |
157 // date because Chrome does not automatically watch for file removal. Call | 200 // date because Chrome does not automatically watch for file removal. Call |
158 // $ref:search() in order to trigger the check for file existence. When the | 201 // $ref:search() in order to trigger the check for file existence. When the |
159 // existence check completes, if the file has been deleted, then an | 202 // existence check completes, if the file has been deleted, then an |
160 // $ref:onChanged event will fire. Note that $ref:search() does not wait | 203 // $ref:onChanged event will fire. Note that $ref:search() does not wait |
161 // for the existence check to finish before returning, so results from | 204 // for the existence check to finish before returning, so results from |
162 // $ref:search() may not accurately reflect the file system. Also, | 205 // $ref:search() may not accurately reflect the file system. Also, |
163 // $ref:search() may be called as often as necessary, but will not check for | 206 // $ref:search() may be called as often as necessary, but will not check for |
164 // file existence any more frequently than once every 10 seconds. | 207 // file existence any more frequently than once every 10 seconds. |
165 boolean exists; | 208 boolean exists; |
166 }; | 209 }; |
167 | 210 |
168 [inline_doc] dictionary DownloadQuery { | 211 [inline_doc] dictionary DownloadQuery { |
169 // This space-separated string of search terms that may be grouped using | 212 // This array of search terms limits results to $ref:DownloadItem whose |
170 // quotation marks limits results to | 213 // <code>filename</code> or <code>url</code> contain all of the search terms |
171 // $ref:DownloadItem whose <code>filename</code> | 214 // that do not begin with a dash '-' and none of the search terms that do |
172 // or <code>url</code> contain all of the search terms that do not begin wit
h a dash '-' | 215 // begin with a dash. |
173 // and none of the search terms that do begin with a dash. | 216 DOMString[]? query; |
174 DOMString? query; | |
175 | 217 |
176 // Limits results to $ref:DownloadItem that | 218 // Limits results to $ref:DownloadItem that |
177 // started before the given ms since the epoch. | 219 // started before the given ms since the epoch. |
178 DOMString? startedBefore; | 220 DOMString? startedBefore; |
179 | 221 |
180 // Limits results to $ref:DownloadItem that | 222 // Limits results to $ref:DownloadItem that |
181 // started after the given ms since the epoch. | 223 // started after the given ms since the epoch. |
182 DOMString? startedAfter; | 224 DOMString? startedAfter; |
183 | 225 |
184 // Limits results to $ref:DownloadItem that ended before the given ms since
the | 226 // Limits results to $ref:DownloadItem that ended before the given ms since
the |
(...skipping 13 matching lines...) Expand all Loading... |
198 long? totalBytesLess; | 240 long? totalBytesLess; |
199 | 241 |
200 // Limits results to $ref:DownloadItem whose | 242 // Limits results to $ref:DownloadItem whose |
201 // <code>filename</code> matches the given regular expression. | 243 // <code>filename</code> matches the given regular expression. |
202 DOMString? filenameRegex; | 244 DOMString? filenameRegex; |
203 | 245 |
204 // Limits results to $ref:DownloadItem whose | 246 // Limits results to $ref:DownloadItem whose |
205 // <code>url</code> matches the given regular expression. | 247 // <code>url</code> matches the given regular expression. |
206 DOMString? urlRegex; | 248 DOMString? urlRegex; |
207 | 249 |
208 // Setting this integer limits the number of results. Otherwise, all | 250 // The maximum number of matching $ref:DownloadItem returned. Defaults to |
209 // matching $ref:DownloadItem will be returned. | 251 // 1000. Set to 0 in order to return all matching $ref:DownloadItem. See |
| 252 // $ref:search for how to page through results. |
210 long? limit; | 253 long? limit; |
211 | 254 |
212 // Setting this string to a $ref:DownloadItem | 255 // Set elements of this array to $ref:DownloadItem properties in order to |
213 // property sorts the $ref:DownloadItem prior | 256 // sort search results. For example, setting |
214 // to applying the above filters. For example, setting | 257 // <code>orderBy=['startTime']</code> sorts the $ref:DownloadItem by their |
215 // <code>orderBy='startTime'</code> sorts the | 258 // start time in ascending order. To specify descending order, prefix with a |
216 // $ref:DownloadItem by their start time in | 259 // hyphen: '-startTime'. |
217 // ascending order. To specify descending order, prefix <code>orderBy</code> | 260 DOMString[]? orderBy; |
218 // with a hyphen: '-startTime'. | |
219 DOMString? orderBy; | |
220 | 261 |
221 // The <code>id</code> of the $ref:DownloadItem to query. | 262 // The <code>id</code> of the $ref:DownloadItem to query. |
222 long? id; | 263 long? id; |
223 | 264 |
224 // Absolute URL. | 265 // Absolute URL. |
225 DOMString? url; | 266 DOMString? url; |
226 | 267 |
227 // Absolute local path. | 268 // Absolute local path. |
228 DOMString? filename; | 269 DOMString? filename; |
229 | 270 |
230 // Indication of whether this download is thought to be safe or known to be | 271 // Indication of whether this download is thought to be safe or known to be |
231 // suspicious. | 272 // suspicious. |
232 DangerType? danger; | 273 DangerType? danger; |
233 | 274 |
234 // True if the user has accepted the download's danger. | |
235 boolean? dangerAccepted; | |
236 | |
237 // The file's MIME type. | 275 // The file's MIME type. |
238 DOMString? mime; | 276 DOMString? mime; |
239 | 277 |
240 // The time when the download began in ISO 8601 format. | 278 // The time when the download began in ISO 8601 format. |
241 DOMString? startTime; | 279 DOMString? startTime; |
242 | 280 |
243 // The time when the download ended in ISO 8601 format. | 281 // The time when the download ended in ISO 8601 format. |
244 DOMString? endTime; | 282 DOMString? endTime; |
245 | 283 |
246 // Indicates whether the download is progressing, interrupted, or complete. | 284 // Indicates whether the download is progressing, interrupted, or complete. |
247 State? state; | 285 State? state; |
248 | 286 |
249 // True if the download has stopped reading data from the host, but kept the | 287 // True if the download has stopped reading data from the host, but kept the |
250 // connection open. | 288 // connection open. |
251 boolean? paused; | 289 boolean? paused; |
252 | 290 |
253 // Number indicating why a download was interrupted. | 291 // Why a download was interrupted. |
254 long? error; | 292 InterruptReason? error; |
255 | 293 |
256 // Number of bytes received so far from the host, without considering file | 294 // Number of bytes received so far from the host, without considering file |
257 // compression. | 295 // compression. |
258 long? bytesReceived; | 296 long? bytesReceived; |
259 | 297 |
260 // Number of bytes in the whole file, without considering file compression, | 298 // Number of bytes in the whole file, without considering file compression, |
261 // or -1 if unknown. | 299 // or -1 if unknown. |
262 long? totalBytes; | 300 long? totalBytes; |
263 | 301 |
264 // Number of bytes in the whole file post-decompression, or -1 if unknown. | 302 // Number of bytes in the whole file post-decompression, or -1 if unknown. |
(...skipping 26 matching lines...) Expand all Loading... |
291 | 329 |
292 // The change in <code>url</code>, if any. | 330 // The change in <code>url</code>, if any. |
293 StringDelta? url; | 331 StringDelta? url; |
294 | 332 |
295 // The change in <code>filename</code>, if any. | 333 // The change in <code>filename</code>, if any. |
296 StringDelta? filename; | 334 StringDelta? filename; |
297 | 335 |
298 // The change in <code>danger</code>, if any. | 336 // The change in <code>danger</code>, if any. |
299 StringDelta? danger; | 337 StringDelta? danger; |
300 | 338 |
301 // The change in <code>dangerAccepted</code>, if any. | |
302 BooleanDelta? dangerAccepted; | |
303 | |
304 // The change in <code>mime</code>, if any. | 339 // The change in <code>mime</code>, if any. |
305 StringDelta? mime; | 340 StringDelta? mime; |
306 | 341 |
307 // The change in <code>startTime</code>, if any. | 342 // The change in <code>startTime</code>, if any. |
308 StringDelta? startTime; | 343 StringDelta? startTime; |
309 | 344 |
310 // The change in <code>endTime</code>, if any. | 345 // The change in <code>endTime</code>, if any. |
311 StringDelta? endTime; | 346 StringDelta? endTime; |
312 | 347 |
313 // The change in <code>state</code>, if any. | 348 // The change in <code>state</code>, if any. |
314 StringDelta? state; | 349 StringDelta? state; |
315 | 350 |
| 351 // The change in <code>canResume</code>, if any. |
| 352 BooleanDelta? canResume; |
| 353 |
316 // The change in <code>paused</code>, if any. | 354 // The change in <code>paused</code>, if any. |
317 BooleanDelta? paused; | 355 BooleanDelta? paused; |
318 | 356 |
319 // The change in <code>error</code>, if any. | 357 // The change in <code>error</code>, if any. |
320 LongDelta? error; | 358 StringDelta? error; |
321 | 359 |
322 // The change in <code>totalBytes</code>, if any. | 360 // The change in <code>totalBytes</code>, if any. |
323 LongDelta? totalBytes; | 361 LongDelta? totalBytes; |
324 | 362 |
325 // The change in <code>fileSize</code>, if any. | 363 // The change in <code>fileSize</code>, if any. |
326 LongDelta? fileSize; | 364 LongDelta? fileSize; |
327 | 365 |
328 // The change in <code>exists</code>, if any. | 366 // The change in <code>exists</code>, if any. |
329 BooleanDelta? exists; | 367 BooleanDelta? exists; |
330 }; | 368 }; |
(...skipping 22 matching lines...) Expand all Loading... |
353 // <code>downloadId</code>. If there was an error starting the download, | 391 // <code>downloadId</code>. If there was an error starting the download, |
354 // then <code>callback</code> will be called with | 392 // then <code>callback</code> will be called with |
355 // <code>downloadId=undefined</code> and $ref:runtime.lastError will contain | 393 // <code>downloadId=undefined</code> and $ref:runtime.lastError will contain |
356 // a descriptive string. The error strings are not guaranteed to remain | 394 // a descriptive string. The error strings are not guaranteed to remain |
357 // backwards compatible between releases. Extensions must not parse it. | 395 // backwards compatible between releases. Extensions must not parse it. |
358 // |options|: What to download and how. | 396 // |options|: What to download and how. |
359 // |callback|: Called with the id of the new $ref:DownloadItem. | 397 // |callback|: Called with the id of the new $ref:DownloadItem. |
360 static void download(DownloadOptions options, | 398 static void download(DownloadOptions options, |
361 optional DownloadCallback callback); | 399 optional DownloadCallback callback); |
362 | 400 |
363 // Find $ref:DownloadItem. Set | 401 // Find $ref:DownloadItem. Set <code>query</code> to the empty object to get |
364 // <code>query</code> to the empty object to get all | 402 // all $ref:DownloadItem. To get a specific $ref:DownloadItem, set only the |
365 // $ref:DownloadItem. To get a specific | 403 // <code>id</code> field. To page through a large number of items, set |
366 // $ref:DownloadItem, set only the <code>id</code> | 404 // <code>orderBy: ['-startTime']</code>, set <code>limit</code> to the |
367 // field. | 405 // number of items per page, and set <code>startedAfter</code> to the |
| 406 // <code>startTime</code> of the last item from the last page. |
368 static void search(DownloadQuery query, SearchCallback callback); | 407 static void search(DownloadQuery query, SearchCallback callback); |
369 | 408 |
370 // Pause the download. If the request was successful the download is in a | 409 // Pause the download. If the request was successful the download is in a |
371 // paused state. Otherwise | 410 // paused state. Otherwise $ref:runtime.lastError contains an error message. |
372 // $ref:runtime.lastError | 411 // The request will fail if the download is not active. |
373 // contains an error message. The request will fail if the download is not | |
374 // active. | |
375 // |downloadId|: The id of the download to pause. | 412 // |downloadId|: The id of the download to pause. |
376 // |callback|: Called when the pause request is completed. | 413 // |callback|: Called when the pause request is completed. |
377 static void pause(long downloadId, optional NullCallback callback); | 414 static void pause(long downloadId, optional NullCallback callback); |
378 | 415 |
379 // Resume a paused download. If the request was successful the download is | 416 // Resume a paused download. If the request was successful the download is |
380 // in progress and unpaused. Otherwise | 417 // in progress and unpaused. Otherwise $ref:runtime.lastError contains an |
381 // $ref:runtime.lastError | 418 // error message. The request will fail if the download is not active. |
382 // contains an error message. The request will fail if the download is not | |
383 // active. | |
384 // |downloadId|: The id of the download to resume. | 419 // |downloadId|: The id of the download to resume. |
385 // |callback|: Called when the resume request is completed. | 420 // |callback|: Called when the resume request is completed. |
386 static void resume(long downloadId, optional NullCallback callback); | 421 static void resume(long downloadId, optional NullCallback callback); |
387 | 422 |
388 // Cancel a download. When <code>callback</code> is run, the download is | 423 // Cancel a download. When <code>callback</code> is run, the download is |
389 // cancelled, completed, interrupted or doesn't exist anymore. | 424 // cancelled, completed, interrupted or doesn't exist anymore. |
390 // |downloadId|: The id of the download to cancel. | 425 // |downloadId|: The id of the download to cancel. |
391 // |callback|: Called when the cancel request is completed. | 426 // |callback|: Called when the cancel request is completed. |
392 static void cancel(long downloadId, optional NullCallback callback); | 427 static void cancel(long downloadId, optional NullCallback callback); |
393 | 428 |
394 // Retrieve an icon for the specified download. For new downloads, file | 429 // Retrieve an icon for the specified download. For new downloads, file |
395 // icons are available after the $ref:onCreated | 430 // icons are available after the $ref:onCreated event has been received. The |
396 // event has been received. The image returned by this function while a | 431 // image returned by this function while a download is in progress may be |
397 // download is in progress may be different from the image returned after | 432 // different from the image returned after the download is complete. Icon |
398 // the download is complete. Icon retrieval is done by querying the | 433 // retrieval is done by querying the underlying operating system or toolkit |
399 // underlying operating system or toolkit depending on the platform. The | 434 // depending on the platform. The icon that is returned will therefore |
400 // icon that is returned will therefore depend on a number of factors | 435 // depend on a number of factors including state of the download, platform, |
401 // including state of the download, platform, registered file types and | 436 // registered file types and visual theme. If a file icon cannot be |
402 // visual theme. If a file icon cannot be determined, | 437 // determined, $ref:runtime.lastError will contain an error message. |
403 // $ref:runtime.lastError | |
404 // will contain an error message. | |
405 // |downloadId|: The identifier for the download. | 438 // |downloadId|: The identifier for the download. |
406 // |callback|: A URL to an image that represents the download. | 439 // |callback|: A URL to an image that represents the download. |
407 static void getFileIcon(long downloadId, | 440 static void getFileIcon(long downloadId, |
408 optional GetFileIconOptions options, | 441 optional GetFileIconOptions options, |
409 GetFileIconCallback callback); | 442 GetFileIconCallback callback); |
410 | 443 |
411 // Open the downloaded file now if the $ref:DownloadItem is complete; | 444 // Open the downloaded file now if the $ref:DownloadItem is complete; |
412 // returns an error through $ref:runtime.lastError otherwise. Requires the | 445 // otherwise returns an error through $ref:runtime.lastError. Requires the |
413 // <code>"downloads.open"</code> permission in addition to the | 446 // <code>"downloads.open"</code> permission in addition to the |
414 // <code>"downloads"</code> permission. An $ref:onChanged event will fire | 447 // <code>"downloads"</code> permission. An $ref:onChanged event will fire |
415 // when the item is opened for the first time. | 448 // when the item is opened for the first time. |
416 // |downloadId|: The identifier for the downloaded file. | 449 // |downloadId|: The identifier for the downloaded file. |
417 static void open(long downloadId); | 450 static void open(long downloadId); |
418 | 451 |
419 // Show the downloaded file in its folder in a file manager. | 452 // Show the downloaded file in its folder in a file manager. |
420 // |downloadId|: The identifier for the downloaded file. | 453 // |downloadId|: The identifier for the downloaded file. |
421 static void show(long downloadId); | 454 static void show(long downloadId); |
422 | 455 |
423 // Erase matching $ref:DownloadItem from history. An $ref:onErased event | 456 // Show the default Downloads folder in a file manager. |
424 // will fire for each $ref:DownloadItem that matches <code>query</code>, | 457 static void showDefaultFolder(); |
425 // then <code>callback</code> will be called. | 458 |
| 459 // Erase matching $ref:DownloadItem from history without deleting the |
| 460 // downloaded file. An $ref:onErased event will fire for each |
| 461 // $ref:DownloadItem that matches <code>query</code>, then |
| 462 // <code>callback</code> will be called. |
426 static void erase(DownloadQuery query, optional EraseCallback callback); | 463 static void erase(DownloadQuery query, optional EraseCallback callback); |
427 | 464 |
| 465 // Remove the downloaded file if it exists and the $ref:DownloadItem is |
| 466 // complete; otherwise return an error through $ref:runtime.lastError. |
| 467 static void removeFile(long downloadId, optional NullCallback callback); |
| 468 |
428 // Prompt the user to accept a dangerous download. Does not automatically | 469 // Prompt the user to accept a dangerous download. Does not automatically |
429 // accept dangerous downloads. If the download is accepted, then an | 470 // accept dangerous downloads. If the download is accepted, then an |
430 // $ref:onChanged event will fire, otherwise nothing will happen. When all | 471 // $ref:onChanged event will fire, otherwise nothing will happen. When all |
431 // the data is fetched into a temporary file and either the download is not | 472 // the data is fetched into a temporary file and either the download is not |
432 // dangerous or the danger has been accepted, then the temporary file is | 473 // dangerous or the danger has been accepted, then the temporary file is |
433 // renamed to the target filename, the |state| changes to 'complete', and | 474 // renamed to the target filename, the |state| changes to 'complete', and |
434 // $ref:onChanged fires. | 475 // $ref:onChanged fires. |
435 // |downloadId|: The identifier for the $ref:DownloadItem. | 476 // |downloadId|: The identifier for the $ref:DownloadItem. |
436 static void acceptDanger(long downloadId); | 477 // |callback|: Called when the danger prompt dialog closes. |
| 478 static void acceptDanger(long downloadId, optional NullCallback callback); |
437 | 479 |
438 // Initiate dragging the downloaded file to another application. | 480 // Initiate dragging the downloaded file to another application. Call in a |
| 481 // javascript <code>ondragstart</code> handler. |
439 static void drag(long downloadId); | 482 static void drag(long downloadId); |
440 }; | 483 }; |
441 | 484 |
442 interface Events { | 485 interface Events { |
443 // This event fires with the $ref:DownloadItem | 486 // This event fires with the $ref:DownloadItem object when a download |
444 // object when a download begins. | 487 // begins. |
445 static void onCreated(DownloadItem downloadItem); | 488 static void onCreated(DownloadItem downloadItem); |
446 | 489 |
447 // Fires with the <code>downloadId</code> when a download is erased from | 490 // Fires with the <code>downloadId</code> when a download is erased from |
448 // history. | 491 // history. |
449 // |downloadId|: The <code>id</code> of the $ref:DownloadItem that was | 492 // |downloadId|: The <code>id</code> of the $ref:DownloadItem that was |
450 // erased. | 493 // erased. |
451 static void onErased(long downloadId); | 494 static void onErased(long downloadId); |
452 | 495 |
453 // When any of a $ref:DownloadItem's properties except | 496 // When any of a $ref:DownloadItem's properties except |
454 // <code>bytesReceived</code> changes, this event fires with the | 497 // <code>bytesReceived</code> and <code>estimatedEndTime</code> changes, |
455 // <code>downloadId</code> and an object containing the properties that | 498 // this event fires with the <code>downloadId</code> and an object |
456 // changed. | 499 // containing the properties that changed. |
457 static void onChanged(DownloadDelta downloadDelta); | 500 static void onChanged(DownloadDelta downloadDelta); |
458 | 501 |
459 // During the filename determination process, extensions will be given the | 502 // During the filename determination process, extensions will be given the |
460 // opportunity to override the target $ref:DownloadItem.filename. Each | 503 // opportunity to override the target $ref:DownloadItem.filename. Each |
461 // extension may not register more than one listener for this event. Each | 504 // extension may not register more than one listener for this event. Each |
462 // listener must call <code>suggest</code> exactly once, either | 505 // listener must call <code>suggest</code> exactly once, either |
463 // synchronously or asynchronously. If the listener calls | 506 // synchronously or asynchronously. If the listener calls |
464 // <code>suggest</code> asynchronously, then it must return | 507 // <code>suggest</code> asynchronously, then it must return |
465 // <code>true</code>. If the listener neither calls <code>suggest</code> | 508 // <code>true</code>. If the listener neither calls <code>suggest</code> |
466 // synchronously nor returns <code>true</code>, then <code>suggest</code> | 509 // synchronously nor returns <code>true</code>, then <code>suggest</code> |
467 // will be called automatically. The $ref:DownloadItem will not complete | 510 // will be called automatically. The $ref:DownloadItem will not complete |
468 // until all listeners have called <code>suggest</code>. Listeners may call | 511 // until all listeners have called <code>suggest</code>. Listeners may call |
469 // <code>suggest</code> without any arguments in order to allow the download | 512 // <code>suggest</code> without any arguments in order to allow the download |
470 // to use <code>downloadItem.filename</code> for its filename, or pass a | 513 // to use <code>downloadItem.filename</code> for its filename, or pass a |
471 // <code>suggestion</code> object to <code>suggest</code> in order to | 514 // <code>suggestion</code> object to <code>suggest</code> in order to |
472 // override the target filename. If more than one extension overrides the | 515 // override the target filename. If more than one extension overrides the |
473 // filename, then the last extension installed whose listener passes a | 516 // filename, then the last extension installed whose listener passes a |
474 // <code>suggestion</code> object to <code>suggest</code> wins. In order to | 517 // <code>suggestion</code> object to <code>suggest</code> wins. In order to |
475 // avoid confusion regarding which extension will win, users should not | 518 // avoid confusion regarding which extension will win, users should not |
476 // install extensions that may conflict. If the download is initiated by | 519 // install extensions that may conflict. If the download is initiated by |
477 // $ref:download and the target filename is known before the MIME type and | 520 // $ref:download and the target filename is known before the MIME type and |
478 // tentative filename have been determined, pass <code>filename</code> to | 521 // tentative filename have been determined, pass <code>filename</code> to |
479 // $ref:download instead. | 522 // $ref:download instead. |
480 [maxListeners=1] static void onDeterminingFilename( | 523 [maxListeners=1] static void onDeterminingFilename( |
481 DownloadItem downloadItem, SuggestFilenameCallback suggest); | 524 DownloadItem downloadItem, SuggestFilenameCallback suggest); |
482 }; | 525 }; |
483 }; | 526 }; |
OLD | NEW |