blob: f9bd0f976a57c9580a83d1755beb8002138a1f1e [file] [log] [blame]
<!DOCTYPE html>
<title>Test that newly created transitions do not run while we are suspended</title>
<style>
#box {
position: relative;
left: 0px;
height: 50px;
width: 50px;
background-color: blue;
}
</style>
<script>
var box;
let transitionAllowedToRun = false;
function suspend()
{
if (window.internals)
internals.suspendAnimations();
}
function resume()
{
if (window.internals)
internals.resumeAnimations();
}
function transitionEnded(event)
{
if (transitionAllowedToRun)
log("PASS: Transition ended on element with id: " + event.target.id);
else
log("FAIL: Transition ended on element with id: " + event.target.id);
if (window.testRunner)
testRunner.notifyDone();
}
function suspendAndCreate()
{
log("*** Suspending Animations/Transitions");
suspend();
setTimeout(function() {
if (window.internals)
log("Transitions should be suspended: " + (window.internals.animationsAreSuspended() ? "PASS" : "FAIL"));
log("*** Creating the box.")
box = document.createElement("div");
box.id = "box";
document.addEventListener("webkitTransitionEnd", transitionEnded, false);
document.body.insertBefore(box, document.querySelector("#results"));
setTimeout(function() {
log("*** Adding transition property and setting left to 100px. We should NOT see transition events.")
box.style.webkitTransitionDuration = "100ms";
box.style.left = "100px";
setTimeout(resumeAnimations, 200);
}, 100);
}, 100);
}
function resumeAnimations()
{
log("*** Resuming Animations/Transitions");
transitionAllowedToRun = true;
resume();
if (window.internals)
log("Transitions should not be suspended: " + (window.internals.animationsAreSuspended() ? "FAIL" : "PASS"));
}
function startTest()
{
log("*** Starting test.")
if (window.internals)
log("Transitions should not be suspended: " + (window.internals.animationsAreSuspended() ? "FAIL" : "PASS"));
suspendAndCreate();
}
function log(message)
{
var results = document.getElementById("results");
results.innerHTML = results.innerHTML + message + "<br>";
}
if (window.testRunner) {
testRunner.waitUntilDone();
testRunner.dumpAsText();
}
window.addEventListener("load", startTest, false);
</script>
<p>This test creates a box, adds a transition, then sets the left property. It will only have reproducible output when run in the test system</p>
<div id="results">
</div>