New issue
Advanced search Search tips

Issue 831591 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2018
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Self-painting PaintLayers underneath <foreignObject> do not scroll correctly

Reported by stephenl...@gmail.com, Apr 11 2018

Issue description

UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36

Steps to reproduce the problem:
1. Create a foreign object with a div that contains scrollable content.
2. Hover mouse cursor over and attempt to scroll with scroll wheel or by dragging the scroll bar

What is the expected behavior?
Scrollable content should be moved with mouse actions

What went wrong?
The self-painting paint layers seems to have fixed the visibility of foreign objects, through it has removed the interactivity.

Did this work before? Yes Unknown. Before 26th June 2017

Does this work in other browsers? Yes

Chrome version: 67  Channel: canary
OS Version: 10.0
Flash Version:
 
Owner: chrishtr@chromium.org
Status: Assigned (was: Unconfirmed)
To chrishtr@ for initial look.
Labels: -Pri-2 ReleaseBlock-Stable Target-67 FoundIn-67 Pri-1
Please add HTML with a self-contained testcase.
Attached html file for test case.
test.html
4.4 KB View Download
Thank you for filing the testcase. I have a fix in progress.
Project Member

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

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

commit b19cea8da334391dc1a51e2d386b10b25e354a69
Author: Chris Harrelson <chrishtr@chromium.org>
Date: Sat Apr 14 00:19:40 2018

[SPv175] Fix hittesting of <foreignObject> under non-identity SVG-related transform

If the SVG to border box transform or any other transform in SVG above <foreignObject>
is non-identity, then hit testing of the <foreignObject> and content below it is incorrect,
because it does not take into account such transforms.

Before SPv175 + <foreignObject> as stacking context, content underneath the
<foreignObject> did not paint with the correct sizing either, which hid this bug to
some extent.

To make this work requires a little bit of special-casing of foreignObject, because of
the quirk that its location offset is applied *after* transform, not before.

Bug:  820482 , 831591 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Ided2b46f2ea12dd61c254892f5fbabb821f6229e
Reviewed-on: https://chromium-review.googlesource.com/974568
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#550825}
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/transform-foreign-object-expected.txt
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/WebKit/LayoutTests/paint/invalidation/svg/transform-foreign-object-expected.txt
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/layout_object.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/layout_object.h
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/layout_svg_container.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object.h
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object_test.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/layout_svg_resource_clipper.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/svg_layout_support.h
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/paint/paint_layer.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/paint/paint_layer.h
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/paint/svg_foreign_object_painter.cc

Labels: Merge-Request-67
Project Member

Comment 8 by sheriffbot@chromium.org, Apr 15 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 9 by gov...@chromium.org, Apr 15 2018

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

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

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

commit 4e1b455c022b92eb15193fd74a353a91c9a12f55
Author: Chris Harrelson <chrishtr@chromium.org>
Date: Sun Apr 15 16:11:50 2018

[SPv175] Fix hittesting of <foreignObject> under non-identity SVG-related transform

If the SVG to border box transform or any other transform in SVG above <foreignObject>
is non-identity, then hit testing of the <foreignObject> and content below it is incorrect,
because it does not take into account such transforms.

Before SPv175 + <foreignObject> as stacking context, content underneath the
<foreignObject> did not paint with the correct sizing either, which hid this bug to
some extent.

To make this work requires a little bit of special-casing of foreignObject, because of
the quirk that its location offset is applied *after* transform, not before.

TBR=chrishtr@chromium.org

(cherry picked from commit b19cea8da334391dc1a51e2d386b10b25e354a69)

Bug:  820482 , 831591 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Ided2b46f2ea12dd61c254892f5fbabb821f6229e
Reviewed-on: https://chromium-review.googlesource.com/974568
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#550825}
Reviewed-on: https://chromium-review.googlesource.com/1012537
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/branch-heads/3396@{#11}
Cr-Branched-From: 9ef2aa869bc7bc0c089e255d698cca6e47d6b038-refs/heads/master@{#550428}
[modify] https://crrev.com/4e1b455c022b92eb15193fd74a353a91c9a12f55/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/transform-foreign-object-expected.txt
[modify] https://crrev.com/4e1b455c022b92eb15193fd74a353a91c9a12f55/third_party/WebKit/LayoutTests/paint/invalidation/svg/transform-foreign-object-expected.txt
[modify] https://crrev.com/4e1b455c022b92eb15193fd74a353a91c9a12f55/third_party/blink/renderer/core/layout/layout_object.cc
[modify] https://crrev.com/4e1b455c022b92eb15193fd74a353a91c9a12f55/third_party/blink/renderer/core/layout/layout_object.h
[modify] https://crrev.com/4e1b455c022b92eb15193fd74a353a91c9a12f55/third_party/blink/renderer/core/layout/svg/layout_svg_container.cc
[modify] https://crrev.com/4e1b455c022b92eb15193fd74a353a91c9a12f55/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object.cc
[modify] https://crrev.com/4e1b455c022b92eb15193fd74a353a91c9a12f55/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object.h
[modify] https://crrev.com/4e1b455c022b92eb15193fd74a353a91c9a12f55/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object_test.cc
[modify] https://crrev.com/4e1b455c022b92eb15193fd74a353a91c9a12f55/third_party/blink/renderer/core/layout/svg/layout_svg_resource_clipper.cc
[modify] https://crrev.com/4e1b455c022b92eb15193fd74a353a91c9a12f55/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc
[modify] https://crrev.com/4e1b455c022b92eb15193fd74a353a91c9a12f55/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc
[modify] https://crrev.com/4e1b455c022b92eb15193fd74a353a91c9a12f55/third_party/blink/renderer/core/layout/svg/svg_layout_support.h
[modify] https://crrev.com/4e1b455c022b92eb15193fd74a353a91c9a12f55/third_party/blink/renderer/core/paint/paint_layer.cc
[modify] https://crrev.com/4e1b455c022b92eb15193fd74a353a91c9a12f55/third_party/blink/renderer/core/paint/paint_layer.h
[modify] https://crrev.com/4e1b455c022b92eb15193fd74a353a91c9a12f55/third_party/blink/renderer/core/paint/svg_foreign_object_painter.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/+/b19cea8da334391dc1a51e2d386b10b25e354a69

commit b19cea8da334391dc1a51e2d386b10b25e354a69
Author: Chris Harrelson <chrishtr@chromium.org>
Date: Sat Apr 14 00:19:40 2018

[SPv175] Fix hittesting of <foreignObject> under non-identity SVG-related transform

If the SVG to border box transform or any other transform in SVG above <foreignObject>
is non-identity, then hit testing of the <foreignObject> and content below it is incorrect,
because it does not take into account such transforms.

Before SPv175 + <foreignObject> as stacking context, content underneath the
<foreignObject> did not paint with the correct sizing either, which hid this bug to
some extent.

To make this work requires a little bit of special-casing of foreignObject, because of
the quirk that its location offset is applied *after* transform, not before.

Bug:  820482 , 831591 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Ided2b46f2ea12dd61c254892f5fbabb821f6229e
Reviewed-on: https://chromium-review.googlesource.com/974568
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#550825}
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/transform-foreign-object-expected.txt
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/WebKit/LayoutTests/paint/invalidation/svg/transform-foreign-object-expected.txt
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/layout_object.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/layout_object.h
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/layout_svg_container.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object.h
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object_test.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/layout_svg_resource_clipper.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/layout/svg/svg_layout_support.h
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/paint/paint_layer.cc
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/paint/paint_layer.h
[modify] https://crrev.com/b19cea8da334391dc1a51e2d386b10b25e354a69/third_party/blink/renderer/core/paint/svg_foreign_object_painter.cc

Sign in to add a comment