OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <meta charset="utf-8"> | 4 <meta charset="utf-8"> |
5 <title>Scroll customization methods are called appropriately.</title> | 5 <title>Scroll customization methods are called appropriately.</title> |
6 <script src="../../../resources/testharness.js"></script> | 6 <script src="../../../resources/testharness.js"></script> |
7 <script src="../../../resources/testharnessreport.js"></script> | 7 <script src="../../../resources/testharnessreport.js"></script> |
8 <style> | 8 <style> |
9 | 9 |
10 * { | 10 * { |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 test(function() { | 133 test(function() { |
134 reset(); | 134 reset(); |
135 | 135 |
136 // Scroll five times, with five elements. | 136 // Scroll five times, with five elements. |
137 var unapplied = [ | 137 var unapplied = [ |
138 // d, the innermost element, never applies any scroll. | 138 // d, the innermost element, never applies any scroll. |
139 [-85, -75, -65, -55, -45], | 139 [-85, -75, -65, -55, -45], |
140 // c applies the first two scrolls, and then hits its scroll extents. | 140 // c applies the first two scrolls, and then hits its scroll extents. |
141 [0, 0, -65, -55, -45], | 141 [0, 0, -65, -55, -45], |
142 // b doesn't scroll, and so leaves the same deltas unapplied as c. | 142 // b doesn't scroll, and so leaves the same deltas unapplied as c. |
143 [0, 0, -65, -55, -45], | 143 [-65, -55, -45], |
144 // a hits its scroll extent on the second last step. | 144 // a hits its scroll extent on the second last step. |
145 [0, 0, 0, 0, -45], | 145 [0, 0, -45], |
146 // The scrollingElement performs the frame scroll. | 146 // The scrollingElement performs the frame scroll. |
147 [0, 0, 0, 0, 0]]; | 147 [0]]; |
148 | 148 |
149 for (var i = 0; i < deltas.length; ++i) | 149 for (var i = 0; i < deltas.length; ++i) |
150 applyDelta(deltas[i]); | 150 applyDelta(deltas[i]); |
151 | 151 |
152 for (var i = 0; i < elements.length; ++i) { | 152 for (var i = 0; i < elements.length; ++i) { |
153 var el = elements[i]; | 153 var el = elements[i]; |
154 // Every element sees the same deltas being distributed. | 154 // Every element sees the same deltas being distributed. |
155 assert_array_equals(el.distributedDeltaY, deltas, "distributed delta for "
+ el.id + ":"); | 155 assert_array_equals(el.distributedDeltaY, deltas, "distributed delta for "
+ el.id + ":"); |
156 assert_array_equals(el.unappliedDeltaY, unapplied[i], "unapplied delta for
" + el.id + ":"); | 156 assert_array_equals(el.unappliedDeltaY, unapplied[i], "unapplied delta for
" + el.id + ":"); |
157 } | 157 } |
158 | 158 |
159 // Ensure that the document leaves scroll unapplied when appropriate. | 159 // Ensure that the document leaves scroll unapplied when appropriate. |
160 var documentUnapplied = document.scrollingElement.unappliedDeltaY; | 160 var documentUnapplied = document.scrollingElement.unappliedDeltaY; |
161 applyDelta(-4000); | 161 applyDelta(-4000); |
162 assert_equals(documentUnapplied[documentUnapplied.length - 1], 0); | 162 assert_equals(documentUnapplied[documentUnapplied.length - 1], 0); |
163 applyDelta(-4000); | 163 applyDelta(-4000); |
164 assert_equals(documentUnapplied[documentUnapplied.length - 1], -4000); | 164 assert_equals(documentUnapplied[documentUnapplied.length - 1], -4000); |
165 }, "Correct amount of delta is consumed."); | 165 }, "Correct amount of delta is consumed."); |
166 | 166 |
167 test(function() { | 167 test(function() { |
168 reset(); | 168 reset(); |
169 | 169 |
170 // Consume one pixel of delta per call to applyScroll. | |
171 for (var i = 0; i < elements.length; ++i) { | |
172 if (scrollableElements.indexOf(elements[i]) == -1) | |
173 continue; | |
174 elements[i].setApplyScroll((function(scrollState) { | |
175 if (scrollState.deltaY !== 0) | |
176 scrollState.consumeDelta(0, -1); | |
177 }).bind(elements[i]), "perform-before-native-scroll"); | |
178 } | |
179 | |
180 // Scroll five times, with three scrollable elements. | 170 // Scroll five times, with three scrollable elements. |
181 // The scroll distance is decreased more the higher up the scroll chain the
element is. | 171 var cScrollTop = [85, 100, 100, 100, 100]; |
182 var cScrollTop = [85 - 1, 100, 100, 100, 100]; | 172 var aScrollTop = [0, 0, 65, 100, 100]; |
183 var aScrollTop = [0, 0, 65 - 2, 100, 100]; | 173 var scrollingElementScrollTop = [0, 0, 0, 0, 45]; |
184 var scrollingElementScrollTop = [0, 0, 0, 0, 45 - 3]; | |
185 for (var i = 0; i < deltas.length; ++i) { | 174 for (var i = 0; i < deltas.length; ++i) { |
186 applyDelta(deltas[i]); | 175 applyDelta(deltas[i]); |
187 assert_equals(c.scrollTop, cScrollTop[i], "For id 'c' on step " + i); | 176 assert_equals(c.scrollTop, cScrollTop[i], "For id 'c' on step " + i); |
188 assert_equals(a.scrollTop, aScrollTop[i], "For id 'a' on step " + i); | 177 assert_equals(a.scrollTop, aScrollTop[i], "For id 'a' on step " + i); |
189 assert_equals(document.scrollingElement.scrollTop, scrollingElementScrollT
op[i], "For scrollingElement on step " + i); | 178 assert_equals(document.scrollingElement.scrollTop, scrollingElementScrollT
op[i], "For scrollingElement on step " + i); |
190 } | 179 } |
191 }, "Consuming deltas prevents scrolling."); | 180 }, "Scroll propagation behaves correctly."); |
192 | 181 |
193 test(function() { | 182 test(function() { |
194 reset(); | 183 reset(); |
195 | 184 |
196 for (var i = 0; i < deltas.length; ++i) | 185 for (var i = 0; i < deltas.length; ++i) |
197 applyDelta(deltas[i]); | 186 applyDelta(deltas[i]); |
198 | 187 |
199 for (var i = 0; i < elements.length; ++i) { | 188 for (var i = 0; i < elements.length; ++i) { |
200 assert_equals(elements[i].numberOfScrollBegins, deltas.length, "Incorrect
number of begin events for " + elements[i].id); | 189 assert_equals(elements[i].numberOfScrollBegins, deltas.length, "Incorrect
number of begin events for " + elements[i].id); |
201 assert_equals(elements[i].numberOfScrollEnds, deltas.length, "Incorrect nu
mber of end events for " + elements[i].id); | 190 assert_equals(elements[i].numberOfScrollEnds, deltas.length, "Incorrect nu
mber of end events for " + elements[i].id); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 window.requestAnimationFrame(raf); | 235 window.requestAnimationFrame(raf); |
247 } | 236 } |
248 | 237 |
249 executeFrameActions(frame_actions); | 238 executeFrameActions(frame_actions); |
250 } | 239 } |
251 } | 240 } |
252 | 241 |
253 </script> | 242 </script> |
254 </body> | 243 </body> |
255 </html> | 244 </html> |
OLD | NEW |