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 8e2976493468388a1121fe8aad378c759d571485..abc74dfc210fb3993c0bf457e5647dec88fe9ae7 100644 |
--- a/sdk/lib/html/dart2js/html_dart2js.dart |
+++ b/sdk/lib/html/dart2js/html_dart2js.dart |
@@ -385,6 +385,9 @@ class AnimationPlayer extends EventTarget { |
// To suppress missing implicit constructor warnings. |
factory AnimationPlayer._() { throw new UnsupportedError("Not supported"); } |
+ /// Checks if this type is supported on the current platform. |
+ static bool get supported => JS('bool', '!!(document.body.animate)'); |
+ |
@DomName('AnimationPlayer.currentTime') |
@DocsEditable() |
@Experimental() // untriaged |
@@ -11198,6 +11201,55 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, |
void leftView() {} |
/** |
+ * Creates a new AnimationEffect object whose target element is the object |
+ * on which the method is called, and calls the play() method of the |
+ * AnimationTimeline object of the document timeline of the node document |
+ * of the element, passing the newly created AnimationEffect as the argument |
+ * to the method. Returns an AnimationPlayer for the effect. |
+ * |
+ * Examples |
+ * |
+ * var animation = elem.animate([{"opacity": 75}, {"opacity": 0}], 200); |
+ * |
+ * var animation = elem.animate([ |
+ * {"transform": "translate(100px, -100%)"}, |
+ * {"transform" : "translate(400px, 500px)"} |
+ * ], 1500); |
+ * |
+ * The [frames] parameter is an Iterable<Map>, where the |
+ * map entries specify CSS animation effects. The |
+ * [timing] paramter can be a double, representing the number of milliseconds |
+ * for the transition, or a Map with fields corresponding to those |
+ * of the [Timing] object. |
+ * |
+ * This is not yet supported in Dartium. |
+ **/ |
+// TODO(alanknight): Correct above comment once it works in Dartium. |
+ @Experimental |
+ @SupportedBrowser(SupportedBrowser.CHROME, '36') |
+ AnimationPlayer animate(Iterable<Map<String, dynamic>> frames, [timing]) { |
+ if (frames is! Iterable || !(frames.every((x) => x is Map))) { |
+ throw new ArgumentError("The frames parameter should be a List of Maps " |
+ "with frame information"); |
+ } |
+ var convertedFrames = frames; |
+ if (convertedFrames is Iterable) { |
+ convertedFrames = frames.map(convertDartToNative_Dictionary).toList(); |
+ } |
+ var convertedTiming = timing; |
+ if (convertedTiming is Map) { |
+ convertedTiming = convertDartToNative_Dictionary(convertedTiming); |
+ } |
+ return convertedTiming == null |
+ ? _animate(convertedFrames) |
+ : _animate(convertedFrames, convertedTiming); |
+ } |
+ |
+ @DomName('Element.animate') |
+ @JSName('animate') |
+ @Experimental() // untriaged |
+ AnimationPlayer _animate(Object effect, [timing]) native; |
+ /** |
* Called by the DOM whenever an attribute on this has been changed. |
*/ |
void attributeChanged(String name, String oldValue, String newValue) {} |
@@ -12673,11 +12725,6 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, |
@DocsEditable() |
final String tagName; |
- @DomName('Element.animate') |
- @DocsEditable() |
- @Experimental() // untriaged |
- AnimationPlayer animate(Object effect, [Object timing]) native; |
- |
@DomName('Element.blur') |
@DocsEditable() |
void blur() native; |