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

Unified Diff: third_party/WebKit/LayoutTests/imported/web-platform-tests/web-animations/animatable/animate.html

Issue 1866333004: Import web-platform-tests@5a8700479d98852455bee6117558897867eb278a (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@wpt-sync
Patch Set: Add Failure option for two TestExpectations entries Created 4 years, 8 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:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/imported/web-platform-tests/web-animations/animatable/animate.html
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/web-animations/animatable/animate.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/web-animations/animatable/animate.html
new file mode 100644
index 0000000000000000000000000000000000000000..afc9221301d9f129aa8aac3ce81334b0488d0ce2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/web-animations/animatable/animate.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Animatable.animate tests</title>
+<link rel="help" href="http://w3c.github.io/web-animations/#dom-animatable-animate">
+<link rel="author" title="Brian Birtles" href="mailto:bbirtles@mozilla.com">
+<script src="../../../../resources/testharness.js"></script>
+<script src="../../../../resources/testharnessreport.js"></script>
+<script src="../testcommon.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+test(function(t) {
+ var div = createDiv(t);
+ var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
+ assert_class_string(anim, 'Animation', 'Returned object is an Animation');
+}, 'Element.animate() creates an Animation object');
+
+test(function(t) {
+ var div = createDiv(t);
+ var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
+ assert_class_string(anim.effect, 'KeyframeEffect',
+ 'Returned Animation has a KeyframeEffect');
+}, 'Element.animate() creates an Animation object with a KeyframeEffect');
+
+// Animatable.animate() passes its |frames| argument to the KeyframeEffect
+// constructor. As a result, detailed tests of the handling of that argument
+// are found in the tests for that constructor. Here we just check that the
+// different types of arguments are correctly passed along.
+
+test(function(t) {
+ var div = createDiv(t);
+ var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
+ assert_equals(anim.effect.getFrames().length, 2);
+ assert_equals(anim.effect.getFrames()[0].opacity, '0');
+ assert_equals(anim.effect.getFrames()[1].opacity, '1');
+}, 'Element.animate() accepts a property-indexed keyframe specification');
+
+test(function(t) {
+ var div = createDiv(t);
+ var anim = div.animate([ { opacity: 0 }, { opacity: 1 } ], 2000);
+ assert_equals(anim.effect.getFrames().length, 2);
+ assert_equals(anim.effect.getFrames()[0].opacity, '0');
+ assert_equals(anim.effect.getFrames()[1].opacity, '1');
+}, 'Element.animate() accepts a frame-indexed keyframe specification');
+
+test(function(t) {
+ var div = createDiv(t);
+ var anim = div.animate({ opacity: 0 }, 2000);
+ assert_equals(anim.effect.getFrames().length, 1);
+ assert_equals(anim.effect.getFrames()[0].opacity, '0');
+}, 'Element.animate() accepts a single-valued keyframe specification');
+
+// As with the |frames| argument, Animatable.animate() passes its |options|
+// argument to the KeyframeEffect constructor as well. As a result, detailed
+// tests of the handling of that argument are found in the tests for that
+// constructor. Here we just check that the different types of arguments are
+// correctly passed along.
+
+test(function(t) {
+ var div = createDiv(t);
+ var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
+ assert_equals(anim.effect.timing.duration, 2000);
+ // Also check that unspecified parameters receive their default values
+ assert_equals(anim.effect.timing.fill, 'auto');
+}, 'Element.animate() accepts a double as an options argument');
+
+test(function(t) {
+ var div = createDiv(t);
+ var anim = div.animate({ opacity: [ 0, 1 ] },
+ { duration: Infinity, fill: 'forwards' });
+ assert_equals(anim.effect.timing.duration, Infinity);
+ assert_equals(anim.effect.timing.fill, 'forwards');
+ // Also check that unspecified parameters receive their default values
+ assert_equals(anim.effect.timing.direction, 'normal');
+}, 'Element.animate() accepts a KeyframeAnimationOptions argument');
+
+test(function(t) {
+ var div = createDiv(t);
+ var anim = div.animate({ opacity: [ 0, 1 ] });
+ assert_equals(anim.effect.timing.duration, 'auto');
+}, 'Element.animate() accepts an absent options argument');
+
+test(function(t) {
+ var div = createDiv(t);
+ var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
+ assert_equals(anim.id, '');
+}, 'Element.animate() correctly sets the id attribute when no id is specified');
+
+test(function(t) {
+ var div = createDiv(t);
+ var anim = div.animate({ opacity: [ 0, 1 ] }, { id: 'test' });
+ assert_equals(anim.id, 'test');
+}, 'Element.animate() correctly sets the id attribute');
+
+test(function(t) {
+ var div = createDiv(t);
+ var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
+ assert_equals(anim.timeline, document.timeline);
+}, 'Element.animate() correctly sets the Animation\'s timeline');
+
+async_test(function(t) {
+ var iframe = document.createElement('iframe');
+ iframe.src = 'data:text/html;charset=utf-8,';
+ iframe.width = 10;
+ iframe.height = 10;
+
+ iframe.addEventListener('load', t.step_func(function() {
+ var div = createDiv(t, iframe.contentDocument);
+ var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
+ assert_equals(anim.timeline, iframe.contentDocument.timeline);
+ iframe.remove();
+ t.done();
+ }));
+
+ document.body.appendChild(iframe);
+}, 'Element.animate() correctly sets the Animation\'s timeline when ' +
+ 'triggered on an element in a different document');
+
+test(function(t) {
+ var div = createDiv(t);
+ var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
+ assert_equals(anim.playState, 'pending');
+}, 'Element.animate() calls play on the Animation');
+
+// Tests on CSSPseudoElement
+
+test(function(t) {
+ var pseudoTarget = createPseudo(t, 'before');
+ var anim = pseudoTarget.animate({ opacity: [ 0, 1 ] }, 2000);
+ assert_class_string(anim, 'Animation', 'The returned object is an Animation');
+}, 'CSSPseudoElement.animate() creates an Animation object');
+
+test(function(t) {
+ var pseudoTarget = createPseudo(t, 'before');
+ var anim = pseudoTarget.animate({ opacity: [ 0, 1 ] }, 2000);
+ assert_equals(anim.effect.target, pseudoTarget,
+ 'The returned Animation targets to the correct object');
+}, 'CSSPseudoElement.animate() creates an Animation object targeting ' +
+ 'to the correct CSSPseudoElement object');
+</script>
+</body>

Powered by Google App Engine
This is Rietveld 408576698