New issue
Advanced search Search tips

Issue 666021 link

Starred by 2 users

Issue metadata

Status: Archived
Owner:
Closed: Jan 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug

Blocked on:
issue 648964

Blocking:
issue 557399



Sign in to add a comment

mash: Shelf is visible at login screen

Project Member Reported by jamescook@chromium.org, Nov 16 2016

Issue description

At ToT r432520

* Run chrome --mash --login-manager
* Shelf (native views UI) is visible
* Login webui and fake-shelf are pushed up too high

I'll bet the former problem is causing the latter.

I'm going to take a look at the shelf code. It's possible it needs login state for some computation.

 
+screenshot
shelf-at-login-screen.png
896 KB View Download
Blockedon: 648964
Status: Assigned (was: Started)
This is blocked on a solution to login state.

Mash is explicitly creating a shelf via WmShell::CreateShelf() in ash::WindowManager (in //ash/mus) during startup. Classic ash does this in ash::Shell::OnLoginUserProfilePrepared(), for which we don't have a mash equivalent. See  issue 654606 

There's also this code in ShelfWidget:
WmShell::Get()->GetSessionStateDelegate()->IsActiveUserSessionStarted()

Forcing the shelf to off by modifying the code fixes the layout problem.

I could do a one-off mojo interface for this, but it seems like a more general solution to login state would be better.

Comment 3 by xiy...@chromium.org, Nov 16 2016

yep, SessionStateDelegate replacement should handle this since the info could be derived from session state change.

Comment 4 by xiy...@chromium.org, Nov 18 2016

Blocking: 557399
Status: Started (was: Assigned)
Plan:
* Always construct a SessionController(Client)
* ash observes for session state changes

Project Member

Comment 6 by bugdroid1@chromium.org, Dec 20 2016

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

commit 7f99e933e595824281102ff6737075dccbbc4d5c
Author: jamescook <jamescook@chromium.org>
Date: Tue Dec 20 18:10:35 2016

chromeos: Fix shelf appearing at login screen under mash

Previously chrome --mash would always create the shelf on startup, even at
the login screen. Now it waits until login is complete, like classic ash.

Ash watches for SessionState::ACTIVE via a SessionStateObserver to create the
shelf, rather than NOTIFICATION_LOGIN_USER_PROFILE_PREPARED. For most login
flows this doesn't matter, but for supervised user creation it means that the
shelf is not created until the flow is completed. This is an improvement
because in the old code the shelf would be created too early and had to be
explicitly hidden.

Always create a SessionControllerClient in chrome, even in classic ash. This
allows classic ash to use the mojo pathway via ash::SessionController.

Remove WmShell::ShowShelf(), which was introduced in crrev.com/10693003 to
delay showing the shelf until post-login OOBE (like avatar picture select)
was complete. It does not seem to be needed anymore, either in production or
in tests.

Change AshTestImplMus to simulate a user logging in which is required to
create the shelf on the primary display and also to have a non-zero user
count to create the shelf on additional displays.

Remove some unnecessary OS_CHROMEOS ifdefs in //c/b/ui/ash.

BUG= 666021 
TEST=ash_unittests and chrome browser_tests

Review-Url: https://codereview.chromium.org/2573703003
Cr-Commit-Position: refs/heads/master@{#439845}

[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/ash/aura/wm_shell_aura.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/ash/aura/wm_shell_aura.h
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/ash/common/shelf/shelf_widget.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/ash/common/shelf/shelf_widget.h
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/ash/common/test/test_session_state_delegate.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/ash/common/wm_root_window_controller.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/ash/common/wm_root_window_controller.h
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/ash/common/wm_shell.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/ash/common/wm_shell.h
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/ash/mus/test/ash_test_impl_mus.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/ash/mus/test/ash_test_impl_mus.h
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/ash/mus/window_manager.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/ash/root_window_controller_unittest.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/ash/shell.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/ash/shell.h
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/chrome/browser/chromeos/login/session/chrome_session_manager.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/chrome/browser/chromeos/login/supervised/supervised_user_creation_screen.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/chrome/browser/ui/ash/chrome_shell_delegate.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_browsertest.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/chrome/browser/ui/ash/multi_user/multi_user_window_manager_stub.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/chrome/browser/ui/ash/multi_user/multi_user_window_manager_stub.h
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/chrome/browser/ui/ash/session_controller_client.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/chrome/browser/ui/ash/session_controller_client.h
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.cc
[modify] https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.h

Status: Fixed (was: Started)
Project Member

Comment 8 by bugdroid1@chromium.org, Jan 10 2017

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

commit e8604fbd50fd6e6b3e69f51fd79473df92276f96
Author: jamescook <jamescook@chromium.org>
Date: Tue Jan 10 04:54:48 2017

Revert "chromeos: Fix shelf appearing at login screen under mash"

That CL causes browser crashes on login when the browser is restoring a
minimized window as part of session restore. The crashes occur because the
shelf view is created asynchronously in response to a mojo message, but
the window restore is synchronous at startup.  I will investigate more and
reland.

Original CL description:

Previously chrome --mash would always create the shelf on startup, even at
the login screen. Now it waits until login is complete, like classic ash.

Ash watches for SessionState::ACTIVE via a SessionStateObserver to create the
shelf, rather than NOTIFICATION_LOGIN_USER_PROFILE_PREPARED. For most login
flows this doesn't matter, but for supervised user creation it means that the
shelf is not created until the flow is completed. This is an improvement
because in the old code the shelf would be created too early and had to be
explicitly hidden.

Always create a SessionControllerClient in chrome, even in classic ash. This
allows classic ash to use the mojo pathway via ash::SessionController.

Remove WmShell::ShowShelf(), which was introduced in crrev.com/10693003 to
delay showing the shelf until post-login OOBE (like avatar picture select)
was complete. It does not seem to be needed anymore, either in production or
in tests.

Change AshTestImplMus to simulate a user logging in which is required to
create the shelf on the primary display and also to have a non-zero user
count to create the shelf on additional displays.

Remove some unnecessary OS_CHROMEOS ifdefs in //c/b/ui/ash.

BUG= 666021 ,679513
TEST=ash_unittests and chrome browser_tests

Committed: https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c
Cr-Commit-Position: refs/heads/master@{#439845}

TBR=msw@chromium.org,xiyuan@chromium.org for revert

Review-Url: https://codereview.chromium.org/2619943002
Cr-Commit-Position: refs/heads/master@{#442484}

[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/ash/aura/wm_shell_aura.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/ash/aura/wm_shell_aura.h
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/ash/common/shelf/shelf_widget.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/ash/common/shelf/shelf_widget.h
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/ash/common/test/test_session_state_delegate.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/ash/common/wm_root_window_controller.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/ash/common/wm_root_window_controller.h
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/ash/common/wm_shell.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/ash/common/wm_shell.h
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/ash/mus/test/ash_test_impl_mus.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/ash/mus/test/ash_test_impl_mus.h
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/ash/mus/window_manager.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/ash/root_window_controller_unittest.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/ash/shell.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/ash/shell.h
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/chrome/browser/chromeos/login/session/chrome_session_manager.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/chrome/browser/chromeos/login/supervised/supervised_user_creation_screen.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/chrome/browser/ui/ash/chrome_shell_delegate.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_browsertest.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/chrome/browser/ui/ash/multi_user/multi_user_window_manager_stub.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/chrome/browser/ui/ash/multi_user/multi_user_window_manager_stub.h
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/chrome/browser/ui/ash/session_controller_client.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/chrome/browser/ui/ash/session_controller_client.h
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.cc
[modify] https://crrev.com/e8604fbd50fd6e6b3e69f51fd79473df92276f96/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.h

Project Member

Comment 9 by bugdroid1@chromium.org, Jan 12 2017

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

commit 75298de72cf7c25e137c3c5e63e4d01aa0569c1c
Author: jamescook <jamescook@chromium.org>
Date: Thu Jan 12 01:23:48 2017

Reland: chromeos: Fix shelf appearing at login screen under mash

The reland adds a fix for a crash in window animation code when restoring
a session that has a minimized window. The animation tries to compute a
shelf item position before the shelf is initialized. The animation is not
visible to the user. Returning an empty rect results in a default target
position, which is fine in this case.

Added guards for access to ShelfView before shelf is initialized.

Original CL description:

Previously chrome --mash would always create the shelf on startup, even at
the login screen. Now it waits until login is complete, like classic ash.

Ash watches for SessionState::ACTIVE via a SessionStateObserver to create the
shelf, rather than NOTIFICATION_LOGIN_USER_PROFILE_PREPARED. For most login
flows this doesn't matter, but for supervised user creation it means that the
shelf is not created until the flow is completed. This is an improvement
because in the old code the shelf would be created too early and had to be
explicitly hidden.

Always create a SessionControllerClient in chrome, even in classic ash. This
allows classic ash to use the mojo pathway via ash::SessionController.

Remove WmShell::ShowShelf(), which was introduced in crrev.com/10693003 to
delay showing the shelf until post-login OOBE (like avatar picture select)
was complete. It does not seem to be needed anymore, either in production or
in tests.

Change AshTestImplMus to simulate a user logging in which is required to
create the shelf on the primary display and also to have a non-zero user
count to create the shelf on additional displays.

Remove some unnecessary OS_CHROMEOS ifdefs in //c/b/ui/ash.

BUG= 666021 , 679513
TEST=ash_unittests and chrome browser_tests

Committed: https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c
Cr-Commit-Position: refs/heads/master@{#439845}

Reverted:

Review-Url: https://codereview.chromium.org/2619943002
Cr-Original-Commit-Position: refs/heads/master@{#442484}
Review-Url: https://codereview.chromium.org/2625733003
Cr-Commit-Position: refs/heads/master@{#443106}

[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/ash/aura/wm_shell_aura.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/ash/aura/wm_shell_aura.h
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/ash/common/shelf/shelf_widget.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/ash/common/shelf/shelf_widget.h
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/ash/common/test/test_session_state_delegate.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/ash/common/wm_root_window_controller.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/ash/common/wm_shell.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/ash/common/wm_shell.h
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/ash/mus/test/wm_test_base.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/ash/mus/test/wm_test_base.h
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/ash/mus/window_manager.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/ash/root_window_controller_unittest.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/ash/shell.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/ash/shell.h
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/chrome/browser/chromeos/login/session/chrome_session_manager.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/chrome/browser/chromeos/login/supervised/supervised_user_creation_screen.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/chrome/browser/sessions/session_restore_browsertest_chromeos.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/chrome/browser/ui/ash/chrome_shell_delegate.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_browsertest.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/chrome/browser/ui/ash/multi_user/multi_user_window_manager_stub.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/chrome/browser/ui/ash/multi_user/multi_user_window_manager_stub.h
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/chrome/browser/ui/ash/session_controller_client.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/chrome/browser/ui/ash/session_controller_client.h
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/chrome/browser/ui/browser_browsertest.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.cc
[modify] https://crrev.com/75298de72cf7c25e137c3c5e63e4d01aa0569c1c/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.h

Project Member

Comment 10 by bugdroid1@chromium.org, Jan 12 2017

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

commit 99bed8e7ec46b0943261ffb46894503605aeba3f
Author: timloh <timloh@chromium.org>
Date: Thu Jan 12 03:40:20 2017

Manual Revert of Reland: chromeos: Fix shelf appearing at login screen under mash (patchset #7 id:140001 of https://codereview.chromium.org/2625733003/ )

Reason for revert:
compile broken and reverting https://codereview.chromium.org/2628973002 didn't seem to fix it.

Original issue's description:
> Reland: chromeos: Fix shelf appearing at login screen under mash
>
> The reland adds a fix for a crash in window animation code when restoring
> a session that has a minimized window. The animation tries to compute a
> shelf item position before the shelf is initialized. The animation is not
> visible to the user. Returning an empty rect results in a default target
> position, which is fine in this case.
>
> Added guards for access to ShelfView before shelf is initialized.
>
> Original CL description:
>
> Previously chrome --mash would always create the shelf on startup, even at
> the login screen. Now it waits until login is complete, like classic ash.
>
> Ash watches for SessionState::ACTIVE via a SessionStateObserver to create the
> shelf, rather than NOTIFICATION_LOGIN_USER_PROFILE_PREPARED. For most login
> flows this doesn't matter, but for supervised user creation it means that the
> shelf is not created until the flow is completed. This is an improvement
> because in the old code the shelf would be created too early and had to be
> explicitly hidden.
>
> Always create a SessionControllerClient in chrome, even in classic ash. This
> allows classic ash to use the mojo pathway via ash::SessionController.
>
> Remove WmShell::ShowShelf(), which was introduced in crrev.com/10693003 to
> delay showing the shelf until post-login OOBE (like avatar picture select)
> was complete. It does not seem to be needed anymore, either in production or
> in tests.
>
> Change AshTestImplMus to simulate a user logging in which is required to
> create the shelf on the primary display and also to have a non-zero user
> count to create the shelf on additional displays.
>
> Remove some unnecessary OS_CHROMEOS ifdefs in //c/b/ui/ash.
>
> BUG= 666021 , 679513
> TEST=ash_unittests and chrome browser_tests
>
> Committed: https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c
> Cr-Commit-Position: refs/heads/master@{#439845}
>
> Reverted:
>
> Review-Url: https://codereview.chromium.org/2619943002
> Cr-Original-Commit-Position: refs/heads/master@{#442484}
> Review-Url: https://codereview.chromium.org/2625733003
> Cr-Commit-Position: refs/heads/master@{#443106}
> Committed: https://chromium.googlesource.com/chromium/src/+/75298de72cf7c25e137c3c5e63e4d01aa0569c1c

TBR=msw@chromium.org,xiyuan@chromium.org,sky@chromium.org,jamescook@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= 666021 , 679513

Review-Url: https://codereview.chromium.org/2627243003
Cr-Commit-Position: refs/heads/master@{#443138}

[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/ash/aura/wm_shell_aura.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/ash/aura/wm_shell_aura.h
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/ash/common/shelf/shelf_widget.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/ash/common/shelf/shelf_widget.h
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/ash/common/test/test_session_state_delegate.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/ash/common/wm_shell.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/ash/common/wm_shell.h
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/ash/mus/test/wm_test_base.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/ash/mus/test/wm_test_base.h
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/ash/mus/window_manager.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/ash/root_window_controller_unittest.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/ash/shell.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/ash/shell.h
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/chrome/browser/chromeos/login/session/chrome_session_manager.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/chrome/browser/chromeos/login/supervised/supervised_user_creation_screen.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/chrome/browser/sessions/session_restore_browsertest_chromeos.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/chrome/browser/ui/ash/chrome_shell_delegate.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_browsertest.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/chrome/browser/ui/ash/multi_user/multi_user_window_manager_stub.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/chrome/browser/ui/ash/multi_user/multi_user_window_manager_stub.h
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/chrome/browser/ui/ash/session_controller_client.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/chrome/browser/ui/ash/session_controller_client.h
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/chrome/browser/ui/browser_browsertest.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.cc
[modify] https://crrev.com/99bed8e7ec46b0943261ffb46894503605aeba3f/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.h

Project Member

Comment 11 by bugdroid1@chromium.org, Jan 12 2017

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

commit e3d63f666dd906c320f67c7286f2d9a9316c2ef5
Author: jamescook <jamescook@chromium.org>
Date: Thu Jan 12 07:12:40 2017

Re-reland: chromeos: Fix shelf appearing at login screen under mash

The reland adds a fix for a crash in window animation code when restoring
a session that has a minimized window. The animation tries to compute a
shelf item position before the shelf is initialized. The animation is not
visible to the user. Returning an empty rect results in a default target
position, which is fine in this case.

Added guards for access to ShelfView before shelf is initialized.

Original CL description:

Previously chrome --mash would always create the shelf on startup, even at
the login screen. Now it waits until login is complete, like classic ash.

Ash watches for SessionState::ACTIVE via a SessionStateObserver to create the
shelf, rather than NOTIFICATION_LOGIN_USER_PROFILE_PREPARED. For most login
flows this doesn't matter, but for supervised user creation it means that the
shelf is not created until the flow is completed. This is an improvement
because in the old code the shelf would be created too early and had to be
explicitly hidden.

Always create a SessionControllerClient in chrome, even in classic ash. This
allows classic ash to use the mojo pathway via ash::SessionController.

Remove WmShell::ShowShelf(), which was introduced in crrev.com/10693003 to
delay showing the shelf until post-login OOBE (like avatar picture select)
was complete. It does not seem to be needed anymore, either in production or
in tests.

Change AshTestImplMus to simulate a user logging in which is required to
create the shelf on the primary display and also to have a non-zero user
count to create the shelf on additional displays.

Remove some unnecessary OS_CHROMEOS ifdefs in //c/b/ui/ash.

BUG= 666021 , 679513
TEST=ash_unittests and chrome browser_tests

Committed: https://crrev.com/7f99e933e595824281102ff6737075dccbbc4d5c
Cr-Commit-Position: refs/heads/master@{#439845}

Reverted:

Review-Url: https://codereview.chromium.org/2619943002
Cr-Original-Original-Commit-Position: refs/heads/master@{#442484}
Review-Url: https://codereview.chromium.org/2625733003
Cr-Original-Commit-Position: refs/heads/master@{#443106}
Committed: https://chromium.googlesource.com/chromium/src/+/75298de72cf7c25e137c3c5e63e4d01aa0569c1c
Review-Url: https://codereview.chromium.org/2625733003
Cr-Commit-Position: refs/heads/master@{#443174}

[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/ash/aura/wm_shell_aura.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/ash/aura/wm_shell_aura.h
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/ash/common/shelf/shelf_widget.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/ash/common/shelf/shelf_widget.h
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/ash/common/test/test_session_state_delegate.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/ash/common/wm_shell.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/ash/common/wm_shell.h
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/ash/mus/test/wm_test_base.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/ash/mus/test/wm_test_base.h
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/ash/mus/window_manager.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/ash/root_window_controller.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/ash/root_window_controller.h
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/ash/root_window_controller_unittest.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/ash/shell.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/ash/shell.h
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/chrome/browser/chromeos/login/session/chrome_session_manager.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/chrome/browser/chromeos/login/supervised/supervised_user_creation_screen.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/chrome/browser/sessions/session_restore_browsertest_chromeos.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/chrome/browser/ui/ash/chrome_shell_delegate.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_browsertest.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/chrome/browser/ui/ash/multi_user/multi_user_window_manager_stub.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/chrome/browser/ui/ash/multi_user/multi_user_window_manager_stub.h
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/chrome/browser/ui/ash/session_controller_client.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/chrome/browser/ui/ash/session_controller_client.h
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/chrome/browser/ui/browser_browsertest.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.cc
[modify] https://crrev.com/e3d63f666dd906c320f67c7286f2d9a9316c2ef5/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.h

Comment 12 by dchan@google.com, Mar 4 2017

Labels: VerifyIn-58

Comment 13 by dchan@google.com, Apr 17 2017

Labels: VerifyIn-59

Comment 14 by dchan@google.com, May 30 2017

Labels: VerifyIn-60
Labels: VerifyIn-61

Comment 16 by dchan@chromium.org, Oct 14 2017

Status: Archived (was: Fixed)
Components: -MUS Internals>Services>WindowService

Sign in to add a comment