Regression: Tab list disappears after zoom action on chrome://history page.
Reported by
rk...@etouch.net,
Apr 7 2016
|
|||||||||||||||
Issue descriptionChrome Version: 51.0.2702.0 Revision 208b9d3c98bb3f1612ecc7c5e4abe49f8ea75210-refs/heads/master@{#385602}(32/64 bit) OS: All(Win-7 Aero Enabled) What steps will reproduce the problem? (1) Launch chrome,navigate to chrome://history and zooming page upto 300%(Horizontal scroll will appear) (2) Drag the scroll to right side and reset page by pressing Ctrl+0, observe left side of page. Tab list(i.e. Settings, History, Extension and About pages) disappears after resetting page. Tab list should be appear after resetting page. This is a regression issue,broken in 'M-51', will soon update the other info:
,
Apr 7 2016
adding RB-label, please change if required
,
Apr 7 2016
,
Apr 7 2016
not the right CL
,
Apr 8 2016
This also affects the chrome:extensions page on Chrome OS as well.
,
Apr 8 2016
Also affects chrome://settings and chrome://help pages on Linux.
,
Apr 8 2016
Bisect suggests that the first breaking change is r384293 (https://codereview.chromium.org/1845223002). skyostil@, can you please take a look. Probably related to the navigation pane being an iframe for chrome://uber-frame/.
,
Apr 12 2016
Looking...
,
Apr 12 2016
All the pages here have an iframe for the menu which they keep aligned to the left side of the page by updating a "transform: translateX()" property.
When the page scale is reset after scrolling the menu offscreen, the script ultimately sets "transform: translateX(0px)". This schedules a layout, but for some reason this never ends up setting FrameView::needsLayout() on the root frame, so we never run the layout to figure out that the menu is now back on the screen and should be unthrottled.
I can make everything work by making sure the layout isn't skipped, i.e.:
bool FrameView::layoutPending() const
{
// FIXME: This should check Document::lifecycle instead.
- return m_hasPendingLayout;
+ return m_hasPendingLayout || lifecycle().state() < DocumentLifecycle::LayoutClean;
}
but I'm not really sure if this is right fix and what the relationship between the Document's lifecycle and the FrameView's layout pending bit is supposed to be. Elliott, Xianzhu, any ideas?
,
Apr 12 2016
Your experimental change seems to make we always layout all FrameViews in a lifecycle update if there is any pending visual update. I'm not sure if we desire this. Also I don't understand the FIXME in FrameView::layoutPending(). If it's based on lifecycle, why do we need to check it? It seems just equivalent to calling FrameView::layout() unconditionally. What's the exact code executed about your mentioned "This schedules a layout"?
,
Apr 13 2016
This is not an issue with any of the MD WebUI pages, so removing Proj-MaterialDesign-WebUI. Add Proj-MaterialDesign-NativeUI if it is an issue with the MD top-Chrome.
,
Apr 13 2016
Agreed, that doesn't seem like the right fix.
The code that triggers the style change is this:
navFrame.style.webkitTransform = 'translateX(' + -scrollOffset + 'px)';
but I think I realized the error in my thinking: that change doesn't actually need to result in a layout since it only changes the transform on a layer. The bug is that changing the transform doesn't result in the FrameView in updating the frame rects of its widgets.
Here's a what I think is a better fix: https://codereview.chromium.org/1884603004
,
Apr 14 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/0265532ea6ef8cfdccbe411647bbdb2b4e7c07c8 commit 0265532ea6ef8cfdccbe411647bbdb2b4e7c07c8 Author: skyostil <skyostil@chromium.org> Date: Thu Apr 14 09:32:50 2016 Update widget geometries when transforming a layer Previously widget geometries were only updated during actual layouts. However if only the transform of a layer is changed, this doesn't cause a layout and can result in stale widget geometries. In the linked bug this causes a FrameView to remain throttled even though its transform was changed to make the FrameView visible again. BUG= 601353 Review URL: https://codereview.chromium.org/1884603004 Cr-Commit-Position: refs/heads/master@{#387271} [modify] https://crrev.com/0265532ea6ef8cfdccbe411647bbdb2b4e7c07c8/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/0265532ea6ef8cfdccbe411647bbdb2b4e7c07c8/third_party/WebKit/Source/web/tests/FrameThrottlingTest.cpp
,
Apr 14 2016
Requesting a merge to M51.
,
Apr 15 2016
Your change meets the bar and is auto-approved for M51 (branch: 2704)
,
Apr 15 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/782ddcd39bb723f7d496b1791967c47ff7d74572 commit 782ddcd39bb723f7d496b1791967c47ff7d74572 Author: Sami Kyostila <skyostil@chromium.org> Date: Fri Apr 15 13:07:56 2016 Update widget geometries when transforming a layer Previously widget geometries were only updated during actual layouts. However if only the transform of a layer is changed, this doesn't cause a layout and can result in stale widget geometries. In the linked bug this causes a FrameView to remain throttled even though its transform was changed to make the FrameView visible again. BUG= 601353 Review URL: https://codereview.chromium.org/1884603004 Cr-Commit-Position: refs/heads/master@{#387271} (cherry picked from commit 0265532ea6ef8cfdccbe411647bbdb2b4e7c07c8) Review URL: https://codereview.chromium.org/1890913005 . Cr-Commit-Position: refs/branch-heads/2704@{#70} Cr-Branched-From: 6e53600def8f60d8c632fadc70d7c1939ccea347-refs/heads/master@{#386251} [modify] https://crrev.com/782ddcd39bb723f7d496b1791967c47ff7d74572/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/782ddcd39bb723f7d496b1791967c47ff7d74572/third_party/WebKit/Source/web/tests/FrameThrottlingTest.cpp
,
Apr 19 2016
Retested the above issue on All-OS(Windows 7, Mac 10.11.4 & Ubuntu 14.04) with chrome version '51.0.2704.19' and unable to reproduce the above issue, tab list doesn't disappear. Hence marking the same as TE-Verified-51.0.2704.19
,
May 6 2016
|
|||||||||||||||
►
Sign in to add a comment |
|||||||||||||||
Comment 1 by rk...@etouch.net
, Apr 7 2016Labels: Proj-MaterialDesign-NativeUI hasbisect OS-Linux OS-Mac
Owner: dschuyler@chromium.org
Status: Assigned (was: Unconfirmed)