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

Unified Diff: third_party/WebKit/LayoutTests/imported/web-platform-tests/web-animations/animation-node/animation-node-remove.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/animation-node/animation-node-remove.html
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/web-animations/animation-node/animation-node-remove.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/web-animations/animation-node/animation-node-remove.html
new file mode 100644
index 0000000000000000000000000000000000000000..97f657e651951acf425c80678c165922c66b14f3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/web-animations/animation-node/animation-node-remove.html
@@ -0,0 +1,239 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>AnimationNode remove() method tests</title>
+<meta name="assert" content="Removes this animation node from its parent animation group or player">
+<link rel="help" href="http://w3c.github.io/web-animations/#dom-animationnode-remove">
+<link rel="help" href="http://w3c.github.io/web-animations/#remove-an-animation-node">
+<link rel="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
+<link rel="author" title="Aleksei Yu. Semenov" href="mailto:a.semenov@unipro.ru">
+<script src="../../../../resources/testharness.js"></script>
+<script src="../../../../resources/testharnessreport.js"></script>
+<script src="../testcommon.js"></script>
+<body>
+<div id="log"></div>
+<script>
+test(function() {
+ var nodes = [newAnimation(createDiv(this)), new AnimationGroup([]), new AnimationSequence([])];
+ nodes.forEach(function(node) {
+ node.remove();
+
+ assert_equals(node.parent, null, type(node) + ' node parent attribute should be null');
+ });
+}, 'AnimationNode.remove() does nothing for standalone node');
+
+test(function() {
+ var test = this;
+ var parents = [AnimationGroup, AnimationSequence];
+ parents.forEach(function(parentCtor) {
+ var nodes = [newAnimation(createDiv(test)), new AnimationGroup([]), new AnimationSequence([])];
+ nodes.forEach(function(node) {
+ var parent = new parentCtor([node]);
+ node.remove();
+
+ assert_array_equals(parent.children, [], type(node) +
+ ' node should be removed from the parent ' + parentCtor.name);
+ assert_equals(node.parent, null, type(node) +
+ ' node parent attribute should be updated');
+ });
+ });
+}, 'AnimationNode.remove() removes node from the parent animation group. ' +
+ 'Removed node is the only node in the tree');
+
+test(function() {
+ var test = this;
+ var parents = [AnimationGroup, AnimationSequence];
+ parents.forEach(function(parentCtor) {
+ var nodes = [newAnimation(createDiv(test)), new AnimationGroup([]), new AnimationSequence([])];
+ nodes.forEach(function(node1) {
+ var node2 = newAnimation(createDiv(test));
+ var parent = new parentCtor([node1, node2]);
+
+ node1.remove();
+
+ assert_array_equals(parent.children, [node2], type(node1) +
+ ' node should be removed from the parent ' + parentCtor.name);
+ assert_equals(parent.firstChild, node2, 'Parent ' + parentCtor.name +
+ ' firstChild attribute should be updated');
+ assert_equals(node1.parent, null, 'Removed ' + type(node1) +
+ ' node parent attribute should be updated');
+ assert_equals(node1.nextSibling, null, 'Removed ' + type(node1) +
+ ' node nextSibling attribute should be updated');
+ assert_equals(node2.previousSibling, null,
+ 'Remaining node previousSibling attribute should be updated');
+ });
+ });
+}, 'AnimationNode.remove() removes node from the parent animation group. ' +
+ 'Remove the first node in the group');
+
+test(function() {
+ var test = this;
+ var parents = [AnimationGroup, AnimationSequence];
+ parents.forEach(function(parentCtor) {
+ var nodes = [newAnimation(createDiv(test)), new AnimationGroup([]), new AnimationSequence([])];
+ nodes.forEach(function(node2) {
+ var node1 = newAnimation(createDiv(test));
+ var parent = new parentCtor([node1, node2]);
+
+ node2.remove();
+
+ assert_array_equals(parent.children, [node1], type(node2) +
+ ' node should be removed from the parent ' + parentCtor.name);
+ assert_equals(parent.lastChild, node1, 'Parent ' + parentCtor.name +
+ ' lastChild attribute should be updated');
+ assert_equals(node2.parent, null, 'Removed ' + type(node2) +
+ ' node parent attribute should be updated');
+ assert_equals(node1.nextSibling, null,
+ 'Remaining node nextSibling attribute should be updated');
+ assert_equals(node2.previousSibling, null, 'Removed ' + type(node2) +
+ ' node previousSibling attribute should be updated');
+ });
+ });
+}, 'AnimationNode.remove() removes node from the parent animation group. ' +
+ 'Remove the last node in the group');
+
+test(function() {
+ var test = this;
+ var parents = [AnimationGroup, AnimationSequence];
+ parents.forEach(function(parentCtor) {
+ var nodes = [newAnimation(createDiv(test)), new AnimationGroup([]), new AnimationSequence([])];
+ nodes.forEach(function(node2) {
+ var node1 = newAnimation(createDiv(test));
+ var node3 = newAnimation(createDiv(test));
+ var parent = new parentCtor([node1, node2, node3]);
+
+ node2.remove();
+
+ assert_array_equals(parent.children, [node1, node3], type(node2) +
+ ' node should be removed from the parent ' + parentCtor.name);
+ assert_equals(node2.parent, null, 'Removed ' + type(node2) +
+ ' node parent attribute should be updated');
+ assert_equals(node2.nextSibling, null, 'Removed ' + type(node2) +
+ ' node nextSibling attribute should be updated');
+ assert_equals(node2.previousSibling, null, 'Removed ' + type(node2) +
+ ' node previousSibling attribute should be updated');
+ assert_equals(node1.nextSibling, node3,
+ 'Remaining node nextSibling attribute should be updated');
+ assert_equals(node3.previousSibling, node1,
+ 'Remaining node previousSibling attribute should be updated');
+ });
+ });
+}, 'AnimationNode.remove() removes node from the parent animation group. ' +
+ 'Remove node from the middle of the group');
+
+test(function() {
+ var test = this;
+ var parents = [AnimationGroup, AnimationSequence];
+ parents.forEach(function(parentCtor) {
+ parents.forEach(function(nodeCtor) {
+ var node1 = newAnimation(createDiv(test));
+ var node2 = newAnimation(createDiv(test));
+ var node3 = newAnimation(createDiv(test));
+ var node4 = new nodeCtor([node1, node2]);
+ var node5 = newAnimation(createDiv(test));
+ var parent = new parentCtor([node3, node4, node5]);
+
+ node4.remove();
+
+ assert_array_equals(node4.children, [node1, node2], 'Removed ' +
+ type(node4) + ' node children should not be changed');
+ assert_array_equals(parent.children, [node3, node5], type(node4) +
+ ' node should be removed from the parent ' + parentCtor.name);
+ assert_equals(node4.parent, null, 'Removed ' + type(node2) +
+ ' node parent attribute should be updated');
+ assert_equals(node4.nextSibling, null, 'Removed ' + type(node2) +
+ ' node nextSibling attribute should be updated');
+ assert_equals(node4.previousSibling, null, 'Removed ' + type(node2) +
+ ' node previousSibling attribute should be updated');
+ assert_equals(node3.nextSibling, node5,
+ 'Remaining node nextSibling attribute should be updated');
+ assert_equals(node5.previousSibling, node3,
+ 'Remaining node previousSibling attribute should be updated');
+ });
+ });
+}, 'Test removing a node that has children');
+
+test(function() {
+ var nodes = [newAnimation(createDiv(this)), new AnimationGroup([]), new AnimationSequence([])];
+ nodes.forEach(function(node) {
+ var player = document.timeline.play(node);
+ node.remove();
+
+ assert_equals(player.source, null, type(node) +
+ ' node should be disassociated from the player');
+ });
+}, 'AnimationNode.remove() disassociates the node from player, ' +
+ 'if node is directly associated with a player');
+
+test(function() {
+ var test = this;
+ var parents = [AnimationGroup, AnimationSequence];
+ parents.forEach(function(parentCtor) {
+ var nodes = [newAnimation(createDiv(test)), new AnimationGroup([]), new AnimationSequence([])];
+ nodes.forEach(function(node2) {
+ var node1 = newAnimation(createDiv(test));
+ var node3 = newAnimation(createDiv(test));
+ var parent = new parentCtor([node1, node2, node3]);
+ var player = document.timeline.play(parent);
+
+ node2.remove();
+
+ assert_equals(player.source, parent, type(node2) +
+ ' parent node should remain associated with the player');
+ });
+ });
+}, 'AnimationNode.remove() keeps parent direct association with the player');
+
+test(function() {
+ var test = this;
+ var parents = [AnimationGroup, AnimationSequence];
+ parents.forEach(function(parentCtor) {
+ parents.forEach(function(nodeCtor) {
+ var node1 = newAnimation(createDiv(test));
+ var node2 = newAnimation(createDiv(test));
+ var node3 = newAnimation(createDiv(test));
+ var node4 = newAnimation(createDiv(test));
+ var node5 = new parentCtor([node4]);
+ var group1 = new AnimationGroup([node3, node5]);
+ var node6 = newAnimation(createDiv(test));
+ var node7 = new parentCtor([node6]);
+ var node8 = newAnimation(createDiv(test));
+ var sequence1 = new AnimationSequence([node7,node8]);
+ var node9 = new nodeCtor([node1, group1, node2, sequence1]);
+ var node10 = newAnimation(createDiv(test));
+ var parent = new parentCtor([node9, node10]);
+
+ node9.remove();
+
+ assert_equals(node9.parent, null, 'Removed ' + type(node9) +
+ ' node parent attribute should be updated');
+ assert_array_equals(node9.children, [node1, group1, node2, sequence1],
+ 'Removed ' + type(node9) + ' node children should not be changed');
+ for (var i = 0; i < node9.children.length; i++) {
+ assert_equals(node9.children[i].parent, node9, 'Removed ' + type(node9) +
+ ' node children parent attribute should not be changed for child ' + i);
+ }
+ assert_array_equals(group1.children, [node3, node5],
+ 'Removed ' + type(node9) + ' node grand children should not be changed');
+ for (var i = 0; i < group1.children.length; i++) {
+ assert_equals(group1.children[i].parent, group1, 'Removed ' + type(node9) +
+ ' node grand children parent attribute should not be changed for child ' + i);
+ }
+ assert_array_equals(sequence1.children, [node7,node8],
+ 'Removed ' + type(node9) + ' node grand children should not be changed');
+ for (var i = 0; i < sequence1.children.length; i++) {
+ assert_equals(sequence1.children[i].parent, sequence1, 'Removed ' + type(node9) +
+ ' node grand children parent attribute should not be changed for child ' + i);
+ }
+ assert_array_equals(node5.children, [node4],
+ 'Removed ' + type(node9) + ' node grand children should not be changed');
+ assert_equals(node4.parent, node5, 'Removed ' + type(node9) +
+ ' node grand children parent attribute should not be changed');
+ assert_array_equals(node7.children, [node6],
+ 'Removed ' + type(node9) + ' node grand children should not be changed');
+ assert_equals(node6.parent, node7, 'Removed ' + type(node9) +
+ ' node grand children parent attribute should not be changed');
+ });
+ });
+}, 'AnimationNode.remove() on the root of a non-trivial tree does not change child structure');
+</script>
+</body>

Powered by Google App Engine
This is Rietveld 408576698