OLD | NEW |
| (Empty) |
1 /// Native wrappers for the Chrome packaged app APIs. | |
2 /// | |
3 /// These functions allow direct access to the chrome.* APIs, allowing | |
4 /// Chrome packaged apps to be written using Dart. | |
5 /// | |
6 /// For more information on these APIs, see the | |
7 /// [chrome.* API documentation](http://developer.chrome.com/apps/api_index.html
). | |
8 library chrome; | |
9 | |
10 import 'dart:_foreign_helper' show JS; | |
11 import 'dart:_js_helper'; | |
12 import 'dart:html_common'; | |
13 import 'dart:html'; | |
14 | |
15 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
16 // for details. All rights reserved. Use of this source code is governed by a | |
17 // BSD-style license that can be found in the LICENSE file. | |
18 | |
19 // DO NOT EDIT | |
20 // Auto-generated dart:chrome library. | |
21 | |
22 | |
23 /* TODO(sashab): Add "show convertDartClosureToJS" once 'show' works. */ | |
24 | |
25 | |
26 // Generated files below this line. | |
27 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
28 // for details. All rights reserved. Use of this source code is governed by a | |
29 // BSD-style license that can be found in the LICENSE file. | |
30 | |
31 /** | |
32 * A set of utilities for use with the Chrome Extension APIs. | |
33 * | |
34 * Allows for easy access to required JS objects. | |
35 */ | |
36 | |
37 /** | |
38 * A dart object, that is convertible to JS. Used for creating objects in dart, | |
39 * then passing them to JS. | |
40 * | |
41 * Objects that are passable to JS need to implement this interface. | |
42 */ | |
43 abstract class ChromeObject { | |
44 /* | |
45 * Default Constructor | |
46 * | |
47 * Called by child objects during their regular construction. | |
48 */ | |
49 ChromeObject() : _jsObject = JS('var', '{}'); | |
50 | |
51 /* | |
52 * Internal proxy constructor | |
53 * | |
54 * Creates a new Dart object using this existing proxy. | |
55 */ | |
56 ChromeObject._proxy(this._jsObject); | |
57 | |
58 /* | |
59 * JS Object Representation | |
60 */ | |
61 final Object _jsObject; | |
62 } | |
63 | |
64 /** | |
65 * Useful functions for converting arguments. | |
66 */ | |
67 | |
68 /** | |
69 * Converts the given map-type argument to js-friendly format, recursively. | |
70 * Returns the new Map object. | |
71 */ | |
72 Object _convertMapArgument(Map argument) { | |
73 Map m = new Map(); | |
74 for (Object key in argument.keys) | |
75 m[key] = convertArgument(argument[key]); | |
76 return convertDartToNative_Dictionary(m); | |
77 } | |
78 | |
79 /** | |
80 * Converts the given list-type argument to js-friendly format, recursively. | |
81 * Returns the new List object. | |
82 */ | |
83 List _convertListArgument(List argument) { | |
84 List l = new List(); | |
85 for (var i = 0; i < argument.length; i ++) | |
86 l.add(convertArgument(argument[i])); | |
87 return l; | |
88 } | |
89 | |
90 /** | |
91 * Converts the given argument Object to js-friendly format, recursively. | |
92 * | |
93 * Flattens out all Chrome objects into their corresponding ._toMap() | |
94 * definitions, then converts them to JS objects. | |
95 * | |
96 * Returns the new argument. | |
97 * | |
98 * Cannot be used for functions. | |
99 */ | |
100 Object convertArgument(var argument) { | |
101 if (argument == null) | |
102 return argument; | |
103 | |
104 if (argument is num || argument is String || argument is bool) | |
105 return argument; | |
106 | |
107 if (argument is ChromeObject) | |
108 return argument._jsObject; | |
109 | |
110 if (argument is List) | |
111 return _convertListArgument(argument); | |
112 | |
113 if (argument is Map) | |
114 return _convertMapArgument(argument); | |
115 | |
116 if (argument is Function) | |
117 throw new Exception("Cannot serialize Function argument ${argument}."); | |
118 | |
119 // TODO(sashab): Try and detect whether the argument is already serialized. | |
120 return argument; | |
121 } | |
122 | |
123 /// Description of a declarative rule for handling events. | |
124 class Rule extends ChromeObject { | |
125 /* | |
126 * Public (Dart) constructor | |
127 */ | |
128 Rule({String id, List conditions, List actions, int priority}) { | |
129 this.id = id; | |
130 this.conditions = conditions; | |
131 this.actions = actions; | |
132 this.priority = priority; | |
133 } | |
134 | |
135 /* | |
136 * Private (JS) constructor | |
137 */ | |
138 Rule._proxy(_jsObject) : super._proxy(_jsObject); | |
139 | |
140 /* | |
141 * Public accessors | |
142 */ | |
143 String get id => JS('String', '#.id', this._jsObject); | |
144 | |
145 void set id(String id) { | |
146 JS('void', '#.id = #', this._jsObject, id); | |
147 } | |
148 | |
149 // TODO(sashab): Wrap these generic Lists somehow. | |
150 List get conditions => JS('List', '#.conditions', this._jsObject); | |
151 | |
152 void set conditions(List conditions) { | |
153 JS('void', '#.conditions = #', this._jsObject, convertArgument(conditions)); | |
154 } | |
155 | |
156 // TODO(sashab): Wrap these generic Lists somehow. | |
157 List get actions => JS('List', '#.actions', this._jsObject); | |
158 | |
159 void set actions(List actions) { | |
160 JS('void', '#.actions = #', this._jsObject, convertArgument(actions)); | |
161 } | |
162 | |
163 int get priority => JS('int', '#.priority', this._jsObject); | |
164 | |
165 void set priority(int priority) { | |
166 JS('void', '#.priority = #', this._jsObject, priority); | |
167 } | |
168 | |
169 } | |
170 | |
171 /** | |
172 * The Event class. | |
173 * | |
174 * Chrome Event classes extend this interface. | |
175 * | |
176 * e.g. | |
177 * | |
178 * // chrome.app.runtime.onLaunched | |
179 * class Event_ChromeAppRuntimeOnLaunched extends Event { | |
180 * // constructor, passing the arity of the callback | |
181 * Event_ChromeAppRuntimeOnLaunched(jsObject) : | |
182 * super._(jsObject, 1); | |
183 * | |
184 * // methods, strengthening the Function parameter specificity | |
185 * void addListener(void callback(LaunchData launchData)) | |
186 * => super.addListener(callback); | |
187 * void removeListener(void callback(LaunchData launchData)) | |
188 * => super.removeListener(callback); | |
189 * bool hasListener(void callback(LaunchData launchData)) | |
190 * => super.hasListener(callback); | |
191 * } | |
192 * | |
193 */ | |
194 class Event { | |
195 /* | |
196 * JS Object Representation | |
197 */ | |
198 final Object _jsObject; | |
199 | |
200 /* | |
201 * Number of arguments the callback takes. | |
202 */ | |
203 final int _callbackArity; | |
204 | |
205 /* | |
206 * Private constructor | |
207 */ | |
208 Event._(this._jsObject, this._callbackArity); | |
209 | |
210 /* | |
211 * Methods | |
212 */ | |
213 | |
214 /// Registers an event listener <em>callback</em> to an event. | |
215 void addListener(Function callback) => | |
216 JS('void', | |
217 '#.addListener(#)', | |
218 this._jsObject, | |
219 convertDartClosureToJS(callback, this._callbackArity) | |
220 ); | |
221 | |
222 /// Deregisters an event listener <em>callback</em> from an event. | |
223 void removeListener(Function callback) => | |
224 JS('void', | |
225 '#.removeListener(#)', | |
226 this._jsObject, | |
227 convertDartClosureToJS(callback, this._callbackArity) | |
228 ); | |
229 | |
230 /// Returns True if <em>callback</em> is registered to the event. | |
231 bool hasListener(Function callback) => | |
232 JS('bool', | |
233 '#.hasListener(#)', | |
234 this._jsObject, | |
235 convertDartClosureToJS(callback, this._callbackArity) | |
236 ); | |
237 | |
238 /// Returns true if any event listeners are registered to the event. | |
239 bool hasListeners() => | |
240 JS('bool', | |
241 '#.hasListeners()', | |
242 this._jsObject | |
243 ); | |
244 | |
245 /// Registers rules to handle events. | |
246 /// | |
247 /// [eventName] is the name of the event this function affects and [rules] are | |
248 /// the rules to be registered. These do not replace previously registered | |
249 /// rules. [callback] is called with registered rules. | |
250 /// | |
251 void addRules(String eventName, List<Rule> rules, | |
252 [void callback(List<Rule> rules)]) { | |
253 // proxy the callback | |
254 void __proxy_callback(List rules) { | |
255 if (callback != null) { | |
256 List<Rule> __proxy_rules = new List<Rule>(); | |
257 | |
258 for (Object o in rules) | |
259 __proxy_rules.add(new Rule._proxy(o)); | |
260 | |
261 callback(__proxy_rules); | |
262 } | |
263 } | |
264 | |
265 JS('void', | |
266 '#.addRules(#, #, #)', | |
267 this._jsObject, | |
268 convertArgument(eventName), | |
269 convertArgument(rules), | |
270 convertDartClosureToJS(__proxy_callback, 1) | |
271 ); | |
272 } | |
273 | |
274 /// Returns currently registered rules. | |
275 /// | |
276 /// [eventName] is the name of the event this function affects and, if an arra
y | |
277 /// is passed as [ruleIdentifiers], only rules with identifiers contained in | |
278 /// this array are returned. [callback] is called with registered rules. | |
279 /// | |
280 void getRules(String eventName, [List<String> ruleIdentifiers, | |
281 void callback(List<Rule> rules)]) { | |
282 // proxy the callback | |
283 void __proxy_callback(List rules) { | |
284 if (callback != null) { | |
285 List<Rule> __proxy_rules = new List<Rule>(); | |
286 | |
287 for (Object o in rules) | |
288 __proxy_rules.add(new Rule._proxy(o)); | |
289 | |
290 callback(__proxy_rules); | |
291 } | |
292 } | |
293 | |
294 JS('void', | |
295 '#.getRules(#, #, #)', | |
296 this._jsObject, | |
297 convertArgument(eventName), | |
298 convertArgument(ruleIdentifiers), | |
299 convertDartClosureToJS(__proxy_callback, 1) | |
300 ); | |
301 } | |
302 | |
303 /// Unregisters currently registered rules. | |
304 /// | |
305 /// [eventName] is the name of the event this function affects and, if an arra
y | |
306 /// is passed as [ruleIdentifiers], only rules with identifiers contained in | |
307 /// this array are unregistered. [callback] is called when the rules are | |
308 /// unregistered. | |
309 /// | |
310 void removeRules(String eventName, [List<String> ruleIdentifiers, | |
311 void callback()]) => | |
312 JS('void', | |
313 '#.removeRules(#, #, #)', | |
314 this._jsObject, | |
315 convertArgument(eventName), | |
316 convertArgument(ruleIdentifiers), | |
317 convertDartClosureToJS(callback, 0) | |
318 ); | |
319 } | |
320 | |
321 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | |
322 // for details. All rights reserved. Use of this source code is governed by a | |
323 // BSD-style license that can be found in the LICENSE file. | |
324 | |
325 | |
326 // chrome.app | |
327 class API_ChromeApp { | |
328 /* | |
329 * JS Variable | |
330 */ | |
331 final Object _jsObject; | |
332 | |
333 /* | |
334 * Members | |
335 */ | |
336 API_app_window window; | |
337 API_app_runtime runtime; | |
338 | |
339 /* | |
340 * Constructor | |
341 */ | |
342 API_ChromeApp(this._jsObject) { | |
343 var window_object = JS('', '#.window', this._jsObject); | |
344 if (window_object == null) | |
345 throw new UnsupportedError('Not supported by current browser.'); | |
346 window = new API_app_window(window_object); | |
347 | |
348 var runtime_object = JS('', '#.runtime', this._jsObject); | |
349 if (runtime_object == null) | |
350 throw new UnsupportedError('Not supported by current browser.'); | |
351 runtime = new API_app_runtime(runtime_object); | |
352 } | |
353 } | |
354 | |
355 // chrome | |
356 class API_Chrome { | |
357 /* | |
358 * JS Variable | |
359 */ | |
360 Object _jsObject; | |
361 | |
362 /* | |
363 * Members | |
364 */ | |
365 API_ChromeApp app; | |
366 API_file_system fileSystem; | |
367 | |
368 /* | |
369 * Constructor | |
370 */ | |
371 API_Chrome() { | |
372 this._jsObject = JS("Object", "chrome"); | |
373 if (this._jsObject == null) | |
374 throw new UnsupportedError('Not supported by current browser.'); | |
375 | |
376 var app_object = JS('', '#.app', this._jsObject); | |
377 if (app_object == null) | |
378 throw new UnsupportedError('Not supported by current browser.'); | |
379 app = new API_ChromeApp(app_object); | |
380 | |
381 var file_system_object = JS('', '#.fileSystem', this._jsObject); | |
382 if (file_system_object == null) | |
383 throw new UnsupportedError('Not supported by current browser.'); | |
384 fileSystem = new API_file_system(file_system_object); | |
385 } | |
386 } | |
387 | |
388 // The final chrome objects | |
389 final API_Chrome chrome = new API_Chrome(); | |
390 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
391 // for details. All rights reserved. Use of this source code is governed by a | |
392 // BSD-style license that can be found in the LICENSE file. | |
393 | |
394 // Generated from namespace: app.window | |
395 | |
396 | |
397 /** | |
398 * Types | |
399 */ | |
400 | |
401 class AppWindowBounds extends ChromeObject { | |
402 /* | |
403 * Public constructor | |
404 */ | |
405 AppWindowBounds({int left, int top, int width, int height}) { | |
406 if (left != null) | |
407 this.left = left; | |
408 if (top != null) | |
409 this.top = top; | |
410 if (width != null) | |
411 this.width = width; | |
412 if (height != null) | |
413 this.height = height; | |
414 } | |
415 | |
416 /* | |
417 * Private constructor | |
418 */ | |
419 AppWindowBounds._proxy(_jsObject) : super._proxy(_jsObject); | |
420 | |
421 /* | |
422 * Public accessors | |
423 */ | |
424 int get left => JS('int', '#.left', this._jsObject); | |
425 | |
426 void set left(int left) { | |
427 JS('void', '#.left = #', this._jsObject, left); | |
428 } | |
429 | |
430 int get top => JS('int', '#.top', this._jsObject); | |
431 | |
432 void set top(int top) { | |
433 JS('void', '#.top = #', this._jsObject, top); | |
434 } | |
435 | |
436 int get width => JS('int', '#.width', this._jsObject); | |
437 | |
438 void set width(int width) { | |
439 JS('void', '#.width = #', this._jsObject, width); | |
440 } | |
441 | |
442 int get height => JS('int', '#.height', this._jsObject); | |
443 | |
444 void set height(int height) { | |
445 JS('void', '#.height = #', this._jsObject, height); | |
446 } | |
447 | |
448 } | |
449 | |
450 class AppWindowCreateWindowOptions extends ChromeObject { | |
451 /* | |
452 * Public constructor | |
453 */ | |
454 AppWindowCreateWindowOptions({String id, int defaultWidth, int defaultHeight,
int defaultLeft, int defaultTop, int width, int height, int left, int top, int m
inWidth, int minHeight, int maxWidth, int maxHeight, String type, String frame,
AppWindowBounds bounds, bool transparentBackground, String state, bool hidden, b
ool resizable, bool singleton}) { | |
455 if (id != null) | |
456 this.id = id; | |
457 if (defaultWidth != null) | |
458 this.defaultWidth = defaultWidth; | |
459 if (defaultHeight != null) | |
460 this.defaultHeight = defaultHeight; | |
461 if (defaultLeft != null) | |
462 this.defaultLeft = defaultLeft; | |
463 if (defaultTop != null) | |
464 this.defaultTop = defaultTop; | |
465 if (width != null) | |
466 this.width = width; | |
467 if (height != null) | |
468 this.height = height; | |
469 if (left != null) | |
470 this.left = left; | |
471 if (top != null) | |
472 this.top = top; | |
473 if (minWidth != null) | |
474 this.minWidth = minWidth; | |
475 if (minHeight != null) | |
476 this.minHeight = minHeight; | |
477 if (maxWidth != null) | |
478 this.maxWidth = maxWidth; | |
479 if (maxHeight != null) | |
480 this.maxHeight = maxHeight; | |
481 if (type != null) | |
482 this.type = type; | |
483 if (frame != null) | |
484 this.frame = frame; | |
485 if (bounds != null) | |
486 this.bounds = bounds; | |
487 if (transparentBackground != null) | |
488 this.transparentBackground = transparentBackground; | |
489 if (state != null) | |
490 this.state = state; | |
491 if (hidden != null) | |
492 this.hidden = hidden; | |
493 if (resizable != null) | |
494 this.resizable = resizable; | |
495 if (singleton != null) | |
496 this.singleton = singleton; | |
497 } | |
498 | |
499 /* | |
500 * Private constructor | |
501 */ | |
502 AppWindowCreateWindowOptions._proxy(_jsObject) : super._proxy(_jsObject); | |
503 | |
504 /* | |
505 * Public accessors | |
506 */ | |
507 /// Id to identify the window. This will be used to remember the size and | |
508 /// position of the window and restore that geometry when a window with the | |
509 /// same id is later opened. | |
510 String get id => JS('String', '#.id', this._jsObject); | |
511 | |
512 void set id(String id) { | |
513 JS('void', '#.id = #', this._jsObject, id); | |
514 } | |
515 | |
516 /// Default width of the window. (Deprecated; regular bounds act like this | |
517 /// now.) | |
518 int get defaultWidth => JS('int', '#.defaultWidth', this._jsObject); | |
519 | |
520 void set defaultWidth(int defaultWidth) { | |
521 JS('void', '#.defaultWidth = #', this._jsObject, defaultWidth); | |
522 } | |
523 | |
524 /// Default height of the window. (Deprecated; regular bounds act like this | |
525 /// now.) | |
526 int get defaultHeight => JS('int', '#.defaultHeight', this._jsObject); | |
527 | |
528 void set defaultHeight(int defaultHeight) { | |
529 JS('void', '#.defaultHeight = #', this._jsObject, defaultHeight); | |
530 } | |
531 | |
532 /// Default X coordinate of the window. (Deprecated; regular bounds act like | |
533 /// this now.) | |
534 int get defaultLeft => JS('int', '#.defaultLeft', this._jsObject); | |
535 | |
536 void set defaultLeft(int defaultLeft) { | |
537 JS('void', '#.defaultLeft = #', this._jsObject, defaultLeft); | |
538 } | |
539 | |
540 /// Default Y coordinate of the window. (Deprecated; regular bounds act like | |
541 /// this now.) | |
542 int get defaultTop => JS('int', '#.defaultTop', this._jsObject); | |
543 | |
544 void set defaultTop(int defaultTop) { | |
545 JS('void', '#.defaultTop = #', this._jsObject, defaultTop); | |
546 } | |
547 | |
548 /// Width of the window. (Deprecated; use 'bounds'.) | |
549 int get width => JS('int', '#.width', this._jsObject); | |
550 | |
551 void set width(int width) { | |
552 JS('void', '#.width = #', this._jsObject, width); | |
553 } | |
554 | |
555 /// Height of the window. (Deprecated; use 'bounds'.) | |
556 int get height => JS('int', '#.height', this._jsObject); | |
557 | |
558 void set height(int height) { | |
559 JS('void', '#.height = #', this._jsObject, height); | |
560 } | |
561 | |
562 /// X coordinate of the window. (Deprecated; use 'bounds'.) | |
563 int get left => JS('int', '#.left', this._jsObject); | |
564 | |
565 void set left(int left) { | |
566 JS('void', '#.left = #', this._jsObject, left); | |
567 } | |
568 | |
569 /// Y coordinate of the window. (Deprecated; use 'bounds'.) | |
570 int get top => JS('int', '#.top', this._jsObject); | |
571 | |
572 void set top(int top) { | |
573 JS('void', '#.top = #', this._jsObject, top); | |
574 } | |
575 | |
576 /// Minimum width for the lifetime of the window. | |
577 int get minWidth => JS('int', '#.minWidth', this._jsObject); | |
578 | |
579 void set minWidth(int minWidth) { | |
580 JS('void', '#.minWidth = #', this._jsObject, minWidth); | |
581 } | |
582 | |
583 /// Minimum height for the lifetime of the window. | |
584 int get minHeight => JS('int', '#.minHeight', this._jsObject); | |
585 | |
586 void set minHeight(int minHeight) { | |
587 JS('void', '#.minHeight = #', this._jsObject, minHeight); | |
588 } | |
589 | |
590 /// Maximum width for the lifetime of the window. | |
591 int get maxWidth => JS('int', '#.maxWidth', this._jsObject); | |
592 | |
593 void set maxWidth(int maxWidth) { | |
594 JS('void', '#.maxWidth = #', this._jsObject, maxWidth); | |
595 } | |
596 | |
597 /// Maximum height for the lifetime of the window. | |
598 int get maxHeight => JS('int', '#.maxHeight', this._jsObject); | |
599 | |
600 void set maxHeight(int maxHeight) { | |
601 JS('void', '#.maxHeight = #', this._jsObject, maxHeight); | |
602 } | |
603 | |
604 /// Type of window to create. | |
605 String get type => JS('String', '#.type', this._jsObject); | |
606 | |
607 void set type(String type) { | |
608 JS('void', '#.type = #', this._jsObject, type); | |
609 } | |
610 | |
611 /// Frame type: 'none' or 'chrome' (defaults to 'chrome'). | |
612 String get frame => JS('String', '#.frame', this._jsObject); | |
613 | |
614 void set frame(String frame) { | |
615 JS('void', '#.frame = #', this._jsObject, frame); | |
616 } | |
617 | |
618 /// Size and position of the content in the window (excluding the titlebar). I
f | |
619 /// an id is also specified and a window with a matching id has been shown | |
620 /// before, the remembered bounds of the window will be used instead. | |
621 AppWindowBounds get bounds => new AppWindowBounds._proxy(JS('', '#.bounds', th
is._jsObject)); | |
622 | |
623 void set bounds(AppWindowBounds bounds) { | |
624 JS('void', '#.bounds = #', this._jsObject, convertArgument(bounds)); | |
625 } | |
626 | |
627 /// Enable window background transparency. Only supported in ash. Requires | |
628 /// experimental API permission. | |
629 bool get transparentBackground => JS('bool', '#.transparentBackground', this._
jsObject); | |
630 | |
631 void set transparentBackground(bool transparentBackground) { | |
632 JS('void', '#.transparentBackground = #', this._jsObject, transparentBackgro
und); | |
633 } | |
634 | |
635 /// The initial state of the window, allowing it to be created already | |
636 /// fullscreen, maximized, or minimized. Defaults to 'normal'. | |
637 String get state => JS('String', '#.state', this._jsObject); | |
638 | |
639 void set state(String state) { | |
640 JS('void', '#.state = #', this._jsObject, state); | |
641 } | |
642 | |
643 /// If true, the window will be created in a hidden state. Call show() on the | |
644 /// window to show it once it has been created. Defaults to false. | |
645 bool get hidden => JS('bool', '#.hidden', this._jsObject); | |
646 | |
647 void set hidden(bool hidden) { | |
648 JS('void', '#.hidden = #', this._jsObject, hidden); | |
649 } | |
650 | |
651 /// If true, the window will be resizable by the user. Defaults to true. | |
652 bool get resizable => JS('bool', '#.resizable', this._jsObject); | |
653 | |
654 void set resizable(bool resizable) { | |
655 JS('void', '#.resizable = #', this._jsObject, resizable); | |
656 } | |
657 | |
658 /// By default if you specify an id for the window, the window will only be | |
659 /// created if another window with the same id doesn't already exist. If a | |
660 /// window with the same id already exists that window is activated instead. I
f | |
661 /// you do want to create multiple windows with the same id, you can set this | |
662 /// property to false. | |
663 bool get singleton => JS('bool', '#.singleton', this._jsObject); | |
664 | |
665 void set singleton(bool singleton) { | |
666 JS('void', '#.singleton = #', this._jsObject, singleton); | |
667 } | |
668 | |
669 } | |
670 | |
671 class AppWindowAppWindow extends ChromeObject { | |
672 /* | |
673 * Private constructor | |
674 */ | |
675 AppWindowAppWindow._proxy(_jsObject) : super._proxy(_jsObject); | |
676 | |
677 /* | |
678 * Public accessors | |
679 */ | |
680 /// The JavaScript 'window' object for the created child. | |
681 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
682 // for details. All rights reserved. Use of this source code is governed by a | |
683 // BSD-style license that can be found in the LICENSE file. | |
684 | |
685 // TODO(sashab, sra): Detect whether this is the current window, or an | |
686 // external one, and return an appropriately-typed object | |
687 WindowBase get contentWindow => | |
688 JS("Window", "#.contentWindow", this._jsObject); | |
689 | |
690 /* | |
691 * Methods | |
692 */ | |
693 /// Focus the window. | |
694 void focus() => JS('void', '#.focus()', this._jsObject); | |
695 | |
696 /// Fullscreens the window. | |
697 void fullscreen() => JS('void', '#.fullscreen()', this._jsObject); | |
698 | |
699 /// Is the window fullscreen? | |
700 bool isFullscreen() => JS('bool', '#.isFullscreen()', this._jsObject); | |
701 | |
702 /// Minimize the window. | |
703 void minimize() => JS('void', '#.minimize()', this._jsObject); | |
704 | |
705 /// Is the window minimized? | |
706 bool isMinimized() => JS('bool', '#.isMinimized()', this._jsObject); | |
707 | |
708 /// Maximize the window. | |
709 void maximize() => JS('void', '#.maximize()', this._jsObject); | |
710 | |
711 /// Is the window maximized? | |
712 bool isMaximized() => JS('bool', '#.isMaximized()', this._jsObject); | |
713 | |
714 /// Restore the window, exiting a maximized, minimized, or fullscreen state. | |
715 void restore() => JS('void', '#.restore()', this._jsObject); | |
716 | |
717 /// Move the window to the position (|left|, |top|). | |
718 void moveTo(int left, int top) => JS('void', '#.moveTo(#, #)', this._jsObject,
left, top); | |
719 | |
720 /// Resize the window to |width|x|height| pixels in size. | |
721 void resizeTo(int width, int height) => JS('void', '#.resizeTo(#, #)', this._j
sObject, width, height); | |
722 | |
723 /// Draw attention to the window. | |
724 void drawAttention() => JS('void', '#.drawAttention()', this._jsObject); | |
725 | |
726 /// Clear attention to the window. | |
727 void clearAttention() => JS('void', '#.clearAttention()', this._jsObject); | |
728 | |
729 /// Close the window. | |
730 void close() => JS('void', '#.close()', this._jsObject); | |
731 | |
732 /// Show the window. Does nothing if the window is already visible. | |
733 void show() => JS('void', '#.show()', this._jsObject); | |
734 | |
735 /// Hide the window. Does nothing if the window is already hidden. | |
736 void hide() => JS('void', '#.hide()', this._jsObject); | |
737 | |
738 /// Get the window's bounds as a $ref:Bounds object. | |
739 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
740 // for details. All rights reserved. Use of this source code is governed by a | |
741 // BSD-style license that can be found in the LICENSE file. | |
742 | |
743 // TODO(sashab, kalman): Fix IDL parser to read function return values | |
744 // correctly. Currently, it just reads void for all functions. | |
745 AppWindowBounds getBounds() => | |
746 new AppWindowBounds._proxy(JS('void', '#.getBounds()', this._jsObject)); | |
747 | |
748 /// Set the window's bounds. | |
749 void setBounds(AppWindowBounds bounds) => JS('void', '#.setBounds(#)', this._j
sObject, convertArgument(bounds)); | |
750 | |
751 /// Set the app icon for the window (experimental). Currently this is only | |
752 /// being implemented on Ash. TODO(stevenjb): Investigate implementing this on | |
753 /// Windows and OSX. | |
754 void setIcon(String icon_url) => JS('void', '#.setIcon(#)', this._jsObject, ic
on_url); | |
755 | |
756 } | |
757 | |
758 /** | |
759 * Events | |
760 */ | |
761 | |
762 /// Fired when the window is resized. | |
763 class Event_app_window_onBoundsChanged extends Event { | |
764 void addListener(void callback()) => super.addListener(callback); | |
765 | |
766 void removeListener(void callback()) => super.removeListener(callback); | |
767 | |
768 bool hasListener(void callback()) => super.hasListener(callback); | |
769 | |
770 Event_app_window_onBoundsChanged(jsObject) : super._(jsObject, 0); | |
771 } | |
772 | |
773 /// Fired when the window is closed. | |
774 class Event_app_window_onClosed extends Event { | |
775 void addListener(void callback()) => super.addListener(callback); | |
776 | |
777 void removeListener(void callback()) => super.removeListener(callback); | |
778 | |
779 bool hasListener(void callback()) => super.hasListener(callback); | |
780 | |
781 Event_app_window_onClosed(jsObject) : super._(jsObject, 0); | |
782 } | |
783 | |
784 /// Fired when the window is fullscreened. | |
785 class Event_app_window_onFullscreened extends Event { | |
786 void addListener(void callback()) => super.addListener(callback); | |
787 | |
788 void removeListener(void callback()) => super.removeListener(callback); | |
789 | |
790 bool hasListener(void callback()) => super.hasListener(callback); | |
791 | |
792 Event_app_window_onFullscreened(jsObject) : super._(jsObject, 0); | |
793 } | |
794 | |
795 /// Fired when the window is maximized. | |
796 class Event_app_window_onMaximized extends Event { | |
797 void addListener(void callback()) => super.addListener(callback); | |
798 | |
799 void removeListener(void callback()) => super.removeListener(callback); | |
800 | |
801 bool hasListener(void callback()) => super.hasListener(callback); | |
802 | |
803 Event_app_window_onMaximized(jsObject) : super._(jsObject, 0); | |
804 } | |
805 | |
806 /// Fired when the window is minimized. | |
807 class Event_app_window_onMinimized extends Event { | |
808 void addListener(void callback()) => super.addListener(callback); | |
809 | |
810 void removeListener(void callback()) => super.removeListener(callback); | |
811 | |
812 bool hasListener(void callback()) => super.hasListener(callback); | |
813 | |
814 Event_app_window_onMinimized(jsObject) : super._(jsObject, 0); | |
815 } | |
816 | |
817 /// Fired when the window is restored from being minimized or maximized. | |
818 class Event_app_window_onRestored extends Event { | |
819 void addListener(void callback()) => super.addListener(callback); | |
820 | |
821 void removeListener(void callback()) => super.removeListener(callback); | |
822 | |
823 bool hasListener(void callback()) => super.hasListener(callback); | |
824 | |
825 Event_app_window_onRestored(jsObject) : super._(jsObject, 0); | |
826 } | |
827 | |
828 /** | |
829 * Functions | |
830 */ | |
831 | |
832 class API_app_window { | |
833 /* | |
834 * API connection | |
835 */ | |
836 Object _jsObject; | |
837 | |
838 /* | |
839 * Events | |
840 */ | |
841 Event_app_window_onBoundsChanged onBoundsChanged; | |
842 Event_app_window_onClosed onClosed; | |
843 Event_app_window_onFullscreened onFullscreened; | |
844 Event_app_window_onMaximized onMaximized; | |
845 Event_app_window_onMinimized onMinimized; | |
846 Event_app_window_onRestored onRestored; | |
847 | |
848 /* | |
849 * Functions | |
850 */ | |
851 /// The size and position of a window can be specified in a number of differen
t | |
852 /// ways. The most simple option is not specifying anything at all, in which | |
853 /// case a default size and platform dependent position will be used.<br/><br/
> | |
854 /// Another option is to use the bounds property, which will put the window at | |
855 /// the specified coordinates with the specified size. If the window has a | |
856 /// frame, it's total size will be the size given plus the size of the frame; | |
857 /// that is, the size in bounds is the content size, not the window | |
858 /// size.<br/><br/> To automatically remember the positions of windows you can | |
859 /// give them ids. If a window has an id, This id is used to remember the size | |
860 /// and position of the window whenever it is moved or resized. This size and | |
861 /// position is then used instead of the specified bounds on subsequent openin
g | |
862 /// of a window with the same id. If you need to open a window with an id at a | |
863 /// location other than the remembered default, you can create it hidden, move | |
864 /// it to the desired location, then show it. | |
865 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
866 // for details. All rights reserved. Use of this source code is governed by a | |
867 // BSD-style license that can be found in the LICENSE file. | |
868 | |
869 // TODO(sashab): This override is no longer needed once prefixes are removed. | |
870 void create(String url, | |
871 [AppWindowCreateWindowOptions options, | |
872 void callback(AppWindowAppWindow created_window)]) { | |
873 void __proxy_callback(created_window) { | |
874 if (callback != null) | |
875 callback(new AppWindowAppWindow._proxy(created_window)); | |
876 } | |
877 JS('void', '#.create(#, #, #)', this._jsObject, url, convertArgument(options
), | |
878 convertDartClosureToJS(__proxy_callback, 1)); | |
879 } | |
880 | |
881 /// Returns an $ref:AppWindow object for the current script context (ie | |
882 /// JavaScript 'window' object). This can also be called on a handle to a | |
883 /// script context for another page, for example: | |
884 /// otherWindow.chrome.app.window.current(). | |
885 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
886 // for details. All rights reserved. Use of this source code is governed by a | |
887 // BSD-style license that can be found in the LICENSE file. | |
888 | |
889 // TODO(sashab, kalman): Fix IDL parser to read function return values | |
890 // correctly. Currently, it just reads void for all functions. | |
891 AppWindowAppWindow current() => | |
892 new AppWindowAppWindow._proxy(JS('void', '#.current()', this._jsObject)); | |
893 | |
894 void initializeAppWindow(Object state) => JS('void', '#.initializeAppWindow(#)
', this._jsObject, convertArgument(state)); | |
895 | |
896 API_app_window(this._jsObject) { | |
897 onBoundsChanged = new Event_app_window_onBoundsChanged(JS('', '#.onBoundsCha
nged', this._jsObject)); | |
898 onClosed = new Event_app_window_onClosed(JS('', '#.onClosed', this._jsObject
)); | |
899 onFullscreened = new Event_app_window_onFullscreened(JS('', '#.onFullscreene
d', this._jsObject)); | |
900 onMaximized = new Event_app_window_onMaximized(JS('', '#.onMaximized', this.
_jsObject)); | |
901 onMinimized = new Event_app_window_onMinimized(JS('', '#.onMinimized', this.
_jsObject)); | |
902 onRestored = new Event_app_window_onRestored(JS('', '#.onRestored', this._js
Object)); | |
903 } | |
904 } | |
905 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
906 // for details. All rights reserved. Use of this source code is governed by a | |
907 // BSD-style license that can be found in the LICENSE file. | |
908 | |
909 // Generated from namespace: app.runtime | |
910 | |
911 | |
912 /** | |
913 * Types | |
914 */ | |
915 | |
916 class AppRuntimeLaunchItem extends ChromeObject { | |
917 /* | |
918 * Public constructor | |
919 */ | |
920 AppRuntimeLaunchItem({FileEntry entry, String type}) { | |
921 if (entry != null) | |
922 this.entry = entry; | |
923 if (type != null) | |
924 this.type = type; | |
925 } | |
926 | |
927 /* | |
928 * Private constructor | |
929 */ | |
930 AppRuntimeLaunchItem._proxy(_jsObject) : super._proxy(_jsObject); | |
931 | |
932 /* | |
933 * Public accessors | |
934 */ | |
935 /// FileEntry for the file. | |
936 FileEntry get entry => JS('FileEntry', '#.entry', this._jsObject); | |
937 | |
938 void set entry(FileEntry entry) { | |
939 JS('void', '#.entry = #', this._jsObject, convertArgument(entry)); | |
940 } | |
941 | |
942 /// The MIME type of the file. | |
943 String get type => JS('String', '#.type', this._jsObject); | |
944 | |
945 void set type(String type) { | |
946 JS('void', '#.type = #', this._jsObject, type); | |
947 } | |
948 | |
949 } | |
950 | |
951 class AppRuntimeLaunchData extends ChromeObject { | |
952 /* | |
953 * Public constructor | |
954 */ | |
955 AppRuntimeLaunchData({String id, List<AppRuntimeLaunchItem> items}) { | |
956 if (id != null) | |
957 this.id = id; | |
958 if (items != null) | |
959 this.items = items; | |
960 } | |
961 | |
962 /* | |
963 * Private constructor | |
964 */ | |
965 AppRuntimeLaunchData._proxy(_jsObject) : super._proxy(_jsObject); | |
966 | |
967 /* | |
968 * Public accessors | |
969 */ | |
970 /// The id of the file handler that the app is being invoked with. | |
971 String get id => JS('String', '#.id', this._jsObject); | |
972 | |
973 void set id(String id) { | |
974 JS('void', '#.id = #', this._jsObject, id); | |
975 } | |
976 | |
977 List<AppRuntimeLaunchItem> get items { | |
978 List<AppRuntimeLaunchItem> __proxy_items = new List<AppRuntimeLaunchItem>(); | |
979 int count = JS('int', '#.items.length', this._jsObject); | |
980 for (int i = 0; i < count; i++) { | |
981 var item = JS('', '#.items[#]', this._jsObject, i); | |
982 __proxy_items.add(new AppRuntimeLaunchItem._proxy(item)); | |
983 } | |
984 return __proxy_items; | |
985 } | |
986 | |
987 void set items(List<AppRuntimeLaunchItem> items) { | |
988 JS('void', '#.items = #', this._jsObject, convertArgument(items)); | |
989 } | |
990 | |
991 } | |
992 | |
993 /** | |
994 * Events | |
995 */ | |
996 | |
997 /// Fired when an app is launched from the launcher. | |
998 class Event_app_runtime_onLaunched extends Event { | |
999 void addListener(void callback(AppRuntimeLaunchData launchData)) { | |
1000 void __proxy_callback(launchData) { | |
1001 if (callback != null) { | |
1002 callback(new AppRuntimeLaunchData._proxy(launchData)); | |
1003 } | |
1004 } | |
1005 super.addListener(__proxy_callback); | |
1006 } | |
1007 | |
1008 void removeListener(void callback(AppRuntimeLaunchData launchData)) { | |
1009 void __proxy_callback(launchData) { | |
1010 if (callback != null) { | |
1011 callback(new AppRuntimeLaunchData._proxy(launchData)); | |
1012 } | |
1013 } | |
1014 super.removeListener(__proxy_callback); | |
1015 } | |
1016 | |
1017 bool hasListener(void callback(AppRuntimeLaunchData launchData)) { | |
1018 void __proxy_callback(launchData) { | |
1019 if (callback != null) { | |
1020 callback(new AppRuntimeLaunchData._proxy(launchData)); | |
1021 } | |
1022 } | |
1023 super.hasListener(__proxy_callback); | |
1024 } | |
1025 | |
1026 Event_app_runtime_onLaunched(jsObject) : super._(jsObject, 1); | |
1027 } | |
1028 | |
1029 /// Fired at Chrome startup to apps that were running when Chrome last shut | |
1030 /// down. | |
1031 class Event_app_runtime_onRestarted extends Event { | |
1032 void addListener(void callback()) => super.addListener(callback); | |
1033 | |
1034 void removeListener(void callback()) => super.removeListener(callback); | |
1035 | |
1036 bool hasListener(void callback()) => super.hasListener(callback); | |
1037 | |
1038 Event_app_runtime_onRestarted(jsObject) : super._(jsObject, 0); | |
1039 } | |
1040 | |
1041 /** | |
1042 * Functions | |
1043 */ | |
1044 | |
1045 class API_app_runtime { | |
1046 /* | |
1047 * API connection | |
1048 */ | |
1049 Object _jsObject; | |
1050 | |
1051 /* | |
1052 * Events | |
1053 */ | |
1054 Event_app_runtime_onLaunched onLaunched; | |
1055 Event_app_runtime_onRestarted onRestarted; | |
1056 API_app_runtime(this._jsObject) { | |
1057 onLaunched = new Event_app_runtime_onLaunched(JS('', '#.onLaunched', this._j
sObject)); | |
1058 onRestarted = new Event_app_runtime_onRestarted(JS('', '#.onRestarted', this
._jsObject)); | |
1059 } | |
1060 } | |
1061 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
1062 // for details. All rights reserved. Use of this source code is governed by a | |
1063 // BSD-style license that can be found in the LICENSE file. | |
1064 | |
1065 // Generated from namespace: fileSystem | |
1066 | |
1067 | |
1068 /** | |
1069 * Types | |
1070 */ | |
1071 | |
1072 class FilesystemAcceptOption extends ChromeObject { | |
1073 /* | |
1074 * Public constructor | |
1075 */ | |
1076 FilesystemAcceptOption({String description, List<String> mimeTypes, List<Strin
g> extensions}) { | |
1077 if (description != null) | |
1078 this.description = description; | |
1079 if (mimeTypes != null) | |
1080 this.mimeTypes = mimeTypes; | |
1081 if (extensions != null) | |
1082 this.extensions = extensions; | |
1083 } | |
1084 | |
1085 /* | |
1086 * Private constructor | |
1087 */ | |
1088 FilesystemAcceptOption._proxy(_jsObject) : super._proxy(_jsObject); | |
1089 | |
1090 /* | |
1091 * Public accessors | |
1092 */ | |
1093 /// This is the optional text description for this option. If not present, a | |
1094 /// description will be automatically generated; typically containing an | |
1095 /// expanded list of valid extensions (e.g. "text/html" may expand to "*.html, | |
1096 /// *.htm"). | |
1097 String get description => JS('String', '#.description', this._jsObject); | |
1098 | |
1099 void set description(String description) { | |
1100 JS('void', '#.description = #', this._jsObject, description); | |
1101 } | |
1102 | |
1103 /// Mime-types to accept, e.g. "image/jpeg" or "audio/*". One of mimeTypes or | |
1104 /// extensions must contain at least one valid element. | |
1105 List<String> get mimeTypes => JS('List<String>', '#.mimeTypes', this._jsObject
); | |
1106 | |
1107 void set mimeTypes(List<String> mimeTypes) { | |
1108 JS('void', '#.mimeTypes = #', this._jsObject, mimeTypes); | |
1109 } | |
1110 | |
1111 /// Extensions to accept, e.g. "jpg", "gif", "crx". | |
1112 List<String> get extensions => JS('List<String>', '#.extensions', this._jsObje
ct); | |
1113 | |
1114 void set extensions(List<String> extensions) { | |
1115 JS('void', '#.extensions = #', this._jsObject, extensions); | |
1116 } | |
1117 | |
1118 } | |
1119 | |
1120 class FilesystemChooseEntryOptions extends ChromeObject { | |
1121 /* | |
1122 * Public constructor | |
1123 */ | |
1124 FilesystemChooseEntryOptions({String type, String suggestedName, List<Filesyst
emAcceptOption> accepts, bool acceptsAllTypes}) { | |
1125 if (type != null) | |
1126 this.type = type; | |
1127 if (suggestedName != null) | |
1128 this.suggestedName = suggestedName; | |
1129 if (accepts != null) | |
1130 this.accepts = accepts; | |
1131 if (acceptsAllTypes != null) | |
1132 this.acceptsAllTypes = acceptsAllTypes; | |
1133 } | |
1134 | |
1135 /* | |
1136 * Private constructor | |
1137 */ | |
1138 FilesystemChooseEntryOptions._proxy(_jsObject) : super._proxy(_jsObject); | |
1139 | |
1140 /* | |
1141 * Public accessors | |
1142 */ | |
1143 /// Type of the prompt to show. The default is 'openFile'. | |
1144 String get type => JS('String', '#.type', this._jsObject); | |
1145 | |
1146 void set type(String type) { | |
1147 JS('void', '#.type = #', this._jsObject, type); | |
1148 } | |
1149 | |
1150 /// The suggested file name that will be presented to the user as the default | |
1151 /// name to read or write. This is optional. | |
1152 String get suggestedName => JS('String', '#.suggestedName', this._jsObject); | |
1153 | |
1154 void set suggestedName(String suggestedName) { | |
1155 JS('void', '#.suggestedName = #', this._jsObject, suggestedName); | |
1156 } | |
1157 | |
1158 /// The optional list of accept options for this file opener. Each option will | |
1159 /// be presented as a unique group to the end-user. | |
1160 List<FilesystemAcceptOption> get accepts { | |
1161 List<FilesystemAcceptOption> __proxy_accepts = new List<FilesystemAcceptOpti
on>(); | |
1162 int count = JS('int', '#.accepts.length', this._jsObject); | |
1163 for (int i = 0; i < count; i++) { | |
1164 var item = JS('', '#.accepts[#]', this._jsObject, i); | |
1165 __proxy_accepts.add(new FilesystemAcceptOption._proxy(item)); | |
1166 } | |
1167 return __proxy_accepts; | |
1168 } | |
1169 | |
1170 void set accepts(List<FilesystemAcceptOption> accepts) { | |
1171 JS('void', '#.accepts = #', this._jsObject, convertArgument(accepts)); | |
1172 } | |
1173 | |
1174 /// Whether to accept all file types, in addition to the options specified in | |
1175 /// the accepts argument. The default is true. If the accepts field is unset o
r | |
1176 /// contains no valid entries, this will always be reset to true. | |
1177 bool get acceptsAllTypes => JS('bool', '#.acceptsAllTypes', this._jsObject); | |
1178 | |
1179 void set acceptsAllTypes(bool acceptsAllTypes) { | |
1180 JS('void', '#.acceptsAllTypes = #', this._jsObject, acceptsAllTypes); | |
1181 } | |
1182 | |
1183 } | |
1184 | |
1185 /** | |
1186 * Functions | |
1187 */ | |
1188 | |
1189 class API_file_system { | |
1190 /* | |
1191 * API connection | |
1192 */ | |
1193 Object _jsObject; | |
1194 | |
1195 /* | |
1196 * Functions | |
1197 */ | |
1198 /// Get the display path of a FileEntry object. The display path is based on | |
1199 /// the full path of the file on the local file system, but may be made more | |
1200 /// readable for display purposes. | |
1201 void getDisplayPath(FileEntry fileEntry, void callback(String displayPath)) =>
JS('void', '#.getDisplayPath(#, #)', this._jsObject, convertArgument(fileEntry)
, convertDartClosureToJS(callback, 1)); | |
1202 | |
1203 /// Get a writable FileEntry from another FileEntry. This call will fail if th
e | |
1204 /// application does not have the 'write' permission under 'fileSystem'. | |
1205 void getWritableEntry(FileEntry fileEntry, void callback(FileEntry fileEntry))
{ | |
1206 void __proxy_callback(fileEntry) { | |
1207 if (callback != null) { | |
1208 callback(fileEntry); | |
1209 } | |
1210 } | |
1211 JS('void', '#.getWritableEntry(#, #)', this._jsObject, convertArgument(fileE
ntry), convertDartClosureToJS(__proxy_callback, 1)); | |
1212 } | |
1213 | |
1214 /// Gets whether this FileEntry is writable or not. | |
1215 void isWritableEntry(FileEntry fileEntry, void callback(bool isWritable)) => J
S('void', '#.isWritableEntry(#, #)', this._jsObject, convertArgument(fileEntry),
convertDartClosureToJS(callback, 1)); | |
1216 | |
1217 /// Ask the user to choose a file. | |
1218 void chooseEntry(void callback(FileEntry fileEntry), [FilesystemChooseEntryOpt
ions options]) { | |
1219 void __proxy_callback(fileEntry) { | |
1220 if (callback != null) { | |
1221 callback(fileEntry); | |
1222 } | |
1223 } | |
1224 JS('void', '#.chooseEntry(#, #)', this._jsObject, convertArgument(options),
convertDartClosureToJS(__proxy_callback, 1)); | |
1225 } | |
1226 | |
1227 /// Returns the file entry with the given id if it can be restored. This call | |
1228 /// will fail otherwise. | |
1229 void restoreEntry(String id, void callback(FileEntry fileEntry)) { | |
1230 void __proxy_callback(fileEntry) { | |
1231 if (callback != null) { | |
1232 callback(fileEntry); | |
1233 } | |
1234 } | |
1235 JS('void', '#.restoreEntry(#, #)', this._jsObject, id, convertDartClosureToJ
S(__proxy_callback, 1)); | |
1236 } | |
1237 | |
1238 /// Returns whether a file entry for the given id can be restored, i.e. whethe
r | |
1239 /// restoreEntry would succeed with this id now. | |
1240 void isRestorable(String id, void callback(bool isRestorable)) => JS('void', '
#.isRestorable(#, #)', this._jsObject, id, convertDartClosureToJS(callback, 1)); | |
1241 | |
1242 /// Returns an id that can be passed to restoreEntry to regain access to a | |
1243 /// given file entry. Only the 500 most recently used entries are retained, | |
1244 /// where calls to retainEntry and restoreEntry count as use. If the app has | |
1245 /// the 'retainEntries' permission under 'fileSystem', entries are retained | |
1246 /// indefinitely. Otherwise, entries are retained only while the app is runnin
g | |
1247 /// and across restarts. | |
1248 String retainEntry(FileEntry fileEntry) => JS('String', '#.retainEntry(#)', th
is._jsObject, convertArgument(fileEntry)); | |
1249 | |
1250 API_file_system(this._jsObject) { | |
1251 } | |
1252 } | |
OLD | NEW |