<script src="resources/dump-list.js"></script>
<script>

function finishTest()
{
    document.getElementById("removeMyValue").removeAttribute("value");
    document.getElementById("changeMyValue").setAttribute("value", "-5");
    filterListsWithReplacement(document.querySelectorAll("ol"));
    if (window.testRunner)
        testRunner.notifyDone();
}

function init()
{
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }
    setTimeout(finishTest, 0);
}

</script>

<body onload="init()">
<ol>
    <li value="4" id="removeMyValue">The list marker should show 1 because this item had a value of 4 but it was removed.</li>
    <li value="-1">The list marker should show -1 (negative values are allowed).</li>
    <li>The list marker should show 0.</li>
    <li value="invalid">The list marker should show 1 (invalid values are ignored).</li>
    <li value="2" id="changeMyValue">The list marker should show -5 (updated programmatically).</li>

    <!-- For the following styles the values are out-of-range, and should fall-back to decimal -->
    <li value="-1" style="list-style-type: hebrew;">The list marker should fall back to decimal -1 (hebrew: 1-infinite).</li>
    <li value="0" style="list-style-type: simple-upper-roman;">The list marker should fall back to decimal 0 (simple-upper-roman: 1-4999).</li>
    <li value="0" style="list-style-type: simple-lower-roman;">The list marker should fall back to decimal 0 (simple-lower-roman: 1-4999).</li>
    <li value="0" style="list-style-type: upper-roman;">The list marker should fall back to decimal 0 (upper-roman: 1-4999).</li>
    <li value="0" style="list-style-type: lower-roman;">The list marker should fall back to decimal 0 (lower-roman: 1-4999).</li>
    <li value="0" style="list-style-type: lower-armenian;">The list marker should fall back to decimal 0 (lower-armenian: 1-9999).</li>
    <li value="0" style="list-style-type: upper-armenian;">The list marker should fall back to decimal 0 (upper-armenian: 1-9999).</li>
    <li value="0" style="list-style-type: armenian;">The list marker should fall back to decimal 0 (armenian: 1-9999).</li>
    <li value="0" style="list-style-type: georgian;">The list marker should fall back to decimal 0 (georgian: 1-19999).</li>
    <li value="0" style="list-style-type: ancient-tamil;">The list marker should fall back to decimal 0 (ancient-tamil: 1-9999).</li>
    <!-- FIXME: We don't currently support this list-style-type -> fall back to decimal -->
    <li value="-1" style="list-style-type: japanese-informal;">The list marker should fall back to cjk-decimal -1 (japanese-informal: 0-9999).</li>
    <!-- FIXME: We don't currently support this list-style-type -> fall back to decimal -->
    <li value="-1" style="list-style-type: japanese-formal;">The list marker should fall back to cjk-decimal -1 (japanese-formal: 0-9999).</li>
    <li value="-1" style="list-style-type: korean-hangul-formal;">The list marker should fall back to decimal -1 (korean-hangul-formal: 0-9999).</li>
    <li value="-1" style="list-style-type: korean-hanja-informal;">The list marker should fall back to decimal -1 (korean-hanja-informal: 0-9999).</li>
    <li value="-1" style="list-style-type: korean-hanja-formal;">The list marker should fall back to decimal -1 (korean-hanja-formal: 0-9999).</li>
    <li value="0" style="list-style-type: greek;">The list marker should fall back to decimal 0 (greek: 1-999).</li>
</ol>
</body>
