summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/css-transitions/transitioncancel-001.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/css/css-transitions/transitioncancel-001.html')
-rw-r--r--testing/web-platform/tests/css/css-transitions/transitioncancel-001.html65
1 files changed, 65 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-transitions/transitioncancel-001.html b/testing/web-platform/tests/css/css-transitions/transitioncancel-001.html
new file mode 100644
index 0000000000..6546195259
--- /dev/null
+++ b/testing/web-platform/tests/css/css-transitions/transitioncancel-001.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>CSS Transitions Test: display:none causes transitioncancel</title>
+ <meta name="timeout" content="long">
+ <link rel="author" title="Chris Rebert" href="http://chrisrebert.com">
+ <link rel="help" href="https://drafts.csswg.org/css-transitions-2/#event-dispatch">
+ <link rel="help" href="https://lists.w3.org/Archives/Public/www-style/2015Apr/0405.html" data-section-title="AnimationEnd events and display: none">
+ <meta name="flags" content="dom">
+ <meta name="assert" content="Making an element display:none; while it has a transition in progress should fire a transitioncancel event.">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <style>
+#a {
+ height: 100px;
+ width: 100px;
+ transition: background-color 2s;
+}
+.red {
+ background-color: red;
+}
+.blue {
+ background-color: blue;
+}
+.hidden {
+ display: none !important;
+}
+ </style>
+ <script>
+async_test(function (t) {
+ window.addEventListener('load', function () {
+ var div = document.getElementById('a');
+ var canceled = false;
+ var after = false;
+ div.addEventListener('transitioncancel', function () {
+ canceled = true;
+ t.step(function () {
+ assert_true(true, "transitioncancel event did fire");
+ });
+ }, false);
+
+ div.className = 'blue';// initiate transition
+ window.setTimeout(function () {
+ t.step(function () {
+ assert_false(canceled, "transitioncancel did not fire before hiding callback ran");
+ assert_false(after, "hiding callback ran before the end of the test");
+ });
+ div.className += ' hidden';// force display:none during the transition
+ }, 1000);// halfway into the transition
+ window.setTimeout(function () {
+ after = true;
+ t.step(function () {
+ assert_true(canceled, "transitioncancel event did fire");
+ t.done();
+ });
+ }, 2100);// after the transition would have ended
+ }, false);
+}, "transitioncancel should be fired if the element is made display:none during the transition");
+ </script>
+</head>
+<body>
+ <div id="a" class="red"></div>
+</body>
+</html>