position:fixed header, with <input> left:-10000px, disappears when document scrolled in a transform:scaled iframe
Reported by
joel@fullstory.com,
Apr 28 2016
|
||||||||
Issue descriptionUserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36 Example URL: Steps to reproduce the problem: 1. Open compositor_bug.html 2. Scroll the document in the iframe down a bit. 3. Watch the fixed header disappear What is the expected behavior? What went wrong? The following all seem to be required to reproduce the issue: - The header's position:fixed. - It contains an <input> with left:-10000px. - The whole document's contained in an iframe that's transform:scaled down. It renders properly if any of the above is not true. If you watch carefully, you can see what looks like some compositor tiling artifacts when the fixed header disappears. A rough hypothesis would be that the layer's getting thrown out because all of its children are "off-screen" (I haven't looked at the render-tree/layer code in a very long time, so this could be way off the mark). This works properly in Firefox and Safari. Since this works in Safari's WebKit, I'd tend to suspect the bits that have changed more in Chromium since the Blink fork, such as compositing. Does it occur on multiple sites: N/A Is it a problem with a plugin? No Did this work before? N/A Does this work in other browsers? Yes Chrome version: 50.0.2661.86 Channel: stable OS Version: OS X 10.11.4 Flash Version:
,
Apr 29 2016
Thanks for looking into this. I'm starting to fear it may be a GPU-specific issue. I was running on the previous stable release, but I just updated to 50.0.2661.94, and the issue still appears (see attached .mov). Note that I'm on a Late 2013 15" MacBook Pro with an nVidia GeForce GT 750M. This issue was reported to me by a customer who's also running Chrome/Mac, but unfortunately I don't have any information on his GPU.
,
Apr 30 2016
Thank you for providing more feedback. Adding requester "brajkumar@chromium.org" for another review and adding "Needs-Review" label for tracking. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
May 3 2016
,
May 10 2016
,
May 12 2016
I can confirm this is happening.
,
May 12 2016
Interesting enough, the issue happens only when input has left position that is < -3996px! I suspect this may be because CC thinks that the layer is outside of the region where it has to be painted. This can explain why it happens only when the page is scrolled.
,
May 12 2016
3996px is 4096px - 100px. While I don't believe the original repro I posted had anything precisely 100px wide, that still seems suspicious. Might that have some subtle interaction with the size of tiles, or an assumed maximum resolution? I haven't looked at the Chrome rendering code in ages, or I'd go look for that myself.
,
May 12 2016
It's probably the interest rect calculation being wrong. Will look. https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp&q=compositedlayermapping.cpp&sq=package:chromium&type=cs&l=2189
,
May 19 2016
It's not the interest rect.
,
May 19 2016
Take that back, it is the interest rect. If I adjust the kPixelDistanceToRecord constant, the magic left: padding value for the input changes.
,
May 19 2016
Fix in progress.
,
May 20 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/2ea2924dc159391166a1b42008f576a501e42ea3 commit 2ea2924dc159391166a1b42008f576a501e42ea3 Author: chrishtr <chrishtr@chromium.org> Date: Fri May 20 00:17:25 2016 Apply scroll offset and content box offset before recursing in mapAncestorToLocal The way mapAncestorToLocal works is to compute a localToAncestor transform, then invert it at the end. Thus the incremental pieces of the transforms must be applied bottom-up. Also clean up a few places where scrollOffset() is simpler to use than scrollPosition. BUG= 607565 Review-Url: https://codereview.chromium.org/1994203003 Cr-Commit-Position: refs/heads/master@{#394922} [modify] https://crrev.com/2ea2924dc159391166a1b42008f576a501e42ea3/third_party/WebKit/Source/core/dom/IntersectionObservation.cpp [modify] https://crrev.com/2ea2924dc159391166a1b42008f576a501e42ea3/third_party/WebKit/Source/core/layout/LayoutView.cpp [modify] https://crrev.com/2ea2924dc159391166a1b42008f576a501e42ea3/third_party/WebKit/Source/core/layout/MapCoordinatesTest.cpp
,
May 20 2016
,
May 20 2016
Thanks for fixing this so quickly! |
||||||||
►
Sign in to add a comment |
||||||||
Comment 1 by brajkumar@chromium.org
, Apr 29 2016Labels: Needs-Feedback
3.0 MB
3.0 MB Download