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

Issue 807448 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug



Sign in to add a comment

mash: Login is blank, web contents are blank until window resize

Project Member Reported by jamescook@chromium.org, Jan 30 2018

Issue description

linux-chromeos ToT r532973

* Run chrome without --mash with --user-data-dir=/w/udd --login-manager
* Log in, then log out
* out/Branded/chrome --user-data-dir=/w/udd --login-manager --mash

Login screen has no visible webui (only wallpaper and system tray). This makes it hard to log in. (Typing your password blindly still works.)

If you skip login with this:
* out/Branded/chrome --user-data-dir=/w/udd --mash

2. NTP is blank.
3. Bookmarks page partially renders, but not completely.

Things seem to paint OK after resizing the window. See screenshots.

Fady, can you help route this to someone?

 
blank-ntp.png
301 KB View Download
partially-blank-bookmarks.png
300 KB View Download
bookmarks-after-resize.png
315 KB View Download
I am attempting to bisect this. It's slow because bisect-builds.py doesn't work (crashes on startup in v8 trying to load a "snapshot") and there is a large range where chrome --mash crashes on startup due to  issue 804508 . I hope to have results in an hour or so.

Cc: fsam...@chromium.org
Owner: samans@chromium.org
samans, can you figure out how to revert your CL?

This is caused by the commit below. I cannot cleanly revert due to subsequent changes in RenderWidgetHostViewAura and some Mac files. I have attempted a manual revert in https://chromium-review.googlesource.com/#/c/chromium/src/+/895198 but I'm not sure if it's correct. Feel free to patch that in or land it if it looks right.

commit f7731345b34fd9f87ce5792f5f952f8e5cdfaac8
Author: Saman Sami <samans@chromium.org>
Date:   Wed Jan 24 22:18:44 2018 +0000

    Surface synchronization: Allocate new LocalSurfaceId on navigation
    
    In order to be able to tell the difference between the graphical output
    of the renderer before and after navigation, we should allocate a new
    LocalSurfaceId. Currently we rely on content_source_id to achieve this,
    but that is not compatible with Viz. When navigation happens, browser
    allocates a new id for the child and immediately embeds it. After 4
    seconds it drops the fallback SurfaceId if it was generated before
    navigation.
    
    TBR=lazyboy@chromium.org
    
    Bug:  695579 , 775030 , 777881 
    Change-Id: I8ae11dd3de2e8d6cc889ad31f94bdb0bb5f6a5d4
    Reviewed-on: https://chromium-review.googlesource.com/855256
    Commit-Queue: Saman Sami <samans@chromium.org>
    Reviewed-by: Fady Samuel <fsamuel@chromium.org>
    Reviewed-by: Saman Sami <samans@chromium.org>
    Reviewed-by: Ken Buchanan <kenrb@chromium.org>
    Reviewed-by: Antoine Labour <piman@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#531713}

I don't think this should be reverted because this impacts an about-to-be-finch tried Viz and impacts a large set of dependencies. I think we should fix Mash instead as that's a longer term project.

Comment 4 by samans@chromium.org, Jan 31 2018

I've started looking into this. A revert is probably not necessary.
This is the same behavior that I'm seeing on Mac. Can we revert just the 2 lines that are blocking Mac development?

https://chromium-review.googlesource.com/c/chromium/src/+/894197

Comment 6 by fsamuel@google.com, Feb 1 2018

There is, I believe, a fix in flight for this. I don't think we can revert this patch easily. It should be fairly easy to fix this on Mac too.
Adding some commentary from my follow-on at https://chromium-review.googlesource.com/c/chromium/src/+/898544

When we resize, we have the following sequence of calls:
  RenderWidgetHostViewAura::WasResized calls (with no arguments)
  DelegatedFrameHost::WasResized which calls
  DelegatedFrameHostClient::DelegatedFrameHostDesiredSizeInDIP
    which is virtual and implemented as
  DelegatedFrameHostClientAura::DelegatedFrameHostDesiredSizeInDIP
    which then calls
  RenderWidgetHostViewAura to query the window bounds

The above patch has RenderWidgetHostViewAura::WasResized push the window bounds to DelegatedFrameHost::WasResized directly.

But, we will keep hitting this issue. Ultimately, whoever is responsible for allocating LocalSurfaceIds needs to have a "OnSurfaceChanged" notification that specifies the new (id,size,scale_factor) of the surface, and then DelegatedFrameHost (or its embedder) can subscribe to those notifications.

As it is, we're well on our way to a world where we sprinkle WasResized() calls all over in the hopes that we catch every instance where the surface id changes.
Project Member

Comment 8 by bugdroid1@chromium.org, Feb 2 2018

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

commit 5a727b5474461d381bc5d49112926588e786302f
Author: Saman Sami <samans@chromium.org>
Date: Fri Feb 02 22:42:05 2018

mus: Embed the new surface in WindowPortMus::AllocateLocalSurfaceId

Seems like we don't embed the LocalSurfaceId allocated in
WindowPortMus::AllocateLocalSurfaceId with --mash. Embed it.

Bug:  807448 
Change-Id: Id4c03c01d714de010a8306fc97bcd1a98dfaa3cb
Reviewed-on: https://chromium-review.googlesource.com/895926
Commit-Queue: Saman Sami <samans@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Cr-Commit-Position: refs/heads/master@{#534176}
[modify] https://crrev.com/5a727b5474461d381bc5d49112926588e786302f/ui/aura/mus/client_surface_embedder.cc
[modify] https://crrev.com/5a727b5474461d381bc5d49112926588e786302f/ui/aura/mus/client_surface_embedder.h
[modify] https://crrev.com/5a727b5474461d381bc5d49112926588e786302f/ui/aura/mus/window_port_mus.cc
[modify] https://crrev.com/5a727b5474461d381bc5d49112926588e786302f/ui/aura/mus/window_port_mus_unittest.cc

Status: Fixed (was: Assigned)
I expect this issue to be fixed. If you're still seeing it please reopen the bug.
It works now, thanks!

Components: -Internals>MUS Internals>Services>WindowService

Sign in to add a comment