Title: [248772] trunk
Revision
248772
Author
an...@apple.com
Date
2019-08-16 08:48:03 -0700 (Fri, 16 Aug 2019)

Log Message

Content in <iframe> should override "touch-action" set in embedding document
https://bugs.webkit.org/show_bug.cgi?id=200204
<rdar://problem/54355249>

Reviewed by Antoine Quint.

Source/WebCore:

Test: pointerevents/ios/touch-action-region-frame.html

Subframes where content doesn't use any touch-action properties won't generate event region for their main layer.
As a result the touch-action property gets computed in UI process to the parent frames touch-action (instead of 'auto').

* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateEventRegion):

Generate event region for the main layer of subframes.

LayoutTests:

* pointerevents/ios/touch-action-region-frame-expected.txt: Added.
* pointerevents/ios/touch-action-region-frame.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (248771 => 248772)


--- trunk/LayoutTests/ChangeLog	2019-08-16 15:04:39 UTC (rev 248771)
+++ trunk/LayoutTests/ChangeLog	2019-08-16 15:48:03 UTC (rev 248772)
@@ -1,3 +1,14 @@
+2019-08-16  Antti Koivisto  <an...@apple.com>
+
+        Content in <iframe> should override "touch-action" set in embedding document
+        https://bugs.webkit.org/show_bug.cgi?id=200204
+        <rdar://problem/54355249>
+
+        Reviewed by Antoine Quint.
+
+        * pointerevents/ios/touch-action-region-frame-expected.txt: Added.
+        * pointerevents/ios/touch-action-region-frame.html: Added.
+
 2019-08-16  Chris Lord  <cl...@igalia.com>
 
         Update WebGL test expectations for WebKit WPE

Added: trunk/LayoutTests/pointerevents/ios/touch-action-region-frame-expected.txt (0 => 248772)


--- trunk/LayoutTests/pointerevents/ios/touch-action-region-frame-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/pointerevents/ios/touch-action-region-frame-expected.txt	2019-08-16 15:48:03 UTC (rev 248772)
@@ -0,0 +1,43 @@
+ 
+(GraphicsLayer
+  (anchor 0.00 0.00)
+  (bounds 300.00 1016.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 300.00 1016.00)
+      (drawsContent 1)
+      (event region
+        (rect (0,0) width=300 height=1016)
+      )
+      (children 1
+        (GraphicsLayer
+        )
+      )
+    )
+  )
+)
+(GraphicsLayer
+  (anchor 0.00 0.00)
+  (bounds 300.00 1016.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 300.00 1016.00)
+      (drawsContent 1)
+      (event region
+        (rect (0,0) width=300 height=1016)
+        (touch-action
+          (manipulation          
+            (rect (0,0) width=27 height=8)
+            (rect (0,8) width=292 height=11)
+            (rect (8,19) width=284 height=989)
+          )
+        )
+      )
+      (children 1
+        (GraphicsLayer
+        )
+      )
+    )
+  )
+)
+

Added: trunk/LayoutTests/pointerevents/ios/touch-action-region-frame.html (0 => 248772)


--- trunk/LayoutTests/pointerevents/ios/touch-action-region-frame.html	                        (rev 0)
+++ trunk/LayoutTests/pointerevents/ios/touch-action-region-frame.html	2019-08-16 15:48:03 UTC (rev 248772)
@@ -0,0 +1,28 @@
+<!DOCTYPE html> <!-- webkit-test-runner [ internal:AsyncOverflowScrollingEnabled=true internal:AsyncFrameScrollingEnabled=true ] -->
+<html>
+<style>
+body { touch-action: none; }
+</style>
+<body _onload_="test()">
+<iframe srcdoc="<body style='height:1000px'>Test</body>"></iframe>
+<iframe srcdoc="<body style='height:1000px;touch-action:manipulation'>Test</body>"></iframe>
+
+<pre id="results"></pre>
+<script>
+if (window.testRunner) {
+    testRunner.dumpAsText();
+    testRunner.waitUntilDone();
+}
+
+function test() {
+    if (!window.internals)
+        return;
+    for (const frame of document.querySelectorAll("iframe")) {
+        const doc = frame.contentDocument;
+        results.innerText += internals.layerTreeAsText(doc, internals.LAYER_TREE_INCLUDES_EVENT_REGION |  internals.LAYER_TREE_INCLUDES_ROOT_LAYER_PROPERTIES);
+    }
+    testRunner.notifyDone();
+}
+</script>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (248771 => 248772)


--- trunk/Source/WebCore/ChangeLog	2019-08-16 15:04:39 UTC (rev 248771)
+++ trunk/Source/WebCore/ChangeLog	2019-08-16 15:48:03 UTC (rev 248772)
@@ -1,3 +1,21 @@
+2019-08-16  Antti Koivisto  <an...@apple.com>
+
+        Content in <iframe> should override "touch-action" set in embedding document
+        https://bugs.webkit.org/show_bug.cgi?id=200204
+        <rdar://problem/54355249>
+
+        Reviewed by Antoine Quint.
+
+        Test: pointerevents/ios/touch-action-region-frame.html
+
+        Subframes where content doesn't use any touch-action properties won't generate event region for their main layer.
+        As a result the touch-action property gets computed in UI process to the parent frames touch-action (instead of 'auto').
+
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::updateEventRegion):
+
+        Generate event region for the main layer of subframes.
+
 2019-08-16  Miguel Gomez  <mago...@igalia.com>
 
         [GTK][WPE] Move TextureMapperAnimation to the nicosia namespace as Nicosia::Animation

Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (248771 => 248772)


--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2019-08-16 15:04:39 UTC (rev 248771)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2019-08-16 15:48:03 UTC (rev 248772)
@@ -1588,7 +1588,7 @@
 #if ENABLE(POINTER_EVENTS)
     hasTouchActionElements = renderer().document().mayHaveElementsWithNonAutoTouchAction();
 #endif
-    if (m_owningLayer.isRenderViewLayer() && !hasTouchActionElements)
+    if (m_isMainFrameRenderViewLayer && !hasTouchActionElements)
         return;
 
     GraphicsContext nullContext(nullptr);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to