Title: [243416] trunk
Revision
243416
Author
[email protected]
Date
2019-03-23 15:00:44 -0700 (Sat, 23 Mar 2019)

Log Message

REGRESSION (iOS 8): Scrollbar can't be hidden when webkit-overflow-scrolling is set to touch
https://bugs.webkit.org/show_bug.cgi?id=137043
rdar://problem/16595330

Reviewed by Zalan Bujtas.

Source/WebCore:

Plumb horizontalScrollbarHiddenByStyle/verticalScrollbarHiddenByStyle through ScrollableAreaParameters
to the UI process, and use it to set UIScrollView indicators visible or not.

Tests: fast/scrolling/ios/scrollbar-hiding.html:

* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::setScrollingNodeScrollableAreaGeometry):
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::operator<<):
* page/scrolling/ScrollingCoordinatorTypes.h:
* page/scrolling/ScrollingTreeNode.h:
* page/scrolling/ScrollingTreeOverflowScrollingNode.cpp:
(WebCore::ScrollingTreeOverflowScrollingNode::dumpProperties const):
* page/scrolling/ScrollingTreeScrollingNode.h:
* platform/ScrollableArea.h:
(WebCore::ScrollableArea::horizontalScrollbarHiddenByStyle const):
(WebCore::ScrollableArea::verticalScrollbarHiddenByStyle const):
* rendering/RenderLayer.cpp:
(WebCore::scrollbarHiddenByStyle):
(WebCore::RenderLayer::horizontalScrollbarHiddenByStyle const):
(WebCore::RenderLayer::verticalScrollbarHiddenByStyle const):
* rendering/RenderLayer.h:

Source/WebKit:

Plumb horizontalScrollbarHiddenByStyle/verticalScrollbarHiddenByStyle through ScrollableAreaParameters
to the UI process, and use it to set UIScrollView indicators visible or not.

The scroll snap changes in ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren() fix a bug
where hasChangedProperty(HorizontalSnapOffsets) was nested inside another set of hasChangedProperty()
tests, so would never get called.

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<ScrollableAreaParameters>::encode):
(IPC::ArgumentCoder<ScrollableAreaParameters>::decode):
* UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

LayoutTests:

Test that dumps the UI-side scrolling tree, showing e.g. "horizontal scrollbar hidden by style"
in the dump.

This test was previously a render tree dump, which did not test whether scrollbars were visible.

* fast/scrolling/ios/scrollbar-hiding-expected.txt:
* fast/scrolling/ios/scrollbar-hiding.html:
* platform/ios/fast/scrolling/ios/scrollbar-hiding-expected.txt: Removed.

Modified Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (243415 => 243416)


--- trunk/LayoutTests/ChangeLog	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/LayoutTests/ChangeLog	2019-03-23 22:00:44 UTC (rev 243416)
@@ -1,3 +1,20 @@
+2019-03-23  Simon Fraser  <[email protected]>
+
+        REGRESSION (iOS 8): Scrollbar can't be hidden when webkit-overflow-scrolling is set to touch
+        https://bugs.webkit.org/show_bug.cgi?id=137043
+        rdar://problem/16595330
+
+        Reviewed by Zalan Bujtas.
+
+        Test that dumps the UI-side scrolling tree, showing e.g. "horizontal scrollbar hidden by style"
+        in the dump.
+
+        This test was previously a render tree dump, which did not test whether scrollbars were visible.
+
+        * fast/scrolling/ios/scrollbar-hiding-expected.txt:
+        * fast/scrolling/ios/scrollbar-hiding.html:
+        * platform/ios/fast/scrolling/ios/scrollbar-hiding-expected.txt: Removed.
+
 2019-03-23  Zalan Bujtas  <[email protected]>
 
         [ContentChangeObserver] Taping on a form control should always result in click.

Modified: trunk/LayoutTests/fast/scrolling/ios/scrollbar-hiding-expected.txt (243415 => 243416)


--- trunk/LayoutTests/fast/scrolling/ios/scrollbar-hiding-expected.txt	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/LayoutTests/fast/scrolling/ios/scrollbar-hiding-expected.txt	2019-03-23 22:00:44 UTC (rev 243416)
@@ -1,141 +1,73 @@
-layer at (0,0) size 800x1600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x1600
-  RenderBlock {HTML} at (0,0) size 800x1600
-    RenderBody {BODY} at (8,8) size 784x1584
-      RenderBlock {DIV} at (0,0) size 442x392
-        RenderBlock {H2} at (0,19) size 442x31
-          RenderText {#text} at (0,1) size 50x28
-            text run at (0,1) width 50: "Both"
-      RenderText {#text} at (0,0) size 0x0
-      RenderBlock {DIV} at (0,396) size 442x392
-        RenderBlock {H2} at (0,19) size 442x31
-          RenderText {#text} at (0,1) size 155x28
-            text run at (0,1) width 155: "Just horizontal"
-      RenderText {#text} at (0,0) size 0x0
-      RenderBlock {DIV} at (0,792) size 442x392
-        RenderBlock {H2} at (0,19) size 442x31
-          RenderText {#text} at (0,1) size 126x28
-            text run at (0,1) width 126: "Just vertical"
-      RenderText {#text} at (0,0) size 0x0
-      RenderBlock {DIV} at (0,1188) size 442x392
-        RenderBlock {H2} at (0,19) size 442x31
-          RenderText {#text} at (0,1) size 125x28
-            text run at (0,1) width 125: "None visible"
-      RenderText {#text} at (0,0) size 0x0
-layer at (28,78) size 402x302 clip at (29,79) size 400x300 scrollWidth 600 scrollHeight 528
-  RenderBlock {DIV} at (20,69) size 402x303 [border: (1px solid #000000)]
-    RenderBlock {DIV} at (1,1) size 600x528
-      RenderText {#text} at (0,2) size 600x524
-        text run at (0,2) width 565: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
-        text run at (0,26) width 587: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
-        text run at (0,50) width 600: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
-        text run at (0,74) width 571: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
-        text run at (0,98) width 571: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt"
-        text run at (0,122) width 191: "mollit anim id est laborum. "
-        text run at (190,122) width 394: "Lorem ipsum dolor sit amet, consectetur adipisicing elit,"
-        text run at (0,146) width 560: "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad"
-        text run at (0,170) width 533: "minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea"
-        text run at (0,194) width 576: "commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse"
-        text run at (0,218) width 599: "cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,"
-        text run at (0,242) width 424: "sunt in culpa qui officia deserunt mollit anim id est laborum. "
-        text run at (423,242) width 154: "Lorem ipsum dolor sit"
-        text run at (0,266) width 564: "amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et"
-        text run at (0,290) width 577: "dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco"
-        text run at (0,314) width 511: "laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in"
-        text run at (0,338) width 591: "reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur"
-        text run at (0,362) width 592: "sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id"
-        text run at (0,386) width 93: "est laborum. "
-        text run at (92,386) width 447: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do"
-        text run at (0,410) width 555: "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim"
-        text run at (0,434) width 561: "veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo"
-        text run at (0,458) width 595: "consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore"
-        text run at (0,482) width 599: "eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa"
-        text run at (0,506) width 325: "qui officia deserunt mollit anim id est laborum."
-layer at (28,474) size 402x302 clip at (29,475) size 400x300 scrollWidth 600 scrollHeight 528
-  RenderBlock {DIV} at (20,69) size 402x303 [border: (1px solid #000000)]
-    RenderBlock {DIV} at (1,1) size 600x528
-      RenderText {#text} at (0,2) size 600x524
-        text run at (0,2) width 565: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
-        text run at (0,26) width 587: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
-        text run at (0,50) width 600: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
-        text run at (0,74) width 571: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
-        text run at (0,98) width 571: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt"
-        text run at (0,122) width 191: "mollit anim id est laborum. "
-        text run at (190,122) width 394: "Lorem ipsum dolor sit amet, consectetur adipisicing elit,"
-        text run at (0,146) width 560: "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad"
-        text run at (0,170) width 533: "minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea"
-        text run at (0,194) width 576: "commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse"
-        text run at (0,218) width 599: "cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,"
-        text run at (0,242) width 424: "sunt in culpa qui officia deserunt mollit anim id est laborum. "
-        text run at (423,242) width 154: "Lorem ipsum dolor sit"
-        text run at (0,266) width 564: "amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et"
-        text run at (0,290) width 577: "dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco"
-        text run at (0,314) width 511: "laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in"
-        text run at (0,338) width 591: "reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur"
-        text run at (0,362) width 592: "sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id"
-        text run at (0,386) width 93: "est laborum. "
-        text run at (92,386) width 447: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do"
-        text run at (0,410) width 555: "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim"
-        text run at (0,434) width 561: "veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo"
-        text run at (0,458) width 595: "consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore"
-        text run at (0,482) width 599: "eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa"
-        text run at (0,506) width 325: "qui officia deserunt mollit anim id est laborum."
-layer at (28,870) size 402x302 clip at (29,871) size 400x300 scrollWidth 600 scrollHeight 528
-  RenderBlock {DIV} at (20,69) size 402x303 [border: (1px solid #000000)]
-    RenderBlock {DIV} at (1,1) size 600x528
-      RenderText {#text} at (0,2) size 600x524
-        text run at (0,2) width 565: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
-        text run at (0,26) width 587: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
-        text run at (0,50) width 600: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
-        text run at (0,74) width 571: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
-        text run at (0,98) width 571: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt"
-        text run at (0,122) width 191: "mollit anim id est laborum. "
-        text run at (190,122) width 394: "Lorem ipsum dolor sit amet, consectetur adipisicing elit,"
-        text run at (0,146) width 560: "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad"
-        text run at (0,170) width 533: "minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea"
-        text run at (0,194) width 576: "commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse"
-        text run at (0,218) width 599: "cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,"
-        text run at (0,242) width 424: "sunt in culpa qui officia deserunt mollit anim id est laborum. "
-        text run at (423,242) width 154: "Lorem ipsum dolor sit"
-        text run at (0,266) width 564: "amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et"
-        text run at (0,290) width 577: "dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco"
-        text run at (0,314) width 511: "laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in"
-        text run at (0,338) width 591: "reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur"
-        text run at (0,362) width 592: "sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id"
-        text run at (0,386) width 93: "est laborum. "
-        text run at (92,386) width 447: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do"
-        text run at (0,410) width 555: "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim"
-        text run at (0,434) width 561: "veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo"
-        text run at (0,458) width 595: "consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore"
-        text run at (0,482) width 599: "eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa"
-        text run at (0,506) width 325: "qui officia deserunt mollit anim id est laborum."
-layer at (28,1266) size 402x302 clip at (29,1267) size 400x300 scrollWidth 600 scrollHeight 528
-  RenderBlock {DIV} at (20,69) size 402x303 [border: (1px solid #000000)]
-    RenderBlock {DIV} at (1,1) size 600x528
-      RenderText {#text} at (0,2) size 600x524
-        text run at (0,2) width 565: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
-        text run at (0,26) width 587: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
-        text run at (0,50) width 600: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
-        text run at (0,74) width 571: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
-        text run at (0,98) width 571: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt"
-        text run at (0,122) width 191: "mollit anim id est laborum. "
-        text run at (190,122) width 394: "Lorem ipsum dolor sit amet, consectetur adipisicing elit,"
-        text run at (0,146) width 560: "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad"
-        text run at (0,170) width 533: "minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea"
-        text run at (0,194) width 576: "commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse"
-        text run at (0,218) width 599: "cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,"
-        text run at (0,242) width 424: "sunt in culpa qui officia deserunt mollit anim id est laborum. "
-        text run at (423,242) width 154: "Lorem ipsum dolor sit"
-        text run at (0,266) width 564: "amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et"
-        text run at (0,290) width 577: "dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco"
-        text run at (0,314) width 511: "laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in"
-        text run at (0,338) width 591: "reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur"
-        text run at (0,362) width 592: "sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id"
-        text run at (0,386) width 93: "est laborum. "
-        text run at (92,386) width 447: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do"
-        text run at (0,410) width 555: "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim"
-        text run at (0,434) width 561: "veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo"
-        text run at (0,458) width 595: "consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore"
-        text run at (0,482) width 599: "eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa"
-        text run at (0,506) width 325: "qui officia deserunt mollit anim id est laborum."
+Both
+
+ 
+Just horizontal
+
+ 
+Just vertical
+
+None visible
+
+ 
+(scrolling tree
+  (frame scrolling node
+    (scrollable area size width=800 height=600)
+    (total content size width=800 height=600)
+    (last committed scroll position (0,0))
+    (scrollable area parameters 
+      (horizontal scroll elasticity 1)
+      (vertical scroll elasticity 1)
+      (horizontal scrollbar mode 0)
+      (vertical scrollbar mode 0))
+    (layout viewport (0,0) width=800 height=600)
+    (min layoutViewport origin (0,0))
+    (max layoutViewport origin (0,0))
+    (behavior for fixed 0)
+    (overflow scrolling node
+      (scrollable area size width=200 height=100)
+      (total content size width=400 height=200)
+      (last committed scroll position (0,0))
+      (scrollable area parameters 
+        (horizontal scroll elasticity 1)
+        (vertical scroll elasticity 1)
+        (horizontal scrollbar mode 0)
+        (vertical scrollbar mode 0)
+        (has enabled horizontal scrollbar 1)
+        (has enabled vertical scrollbar 1)))
+    (overflow scrolling node
+      (scrollable area size width=200 height=100)
+      (total content size width=400 height=200)
+      (last committed scroll position (0,0))
+      (scrollable area parameters 
+        (horizontal scroll elasticity 1)
+        (vertical scroll elasticity 1)
+        (horizontal scrollbar mode 0)
+        (vertical scrollbar mode 0)
+        (has enabled horizontal scrollbar 1)
+        (has enabled vertical scrollbar 1)
+        (vertical scrollbar hidden by style 1)))
+    (overflow scrolling node
+      (scrollable area size width=200 height=100)
+      (total content size width=400 height=200)
+      (last committed scroll position (0,0))
+      (scrollable area parameters 
+        (horizontal scroll elasticity 1)
+        (vertical scroll elasticity 1)
+        (horizontal scrollbar mode 0)
+        (vertical scrollbar mode 0)
+        (has enabled horizontal scrollbar 1)
+        (has enabled vertical scrollbar 1)
+        (horizontal scrollbar hidden by style 1)))
+    (overflow scrolling node
+      (scrollable area size width=200 height=100)
+      (total content size width=400 height=200)
+      (last committed scroll position (0,0))
+      (scrollable area parameters 
+        (horizontal scroll elasticity 1)
+        (vertical scroll elasticity 1)
+        (horizontal scrollbar mode 0)
+        (vertical scrollbar mode 0)
+        (has enabled horizontal scrollbar 1)
+        (has enabled vertical scrollbar 1)
+        (horizontal scrollbar hidden by style 1)
+        (vertical scrollbar hidden by style 1)))))

Modified: trunk/LayoutTests/fast/scrolling/ios/scrollbar-hiding.html (243415 => 243416)


--- trunk/LayoutTests/fast/scrolling/ios/scrollbar-hiding.html	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/LayoutTests/fast/scrolling/ios/scrollbar-hiding.html	2019-03-23 22:00:44 UTC (rev 243416)
@@ -1,105 +1,109 @@
 <!DOCTYPE html> <!-- webkit-test-runner [ internal:AsyncOverflowScrollingEnabled=true ] -->
 <html>
 <head>
-  <style type="text/css" media="screen">
+    <style>
+        ::-webkit-scrollbar {
+            width: 16px;
+            height: 16px;
+            background-color: silver;
+        }
 
-    ::-webkit-scrollbar {
-        width: 16px;
-        height: 16px;
-        background-color: silver;
-    }
+        ::-webkit-scrollbar-track {
+            -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
+            border-radius: 10px;
+        }
 
-    ::-webkit-scrollbar-track {
-        -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
-        border-radius: 10px;
-    }
+        ::-webkit-scrollbar-thumb {
+            border-radius: 10px;
+            -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
+        }
 
-    ::-webkit-scrollbar-thumb {
-        border-radius: 10px;
-        -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
-    }
-    
-    .container {
-      display: inline-block;
-    }
+        .container {
+            display: inline-block;
+        }
 
-    .overflowing {
-      margin: 20px;
-      font-family: Helvetica;
-      line-height: 150%;
-      height: 300px;
-      width: 400px;
-      border: 1px solid black;
-      overflow: scroll;
-      -webkit-overflow-scrolling: touch;
-    }
-    
-    .contents {
-      width: 150%;
-    }
-    
-    ::-webkit-scrollbar {
-      display: none;
-    }
-    
-    .vertical::-webkit-scrollbar:vertical {
-      display: block;
-    }
+        .overflowing {
+            margin: 20px;
+            height: 100px;
+            width: 200px;
+            border: 1px solid black;
+            overflow: scroll;
+            -webkit-overflow-scrolling: touch;
+        }
 
-    .horizontal::-webkit-scrollbar:horizontal {
-      display: block;
-    }
-    
-  </style>
+        .contents {
+            width: 200%;
+            height: 200%;
+        }
+
+        ::-webkit-scrollbar {
+            display: none;
+        }
+
+        .vertical::-webkit-scrollbar:vertical {
+            display: block;
+        }
+
+        .horizontal::-webkit-scrollbar:horizontal {
+            display: block;
+        }
+    </style>
+    <script>
+        if (window.testRunner) {
+            testRunner.waitUntilDone();
+            testRunner.dumpAsText();
+        }
+
+        function getScrollingTreeUIScript(x, y)
+        {
+            return `(function() {
+                return uiController.scrollingTreeAsText;
+            })();`;
+        }
+
+        function doTest()
+        {
+            if (!testRunner.runUIScript)
+                return
+
+            testRunner.runUIScript(getScrollingTreeUIScript(), function(scrollingTree) {
+                document.getElementById('scrolling-tree').textContent = scrollingTree;
+                testRunner.notifyDone();
+            });
+        }
+        
+        window.addEventListener('load', doTest, false);
+    </script>
 </head>
 <body>
-
   <div class="container">
     <h2>Both</h2>
     <div class="overflowing accelerated horizontal vertical">
       <div class="contents">
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
       </div>
     </div>
   </div>
-
   <div class="container">
     <h2>Just horizontal</h2>
     <div class="overflowing accelerated horizontal">
       <div class="contents">
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
       </div>
     </div>
   </div>
-
   <div class="container">
     <h2>Just vertical</h2>
     <div class="overflowing accelerated vertical">
       <div class="contents">
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
       </div>
     </div>
   </div>
-
   <div class="container">
     <h2>None visible</h2>
     <div class="overflowing accelerated">
       <div class="contents">
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
       </div>
     </div>
   </div>
+<pre id="scrolling-tree"></pre>
 </body>
 </html>

Deleted: trunk/LayoutTests/platform/ios/fast/scrolling/ios/scrollbar-hiding-expected.txt (243415 => 243416)


--- trunk/LayoutTests/platform/ios/fast/scrolling/ios/scrollbar-hiding-expected.txt	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/LayoutTests/platform/ios/fast/scrolling/ios/scrollbar-hiding-expected.txt	2019-03-23 22:00:44 UTC (rev 243416)
@@ -1,141 +0,0 @@
-layer at (0,0) size 800x1600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x1600
-  RenderBlock {HTML} at (0,0) size 800x1600
-    RenderBody {BODY} at (8,8) size 784x1584
-      RenderBlock {DIV} at (0,0) size 442x392
-        RenderBlock {H2} at (0,19) size 442x31
-          RenderText {#text} at (0,1) size 50x28
-            text run at (0,1) width 50: "Both"
-      RenderText {#text} at (0,0) size 0x0
-      RenderBlock {DIV} at (0,396) size 442x392
-        RenderBlock {H2} at (0,19) size 442x31
-          RenderText {#text} at (0,1) size 155x28
-            text run at (0,1) width 155: "Just horizontal"
-      RenderText {#text} at (0,0) size 0x0
-      RenderBlock {DIV} at (0,792) size 442x392
-        RenderBlock {H2} at (0,19) size 442x31
-          RenderText {#text} at (0,1) size 126x28
-            text run at (0,1) width 126: "Just vertical"
-      RenderText {#text} at (0,0) size 0x0
-      RenderBlock {DIV} at (0,1188) size 442x392
-        RenderBlock {H2} at (0,19) size 442x31
-          RenderText {#text} at (0,1) size 125x28
-            text run at (0,1) width 125: "None visible"
-      RenderText {#text} at (0,0) size 0x0
-layer at (28,78) size 402x302 clip at (29,79) size 400x300 scrollWidth 600 scrollHeight 528
-  RenderBlock {DIV} at (20,69) size 402x303 [border: (1px solid #000000)]
-    RenderBlock {DIV} at (1,1) size 600x528
-      RenderText {#text} at (0,2) size 600x524
-        text run at (0,2) width 565: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
-        text run at (0,26) width 587: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
-        text run at (0,50) width 600: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
-        text run at (0,74) width 571: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
-        text run at (0,98) width 571: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt"
-        text run at (0,122) width 191: "mollit anim id est laborum. "
-        text run at (190,122) width 394: "Lorem ipsum dolor sit amet, consectetur adipisicing elit,"
-        text run at (0,146) width 560: "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad"
-        text run at (0,170) width 533: "minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea"
-        text run at (0,194) width 576: "commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse"
-        text run at (0,218) width 598: "cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,"
-        text run at (0,242) width 424: "sunt in culpa qui officia deserunt mollit anim id est laborum. "
-        text run at (423,242) width 154: "Lorem ipsum dolor sit"
-        text run at (0,266) width 564: "amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et"
-        text run at (0,290) width 577: "dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco"
-        text run at (0,314) width 511: "laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in"
-        text run at (0,338) width 590: "reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur"
-        text run at (0,362) width 592: "sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id"
-        text run at (0,386) width 93: "est laborum. "
-        text run at (92,386) width 447: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do"
-        text run at (0,410) width 555: "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim"
-        text run at (0,434) width 561: "veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo"
-        text run at (0,458) width 595: "consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore"
-        text run at (0,482) width 598: "eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa"
-        text run at (0,506) width 325: "qui officia deserunt mollit anim id est laborum."
-layer at (28,474) size 402x302 clip at (29,475) size 400x300 scrollWidth 600 scrollHeight 528
-  RenderBlock {DIV} at (20,69) size 402x303 [border: (1px solid #000000)]
-    RenderBlock {DIV} at (1,1) size 600x528
-      RenderText {#text} at (0,2) size 600x524
-        text run at (0,2) width 565: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
-        text run at (0,26) width 587: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
-        text run at (0,50) width 600: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
-        text run at (0,74) width 571: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
-        text run at (0,98) width 571: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt"
-        text run at (0,122) width 191: "mollit anim id est laborum. "
-        text run at (190,122) width 394: "Lorem ipsum dolor sit amet, consectetur adipisicing elit,"
-        text run at (0,146) width 560: "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad"
-        text run at (0,170) width 533: "minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea"
-        text run at (0,194) width 576: "commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse"
-        text run at (0,218) width 598: "cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,"
-        text run at (0,242) width 424: "sunt in culpa qui officia deserunt mollit anim id est laborum. "
-        text run at (423,242) width 154: "Lorem ipsum dolor sit"
-        text run at (0,266) width 564: "amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et"
-        text run at (0,290) width 577: "dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco"
-        text run at (0,314) width 511: "laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in"
-        text run at (0,338) width 590: "reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur"
-        text run at (0,362) width 592: "sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id"
-        text run at (0,386) width 93: "est laborum. "
-        text run at (92,386) width 447: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do"
-        text run at (0,410) width 555: "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim"
-        text run at (0,434) width 561: "veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo"
-        text run at (0,458) width 595: "consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore"
-        text run at (0,482) width 598: "eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa"
-        text run at (0,506) width 325: "qui officia deserunt mollit anim id est laborum."
-layer at (28,870) size 402x302 clip at (29,871) size 400x300 scrollWidth 600 scrollHeight 528
-  RenderBlock {DIV} at (20,69) size 402x303 [border: (1px solid #000000)]
-    RenderBlock {DIV} at (1,1) size 600x528
-      RenderText {#text} at (0,2) size 600x524
-        text run at (0,2) width 565: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
-        text run at (0,26) width 587: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
-        text run at (0,50) width 600: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
-        text run at (0,74) width 571: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
-        text run at (0,98) width 571: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt"
-        text run at (0,122) width 191: "mollit anim id est laborum. "
-        text run at (190,122) width 394: "Lorem ipsum dolor sit amet, consectetur adipisicing elit,"
-        text run at (0,146) width 560: "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad"
-        text run at (0,170) width 533: "minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea"
-        text run at (0,194) width 576: "commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse"
-        text run at (0,218) width 598: "cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,"
-        text run at (0,242) width 424: "sunt in culpa qui officia deserunt mollit anim id est laborum. "
-        text run at (423,242) width 154: "Lorem ipsum dolor sit"
-        text run at (0,266) width 564: "amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et"
-        text run at (0,290) width 577: "dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco"
-        text run at (0,314) width 511: "laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in"
-        text run at (0,338) width 590: "reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur"
-        text run at (0,362) width 592: "sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id"
-        text run at (0,386) width 93: "est laborum. "
-        text run at (92,386) width 447: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do"
-        text run at (0,410) width 555: "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim"
-        text run at (0,434) width 561: "veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo"
-        text run at (0,458) width 595: "consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore"
-        text run at (0,482) width 598: "eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa"
-        text run at (0,506) width 325: "qui officia deserunt mollit anim id est laborum."
-layer at (28,1266) size 402x302 clip at (29,1267) size 400x300 scrollWidth 600 scrollHeight 528
-  RenderBlock {DIV} at (20,69) size 402x303 [border: (1px solid #000000)]
-    RenderBlock {DIV} at (1,1) size 600x528
-      RenderText {#text} at (0,2) size 600x524
-        text run at (0,2) width 565: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
-        text run at (0,26) width 587: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
-        text run at (0,50) width 600: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
-        text run at (0,74) width 571: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
-        text run at (0,98) width 571: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt"
-        text run at (0,122) width 191: "mollit anim id est laborum. "
-        text run at (190,122) width 394: "Lorem ipsum dolor sit amet, consectetur adipisicing elit,"
-        text run at (0,146) width 560: "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad"
-        text run at (0,170) width 533: "minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea"
-        text run at (0,194) width 576: "commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse"
-        text run at (0,218) width 598: "cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,"
-        text run at (0,242) width 424: "sunt in culpa qui officia deserunt mollit anim id est laborum. "
-        text run at (423,242) width 154: "Lorem ipsum dolor sit"
-        text run at (0,266) width 564: "amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et"
-        text run at (0,290) width 577: "dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco"
-        text run at (0,314) width 511: "laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in"
-        text run at (0,338) width 590: "reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur"
-        text run at (0,362) width 592: "sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id"
-        text run at (0,386) width 93: "est laborum. "
-        text run at (92,386) width 447: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do"
-        text run at (0,410) width 555: "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim"
-        text run at (0,434) width 561: "veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo"
-        text run at (0,458) width 595: "consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore"
-        text run at (0,482) width 598: "eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa"
-        text run at (0,506) width 325: "qui officia deserunt mollit anim id est laborum."

Modified: trunk/Source/WebCore/ChangeLog (243415 => 243416)


--- trunk/Source/WebCore/ChangeLog	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/Source/WebCore/ChangeLog	2019-03-23 22:00:44 UTC (rev 243416)
@@ -1,3 +1,34 @@
+2019-03-23  Simon Fraser  <[email protected]>
+
+        REGRESSION (iOS 8): Scrollbar can't be hidden when webkit-overflow-scrolling is set to touch
+        https://bugs.webkit.org/show_bug.cgi?id=137043
+        rdar://problem/16595330
+
+        Reviewed by Zalan Bujtas.
+
+        Plumb horizontalScrollbarHiddenByStyle/verticalScrollbarHiddenByStyle through ScrollableAreaParameters
+        to the UI process, and use it to set UIScrollView indicators visible or not.
+
+        Tests: fast/scrolling/ios/scrollbar-hiding.html:
+
+        * page/scrolling/AsyncScrollingCoordinator.cpp:
+        (WebCore::AsyncScrollingCoordinator::setScrollingNodeScrollableAreaGeometry):
+        * page/scrolling/ScrollingCoordinator.cpp:
+        (WebCore::operator<<):
+        * page/scrolling/ScrollingCoordinatorTypes.h:
+        * page/scrolling/ScrollingTreeNode.h:
+        * page/scrolling/ScrollingTreeOverflowScrollingNode.cpp:
+        (WebCore::ScrollingTreeOverflowScrollingNode::dumpProperties const):
+        * page/scrolling/ScrollingTreeScrollingNode.h:
+        * platform/ScrollableArea.h:
+        (WebCore::ScrollableArea::horizontalScrollbarHiddenByStyle const):
+        (WebCore::ScrollableArea::verticalScrollbarHiddenByStyle const):
+        * rendering/RenderLayer.cpp:
+        (WebCore::scrollbarHiddenByStyle):
+        (WebCore::RenderLayer::horizontalScrollbarHiddenByStyle const):
+        (WebCore::RenderLayer::verticalScrollbarHiddenByStyle const):
+        * rendering/RenderLayer.h:
+
 2019-03-23  Zalan Bujtas  <[email protected]>
 
         [ContentChangeObserver] Add support for observing opacity.

Modified: trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp (243415 => 243416)


--- trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp	2019-03-23 22:00:44 UTC (rev 243416)
@@ -653,6 +653,8 @@
     scrollParameters.hasEnabledVerticalScrollbar = verticalScrollbar && verticalScrollbar->enabled();
     scrollParameters.horizontalScrollbarMode = scrollableArea.horizontalScrollbarMode();
     scrollParameters.verticalScrollbarMode = scrollableArea.verticalScrollbarMode();
+    scrollParameters.horizontalScrollbarHiddenByStyle = scrollableArea.horizontalScrollbarHiddenByStyle();
+    scrollParameters.verticalScrollbarHiddenByStyle = scrollableArea.verticalScrollbarHiddenByStyle();
     scrollParameters.useDarkAppearanceForScrollbars = scrollableArea.useDarkAppearanceForScrollbars();
 
     scrollingNode.setScrollableAreaParameters(scrollParameters);

Modified: trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp (243415 => 243416)


--- trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp	2019-03-23 22:00:44 UTC (rev 243416)
@@ -435,11 +435,17 @@
     ts.dumpProperty("vertical scroll elasticity", scrollableAreaParameters.verticalScrollElasticity);
     ts.dumpProperty("horizontal scrollbar mode", scrollableAreaParameters.horizontalScrollbarMode);
     ts.dumpProperty("vertical scrollbar mode", scrollableAreaParameters.verticalScrollbarMode);
+
     if (scrollableAreaParameters.hasEnabledHorizontalScrollbar)
         ts.dumpProperty("has enabled horizontal scrollbar", scrollableAreaParameters.hasEnabledHorizontalScrollbar);
     if (scrollableAreaParameters.hasEnabledVerticalScrollbar)
         ts.dumpProperty("has enabled vertical scrollbar", scrollableAreaParameters.hasEnabledVerticalScrollbar);
 
+    if (scrollableAreaParameters.horizontalScrollbarHiddenByStyle)
+        ts.dumpProperty("horizontal scrollbar hidden by style", scrollableAreaParameters.horizontalScrollbarHiddenByStyle);
+    if (scrollableAreaParameters.verticalScrollbarHiddenByStyle)
+        ts.dumpProperty("vertical scrollbar hidden by style", scrollableAreaParameters.verticalScrollbarHiddenByStyle);
+
     return ts;
 }
 

Modified: trunk/Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.h (243415 => 243416)


--- trunk/Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.h	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.h	2019-03-23 22:00:44 UTC (rev 243416)
@@ -66,6 +66,9 @@
     bool hasEnabledHorizontalScrollbar { false };
     bool hasEnabledVerticalScrollbar { false };
 
+    bool horizontalScrollbarHiddenByStyle { false };
+    bool verticalScrollbarHiddenByStyle { false };
+
     bool useDarkAppearanceForScrollbars { false };
 
     bool operator==(const ScrollableAreaParameters& other) const

Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.h (243415 => 243416)


--- trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.h	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.h	2019-03-23 22:00:44 UTC (rev 243416)
@@ -41,7 +41,7 @@
 class ScrollingTreeFrameScrollingNode;
 class ScrollingTreeScrollingNode;
 
-class ScrollingTreeNode : public RefCounted<ScrollingTreeNode> {
+class ScrollingTreeNode : public ThreadSafeRefCounted<ScrollingTreeNode> {
     friend class ScrollingTree;
 public:
     virtual ~ScrollingTreeNode();

Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeOverflowScrollingNode.cpp (243415 => 243416)


--- trunk/Source/WebCore/page/scrolling/ScrollingTreeOverflowScrollingNode.cpp	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeOverflowScrollingNode.cpp	2019-03-23 22:00:44 UTC (rev 243416)
@@ -43,7 +43,7 @@
 void ScrollingTreeOverflowScrollingNode::dumpProperties(TextStream& ts, ScrollingStateTreeAsTextBehavior behavior) const
 {
     ts << "overflow scrolling node";
-    ScrollingTreeNode::dumpProperties(ts, behavior);
+    ScrollingTreeScrollingNode::dumpProperties(ts, behavior);
 }
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h (243415 => 243416)


--- trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h	2019-03-23 22:00:44 UTC (rev 243416)
@@ -65,6 +65,9 @@
     const FloatSize& scrollableAreaSize() const { return m_scrollableAreaSize; }
     const FloatSize& totalContentsSize() const { return m_totalContentsSize; }
 
+    bool horizontalScrollbarHiddenByStyle() const { return m_scrollableAreaParameters.horizontalScrollbarHiddenByStyle; }
+    bool verticalScrollbarHiddenByStyle() const { return m_scrollableAreaParameters.verticalScrollbarHiddenByStyle; }
+
 #if ENABLE(CSS_SCROLL_SNAP)
     const Vector<float>& horizontalSnapOffsets() const { return m_snapOffsetsInfo.horizontalSnapOffsets; }
     const Vector<float>& verticalSnapOffsets() const { return m_snapOffsetsInfo.verticalSnapOffsets; }

Modified: trunk/Source/WebCore/platform/ScrollableArea.h (243415 => 243416)


--- trunk/Source/WebCore/platform/ScrollableArea.h	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/Source/WebCore/platform/ScrollableArea.h	2019-03-23 22:00:44 UTC (rev 243416)
@@ -110,6 +110,9 @@
     virtual ScrollbarMode horizontalScrollbarMode() const { return ScrollbarAuto; }
     virtual ScrollbarMode verticalScrollbarMode() const { return ScrollbarAuto; }
 
+    virtual bool horizontalScrollbarHiddenByStyle() const { return false; }
+    virtual bool verticalScrollbarHiddenByStyle() const { return false; }
+
     bool inLiveResize() const { return m_inLiveResize; }
     WEBCORE_EXPORT virtual void willStartLiveResize();
     WEBCORE_EXPORT virtual void willEndLiveResize();

Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (243415 => 243416)


--- trunk/Source/WebCore/rendering/RenderLayer.cpp	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp	2019-03-23 22:00:44 UTC (rev 243416)
@@ -3119,6 +3119,26 @@
         m_resizer->repaintRectangle(rect);
 }
 
+static bool scrollbarHiddenByStyle(Scrollbar* scrollbar)
+{
+    if (!scrollbar || !scrollbar->isCustomScrollbar())
+        return false;
+
+    std::unique_ptr<RenderStyle> scrollbarStyle = static_cast<RenderScrollbar*>(scrollbar)->getScrollbarPseudoStyle(ScrollbarBGPart, PseudoId::Scrollbar);
+
+    return scrollbarStyle && scrollbarStyle->display() == DisplayType::None;
+}
+
+bool RenderLayer::horizontalScrollbarHiddenByStyle() const
+{
+    return scrollbarHiddenByStyle(horizontalScrollbar());
+}
+
+bool RenderLayer::verticalScrollbarHiddenByStyle() const
+{
+    return scrollbarHiddenByStyle(verticalScrollbar());
+}
+
 static inline RenderElement* rendererForScrollbar(RenderLayerModelObject& renderer)
 {
     if (Element* element = renderer.element()) {

Modified: trunk/Source/WebCore/rendering/RenderLayer.h (243415 => 243416)


--- trunk/Source/WebCore/rendering/RenderLayer.h	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/Source/WebCore/rendering/RenderLayer.h	2019-03-23 22:00:44 UTC (rev 243416)
@@ -438,6 +438,9 @@
     bool hasHorizontalScrollbar() const { return horizontalScrollbar(); }
     bool hasVerticalScrollbar() const { return verticalScrollbar(); }
 
+    bool horizontalScrollbarHiddenByStyle() const override;
+    bool verticalScrollbarHiddenByStyle() const override;
+
     // ScrollableArea overrides
     ScrollPosition scrollPosition() const override { return m_scrollPosition; }
 
@@ -444,6 +447,7 @@
     Scrollbar* horizontalScrollbar() const override { return m_hBar.get(); }
     Scrollbar* verticalScrollbar() const override { return m_vBar.get(); }
     ScrollableArea* enclosingScrollableArea() const override;
+
     bool isScrollableOrRubberbandable() override;
     bool hasScrollableOrRubberbandableAncestor() override;
     bool useDarkAppearance() const final;

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (243415 => 243416)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2019-03-23 22:00:44 UTC (rev 243416)
@@ -4428,22 +4428,13 @@
     m_chromeClient.updateViewportConstrainedLayers(layerMap, { });
 }
 
-static bool scrollbarHasDisplayNone(Scrollbar* scrollbar)
-{
-    if (!scrollbar || !scrollbar->isCustomScrollbar())
-        return false;
-
-    std::unique_ptr<RenderStyle> scrollbarStyle = static_cast<RenderScrollbar*>(scrollbar)->getScrollbarPseudoStyle(ScrollbarBGPart, PseudoId::Scrollbar);
-    return scrollbarStyle && scrollbarStyle->display() == DisplayType::None;
-}
-
 void LegacyWebKitScrollingLayerCoordinator::updateScrollingLayer(RenderLayer& layer)
 {
     auto* backing = layer.backing();
     ASSERT(backing);
 
-    bool allowHorizontalScrollbar = !scrollbarHasDisplayNone(layer.horizontalScrollbar());
-    bool allowVerticalScrollbar = !scrollbarHasDisplayNone(layer.verticalScrollbar());
+    bool allowHorizontalScrollbar = !layer.horizontalScrollbarHiddenByStyle();
+    bool allowVerticalScrollbar = !layer.verticalScrollbarHiddenByStyle();
     m_chromeClient.addOrUpdateScrollingLayer(layer.renderer().element(), backing->scrollContainerLayer()->platformLayer(), backing->scrolledContentsLayer()->platformLayer(),
         layer.reachableTotalContentsSize(), allowHorizontalScrollbar, allowVerticalScrollbar);
 }

Modified: trunk/Source/WebKit/ChangeLog (243415 => 243416)


--- trunk/Source/WebKit/ChangeLog	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/Source/WebKit/ChangeLog	2019-03-23 22:00:44 UTC (rev 243416)
@@ -1,3 +1,24 @@
+2019-03-23  Simon Fraser  <[email protected]>
+
+        REGRESSION (iOS 8): Scrollbar can't be hidden when webkit-overflow-scrolling is set to touch
+        https://bugs.webkit.org/show_bug.cgi?id=137043
+        rdar://problem/16595330
+
+        Reviewed by Zalan Bujtas.
+
+        Plumb horizontalScrollbarHiddenByStyle/verticalScrollbarHiddenByStyle through ScrollableAreaParameters
+        to the UI process, and use it to set UIScrollView indicators visible or not.
+        
+        The scroll snap changes in ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren() fix a bug
+        where hasChangedProperty(HorizontalSnapOffsets) was nested inside another set of hasChangedProperty()
+        tests, so would never get called.
+
+        * Shared/WebCoreArgumentCoders.cpp:
+        (IPC::ArgumentCoder<ScrollableAreaParameters>::encode):
+        (IPC::ArgumentCoder<ScrollableAreaParameters>::decode):
+        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
+        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):
+
 2019-03-23  Zalan Bujtas  <[email protected]>
 
         [ContentChangeObserver] Taping on a form control should always result in click.

Modified: trunk/Source/WebKit/Shared/WebCoreArgumentCoders.cpp (243415 => 243416)


--- trunk/Source/WebKit/Shared/WebCoreArgumentCoders.cpp	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/Source/WebKit/Shared/WebCoreArgumentCoders.cpp	2019-03-23 22:00:44 UTC (rev 243416)
@@ -2099,6 +2099,9 @@
     encoder << parameters.hasEnabledHorizontalScrollbar;
     encoder << parameters.hasEnabledVerticalScrollbar;
 
+    encoder << parameters.horizontalScrollbarHiddenByStyle;
+    encoder << parameters.verticalScrollbarHiddenByStyle;
+
     encoder << parameters.useDarkAppearanceForScrollbars;
 }
 
@@ -2119,6 +2122,11 @@
     if (!decoder.decode(params.hasEnabledVerticalScrollbar))
         return false;
 
+    if (!decoder.decode(params.horizontalScrollbarHiddenByStyle))
+        return false;
+    if (!decoder.decode(params.verticalScrollbarHiddenByStyle))
+        return false;
+
     if (!decoder.decode(params.useDarkAppearanceForScrollbars))
         return false;
 

Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm (243415 => 243416)


--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm	2019-03-23 21:07:51 UTC (rev 243415)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm	2019-03-23 22:00:44 UTC (rev 243416)
@@ -262,14 +262,31 @@
 
             scrollView.contentInset = insets;
         }
+        END_BLOCK_OBJC_EXCEPTIONS
+    }
 
 #if ENABLE(CSS_SCROLL_SNAP)
-        // FIXME: If only one axis snaps in 2D scrolling, the other axis will decelerate fast as well. Is this what we want?
-        if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::HorizontalSnapOffsets) || scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::VerticalSnapOffsets))
-            scrollView.decelerationRate = scrollingNode().horizontalSnapOffsets().size() || scrollingNode().verticalSnapOffsets().size() ? UIScrollViewDecelerationRateFast : UIScrollViewDecelerationRateNormal;
+    // FIXME: If only one axis snaps in 2D scrolling, the other axis will decelerate fast as well. Is this what we want?
+    if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::HorizontalSnapOffsets) || scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::VerticalSnapOffsets)) {
+        BEGIN_BLOCK_OBJC_EXCEPTIONS
+        UIScrollView *scrollView = (UIScrollView *)[scrollLayer() delegate];
+        ASSERT([scrollView isKindOfClass:[UIScrollView self]]);
+
+        scrollView.decelerationRate = scrollingNode().horizontalSnapOffsets().size() || scrollingNode().verticalSnapOffsets().size() ? UIScrollViewDecelerationRateFast : UIScrollViewDecelerationRateNormal;
 #endif
         END_BLOCK_OBJC_EXCEPTIONS
     }
+
+    if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollableAreaParams)) {
+        BEGIN_BLOCK_OBJC_EXCEPTIONS
+        UIScrollView *scrollView = (UIScrollView *)[scrollLayer() delegate];
+        ASSERT([scrollView isKindOfClass:[UIScrollView self]]);
+
+        [scrollView setShowsHorizontalScrollIndicator:!scrollingNode().horizontalScrollbarHiddenByStyle()];
+        [scrollView setShowsVerticalScrollIndicator:!scrollingNode().verticalScrollbarHiddenByStyle()];
+
+        END_BLOCK_OBJC_EXCEPTIONS
+    }
 }
 
 void ScrollingTreeScrollingNodeDelegateIOS::repositionScrollingLayers()
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to