diff options
Diffstat (limited to 'testing/web-platform/tests/custom-elements/reactions/Animation.html')
-rw-r--r-- | testing/web-platform/tests/custom-elements/reactions/Animation.html | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/testing/web-platform/tests/custom-elements/reactions/Animation.html b/testing/web-platform/tests/custom-elements/reactions/Animation.html new file mode 100644 index 0000000000..47eff97497 --- /dev/null +++ b/testing/web-platform/tests/custom-elements/reactions/Animation.html @@ -0,0 +1,66 @@ +<!DOCTYPE html> +<html> +<head> +<title>Custom Elements: CEReactions on Element interface</title> +<meta name="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org"> +<meta name="assert" content="commitStyles of Animation interface must have CEReactions"> +<meta name="help" content="https://dom.spec.whatwg.org/#element"> +<meta name="help" content="https://w3c.github.io/DOM-Parsing/"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/custom-elements-helpers.js"></script> +<script src="./resources/reactions.js"></script> +</head> +<body> +<div id="log"></div> +<script> + +test(function () { + const element = define_new_custom_element(['style']); + const instance = document.createElement(element.name); + document.body.appendChild(instance); + assert_array_equals(element.takeLog().types(), ['constructed', 'connected']); + + const animation = instance.animate([{'borderColor': 'rgb(0, 0, 255)'}]); + animation.commitStyles(); + + const logEntries = element.takeLog(); + assert_array_equals(logEntries.types(), ['attributeChanged']); + assert_equals(logEntries.last().name, 'style'); + assert_equals(logEntries.last().namespace, null); +}, 'Animation.animate must enqueue an attributeChanged reaction when it adds the observed style attribute'); + +test(function () { + const element = define_new_custom_element(['style']); + const instance = document.createElement(element.name); + document.body.appendChild(instance); + + let animation = instance.animate([{'borderColor': 'rgb(0, 0, 255)'}]); + animation.commitStyles(); + + assert_array_equals(element.takeLog().types(), ['constructed', 'connected', 'attributeChanged']); + + animation = instance.animate([{'borderColor': 'rgb(0, 255, 0)'}]); + animation.commitStyles(); + + const logEntries = element.takeLog(); + assert_array_equals(logEntries.types(), ['attributeChanged']); + assert_equals(logEntries.last().name, 'style'); + assert_equals(logEntries.last().namespace, null); +}, 'Animation.animate must enqueue an attributeChanged reaction when it mutates the observed style attribute'); + +test(function () { + const element = define_new_custom_element([]); + const instance = document.createElement(element.name); + document.body.appendChild(instance); + assert_array_equals(element.takeLog().types(), ['constructed', 'connected']); + + const animation = instance.animate([{'borderColor': 'rgb(0, 0, 255)'}]); + animation.commitStyles(); + + assert_array_equals(element.takeLog().types(), []); +}, 'Animation.animate must not enqueue an attributeChanged reaction when it mutates the style attribute but the style attribute is not observed'); + +</script> +</body> +</html> |