Index: sdk/lib/html/dart2js/html_dart2js.dart |
diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart |
index 19fe16a160e2d165050d55d00ce7c15b5d470706..006268f2f3a496ac19de4afab741888a2ecba20e 100644 |
--- a/sdk/lib/html/dart2js/html_dart2js.dart |
+++ b/sdk/lib/html/dart2js/html_dart2js.dart |
@@ -25791,6 +25791,56 @@ class WheelEvent extends MouseEvent native "*WheelEvent" { |
@DomName('Window') |
class Window extends EventTarget implements WindowBase native "@*DOMWindow" { |
+ /** |
+ * Executes a [callback] after the immediate execution stack has completed. |
+ * |
+ * This differs from using Timer.run(callback) |
+ * because Timer will run in about 4-15 milliseconds, depending on browser, |
+ * depending on load. [setImmediate], in contrast, makes browser-specific |
+ * changes in behavior to attempt to run immediately after the current |
+ * frame unwinds, causing the future to complete after all processing has |
+ * completed for the current event, but before any subsequent events. |
+ */ |
+ void setImmediate(TimeoutHandler callback) { |
+ _addMicrotaskCallback(callback); |
+ } |
+ /** |
+ * Lookup a port by its [name]. Return null if no port is |
+ * registered under [name]. |
+ */ |
+ SendPortSync lookupPort(String name) { |
+ var port = |
+ json.parse(document.documentElement.attributes['dart-port:$name']); |
+ return _deserialize(port); |
+ } |
+ |
+ /** |
+ * Register a [port] on this window under the given [name]. This |
+ * port may be retrieved by any isolate (or JavaScript script) |
+ * running in this window. |
+ */ |
+ void registerPort(String name, var port) { |
+ var serialized = _serialize(port); |
+ document.documentElement.attributes['dart-port:$name'] = |
+ json.stringify(serialized); |
+ } |
+ |
+ /** |
+ * Returns a Future that completes just before the window is about to repaint |
+ * so the user can draw an animation frame |
+ * |
+ * If you need to later cancel this animation, use [requestAnimationFrame] |
+ * instead. |
+ * |
+ * Note: The code that runs when the future completes should call |
+ * [animationFrame] again for the animation to continue. |
+ */ |
+ Future<num> get animationFrame { |
+ var completer = new Completer<int>(); |
+ requestAnimationFrame(completer.complete); |
+ return completer.future; |
+ } |
+ |
Document get document => JS('Document', '#.document', this); |
WindowBase _open2(url, name) => JS('Window', '#.open(#,#)', this, url, name); |
@@ -25856,15 +25906,21 @@ class Window extends EventTarget implements WindowBase native "@*DOMWindow" { |
} |
/** |
- * Executes a [callback] after the immediate execution stack has completed. |
+ * Called to draw an animation frame and then request the window to repaint |
+ * after [callback] has finished (creating the animation). |
* |
- * This will cause the callback to be executed after all processing has |
- * completed for the current event, but before any subsequent events. |
+ * Use this method only if you need to later call [cancelAnimationFrame]. If |
+ * not, the preferred Dart idiom is to set animation frames by calling |
+ * [animationFrame], which returns a Future. |
+ * |
+ * Returns a non-zero valued integer to represent the request id for this |
+ * request. This value only needs to be saved if you intend to call |
+ * [cancelAnimationFrame] so you can specify the particular animation to |
+ * cancel. |
+ * |
+ * Note: The supplied [callback] needs to call [requestAnimationFrame] again |
+ * for the animation to continue. |
*/ |
- void setImmediate(TimeoutHandler callback) { |
- _addMicrotaskCallback(callback); |
- } |
- |
@DomName('DOMWindow.requestAnimationFrame') |
int requestAnimationFrame(RequestAnimationFrameCallback callback) { |
_ensureRequestAnimationFrame(); |
@@ -25923,25 +25979,6 @@ class Window extends EventTarget implements WindowBase native "@*DOMWindow" { |
'#.indexedDB || #.webkitIndexedDB || #.mozIndexedDB', |
this, this, this); |
- /** |
- * Lookup a port by its [name]. Return null if no port is |
- * registered under [name]. |
- */ |
- SendPortSync lookupPort(String name) { |
- var port = json.parse(document.documentElement.attributes['dart-port:$name']); |
- return _deserialize(port); |
- } |
- |
- /** |
- * Register a [port] on this window under the given [name]. This |
- * port may be retrieved by any isolate (or JavaScript script) |
- * running in this window. |
- */ |
- void registerPort(String name, var port) { |
- var serialized = _serialize(port); |
- document.documentElement.attributes['dart-port:$name'] = json.stringify(serialized); |
- } |
- |
@DomName('Window.console') |
Console get console => Console.safeConsole; |
@@ -26260,13 +26297,15 @@ class Window extends EventTarget implements WindowBase native "@*DOMWindow" { |
@DocsEditable |
void captureEvents() native; |
+ @JSName('clearInterval') |
@DomName('DOMWindow.clearInterval') |
@DocsEditable |
- void clearInterval(int handle) native; |
+ void _clearInterval(int handle) native; |
+ @JSName('clearTimeout') |
@DomName('DOMWindow.clearTimeout') |
@DocsEditable |
- void clearTimeout(int handle) native; |
+ void _clearTimeout(int handle) native; |
@DomName('DOMWindow.close') |
@DocsEditable |
@@ -26378,13 +26417,15 @@ class Window extends EventTarget implements WindowBase native "@*DOMWindow" { |
@DocsEditable |
void scrollTo(int x, int y) native; |
+ @JSName('setInterval') |
@DomName('DOMWindow.setInterval') |
@DocsEditable |
- int setInterval(TimeoutHandler handler, int timeout) native; |
+ int _setInterval(TimeoutHandler handler, int timeout) native; |
+ @JSName('setTimeout') |
@DomName('DOMWindow.setTimeout') |
@DocsEditable |
- int setTimeout(TimeoutHandler handler, int timeout) native; |
+ int _setTimeout(TimeoutHandler handler, int timeout) native; |
@DomName('DOMWindow.showModalDialog') |
@DocsEditable |
@@ -31381,11 +31422,11 @@ get _timerFactoryClosure => (int milliSeconds, void callback(Timer timer), bool |
var maker; |
var canceller; |
if (repeating) { |
- maker = window.setInterval; |
- canceller = window.clearInterval; |
+ maker = window._setInterval; |
+ canceller = window._clearInterval; |
} else { |
- maker = window.setTimeout; |
- canceller = window.clearTimeout; |
+ maker = window._setTimeout; |
+ canceller = window._clearTimeout; |
} |
Timer timer; |
final int id = maker(() { callback(timer); }, milliSeconds); |