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

Side by Side Diff: LayoutTests/scrollingcoordinator/non-fast-scrollable-visibility-change.html

Issue 815363003: FrameView now notifies ScrollCoorinator of changes in its scrollable area set (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Address review feedback Created 5 years, 11 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
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <style>
3 body {
4 margin: 0;
5 }
6 .non-fast {
7 height: 250px;
8 width: 250px;
9 display: block;
10 background-color: red;
11 overflow: scroll;
12 }
13 .non-fast > div {
14 height: 1000px;
15 width: 1000px;
16 display: block;
17 background: linear-gradient(to bottom, red, white);
18 }
19 </style>
20
21 <div id="first" class="non-fast">
22 This should be covered by the ONLY visible green overlay.
23 </div>
24 <div id="second" class="non-fast" style="margin-top:50px;">
25 This should not be visible.
26 <div></div>
27 </div>
28
29 <div id="console"></div>
30
31 <script src="../resources/js-test.js"></script>
32 <script src="resources/non-fast-scrollable-region-testing.js"></script>
33 <script>
34 window.jsTestIsAsync = true;
35 description('This test ensures that changing visibility of a non-fast ' +
36 'scrollable area correctly updates list of non-fast scrollable ' +
37 'areas. (See http://crbug.com/434982)');
38
39 onload = function() {
40 awaitCompsitingUpdate(runTest);
41 };
42
43 function runTest() {
44 var first = document.getElementById('first'),
45 second = document.getElementById('second');
46
47 nonFastScrollableRects = internals.nonFastScrollableRects(document);
48 shouldBe('nonFastScrollableRects.length', '1');
49 shouldBeEqualToString('rectToString(nonFastScrollableRects[0])',
50 '[0, 300, 250, 250]'); // second div
51
52 // Hide container before making it non-fast scrollable to ensure any
53 // layout occurs while it is invisible.
54 first.style.visibility = 'hidden';
55 makeNonFastScrollable(first);
56
57 // Change visibility (hidden -> visible), which should not cause any layout,
58 // and verify that non-fast scrollable areas are correctly updated.
59 awaitCompsitingUpdate(function() {
60 first.style.visibility = 'visible';
61 shouldBe('window.internals.needsLayoutCount()', '0');
62
63 awaitCompsitingUpdate(function() {
64 nonFastScrollableRects = internals.nonFastScrollableRects(document);
65 shouldBe('nonFastScrollableRects.length', '2');
66 shouldBeEqualToString('rectToString(nonFastScrollableRects[0])',
67 '[0, 0, 250, 250]'); // first div
68 shouldBeEqualToString('rectToString(nonFastScrollableRects[1])',
69 '[0, 300, 250, 250]'); // second div
70
71 // Change visibility (visible -> hidden)
72 second.style.visibility = 'hidden';
73 shouldBe('window.internals.needsLayoutCount()', '0');
74
75 awaitCompsitingUpdate(function() {
76 // This has no functional impact just visual
77 runNonFastScrollableRegionTest();
78
79 nonFastScrollableRects = internals.nonFastScrollableRects(document);
80 shouldBe('nonFastScrollableRects.length', '1');
81 shouldBeEqualToString('rectToString(nonFastScrollableRects[0])',
82 '[0, 0, 250, 250]'); // first div
83
84 finishJSTest();
85 });
86 });
87 });
88 }
89
90 // Makes the container non-fast scrollable area by appending a large element t o it.
91 function makeNonFastScrollable(container) {
92 var inner = document.createElement('div');
93 container.appendChild(inner);
94 }
95
96 // Waits for one RAF call to ensure compositing update is occurred and invokes task.
Rick Byers 2015/01/13 20:12:43 nit: s/is/has/
majidvp 2015/01/13 20:40:09 Done.
97 function awaitCompsitingUpdate(task) {
98 window.requestAnimationFrame(task);
99 }
100
101 function rectToString(rect) {
102 return '[' + [rect.left, rect.top, rect.width, rect.height].join(', ') + ']' ;
103 }
104 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698