2 <script src="../../../resources/js-test.js"></script>
4 .scroller::-webkit-scrollbar {
18 .t1 .scroller::-webkit-scrollbar,
19 .t2 + .scroller::-webkit-scrollbar,
20 .t3 .scroller::-webkit-scrollbar-button,
21 .t4 + .scroller::-webkit-scrollbar-button,
22 .t5 .scroller::-webkit-scrollbar-corner,
23 .t6 + .scroller::-webkit-scrollbar-corner,
24 .t7 .scroller::-webkit-scrollbar-thumb,
25 .t8 + .scroller::-webkit-scrollbar-thumb,
26 .t9 .scroller::-webkit-scrollbar-track,
27 .t10 + .scroller::-webkit-scrollbar-track,
28 .t11 .scroller::-webkit-scrollbar-track-piece,
29 .t12 + .scroller::-webkit-scrollbar-track-piece,
30 .t13 .scroller::-webkit-resizer,
31 .t14 + .scroller::-webkit-resizer {
32 background-color: green;
35 .t13 .scroller, .t14 + .scroller {
40 <div id="scrollerParent">
42 <div id="scroller1" class="scroller">
55 <div id="scrollerSibling"></div>
56 <div id="scroller2" class="scroller">
68 description("Style invalidation for scrollbar pseudo elements.");
70 var transparent = "rgba(0, 0, 0, 0)";
71 var green = "rgb(0, 128, 0)";
73 function testScrollbarPseudo(pseudoElm, scroller, classElement, testClass, expectedCount) {
75 var computedString = "getComputedStyle(" + scroller + ", '" + pseudoElm + "').backgroundColor";
77 shouldBe(computedString, "transparent");
79 document.body.offsetTop; // force recalc
80 classElement.className = testClass;
83 shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "" + expectedCount);
85 shouldBe(computedString, "green");
86 classElement.className = "";
89 // The expected affected element counts below need an explanation:
91 // The descendant selector tests invalidate 2 normal dom elements:
92 // #scrollerParent, #scroller1
94 // The sibling selector tests invalidate 7 normal dom elements:
95 // #scrollerSibling, #scroller2, the div child of #scroller2 and its 4 spans
97 // In addition there the pseudo element selectors add the following pseudo elements
98 // on the #scroller1 and #scroller2 elements:
100 // ::-webkit-scrollbar: 1 scrollbar pseudo element (in total 3 and 8)
101 // ::-webkit-scrollbar-button: 1 scrollbar + 4 buttons (in total 7 and 12)
102 // ::-webkit-scrollbar-corner: 1 scrollbar + 1 corner (in total 4 and 9)
103 // ::-webkit-scrollbar-thumb: 1 scrollbar + 1 thumb (in total 4 and 9)
104 // ::-webkit-scrollbar-track: 1 scrollbar + 1 track (in total 4 and 9)
105 // ::-webkit-scrollbar-track-piece: 1 scrollbar + 2 track pieces (in total 5 and 10)
106 // ::-webkit-resizer: 1 scrollbar + 1 resizer (in total 4 and 9)
108 testScrollbarPseudo("::-webkit-scrollbar", "scroller1", scrollerParent, "t1", 3);
109 testScrollbarPseudo("::-webkit-scrollbar", "scroller2", scrollerSibling, "t2", 8);
110 testScrollbarPseudo("::-webkit-scrollbar-button", "scroller1", scrollerParent, "t3", 7);
111 testScrollbarPseudo("::-webkit-scrollbar-button", "scroller2", scrollerSibling, "t4", 12);
112 testScrollbarPseudo("::-webkit-scrollbar-corner", "scroller1", scrollerParent, "t5", 4);
113 testScrollbarPseudo("::-webkit-scrollbar-corner", "scroller2", scrollerSibling, "t6", 9);
114 testScrollbarPseudo("::-webkit-scrollbar-thumb", "scroller1", scrollerParent, "t7", 4);
115 testScrollbarPseudo("::-webkit-scrollbar-thumb", "scroller2", scrollerSibling, "t8", 9);
116 testScrollbarPseudo("::-webkit-scrollbar-track", "scroller1", scrollerParent, "t9", 4);
117 testScrollbarPseudo("::-webkit-scrollbar-track", "scroller2", scrollerSibling, "t10", 9);
118 testScrollbarPseudo("::-webkit-scrollbar-track-piece", "scroller1", scrollerParent, "t11", 5);
119 testScrollbarPseudo("::-webkit-scrollbar-track-piece", "scroller2", scrollerSibling, "t12", 10);
120 testScrollbarPseudo("::-webkit-resizer", "scroller1", scrollerParent, "t13", 4);
121 testScrollbarPseudo("::-webkit-resizer", "scroller2", scrollerSibling, "t14", 9);