<!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>