New issue
Advanced search Search tips

Issue 832870 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Gesture events (click etc.) don't work on webcomponent buttons with 2+ transform (matrix3d) parents

Reported by stephend...@gmail.com, Apr 13 2018

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3394.0 Safari/537.36

Steps to reproduce the problem:
1. Navigate to: https://sdw.st/lib/cmpbug.html
2. Hover or click on the 'next image' chevron on the right middle.
3. 

What is the expected behavior?
Should turn brighter white on hover and go to next image on click.

What went wrong?
No input events reach the webcomponent or any children or parents.  Events bubble to body instead.

Did this work before? Yes 65.0.3318.2

Chrome version: 67.0.3394.0  Channel: stable
OS Version: OS X 10.13.4
Flash Version: 

Tracked this down and found a fix, reversing a single line change committed on Feb. 11:

Buttons in a div (and apparently all gesture events) don't work when multiple parent divs have CSS transform (translate, matrix3d) properties.  May also require use of webcomponents (Polymer 2.x) as a manual minimal example seemed to still work.  We also have a canvas with a complicated WebGL instance as an earlier sibling element with lower z-index, but that doesn't seem to be important.

First bad version:  65.0.3319.0, about Feb. 11, 2018

Problem version patches for that version:
https://chromium.googlesource.com/chromium/src/+log/58d68fdf783d7edde1c82a642e037464861f2787..83ed536e54e76adc0278a7c02046a68d31a975a7

Problem patch:
https://chromium.googlesource.com/chromium/src/+/83ed536e54e76adc0278a7c02046a68d31a975a7%5E%21/#F1

This, applied to chromium (i.e. blink) head, fixes the problem:

diff --git a/third_party/blink/renderer/core/paint/paint_layer.cc b/third_party/blink/renderer/core/paint/paint_layer.cc
index c71636c1530b..c30293db4a25 100644
--- a/third_party/blink/renderer/core/paint/paint_layer.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer.cc
@@ -1939,7 +1939,7 @@ PaintLayer* PaintLayer::HitTestLayer(
     // Make sure the parent's clip rects have been calculated.
     if (Parent()) {
       ClipRect clip_rect;
-      Clipper(PaintLayer::kUseGeometryMapper)
+      Clipper(PaintLayer::kDoNotUseGeometryMapper)
           .CalculateBackgroundClipRect(
               ClipRectsContext(root_layer,
 
Components: -UI Blink>HitTesting
Labels: -Pri-2 Pri-1
Owner: chrishtr@chromium.org
Status: Assigned (was: Unconfirmed)
Debugging now.
More reduced testcase attached.

The bug is related to contain:paint on one of the elements (<demo-slide-show> in the original testcase).


test.html
642 bytes View Download
There is a simple fix to this, working on it now.
Project Member

Comment 4 by bugdroid1@chromium.org, Apr 14 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f068aac65c4bec64dac4707bba14097ae1cf7cc7

commit f068aac65c4bec64dac4707bba14097ae1cf7cc7
Author: Chris Harrelson <chrishtr@chromium.org>
Date: Sat Apr 14 20:21:10 2018

[GM] Background clip rects should not include self-clip of layer_.

The non-GeometryMapper code path was already implemented in this way.

Bug:832870

Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: If85f93113b737a749658c274c6d6ab9afa408362
Reviewed-on: https://chromium-review.googlesource.com/1013399
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Reviewed-by: Xianzhu Wang <wangxianzhu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#550903}
[modify] https://crrev.com/f068aac65c4bec64dac4707bba14097ae1cf7cc7/third_party/blink/renderer/core/paint/paint_layer_clipper.cc
[modify] https://crrev.com/f068aac65c4bec64dac4707bba14097ae1cf7cc7/third_party/blink/renderer/core/paint/paint_layer_clipper.h
[modify] https://crrev.com/f068aac65c4bec64dac4707bba14097ae1cf7cc7/third_party/blink/renderer/core/paint/paint_layer_clipper_test.cc

Labels: Target-67 ReleaseBlock-Stable Merge-Request-67 OS-Android OS-Chrome OS-Linux OS-Windows
Project Member

Comment 6 by sheriffbot@chromium.org, Apr 16 2018

Labels: -Merge-Request-67 Merge-Approved-67 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M67. Please go ahead and merge the CL to branch 3396 manually. Please contact milestone owner if you have questions.
Owners: cmasso@(Android), cmasso@(iOS), kbleicher@(ChromeOS), govind@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 7 by gov...@chromium.org, Apr 16 2018

Pls merge your change to M67 branch 3396 by 4:00 PM PT todya, Monday (04/16/18) so we can pick it up for next M67 dev release. Thank you.

Comment 8 by gov...@chromium.org, Apr 16 2018

Cc: wangxianzhu@chromium.org
chrishtr@ is on vacation this week. 
wangxianzhu@, could you pls merge cl listed at #4 to M67 branch 3396?

Comment 9 by gov...@chromium.org, Apr 16 2018

Labels: M-67
Project Member

Comment 10 by bugdroid1@chromium.org, Apr 16 2018

Labels: -merge-approved-67 merge-merged-3396
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/242d4fd410f24029dbe0e09e49a2f63a782f53df

commit 242d4fd410f24029dbe0e09e49a2f63a782f53df
Author: Xianzhu Wang <wangxianzhu@chromium.org>
Date: Mon Apr 16 23:26:16 2018

[GM] Background clip rects should not include self-clip of layer_.

The non-GeometryMapper code path was already implemented in this way.

Bug:832870

TBR=chrishtr@chromium.org

(cherry picked from commit f068aac65c4bec64dac4707bba14097ae1cf7cc7)

Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: If85f93113b737a749658c274c6d6ab9afa408362
Reviewed-on: https://chromium-review.googlesource.com/1013399
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Reviewed-by: Xianzhu Wang <wangxianzhu@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#550903}
Reviewed-on: https://chromium-review.googlesource.com/1014604
Cr-Commit-Position: refs/branch-heads/3396@{#31}
Cr-Branched-From: 9ef2aa869bc7bc0c089e255d698cca6e47d6b038-refs/heads/master@{#550428}
[modify] https://crrev.com/242d4fd410f24029dbe0e09e49a2f63a782f53df/third_party/blink/renderer/core/paint/paint_layer_clipper.cc
[modify] https://crrev.com/242d4fd410f24029dbe0e09e49a2f63a782f53df/third_party/blink/renderer/core/paint/paint_layer_clipper.h
[modify] https://crrev.com/242d4fd410f24029dbe0e09e49a2f63a782f53df/third_party/blink/renderer/core/paint/paint_layer_clipper_test.cc

Status: Fixed (was: Assigned)
Project Member

Comment 12 by bugdroid1@chromium.org, Apr 17 2018

Labels: merge-merged-testbranch
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f068aac65c4bec64dac4707bba14097ae1cf7cc7

commit f068aac65c4bec64dac4707bba14097ae1cf7cc7
Author: Chris Harrelson <chrishtr@chromium.org>
Date: Sat Apr 14 20:21:10 2018

[GM] Background clip rects should not include self-clip of layer_.

The non-GeometryMapper code path was already implemented in this way.

Bug:832870

Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: If85f93113b737a749658c274c6d6ab9afa408362
Reviewed-on: https://chromium-review.googlesource.com/1013399
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Reviewed-by: Xianzhu Wang <wangxianzhu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#550903}
[modify] https://crrev.com/f068aac65c4bec64dac4707bba14097ae1cf7cc7/third_party/blink/renderer/core/paint/paint_layer_clipper.cc
[modify] https://crrev.com/f068aac65c4bec64dac4707bba14097ae1cf7cc7/third_party/blink/renderer/core/paint/paint_layer_clipper.h
[modify] https://crrev.com/f068aac65c4bec64dac4707bba14097ae1cf7cc7/third_party/blink/renderer/core/paint/paint_layer_clipper_test.cc

Sign in to add a comment