[iOS WK2] Fix incorrect scrollPosition handling
authorsimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Jan 2016 03:16:11 +0000 (03:16 +0000)
committersimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Jan 2016 03:16:11 +0000 (03:16 +0000)
https://bugs.webkit.org/show_bug.cgi?id=152630

Reviewed by Zalan Bujtas.
Source/WebCore:

WebPage::updateVisibleContentRects() was setting the ScrollView's scroll position
to a scrollOffset, which was counteracted by ScrollView::unobscuredContentRect()
adding the scrollOrigin to the scrollPosition, which resulted in the correct
rects, but an incorrect scrollPosition. Fix.

* platform/ios/ScrollViewIOS.mm:
(WebCore::ScrollView::unobscuredContentRect):

Source/WebKit2:

WebPage::updateVisibleContentRects() was setting the ScrollView's scroll position
to a scrollOffset, which was counteracted by ScrollView::unobscuredContentRect()
adding the scrollOrigin to the scrollPosition, which resulted in the correct
rects, but an incorrect scrollPosition. Fix.

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::updateVisibleContentRects):

LayoutTests:

These tests now load with a 0,0 scroll position, so don't dump out the "scrolled to" text,
which matches Mac behavior.

* platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-bt-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-lr-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-rl-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-tb-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-bt-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-lr-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-rl-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-tb-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/vertical-rl/column-break-with-balancing-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/vertical-rl/column-rules-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/vertical-rl/float-paginate-complex-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194476 268f45cc-cd09-0410-ab3c-d52691b4dbfc

17 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-bt-expected.txt
LayoutTests/platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-lr-expected.txt
LayoutTests/platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-rl-expected.txt
LayoutTests/platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-tb-expected.txt
LayoutTests/platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-bt-expected.txt
LayoutTests/platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-lr-expected.txt
LayoutTests/platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt
LayoutTests/platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-rl-expected.txt
LayoutTests/platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-tb-expected.txt
LayoutTests/platform/ios-simulator-wk2/fast/multicol/vertical-rl/column-break-with-balancing-expected.txt
LayoutTests/platform/ios-simulator-wk2/fast/multicol/vertical-rl/column-rules-expected.txt
LayoutTests/platform/ios-simulator-wk2/fast/multicol/vertical-rl/float-paginate-complex-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/platform/ios/ScrollViewIOS.mm
Source/WebKit2/ChangeLog
Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm

index e2c3b39..92aacc3 100644 (file)
@@ -1,3 +1,26 @@
+2015-12-31  Simon Fraser  <simon.fraser@apple.com>
+
+        [iOS WK2] Fix incorrect scrollPosition handling
+        https://bugs.webkit.org/show_bug.cgi?id=152630
+
+        Reviewed by Zalan Bujtas.
+        
+        These tests now load with a 0,0 scroll position, so don't dump out the "scrolled to" text,
+        which matches Mac behavior.
+
+        * platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-bt-expected.txt:
+        * platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-lr-expected.txt:
+        * platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-rl-expected.txt:
+        * platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-tb-expected.txt:
+        * platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-bt-expected.txt:
+        * platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-lr-expected.txt:
+        * platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt:
+        * platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-rl-expected.txt:
+        * platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-tb-expected.txt:
+        * platform/ios-simulator-wk2/fast/multicol/vertical-rl/column-break-with-balancing-expected.txt:
+        * platform/ios-simulator-wk2/fast/multicol/vertical-rl/column-rules-expected.txt:
+        * platform/ios-simulator-wk2/fast/multicol/vertical-rl/float-paginate-complex-expected.txt:
+
 2015-12-31  Zalan Bujtas  <zalan@apple.com>
 
         text-decoration: line-through is mispositioned when text has overline/underline too.
index 44b3f39..fc4664c 100644 (file)
@@ -62,4 +62,3 @@ layer at (0,-756) size 800x1356 backgroundClip at (0,0) size 800x1580 clip at (0
           text run at (0,20) width 754: "aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
           text run at (0,40) width 780: "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat"
           text run at (0,60) width 540: "cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-scrolled to 0,980
index af3352b..97d19eb 100644 (file)
@@ -198,4 +198,3 @@ layer at (0,0) size 4096x180 backgroundClip at (0,0) size 800x600 clip at (0,0)
           text run at (378,0) width 163: "culpa qui officia deserunt"
           text run at (398,0) width 113: "mollit anim id est"
           text run at (418,0) width 58: "laborum."
-scrolled to 0,580
index 62dc4f8..a583194 100644 (file)
@@ -198,4 +198,3 @@ layer at (-3296,0) size 4096x180 backgroundClip at (0,0) size 800x600 clip at (0
           text run at (378,0) width 163: "culpa qui officia deserunt"
           text run at (398,0) width 113: "mollit anim id est"
           text run at (418,0) width 58: "laborum."
-scrolled to 0,580
index 3c27d73..7e87827 100644 (file)
@@ -62,4 +62,3 @@ layer at (0,0) size 800x1356 backgroundClip at (0,0) size 800x600 clip at (0,0)
           text run at (0,20) width 754: "aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
           text run at (0,40) width 780: "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat"
           text run at (0,60) width 540: "cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-scrolled to 0,980
index 467f9d0..363e471 100644 (file)
@@ -198,4 +198,3 @@ layer at (0,-3500) size 180x4100 backgroundClip at (0,0) size 800x600 clip at (0
           text run at (0,360) width 163: "culpa qui officia deserunt"
           text run at (0,380) width 113: "mollit anim id est"
           text run at (0,400) width 58: "laborum."
-scrolled to 580,0
index fdbbd2d..aba31ba 100644 (file)
@@ -78,4 +78,3 @@ layer at (0,0) size 1696x600 backgroundClip at (0,0) size 800x600 clip at (0,0)
           text run at (78,0) width 526: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
           text run at (98,0) width 560: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit"
           text run at (118,0) width 132: "anim id est laborum."
-scrolled to 1180,0
index 77fa7b0..5666f3d 100644 (file)
@@ -78,4 +78,3 @@ layer at (-896,0) size 1696x600 backgroundClip at (0,0) size 1980x600 clip at (0
           text run at (78,0) width 526: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
           text run at (98,0) width 560: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit"
           text run at (118,0) width 132: "anim id est laborum."
-scrolled to 1180,0
index 77fa7b0..5666f3d 100644 (file)
@@ -78,4 +78,3 @@ layer at (-896,0) size 1696x600 backgroundClip at (0,0) size 1980x600 clip at (0
           text run at (78,0) width 526: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
           text run at (98,0) width 560: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit"
           text run at (118,0) width 132: "anim id est laborum."
-scrolled to 1180,0
index cab7a29..be64771 100644 (file)
@@ -198,4 +198,3 @@ layer at (0,0) size 180x4100 backgroundClip at (0,0) size 800x600 clip at (0,0)
           text run at (0,360) width 163: "culpa qui officia deserunt"
           text run at (0,380) width 113: "mollit anim id est"
           text run at (0,400) width 58: "laborum."
-scrolled to 580,0
index 225a0bd..5adbd61 100644 (file)
@@ -167,4 +167,3 @@ layer at (-499,13) size 840x279 backgroundClip at (0,0) size 892x600 clip at (0,
       RenderText {#text} at (400,0) size 19x113
         text run at (400,0) width 113: "This is some text."
       RenderBR {BR} at (415,112) size 0x1
-scrolled to 92,0
index 56b3149..f91d1b0 100644 (file)
@@ -135,4 +135,3 @@ layer at (-1733,23) size 2520x174 backgroundClip at (0,0) size 866x600 clip at (
       text run at (2460,0) width 130: "posuere dictum, leo."
       text run at (2480,0) width 154: "Suspendisse scelerisque"
       text run at (2500,0) width 87: "egestas nulla."
-scrolled to 66,0
index e8f2cb5..874decd 100644 (file)
@@ -262,4 +262,3 @@ layer at (-566,10) size 936x388 backgroundClip at (0,0) size 1680x1208 clip at (
       RenderText {#text} at (604,0) size 19x113
         text run at (604,0) width 113: "This is some text."
       RenderBR {BR} at (619,112) size 0x1
-scrolled to 880,0
index fcb17ed..61c5ad0 100644 (file)
@@ -1,3 +1,18 @@
+2015-12-31  Simon Fraser  <simon.fraser@apple.com>
+
+        [iOS WK2] Fix incorrect scrollPosition handling
+        https://bugs.webkit.org/show_bug.cgi?id=152630
+
+        Reviewed by Zalan Bujtas.
+
+        WebPage::updateVisibleContentRects() was setting the ScrollView's scroll position
+        to a scrollOffset, which was counteracted by ScrollView::unobscuredContentRect()
+        adding the scrollOrigin to the scrollPosition, which resulted in the correct
+        rects, but an incorrect scrollPosition. Fix.
+
+        * platform/ios/ScrollViewIOS.mm:
+        (WebCore::ScrollView::unobscuredContentRect):
+
 2015-12-31  David Kilzer  <ddkilzer@apple.com>
 
         Fix typo in FIXME comment
index 2aba23e..5251ea0 100644 (file)
@@ -107,10 +107,8 @@ IntRect ScrollView::unobscuredContentRect(VisibleContentRectIncludesScrollbars)
         return enclosingIntRect(r);
     }
 
-    if (!m_unobscuredContentSize.isEmpty()) {
-        // FIXME: This seems wrong but gives the right answer, probably because m_scrollPosition is wrong.
-        return IntRect(m_scrollPosition + scrollOrigin(), roundedIntSize(m_unobscuredContentSize));
-    }
+    if (!m_unobscuredContentSize.isEmpty())
+        return IntRect(m_scrollPosition, roundedIntSize(m_unobscuredContentSize));
 
     return unobscuredContentRectInternal();
 }
index 4c6c32c..894bb77 100644 (file)
@@ -1,3 +1,18 @@
+2015-12-31  Simon Fraser  <simon.fraser@apple.com>
+
+        [iOS WK2] Fix incorrect scrollPosition handling
+        https://bugs.webkit.org/show_bug.cgi?id=152630
+
+        Reviewed by Zalan Bujtas.
+        
+        WebPage::updateVisibleContentRects() was setting the ScrollView's scroll position
+        to a scrollOffset, which was counteracted by ScrollView::unobscuredContentRect()
+        adding the scrollOrigin to the scrollPosition, which resulted in the correct
+        rects, but an incorrect scrollPosition. Fix.
+
+        * WebProcess/WebPage/ios/WebPageIOS.mm:
+        (WebKit::WebPage::updateVisibleContentRects):
+
 2015-12-31  Michael Catanzaro  <mcatanzaro@igalia.com>
 
         Unreviewed, fix a log message
index fae27ad..11268f8 100644 (file)
@@ -2954,7 +2954,7 @@ void WebPage::updateVisibleContentRects(const VisibleContentRectUpdateInfo& visi
         frameView.setCustomSizeForResizeEvent(expandedIntSize(visibleContentRectUpdateInfo.unobscuredRectInScrollViewCoordinates().size()));
 
     frameView.setConstrainsScrollingToContentEdge(false);
-    frameView.setScrollOffset(scrollPosition);
+    frameView.setScrollOffset(frameView.scrollOffsetFromPosition(scrollPosition));
     frameView.setConstrainsScrollingToContentEdge(true);
 }