New issue
Advanced search Search tips

Issue 876329 link

Starred by 1 user

Issue metadata

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



Sign in to add a comment

SingleProcessMash: "Add Person" dialog does not appear

Project Member Reported by jamescook@chromium.org, Aug 21

Issue description

ToT linux-chromeos

out/Default/chrome --ash-debug-shortcuts --ash-dev-shortcuts --ash-host-window-bounds="0+0-1024x768" --user-data-dir=/w/udd --enable-features=SingleProcessMash --login-manager

First, run with empty user-data-dir. You'll go through OOBE and can sign in a test user via GAIA login. That works.

Run again. You'll see the sign-in screen with pods.

Click "Add Person". The wallpaper dims as expected, but the webui GAIA login dialog does not show up.



 
FWICT, "Add Person" eventually gets into LoginDisplayHostMojo::ShowGaiaDialog [1]. It should show a widget for views::WebDialogView. Somehow, the show fails.

https://cs.chromium.org/chromium/src/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc?rcl=3890683844d752b78a1614cb87d3fd3aee5a9868&l=281
Turns out the gaia dialog is put in SystemModalContainer instead of LockSystemModalContainer in single process mash mode. So it is behind the login screen.

         SystemModalContainer (0x33d9f4ccc920) type=0 visible 0,0 1280x768 [snapped]
            SystemModalContainerLayoutManager.ModalBackground (0x33d9f661dc20) type=1 visible 0,0 1280x768 [snapped]
            ui/views/window/ClientView (0x33d9f505dc20) type=2 visible 256,40 768x640 [snapped] remote_id=FrameSinkId(4294967295, 1)
               DesktopNativeWidgetAura - content window (0x33d9f5060aa0) type=0 visible 0,0 768x640 remote_id=FrameSinkId(4294967295, 2)
                  NativeViewHostAuraClip (0x33d9f50617a0) type=0 visible 0,0 768x640 remote_id=FrameSinkId(4294967295, 4)
                     WebContentsViewAura (0x33d9f5061320) type=0 visible 0,0 768x640 remote_id=FrameSinkId(4294967295, 3)
                        RenderWidgetHostViewAura (0x33d9f5061920) type=0 visible 0,0 768x640 remote_id=FrameSinkId(4294967295, 5)
                           RendererFrame (0x33d9f5060c20) type=0 visible 0,0 768x560 remote_id=FrameSinkId(4294967294, 1)
                           RendererFrame (0x33d9f7b12c20) type=0 visible 0,0 0x0 remote_id=FrameSinkId(4294967294, 2)


This line

https://cs.chromium.org/chromium/src/chrome/browser/chromeos/login/ui/oobe_ui_dialog_delegate.cc?rcl=3890683844d752b78a1614cb87d3fd3aee5a9868&l=97

somehow does not work.
In single process mash, gaia dialog widget goes through the following stack:
    WindowServiceDelegateImpl::SetModalType ->
    wm::GetDefaultParent ->
    GetSystemModalContainer
    
It does not have a |transient_parent| and hence assumed to be a user window and put into SystemModalContainer instead of LockSystemModalContainer [1].

In classic mode, we set a transient parent (non-container) for top level windows [2]. But CreateAndParentTopLevelWindowInRoot deals with container [3] and setting container as transient parent seems wrong.


[1] https://cs.chromium.org/chromium/src/ash/wm/container_finder.cc?rcl=933b64fe33b3a621cac3400f5af8601fb0393b8c&l=48

[2] https://cs.chromium.org/chromium/src/ui/views/widget/native_widget_aura.cc?rcl=a2fe63e0db361d402037061b9c431704cc1e32be&l=189

[3] https://cs.chromium.org/chromium/src/ash/wm/top_level_window_factory.cc?rcl=7e57f95683aa6183122fb6d09ae439bfeccbb6d0&l=185
Project Member

Comment 4 by bugdroid1@chromium.org, Aug 22

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

commit 40b3fb1faf02084fcfc005dbec31eb1536a1b785
Author: Xiyuan Xia <xiyuan@chromium.org>
Date: Wed Aug 22 22:18:20 2018

cros: Fix missing gaia in single process mash

In single process mash, gaia dialog widget goes through the
following stack:
  WindowServiceDelegateImpl::SetModalType ->
  wm::GetDefaultParent ->
  GetSystemModalContainer

It does not have a |transient_parent| and hence assumed to be
a user window and put into SystemModalContainer instead of
LockSystemModalContainer.

Since the dialog widget is created with a proper container parent,
the CL fixes the issue by re-using existing container parent in
GetSystemModalContainer.

Bug:  876329 
Change-Id: Iaf38273e852738b7d258a82f76dae9952051a08d
Reviewed-on: https://chromium-review.googlesource.com/1185406
Commit-Queue: Xiyuan Xia <xiyuan@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585278}
[modify] https://crrev.com/40b3fb1faf02084fcfc005dbec31eb1536a1b785/ash/public/cpp/shell_window_ids.h
[modify] https://crrev.com/40b3fb1faf02084fcfc005dbec31eb1536a1b785/ash/shell.cc
[modify] https://crrev.com/40b3fb1faf02084fcfc005dbec31eb1536a1b785/ash/wm/container_finder.cc
[modify] https://crrev.com/40b3fb1faf02084fcfc005dbec31eb1536a1b785/ash/ws/window_service_delegate_impl.cc

Status: Fixed (was: Available)

Sign in to add a comment