Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: LayoutTests/compositing/overflow/resources/build-paint-order-lists.js

Issue 244193002: Enable universal accelerated overflow scroll (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Update test expectations for crashing test. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 function getPaintOrder(element)
2 {
3 var divElementsBeforePromote = [];
4 var divElementsAfterPromote = [];
5
6 var paintOrderListBeforePromote = window.internals.paintOrderListBeforePromote (element);
7 var paintOrderListAfterPromote = window.internals.paintOrderListAfterPromote(e lement);
8
9 for (var i = 0; i < paintOrderListBeforePromote.length; ++i)
10 if (paintOrderListBeforePromote[i].nodeName === "DIV")
11 divElementsBeforePromote.push(paintOrderListBeforePromote[i]);
12
13 for (var i = 0; i < paintOrderListAfterPromote.length; ++i)
14 if (paintOrderListAfterPromote[i].nodeName === "DIV")
15 divElementsAfterPromote.push(paintOrderListAfterPromote[i]);
16
17 return {"beforePromote": divElementsBeforePromote,
18 "afterPromote": divElementsAfterPromote};
19 }
20
21 function comparePaintOrderLists(oldPaintOrder, newPaintOrder)
22 {
23 if (oldPaintOrder.length !== newPaintOrder.length)
24 return false;
25
26 for (var i = 0; i < oldPaintOrder.length; i++)
27 if (oldPaintOrder[i] !== newPaintOrder[i])
28 return false;
29
30 return true;
31 }
32
33 function countOccurrencesOfElementInPaintOrderList(paintOrder, element) {
34 var occurrenceCount = 0;
35 for (var i = 0; i < paintOrder.length; i++)
36 if (paintOrder[i] === element)
37 occurrenceCount++;
38
39 return occurrenceCount;
40 }
41
42 function compareStackingOrderWithPaintOrder(stackingOrder, paintOrder)
43 {
44 if (debugMode) {
45 write("paint order:")
46 for (var i = 0; i < paintOrder.length; i++)
47 write(paintOrder[i].id + " " + paintOrder[i].className + " " + paintOrder[ paintOrder.length - i - 1].tagName);
48
49 write("stacking order:")
50 for (var i = 0; i < stackingOrder.length; i++)
51 write(stackingOrder[i].id + " " + stackingOrder[i].className + " " + stack ingOrder[i].tagName);
52 }
53
54 if (stackingOrder.length < paintOrder.length)
55 return false;
56
57 // We expect the stacking order list to contain more than the paint order
58 // list sometimes because after we promote, the container's children won't
59 // appear in the stacking context's ancestor's lists anymore (which is
60 // expected and correct). They'll still be in the stacking order list.
61 // The important part is that the order of the things present in the paint
62 // order list is preserved in the stacking order list.
63 for (var i = 0, j = 0; i < stackingOrder.length && j < paintOrder.length; i++)
64 if (stackingOrder[i] === paintOrder[paintOrder.length - j - 1])
65 j++;
66
67 if (debugMode)
68 write(stackingOrder.length + " " + i + " " + paintOrder.length + " " + j);
69
70 return j == paintOrder.length;
71 }
72
73 function testPaintOrderListPermutation(count) {
74 if (!window.internals)
75 return;
76
77 var container = document.getElementById('container');
78
79 window.internals.setNeedsCompositedScrolling(container,
80 window.internals.COMPOSITED_SCROLLING_ALWAYS_OFF);
81
82 var oldStackingOrder = getStackingOrder(container);
83 var oldPaintOrder = getPaintOrder(container);
84
85 window.internals.setNeedsCompositedScrolling(container,
86 window.internals.COMPOSITED_SCROLLING_ALWAYS_ON);
87
88 var newStackingOrder = getStackingOrder(container);
89 var newPaintOrder = getPaintOrder(container);
90
91 window.internals.setNeedsCompositedScrolling(container,
92 window.internals.DO_NOT_FORCE_COMPOSITED_SCROLLING);
93 // The getPaintOrder() function should return a pair of paint orders.
94 // One before promotion and one after. This pair of lists should remain
95 // identical whether the element is actually currently promoted or not,
96 // its purpose is to generate hypothetical pre- and post-lists to
97 // determine if the element is promotable.
98 if (!comparePaintOrderLists(oldPaintOrder, newPaintOrder))
99 write("iteration " + count + " FAIL - paint order lists not identical before /after promotion");
100
101 if (!compareStackingOrderWithPaintOrder(oldStackingOrder, oldPaintOrder.before Promote))
102 write("iteration " + count + " FAIL - paint order list before promote doesn' t match stacking order");
103
104 if (!compareStackingOrderWithPaintOrder(newStackingOrder, oldPaintOrder.afterP romote))
105 write("iteration " + count + " FAIL - paint order list after promote doesn't match stacking order");
106
107 var containerOccurrences = countOccurrencesOfElementInPaintOrderList(oldPaintO rder.beforePromote, container);
108 if (containerOccurrences !== 1)
109 write("iteration " + count + " FAIL - paint order list before promote contai ns " + containerOccurrences + " occurrences of container. Should be exactly 1.") ;
110
111 containerOccurrences = countOccurrencesOfElementInPaintOrderList(oldPaintOrder .afterPromote, container);
112 if (containerOccurrences !== 1)
113 write("iteration " + count + " FAIL - paint order list after promote contain s " + containerOccurrences + " occurrences of container. Should be exactly 1.");
114 }
115
116 function runPaintOrderPermutationSet(permutationSet) {
117 runPermutationSet(testPaintOrderListPermutation, permutationSet);
118 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698