Changeset 226791 in webkit
- Timestamp:
- Jan 11, 2018 11:53:08 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r226785 r226791 1 2018-01-10 Simon Fraser <simon.fraser@apple.com> 2 3 On macOS, getBoundingClientRect gives incorrect values when pinch-zoomed 4 https://bugs.webkit.org/show_bug.cgi?id=181511 5 rdar://problem/33741427 6 7 Reviewed by Zalan Bujtas. 8 9 New results in tests that get client coordinates after zooming. 10 11 * fast/visual-viewport/client-coordinates-relative-to-layout-viewport-expected.txt: 12 * fast/visual-viewport/client-rects-relative-to-layout-viewport-expected.txt: 13 * fast/visual-viewport/client-rects-relative-to-layout-viewport-zoomed.html: 14 * fast/visual-viewport/zoomed-fixed-expected.txt: 15 * fast/visual-viewport/zoomed-fixed-header-and-footer-expected.txt: 16 * fast/zooming/client-rect-in-fixed-zoomed-expected.txt: 17 * fast/zooming/client-rect-in-fixed-zoomed.html: Change the test to create passing results. 18 1 19 2018-01-11 Eric Carlson <eric.carlson@apple.com> 2 20 -
trunk/LayoutTests/fast/visual-viewport/client-coordinates-relative-to-layout-viewport-expected.txt
r219829 r226791 7 7 RenderText {#text} at (0,0) size 79x18 8 8 text run at (0,0) width 79: "Got click at " 9 RenderInline {SPAN} at (0,0) size 1 04x1810 RenderText {#text} at (78,0) size 1 04x1811 text run at (78,0) width 1 04: "clicked at 52, -6"12 layer at ( 38,-20) size 28x28 backgroundClip at (0,0) size 2008x3024 clip at (0,0) size 2008x302413 RenderBlock (positioned) {DIV} at ( 38,-20) size 28x28 [bgcolor=#FF0000]9 RenderInline {SPAN} at (0,0) size 122x18 10 RenderText {#text} at (78,0) size 122x18 11 text run at (78,0) width 122: "clicked at 172, 117" 12 layer at (158,103) size 28x28 13 RenderBlock (positioned) {DIV} at (158,103) size 28x28 [bgcolor=#FF0000] 14 14 layer at (280,228) size 25x25 15 15 RenderBlock (positioned) {DIV} at (279,227) size 26x26 [bgcolor=#008000] 16 16 layer at (281,229) size 22x22 17 17 RenderBlock (positioned) {DIV} at (281,229) size 22x22 [bgcolor=#FFA500] 18 layer at ( 44,-14) size 16x16 backgroundClip at (0,0) size 2008x3024 clip at (0,0) size 2008x302419 RenderBlock (positioned) {DIV} at ( 44,-14) size 16x16 [bgcolor=#0000FF]18 layer at (164,109) size 16x16 19 RenderBlock (positioned) {DIV} at (164,109) size 16x16 [bgcolor=#0000FF] 20 20 caret: position 12 of child 0 {#text} of child 9 {P} of body 21 21 scrolled to 120,123 -
trunk/LayoutTests/fast/visual-viewport/client-rects-relative-to-layout-viewport-expected.txt
r219829 r226791 14 14 layoutViewport: 83.5, 233.5 - 785 x 585 15 15 visualViewportRect: 476, 526 - 392.5 x 292.5 16 fixed client bounds: - 856.5, -808.5 - 30 x 2017 fixed client rect: - 856.5, -808.5 - 30 x 2018 absolute client bounds: - 832, -952- 50 x 2519 absolute client rect: - 832, -952- 50 x 2516 fixed client bounds: -380.5, -282.5 - 30 x 20 17 fixed client rect: -380.5, -282.5 - 30 x 20 18 absolute client bounds: -356, -426 - 50 x 25 19 absolute client rect: -356, -426 - 50 x 25 20 20 21 21 Scrolled to 100, 776 22 22 layoutViewport: 83.5, 483.5 - 785 x 585 23 23 visualViewportRect: 100, 776 - 392.5 x 292.5 24 fixed client bounds: - 104.5, -1058.5 - 30 x 2025 fixed client rect: - 104.5, -1058.5 - 30 x 2026 absolute client bounds: -80, -1452- 50 x 2527 absolute client rect: -80, -1452- 50 x 2524 fixed client bounds: -4.5, -282.5 - 30 x 20 25 fixed client rect: -4.5, -282.5 - 30 x 20 26 absolute client bounds: 20, -676 - 50 x 25 27 absolute client rect: 20, -676 - 50 x 25 28 28 29 29 Scrolled to 50, 300 30 30 layoutViewport: 50, 300 - 785 x 585 31 31 visualViewportRect: 50, 300 - 392.5 x 292.5 32 fixed client bounds: -38, -290 - 30 x 2033 fixed client rect: -38, -290 - 30 x 2034 absolute client bounds: 20, -500 - 50 x 2535 absolute client rect: 20, -500 - 50 x 2532 fixed client bounds: 12, 10 - 30 x 20 33 fixed client rect: 12, 10 - 30 x 20 34 absolute client bounds: 70, -200 - 50 x 25 35 absolute client rect: 70, -200 - 50 x 25 36 36 PASS successfullyParsed is true 37 37 -
trunk/LayoutTests/fast/visual-viewport/client-rects-relative-to-layout-viewport-zoomed.html
r218982 r226791 44 44 var absolute = document.getElementById('absolute'); 45 45 46 debug('layoutViewport: ' + stringFromRect(internals.layoutViewportRect())); 47 debug('visualViewportRect: ' + stringFromRect(internals.visualViewportRect())); 46 if (window.internals) { 47 debug('layoutViewport: ' + stringFromRect(internals.layoutViewportRect())); 48 debug('visualViewportRect: ' + stringFromRect(internals.visualViewportRect())); 49 } 48 50 49 51 debug('fixed client bounds: ' + stringFromRect(fixed.getBoundingClientRect())); … … 56 58 function doTest() 57 59 { 58 if (!window.testRunner)59 return;60 61 60 if (window.eventSender) 62 61 eventSender.zoomPageIn(); -
trunk/LayoutTests/fast/visual-viewport/zoomed-fixed-expected.txt
r219829 r226791 19 19 JSON.stringify(internals.visualViewportRect()) is {"x":475,"y":525,"width":392.5,"height":292.5,"top":525,"right":867.5,"bottom":817.5,"left":475} 20 20 client rect of top: 21 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":- 867.5,"y":-817.5,"width":785,"height":100,"top":-817.5,"right":-82.5,"bottom":-717.5,"left":-867.5}21 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-392.5,"y":-292.5,"width":785,"height":100,"top":-292.5,"right":392.5,"bottom":-192.5,"left":-392.5} 22 22 client rect of bottom: 23 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":- 867.5,"y":-332.5,"width":785,"height":100,"top":-332.5,"right":-82.5,"bottom":-232.5,"left":-867.5}23 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-392.5,"y":192.5,"width":785,"height":100,"top":192.5,"right":392.5,"bottom":292.5,"left":-392.5} 24 24 client rect of left: 25 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":- 867.5,"y":-817.5,"width":100,"height":585,"top":-817.5,"right":-767.5,"bottom":-232.5,"left":-867.5}25 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-392.5,"y":-292.5,"width":100,"height":585,"top":-292.5,"right":-292.5,"bottom":292.5,"left":-392.5} 26 26 client rect of right: 27 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x": -182.5,"y":-817.5,"width":100,"height":585,"top":-817.5,"right":-82.5,"bottom":-232.5,"left":-182.5}27 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":292.5,"y":-292.5,"width":100,"height":585,"top":-292.5,"right":392.5,"bottom":292.5,"left":292.5} 28 28 29 29 Scrolled to 100, 776 … … 31 31 JSON.stringify(internals.visualViewportRect()) is {"x":100,"y":776,"width":392.5,"height":292.5,"top":776,"right":492.5,"bottom":1068.5,"left":100} 32 32 client rect of top: 33 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-1 17.5,"y":-1068.5,"width":785,"height":100,"top":-1068.5,"right":667.5,"bottom":-968.5,"left":-117.5}33 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-17.5,"y":-292.5,"width":785,"height":100,"top":-292.5,"right":767.5,"bottom":-192.5,"left":-17.5} 34 34 client rect of bottom: 35 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-1 17.5,"y":-583.5,"width":785,"height":100,"top":-583.5,"right":667.5,"bottom":-483.5,"left":-117.5}35 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-17.5,"y":192.5,"width":785,"height":100,"top":192.5,"right":767.5,"bottom":292.5,"left":-17.5} 36 36 client rect of left: 37 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-1 17.5,"y":-1068.5,"width":100,"height":585,"top":-1068.5,"right":-17.5,"bottom":-483.5,"left":-117.5}37 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-17.5,"y":-292.5,"width":100,"height":585,"top":-292.5,"right":82.5,"bottom":292.5,"left":-17.5} 38 38 client rect of right: 39 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x": 567.5,"y":-1068.5,"width":100,"height":585,"top":-1068.5,"right":667.5,"bottom":-483.5,"left":567.5}39 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":667.5,"y":-292.5,"width":100,"height":585,"top":-292.5,"right":767.5,"bottom":292.5,"left":667.5} 40 40 41 41 Scrolled to 50, 300 … … 43 43 JSON.stringify(internals.visualViewportRect()) is {"x":50,"y":300,"width":392.5,"height":292.5,"top":300,"right":442.5,"bottom":592.5,"left":50} 44 44 client rect of top: 45 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x": -50,"y":-300,"width":785,"height":100,"top":-300,"right":735,"bottom":-200,"left":-50}45 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":0,"y":0,"width":785,"height":100,"top":0,"right":785,"bottom":100,"left":0} 46 46 client rect of bottom: 47 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x": -50,"y":185,"width":785,"height":100,"top":185,"right":735,"bottom":285,"left":-50}47 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":0,"y":485,"width":785,"height":100,"top":485,"right":785,"bottom":585,"left":0} 48 48 client rect of left: 49 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x": -50,"y":-300,"width":100,"height":585,"top":-300,"right":50,"bottom":285,"left":-50}49 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":0,"y":0,"width":100,"height":585,"top":0,"right":100,"bottom":585,"left":0} 50 50 client rect of right: 51 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":6 35,"y":-300,"width":100,"height":585,"top":-300,"right":735,"bottom":285,"left":635}51 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":685,"y":0,"width":100,"height":585,"top":0,"right":785,"bottom":585,"left":685} 52 52 PASS successfullyParsed is true 53 53 -
trunk/LayoutTests/fast/visual-viewport/zoomed-fixed-header-and-footer-expected.txt
r219829 r226791 19 19 JSON.stringify(internals.visualViewportRect()) is {"x":475,"y":503.5,"width":392.5,"height":292.5,"top":503.5,"right":867.5,"bottom":796,"left":475} 20 20 client rect of top: 21 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":- 867.5,"y":-839,"width":785,"height":100,"top":-839,"right":-82.5,"bottom":-739,"left":-867.5}21 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-392.5,"y":-314,"width":785,"height":100,"top":-314,"right":392.5,"bottom":-214,"left":-392.5} 22 22 client rect of bottom: 23 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":- 867.5,"y":-354,"width":785,"height":100,"top":-354,"right":-82.5,"bottom":-254,"left":-867.5}23 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-392.5,"y":171,"width":785,"height":100,"top":171,"right":392.5,"bottom":271,"left":-392.5} 24 24 client rect of left: 25 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":- 867.5,"y":-839,"width":100,"height":585,"top":-839,"right":-767.5,"bottom":-254,"left":-867.5}25 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-392.5,"y":-314,"width":100,"height":585,"top":-314,"right":-292.5,"bottom":271,"left":-392.5} 26 26 client rect of right: 27 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x": -182.5,"y":-839,"width":100,"height":585,"top":-839,"right":-82.5,"bottom":-254,"left":-182.5}27 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":292.5,"y":-314,"width":100,"height":585,"top":-314,"right":392.5,"bottom":271,"left":292.5} 28 28 29 29 Scrolled to 100, 776 … … 31 31 JSON.stringify(internals.visualViewportRect()) is {"x":100,"y":754.5,"width":392.5,"height":292.5,"top":754.5,"right":492.5,"bottom":1047,"left":100} 32 32 client rect of top: 33 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-1 17.5,"y":-1090,"width":785,"height":100,"top":-1090,"right":667.5,"bottom":-990,"left":-117.5}33 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-17.5,"y":-314,"width":785,"height":100,"top":-314,"right":767.5,"bottom":-214,"left":-17.5} 34 34 client rect of bottom: 35 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-1 17.5,"y":-605,"width":785,"height":100,"top":-605,"right":667.5,"bottom":-505,"left":-117.5}35 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-17.5,"y":171,"width":785,"height":100,"top":171,"right":767.5,"bottom":271,"left":-17.5} 36 36 client rect of left: 37 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-1 17.5,"y":-1090,"width":100,"height":585,"top":-1090,"right":-17.5,"bottom":-505,"left":-117.5}37 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":-17.5,"y":-314,"width":100,"height":585,"top":-314,"right":82.5,"bottom":271,"left":-17.5} 38 38 client rect of right: 39 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x": 567.5,"y":-1090,"width":100,"height":585,"top":-1090,"right":667.5,"bottom":-505,"left":567.5}39 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":667.5,"y":-314,"width":100,"height":585,"top":-314,"right":767.5,"bottom":271,"left":667.5} 40 40 41 41 Scrolled to 50, 300 … … 43 43 JSON.stringify(internals.visualViewportRect()) is {"x":50,"y":278.5,"width":392.5,"height":292.5,"top":278.5,"right":442.5,"bottom":571,"left":50} 44 44 client rect of top: 45 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x": -50,"y":-321.5,"width":785,"height":100,"top":-321.5,"right":735,"bottom":-221.5,"left":-50}45 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":0,"y":-21.5,"width":785,"height":100,"top":-21.5,"right":785,"bottom":78.5,"left":0} 46 46 client rect of bottom: 47 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x": -50,"y":163.5,"width":785,"height":100,"top":163.5,"right":735,"bottom":263.5,"left":-50}47 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":0,"y":463.5,"width":785,"height":100,"top":463.5,"right":785,"bottom":563.5,"left":0} 48 48 client rect of left: 49 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x": -50,"y":-321.5,"width":100,"height":585,"top":-321.5,"right":50,"bottom":263.5,"left":-50}49 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":0,"y":-21.5,"width":100,"height":585,"top":-21.5,"right":100,"bottom":563.5,"left":0} 50 50 client rect of right: 51 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":6 35,"y":-321.5,"width":100,"height":585,"top":-321.5,"right":735,"bottom":263.5,"left":635}51 JSON.stringify(fixedElement.getBoundingClientRect()) is {"x":685,"y":-21.5,"width":100,"height":585,"top":-21.5,"right":785,"bottom":563.5,"left":685} 52 52 PASS successfullyParsed is true 53 53 -
trunk/LayoutTests/fast/zooming/client-rect-in-fixed-zoomed-expected.txt
r219829 r226791 5 5 6 6 PASS internals.pageScaleFactor() is 2 7 FAIL JSON.stringify(clientRect) should be {"x":22,"y":32,"width":20,"height":10,"top":32,"right":42,"bottom":42,"left":22}. Was {"x":22,"y":-248,"width":20,"height":10,"top":-248,"right":42,"bottom":-238,"left":22}. 7 PASS JSON.stringify(clientRect) is JSON.stringify({x: 22, y: -108, width: 20, height: 10, top: -108, right: 42, bottom:-98, left: 22}) 8 8 PASS successfullyParsed is true 9 9 -
trunk/LayoutTests/fast/zooming/client-rect-in-fixed-zoomed.html
r216803 r226791 41 41 clientRect = box.getBoundingClientRect(); 42 42 43 shouldBe('JSON.stringify(clientRect)', 'JSON.stringify({x: 22, y: 32, width: 20, height: 10, top: 32, right: 42, bottom:42, left: 22})');43 shouldBe('JSON.stringify(clientRect)', 'JSON.stringify({x: 22, y: -108, width: 20, height: 10, top: -108, right: 42, bottom:-98, left: 22})'); 44 44 45 45 finishJSTest(); -
trunk/Source/WebCore/ChangeLog
r226790 r226791 1 2018-01-10 Simon Fraser <simon.fraser@apple.com> 2 3 On macOS, getBoundingClientRect gives incorrect values when pinch-zoomed 4 https://bugs.webkit.org/show_bug.cgi?id=181511 5 rdar://problem/33741427 6 7 Reviewed by Zalan Bujtas. 8 9 When reverting "client coordinates are relative to layout viewport" in r219829 10 I broke documentToClientOffset() on macOS by failing to take pinch zoom scale into 11 account (frameScaleFactor() is always 1 on iOs, so this bug doesn't manifest there). 12 13 Covered by existing tests. 14 15 * page/FrameView.cpp: 16 (WebCore::FrameView::documentToClientOffset const): 17 1 18 2018-01-11 Youenn Fablet <youenn@apple.com> 2 19 -
trunk/Source/WebCore/page/FrameView.cpp
r226622 r226791 4512 4512 4513 4513 // Layout and visual viewports are affected by page zoom, so we need to factor that out. 4514 return clientOrigin.scaled(1 / frame().pageZoomFactor());4514 return clientOrigin.scaled(1 / (frame().pageZoomFactor() * frame().frameScaleFactor())); 4515 4515 } 4516 4516
Note: See TracChangeset
for help on using the changeset viewer.