86 lines
3.3 KiB
HTML
86 lines
3.3 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script>
|
|
function load() {
|
|
window.animation = document.body.animate([]);
|
|
|
|
runTest();
|
|
}
|
|
|
|
function test()
|
|
{
|
|
let suite = InspectorTest.createAsyncSuite("Animation.targetChanged");
|
|
|
|
suite.addTestCase({
|
|
name: "Animation.targetChanged.NewTarget",
|
|
description: "Should return a valid object for the given animation identifier.",
|
|
async test() {
|
|
let animations = Array.from(WI.animationManager.animationCollection);
|
|
InspectorTest.assert(animations.length === 1, "There should only be one animation.");
|
|
|
|
let animation = animations[0];
|
|
if (!animation) {
|
|
throw `Missing animation.`;
|
|
return;
|
|
}
|
|
|
|
InspectorTest.assert(animation.animationType === WI.Animation.Type.WebAnimation, "Animation should be a web animation.");
|
|
|
|
let [oldTarget] = await promisify((callback) => { animation.requestEffectTarget(callback); });
|
|
InspectorTest.expectThat(oldTarget instanceof WI.DOMNode, "Animation should have a target.");
|
|
|
|
InspectorTest.log("Changing target...\n");
|
|
await Promise.all([
|
|
animation.awaitEvent(WI.Animation.Event.TargetChanged),
|
|
InspectorTest.evaluateInPage(`window.animation.effect.target = document.createElement("div")`),
|
|
]);
|
|
|
|
let [newTarget] = await promisify((callback) => { animation.requestEffectTarget(callback); });
|
|
InspectorTest.expectThat(newTarget instanceof WI.DOMNode, "Animation should have a target.");
|
|
|
|
InspectorTest.expectNotEqual(newTarget, oldTarget, "Animation effect should have changed.");
|
|
},
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "Animation.targetChanged.NullTarget",
|
|
description: "Should return a valid object for the given animation identifier.",
|
|
async test() {
|
|
let animations = Array.from(WI.animationManager.animationCollection);
|
|
InspectorTest.assert(animations.length === 1, "There should only be one animation.");
|
|
|
|
let animation = animations[0];
|
|
if (!animation) {
|
|
throw `Missing animation.`;
|
|
return;
|
|
}
|
|
|
|
InspectorTest.assert(animation.animationType === WI.Animation.Type.WebAnimation, "Animation should be a web animation.");
|
|
|
|
let [oldTarget] = await promisify((callback) => { animation.requestEffectTarget(callback); });
|
|
InspectorTest.expectThat(oldTarget instanceof WI.DOMNode, "Animation should have a target.");
|
|
|
|
InspectorTest.log("Changing target...\n");
|
|
await Promise.all([
|
|
animation.awaitEvent(WI.Animation.Event.TargetChanged),
|
|
InspectorTest.evaluateInPage(`window.animation.effect.target = null`),
|
|
]);
|
|
|
|
let [newTarget] = await promisify((callback) => { animation.requestEffectTarget(callback); });
|
|
InspectorTest.expectNull(newTarget, "Animation should not have a target.");
|
|
|
|
InspectorTest.expectNotEqual(newTarget, oldTarget, "Animation effect should have changed.");
|
|
},
|
|
});
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="load()">
|
|
<p>Tests for the Animation.targetChanged event.</p>
|
|
</body>
|
|
</html>
|