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

Side by Side Diff: third_party/WebKit/LayoutTests/fast/dom/Window/window-scaled-viewport-properties.html

Issue 1712743002: Revert "Make window.scroll properties relative to the layout viewport by default." (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix failing test Created 4 years, 10 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
1 <!DOCTYPE html> 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2 <script src="../../../resources/js-test.js"></script> 2 <script src="../../../resources/js-test.js"></script>
3 <style> 3 <style>
4 body { 4 body {
5 padding: 0px; 5 padding: 0px;
6 margin: 0px; 6 margin: 0px;
7 /* Overflow hidden so that the size of the scrollbar is not added to
8 the innerHeight/Width properties. */
9 overflow: hidden;
10 } 7 }
11 8
12 .spacer { 9 .spacer {
13 position: absolute; 10 position: absolute;
14 left: 0px; 11 left: 0px;
15 top: 0px; 12 top: 0px;
16 margin: 0px; 13 margin: 0px;
17 padding: 0px; 14 padding: 0px;
18 width: 2000px; 15 width: 2000px;
19 height: 1500px; 16 height: 1500px;
20 } 17 }
21 </style> 18 </style>
22 <script language="JavaScript" type="text/javascript"> 19 <script language="JavaScript" type="text/javascript">
23 if (window.testRunner && window.internals) { 20 if (window.testRunner && window.internals) {
24 // Note that the layout viewport is based on the minimum page scale.
25 // Thus, the minimum scale of 0.5 causes the layout viewport to become
26 // twice of what we would normally expect.
27 window.internals.setPageScaleFactorLimits(0.5, 4.0); 21 window.internals.setPageScaleFactorLimits(0.5, 4.0);
28 window.jsTestIsAsync = true; 22 window.jsTestIsAsync = true;
29 testRunner.dumpAsText(); 23 testRunner.dumpAsText();
30 testRunner.waitUntilDone(); 24 testRunner.waitUntilDone();
31 setPrintTestResultsLazily();
32 } 25 }
33 26
34 description("This test makes sure the window properties related to the\ 27 description("This test makes sure the window properties related to the\
35 viewport remain correct under pinch-to-zoom."); 28 viewport remain correct under pinch-to-zoom.");
36 29
37 30 debug('===Unscaled===');
38 function testInitialScale () { 31 debug('');
39 debug('===Initial Scale==='); 32 shouldBe('window.innerWidth', '800');
40 debug(''); 33 shouldBe('window.innerHeight', '600');
41 shouldBe('window.innerWidth', '1600');
42 shouldBe('window.innerHeight', '1200');
43 shouldBe('internals.visualViewportWidth()', '1600');
44 shouldBe('internals.visualViewportHeight()', '1200');
45 }
46
47 function jsScrollTo(x, y) {
48 window.scrollTo(x, y);
49 }
50
51 function jsScrollBy(x, y) {
52 window.scrollBy(x, y);
53 }
54
55 function testScrolls(jsScroll) {
56 // Test that the layout and visual viewport viewport scroll.
57 jsScroll(100, 200);
58 shouldBe('window.scrollX', '100');
59 shouldBe('window.scrollY', '200');
60 shouldBe('internals.visualViewportScrollX()', '100');
61 shouldBe('internals.visualViewportScrollY()', '200');
62
63 // Test that the scroll doesn't bubble to the visual viewport.
64 jsScroll(1500, 1100);
65 shouldBe('window.scrollX', '400');
66 shouldBe('window.scrollY', '300');
67 shouldBe('internals.visualViewportScrollX()', '400');
68 shouldBe('internals.visualViewportScrollY()', '300');
69
70 // Reset.
71 window.scrollTo(0, 0);
72 shouldBe('window.scrollX', '0');
73 shouldBe('window.scrollY', '0');
74 }
75 34
76 function testPinchedIn() { 35 function testPinchedIn() {
77 debug(''); 36 debug('');
78 debug('===Pinch Zoom in to 2X==='); 37 debug('===Pinch Zoom in to 2X===');
79 debug(''); 38 debug('');
80 window.internals.setPageScaleFactor(2.0); 39 window.internals.setPageScaleFactor(2.0);
81 // Test that the innerWidth, innerHeight, scrollX, scrollY are relative 40 shouldBe('window.innerWidth', '400');
82 // to the layout viewport after page scale. 41 shouldBe('window.innerHeight', '300');
83 shouldBe('window.innerWidth', '1600');
84 shouldBe('window.innerHeight', '1200');
85 shouldBe('window.scrollX', '0'); 42 shouldBe('window.scrollX', '0');
86 shouldBe('window.scrollY', '0'); 43 shouldBe('window.scrollY', '0');
87 44
88 // Test that the visual viewport size changes after page scale. 45 window.scrollBy(10, 20);
89 shouldBe('internals.visualViewportWidth()', '400'); 46 shouldBe('window.scrollX', '10');
90 shouldBe('internals.visualViewportHeight()', '300'); 47 shouldBe('window.scrollY', '20');
91 48 window.scrollBy(1590, 1180);
92 debug('===ScrollBy==='); 49 shouldBe('window.scrollX', '1600');
93 testScrolls(jsScrollBy); 50 shouldBe('window.scrollY', '1200');
94 debug('===ScrollTo==='); 51 window.scrollBy(-1600, -1200);
95 testScrolls(jsScrollTo); 52 shouldBe('window.scrollX', '0');
53 shouldBe('window.scrollY', '0');
54 window.scrollTo(1600, 1200);
55 shouldBe('window.scrollX', '1600');
56 shouldBe('window.scrollY', '1200');
57 window.scrollTo(0, 0);
58 shouldBe('window.scrollX', '0');
59 shouldBe('window.scrollY', '0');
96 } 60 }
97 61
98 function testMaximallyPinchedOut() { 62 function testMaximallyPinchedOut() {
99 debug(''); 63 debug('');
100 debug('===Pinch Out to 0.5X==='); 64 debug('===Pinch Out to 0.5X===');
101 debug(''); 65 debug('');
102 window.internals.setPageScaleFactor(0.5); 66 window.internals.setPageScaleFactor(0.5);
103 shouldBe('window.innerWidth', '1600'); 67 shouldBe('window.innerWidth', '1600');
104 shouldBe('window.innerHeight', '1200'); 68 shouldBe('window.innerHeight', '1200');
105 shouldBe('window.scrollX', '0'); 69 shouldBe('window.scrollX', '0');
106 shouldBe('window.scrollY', '0'); 70 shouldBe('window.scrollY', '0');
107 shouldBe('internals.visualViewportWidth()', '1600');
108 shouldBe('internals.visualViewportHeight()', '1200');
109 71
110 debug('===ScrollBy==='); 72 window.scrollBy(10, 20);
111 testScrolls(jsScrollBy); 73 shouldBe('window.scrollX', '10');
112 debug('===ScrollTo==='); 74 shouldBe('window.scrollY', '20');
113 testScrolls(jsScrollTo); 75 window.scrollBy(390, 280);
76 shouldBe('window.scrollX', '400');
77 shouldBe('window.scrollY', '300');
78 window.scrollBy(-400, -300);
79 shouldBe('window.scrollX', '0');
80 shouldBe('window.scrollY', '0');
81 window.scrollTo(400, 300);
82 shouldBe('window.scrollX', '400');
83 shouldBe('window.scrollY', '300');
84 window.scrollTo(0, 0);
85 shouldBe('window.scrollX', '0');
86 shouldBe('window.scrollY', '0');
87 }
88
89 function testOnScroll() {
90 debug('');
91 debug('===Test OnScroll===');
92 debug('');
93 window.internals.setPageScaleFactor(1.0);
94 shouldBe('window.innerWidth', '800');
95 shouldBe('window.innerHeight', '600');
96 shouldBe('window.scrollX', '0');
97 shouldBe('window.scrollY', '0');
98
99 // First scroll scrolls only the outer viewport.
100 // Second scrolls the outer and the inner.
101 // Third scrolls only the inner.
102 var scrolls = [100, 400, 100];
103 var numScrollsReceived = 0;
104 var numRAFCalls = 0;
105
106 document.onscroll = function() {
107 if (numRAFCalls == 0)
108 return;
109
110 ++numScrollsReceived;
111 debug('PASS OnScroll called for scroll #' + numScrollsReceived);
112 if (numScrollsReceived < scrolls.length) {
113 var scrollAmount = scrolls[numScrollsReceived];
114 window.scrollBy(scrollAmount, 0);
115 } else if (numScrollsReceived == scrolls.length) {
116 // Make sure scrollTo that moves only the inner viewport also
117 // triggers a scroll event.
118 window.scrollTo(1200, 0);
119 } else {
120 debug('');
121 finishJSTest();
122 }
123 }
124
125 // Scroll events are fired right before RAF so this is a good place to
126 // make sure event was handled.
127 var failureSentinel = function() {
128 if (numRAFCalls == 0) {
129 window.scrollBy(scrolls[0], 0);
130 }else if (numRAFCalls > numScrollsReceived) {
131 testFailed("Failed to receive scroll event #" + (numScrollsRecei ved+1));
132 finishJSTest();
133 }
134 ++numRAFCalls;
135 window.requestAnimationFrame(failureSentinel);
136 }
137
138 window.requestAnimationFrame(failureSentinel);
114 } 139 }
115 140
116 function forceLayout() { 141 function forceLayout() {
117 window.scrollX; 142 window.scrollTo(0, 0);
118 } 143 }
119 144
120 function runTests() { 145 function runTests() {
121 if (window.testRunner && window.internals) { 146 if (window.testRunner && window.internals) {
122 // TODO(ymalik): The call to setPageScaleFactorLimits should force
123 // layout. Fix that instead of forcing layout here.
124 forceLayout(); 147 forceLayout();
125 testInitialScale();
126 testPinchedIn(); 148 testPinchedIn();
127 testMaximallyPinchedOut(); 149 testMaximallyPinchedOut();
128 finishJSTest(); 150 testOnScroll();
129 } 151 }
130 } 152 }
131 153
132 onload = runTests; 154 onload = runTests;
133 </script> 155 </script>
134 <div class="spacer"></div> 156 <div class="spacer"></div>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698