67 lines
2.1 KiB
JavaScript
67 lines
2.1 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
// Check that the AnimationsActor can pause/play a given list of animations at once.
|
|
|
|
// List of selectors that match "all" animated nodes in the test page.
|
|
// This list misses a bunch of animated nodes on purpose. Only the ones that
|
|
// have infinite animations are listed. This is done to avoid intermittents
|
|
// caused when finite animations are already done playing by the time the test
|
|
// runs.
|
|
const ALL_ANIMATED_NODES = [
|
|
".simple-animation",
|
|
".multiple-animations",
|
|
".delayed-animation",
|
|
];
|
|
|
|
add_task(async function () {
|
|
const { target, walker, animations } = await initAnimationsFrontForUrl(
|
|
MAIN_DOMAIN + "animation.html"
|
|
);
|
|
|
|
info("Pause all animations in the test document");
|
|
await toggleAndCheckStates(walker, animations, ALL_ANIMATED_NODES, "paused");
|
|
|
|
info("Play all animations in the test document");
|
|
await toggleAndCheckStates(walker, animations, ALL_ANIMATED_NODES, "running");
|
|
|
|
await target.destroy();
|
|
gBrowser.removeCurrentTab();
|
|
});
|
|
|
|
async function toggleAndCheckStates(walker, animations, selectors, playState) {
|
|
info(
|
|
"Checking the playState of all the nodes that have infinite running " +
|
|
"animations"
|
|
);
|
|
|
|
for (const selector of selectors) {
|
|
const players = await getPlayersFor(walker, animations, selector);
|
|
|
|
if (playState === "paused") {
|
|
await animations.pauseSome(players);
|
|
} else {
|
|
await animations.playSome(players);
|
|
}
|
|
|
|
info("Getting the AnimationPlayerFront for node " + selector);
|
|
const player = players[0];
|
|
await checkPlayState(player, selector, playState);
|
|
}
|
|
}
|
|
|
|
async function getPlayersFor(walker, animations, selector) {
|
|
const node = await walker.querySelector(walker.rootNode, selector);
|
|
return animations.getAnimationPlayersForNode(node);
|
|
}
|
|
|
|
async function checkPlayState(player, selector, expectedState) {
|
|
const state = await player.getCurrentState();
|
|
is(
|
|
state.playState,
|
|
expectedState,
|
|
"The playState of node " + selector + " is " + expectedState
|
|
);
|
|
}
|