Files
tubestation/dom/smil/test/test_smilConditionalProcessing.html
violet e68793d7f8 Bug 1552345 - Should not assume en is always an accepted language r=birtles
The test assumes "en" is always an accepted language, it's not correct.
This assumption isn't what is being tested here anyway.
We should set language preference at the beginning before testing to avoid
irrelevant failure.

Differential Revision: https://phabricator.services.mozilla.com/D32628
2019-05-27 00:17:13 +00:00

94 lines
3.0 KiB
HTML

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Test conditional processing tests applied to animations</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<p id="display"></p>
<div id="content">
<svg id="svg" width="120px" height="120px"
onload="this.pauseAnimations()">
<circle r="50" fill="blue" id="circle">
<set attributeName="cy" to="100" begin="0s" dur="100s" id="a"/>
<set attributeName="cx" to="100" begin="a.end" dur="100s" id="b"/>
</circle>
</svg>
</div>
<pre id="test">
<script class="testbody" type="text/javascript">
SimpleTest.waitForExplicitFinish();
function run() {
SpecialPowers.pushPrefEnv({"set": [["intl.accept_languages", "en"]]}, runInternal);
}
function runInternal() {
var svg = document.getElementById("svg"),
a = document.getElementById("a"),
b = document.getElementById("b"),
circle = document.getElementById("circle");
// Check initial state
svg.setCurrentTime(50);
is(a.getStartTime(), 0, "a has resolved start time at start");
is(circle.cy.animVal.value, 100, "a is in effect at start");
is(b.getStartTime(), 100, "b has resolved start time at start");
// Add a failing conditional processing test
a.setAttribute("systemLanguage", "no-such-language");
ok(hasUnresolvedStartTime(a),
"a has unresolved start time with failing conditional processing test");
is(circle.cy.animVal.value, 0,
"a is not in effect with failing conditional processing test");
ok(hasUnresolvedStartTime(b),
"b has unresolved start time with failing conditional processing test on a");
// Remove failing conditional processing test
a.removeAttribute("systemLanguage");
is(a.getStartTime(), 0, "a has resolved start time after removing test");
is(circle.cy.animVal.value, 100, "a is in effect after removing test");
is(b.getStartTime(), 100, "b has resolved start time after removing test on a");
// Add another failing conditional processing test
// According to the spec, if a null string or empty string value is set for
// the 'systemLanguage' attribute, the attribute returns "false".
a.setAttribute("systemLanguage", "");
// Fast forward until |a| would have finished
var endEventsReceived = 0;
a.addEventListener("endEvent", function() { endEventsReceived++; });
svg.setCurrentTime(150);
is(endEventsReceived, 0,
"a does not dispatch end events with failing condition processing test");
is(circle.cx.animVal.value, 0,
"b is not in effect with failing conditional processing test on a");
// Make test pass
a.setAttribute("systemLanguage", "en");
is(circle.cx.animVal.value, 100,
"b is in effect with passing conditional processing test on a");
SimpleTest.finish();
}
function hasUnresolvedStartTime(anim) {
// getStartTime throws INVALID_STATE_ERR when there is no current interval
try {
anim.getStartTime();
return false;
} catch (e) {
return true;
}
}
window.addEventListener("load", run);
</script>
</pre>
</body>
</html>