Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(433)

Unified Diff: sdk/lib/html/dart2js/html_dart2js.dart

Side-by-side diff isn't available for this file because of its large size.
Issue 12254046: Reapply setTimeout change. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
Download patch
« no previous file with comments | « samples/third_party/dromaeo/tests/dom-traverse-html.dart ('k') | sdk/lib/html/dartium/html_dartium.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 257d672c0d02bb5513f5c2b564ed28f36c125fff..8688fea5cc4e6228f00bc24856fbb1ff6f87625a 100644
--- a/sdk/lib/html/dart2js/html_dart2js.dart
+++ b/sdk/lib/html/dart2js/html_dart2js.dart
@@ -25826,6 +25826,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);
@@ -25891,15 +25941,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();
@@ -25958,25 +26014,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;
@@ -26295,13 +26332,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
@@ -26413,13 +26452,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
@@ -31416,11 +31457,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);
« no previous file with comments | « samples/third_party/dromaeo/tests/dom-traverse-html.dart ('k') | sdk/lib/html/dartium/html_dartium.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698