From 25b39cb380a9aab3a33299249dbca1e1a964e162 Mon Sep 17 00:00:00 2001 From: Marco Castelluccio Date: Thu, 3 Oct 2019 03:52:15 +0000 Subject: [PATCH] Bug 1421384 - Inherit touch-action flags down in the compositor hit-test infos. r=miko Per the touch-action spec, the effective touch-action on an element includes touch-action restrictions from ancestor elements up to and including the element that has the "default action". This patch implements that behaviour so that WebRender gets correct touch-action values on its display items. MozReview-Commit-ID: Cw5uqAsE9qm UltraBlame original commit: 6659f392f4af0cef3cb4a5e19eef7e0e1b045f37 --- gfx/layers/apz/test/mochitest/mochitest.ini | 6 -- layout/generic/nsFrame.cpp | 63 +++++++++++++++++++++ layout/painting/nsDisplayList.h | 11 ++++ 3 files changed, 74 insertions(+), 6 deletions(-) diff --git a/gfx/layers/apz/test/mochitest/mochitest.ini b/gfx/layers/apz/test/mochitest/mochitest.ini index e7e755a959177..8ae954ee2ad57 100644 --- a/gfx/layers/apz/test/mochitest/mochitest.ini +++ b/gfx/layers/apz/test/mochitest/mochitest.ini @@ -361,9 +361,6 @@ skip - if = -webrender -| -| ( verify & @@ -380,9 +377,6 @@ win ' ) ) -# -bug -1424752 [ test_group_wheelevents . diff --git a/layout/generic/nsFrame.cpp b/layout/generic/nsFrame.cpp index 28da7baf75676..4d6299727a52e 100644 --- a/layout/generic/nsFrame.cpp +++ b/layout/generic/nsFrame.cpp @@ -52962,6 +52962,45 @@ eDispatchToContent ; } } +CompositorHitTestInfo +inheritedTouchAction += +CompositorHitTestInfo +: +: +eInvisibleToHitTest +; +if +( +nsDisplayCompositorHitTestInfo +* +parentInfo += +aBuilder +- +> +GetCompositorHitTestInfo +( +) +) +{ +inheritedTouchAction += +( +parentInfo +- +> +HitTestInfo +( +) +& +CompositorHitTestInfo +: +: +eTouchActionMask +) +; +} nsIFrame * touchActionFrame @@ -52990,7 +53029,31 @@ do_QueryFrame scrollFrame ) ; +CompositorHitTestInfo +panMask += +CompositorHitTestInfo +: +: +eTouchActionPanXDisabled +| +CompositorHitTestInfo +: +: +eTouchActionPanYDisabled +; +inheritedTouchAction +& += +~ +panMask +; } +result +| += +inheritedTouchAction +; const uint32_t touchAction diff --git a/layout/painting/nsDisplayList.h b/layout/painting/nsDisplayList.h index 30ca6ec1970dd..ca6d017e76b3b 100644 --- a/layout/painting/nsDisplayList.h +++ b/layout/painting/nsDisplayList.h @@ -2397,6 +2397,17 @@ mCompositorHitTestInfo aHitTestInfo ; } +nsDisplayCompositorHitTestInfo +* +GetCompositorHitTestInfo +( +) +const +{ +return +mCompositorHitTestInfo +; +} void BuildCompositorHitTestInfoIfNeeded (