<!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/#dom-transitionevent-transitioncancel">
    <link rel="help" href="https://lists.w3.org/Archives/Public/www-style/2015Apr/0405.html" title="[CSSWG] Minutes Telecon 2015-04-29" 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>
