New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 601353 link

Starred by 4 users

Issue metadata

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



Sign in to add a comment

Regression: Tab list disappears after zoom action on chrome://history page.

Reported by rk...@etouch.net, Apr 7 2016

Issue description

Chrome 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:

 

Comment 1 by rk...@etouch.net, Apr 7 2016

Cc: nyerramilli@chromium.org
Labels: Proj-MaterialDesign-NativeUI hasbisect OS-Linux OS-Mac
Owner: dschuyler@chromium.org
Status: Assigned (was: Unconfirmed)
Precondition: Enable 'Material design in the browser's top chrome' by selecting 'Material' option.

Good build: 50.0.2660.0
Bad Build: 51.0.2662.0

Narrow Bisect:
https://chromium.googlesource.com/chromium/src/+log/ffa3929a4e0ae37070c41abac63406efc0ffe5ae..4acbec91b57f31a501264906aded632cc64c9300?pretty=fuller&n=100

Suspecting: r378075

Could you please help me to reassign this issue,if your change is not cause for it? 
Labels: ReleaseBlock-Stable
adding RB-label, please change if required
Labels: -Proj-MaterialDesign-NativeUI Proj-MaterialDesign-WebUI

Comment 4 by dbeam@chromium.org, Apr 7 2016

Owner: ----
not the right CL
Labels: OS-Chrome
This also affects the chrome:extensions page on Chrome OS as well.
Components: -UI>Browser>Zoom UI>Settings UI>Browser>WebUI
Status: Available (was: Assigned)
Also affects chrome://settings and chrome://help pages on Linux.
Cc: vollick@chromium.org alexclarke@chromium.org
Owner: skyos...@chromium.org
Status: Assigned (was: Available)
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/.
Status: Started (was: Assigned)
Looking...
Cc: wangxianzhu@chromium.org esprehn@chromium.org
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?
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"?

Labels: -Proj-MaterialDesign-WebUI
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.
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
Project Member

Comment 13 by bugdroid1@chromium.org, 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

Labels: Merge-Request-51
Status: Fixed (was: Started)
Requesting a merge to M51.

Comment 15 by tin...@google.com, Apr 15 2016

Labels: -Merge-Request-51 Merge-Approved-51 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M51 (branch: 2704)
Project Member

Comment 16 by bugdroid1@chromium.org, Apr 15 2016

Labels: -merge-approved-51 merge-merged-2704
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

Cc: ashej...@chromium.org
Labels: TE-Verified-51.0.2704.19 TE-Verified-M51
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
Status: Verified (was: Fixed)

Sign in to add a comment