123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- <!DOCTYPE HTML>
- <html>
- <!--
- https://bugzilla.mozilla.org/show_bug.cgi?id=534804
- -->
- <head>
- <title>Test for Bug 534804</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <style type="text/css" id="styleone"> </style>
- <style type="text/css" id="styletwo"> </style>
- </head>
- <body>
- <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=534804">Mozilla Bug 534804</a>
- <p id="display"></p>
- <pre id="test">
- <script type="application/javascript">
- /** Test for Bug 534804 **/
- var styleone = document.getElementById("styleone");
- var styletwo = document.getElementById("styletwo");
- var display = document.getElementById("display");
- run1();
- styletwo.firstChild.data = "#e > span:nth-child(2n+1) { color: green }";
- run1();
- styletwo.firstChild.data = "#e > span:first-child { color: green }";
- run1();
- styletwo.firstChild.data = "#e > span:nth-last-child(2n+1) { color: green }";
- run1();
- styletwo.firstChild.data = "#e > span:last-child { color: green }";
- run1();
- function run1()
- {
- function identity(bool) { return bool; }
- function inverse(bool) { return !bool; }
- function always_false(bool) { return false; }
- run2("#e:empty + span", identity, always_false);
- run2("#e:empty ~ span", identity, identity);
- run2("#e:not(:empty) + span", inverse, always_false);
- run2("#e:not(:empty) ~ span", inverse, inverse);
- }
- function run2(sel, next_sibling_rule, later_sibling_rule)
- {
- styleone.firstChild.data = sel + " { text-decoration: underline }";
- // Rebuild the subtree every time.
- var span1 = document.createElement("span");
- span1.id = "e";
- var span2 = document.createElement("span");
- var span3 = document.createElement("span");
- display.appendChild(span1);
- display.appendChild(span2);
- display.appendChild(span3);
- function td(e) { return getComputedStyle(e, "").textDecoration; }
- function check(desc, isempty) {
- is(td(span2), next_sibling_rule(isempty) ? "underline" : "none",
- "match of next sibling in state " + desc);
- is(td(span3), later_sibling_rule(isempty) ? "underline" : "none",
- "match of next sibling in state " + desc);
- }
- check("initially empty", true);
- var kid = document.createElement("span");
- span1.appendChild(kid);
- check("after append", false);
- span1.removeChild(kid);
- check("after remove", true);
- span1.appendChild(document.createTextNode(""));
- span1.appendChild(document.createComment("a comment"));
- span1.appendChild(document.createTextNode(""));
- check("after append of insignificant children", true);
- span1.insertBefore(kid, span1.childNodes[1]);
- check("after insert", false);
- display.removeChild(span1);
- display.removeChild(span2);
- display.removeChild(span3);
- }
- </script>
- </pre>
- </body>
- </html>
|