OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of $LIBRARYNAME; | 5 part of $LIBRARYNAME; |
6 | 6 |
7 @DocsEditable | 7 @DocsEditable |
8 $if DART2JS | 8 $if DART2JS |
9 $(ANNOTATIONS)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS native "Wind
ow,DOMWindow" { | 9 $(ANNOTATIONS)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS native "Wind
ow,DOMWindow" { |
10 $else | 10 $else |
11 $(ANNOTATIONS)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC { | 11 $(ANNOTATIONS)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC { |
12 $endif | 12 $endif |
13 | 13 |
14 /** | 14 /** |
15 * Executes a [callback] after the immediate execution stack has completed. | |
16 * | |
17 * This differs from using Timer.run(callback) | |
18 * because Timer will run in about 4-15 milliseconds, depending on browser, | |
19 * depending on load. [setImmediate], in contrast, makes browser-specific | |
20 * changes in behavior to attempt to run immediately after the current | |
21 * frame unwinds, causing the future to complete after all processing has | |
22 * completed for the current event, but before any subsequent events. | |
23 */ | |
24 void setImmediate(TimeoutHandler callback) { | |
25 _addMicrotaskCallback(callback); | |
26 } | |
27 /** | |
28 * Lookup a port by its [name]. Return null if no port is | 15 * Lookup a port by its [name]. Return null if no port is |
29 * registered under [name]. | 16 * registered under [name]. |
30 */ | 17 */ |
31 SendPortSync lookupPort(String name) { | 18 SendPortSync lookupPort(String name) { |
32 var portStr = document.documentElement.attributes['dart-port:$name']; | 19 var portStr = document.documentElement.attributes['dart-port:$name']; |
33 if (portStr == null) { | 20 if (portStr == null) { |
34 return null; | 21 return null; |
35 } | 22 } |
36 var port = JSON.decode(portStr); | 23 var port = JSON.decode(portStr); |
37 return _deserialize(port); | 24 return _deserialize(port); |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 @SupportedBrowser(SupportedBrowser.IE, '10.0') | 202 @SupportedBrowser(SupportedBrowser.IE, '10.0') |
216 @Experimental() | 203 @Experimental() |
217 IdbFactory get indexedDB => | 204 IdbFactory get indexedDB => |
218 JS('IdbFactory|Null', // If not supported, returns `null`. | 205 JS('IdbFactory|Null', // If not supported, returns `null`. |
219 '#.indexedDB || #.webkitIndexedDB || #.mozIndexedDB', | 206 '#.indexedDB || #.webkitIndexedDB || #.mozIndexedDB', |
220 this, this, this); | 207 this, this, this); |
221 | 208 |
222 @DomName('Window.console') | 209 @DomName('Window.console') |
223 Console get console => Console._safeConsole; | 210 Console get console => Console._safeConsole; |
224 | 211 |
225 /// Checks if _setImmediate is supported. | |
226 static bool get _supportsSetImmediate => | |
227 JS('bool', '!!(window.setImmediate)'); | |
228 | |
229 // Set immediate implementation for IE | |
230 void _setImmediate(void callback()) { | |
231 JS('void', '#.setImmediate(#)', this, convertDartClosureToJS(callback, 0)); | |
232 } | |
233 $else | 212 $else |
234 /// Checks if _setImmediate is supported. | |
235 static bool get _supportsSetImmediate => false; | |
236 | |
237 /// Dartium stub for IE's setImmediate. | |
238 void _setImmediate(void callback()) { | |
239 throw new UnsupportedError('setImmediate is not supported'); | |
240 } | |
241 | |
242 /** | 213 /** |
243 * Called to draw an animation frame and then request the window to repaint | 214 * Called to draw an animation frame and then request the window to repaint |
244 * after [callback] has finished (creating the animation). | 215 * after [callback] has finished (creating the animation). |
245 * | 216 * |
246 * Use this method only if you need to later call [cancelAnimationFrame]. If | 217 * Use this method only if you need to later call [cancelAnimationFrame]. If |
247 * not, the preferred Dart idiom is to set animation frames by calling | 218 * not, the preferred Dart idiom is to set animation frames by calling |
248 * [animationFrame], which returns a Future. | 219 * [animationFrame], which returns a Future. |
249 * | 220 * |
250 * Returns a non-zero valued integer to represent the request id for this | 221 * Returns a non-zero valued integer to represent the request id for this |
251 * request. This value only needs to be saved if you intend to call | 222 * request. This value only needs to be saved if you intend to call |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 return wrapped.returnValue; | 341 return wrapped.returnValue; |
371 }); | 342 }); |
372 | 343 |
373 return controller.stream; | 344 return controller.stream; |
374 } | 345 } |
375 | 346 |
376 String getEventType(EventTarget target) { | 347 String getEventType(EventTarget target) { |
377 return _eventType; | 348 return _eventType; |
378 } | 349 } |
379 } | 350 } |
OLD | NEW |