Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2611)

Unified Diff: ash/shelf/shelf_layout_manager.cc

Issue 909293002: Properly set ShelfAlignment during login (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ash/shelf/shelf_layout_manager.cc
diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc
index 5846b634f59b5157c20581b9caee2b3cf7a96291..0aa077a0452915601912cb9c2ba6f6d843f13375 100644
--- a/ash/shelf/shelf_layout_manager.cc
+++ b/ash/shelf/shelf_layout_manager.cc
@@ -246,13 +246,11 @@ bool ShelfLayoutManager::SetAlignment(ShelfAlignment alignment) {
return false;
alignment_ = alignment;
- if (Shell::GetInstance()->session_state_delegate()->IsUserSessionBlocked() ||
- state_.is_adding_user_screen) {
- // The shelf will itself move to the bottom while locked. If a request is
- // sent to move while being locked, we postpone the move until the lock
- // screen goes away.
+ // The shelf will itself move to the bottom while locked or obscured by user
+ // login. If a request is sent to move while being obscured, we postpone the
+ // move until the user session is resumed.
+ if (IsAlignmentLocked())
return false;
- }
// This should not be called during the lock screen transitions.
shelf_->SetAlignment(alignment);
@@ -262,11 +260,8 @@ bool ShelfLayoutManager::SetAlignment(ShelfAlignment alignment) {
ShelfAlignment ShelfLayoutManager::GetAlignment() const {
// When the screen is locked or a user gets added, the shelf is forced into
- // bottom alignment. Note: We cannot use state_.is_screen_locked here since
- // that flag gets set later than the SessionStateDelegate reports a locked
- // screen which leads in
- if (Shell::GetInstance()->session_state_delegate()->IsUserSessionBlocked() ||
- state_.is_adding_user_screen)
+ // bottom alignment.
+ if (IsAlignmentLocked())
return SHELF_ALIGNMENT_BOTTOM;
return alignment_;
}
@@ -1159,10 +1154,28 @@ void ShelfLayoutManager::SessionStateChanged(
}
void ShelfLayoutManager::UpdateShelfVisibilityAfterLoginUIChange() {
- shelf_->SetAlignment(state_.is_adding_user_screen || state_.is_screen_locked ?
- SHELF_ALIGNMENT_BOTTOM : alignment_);
+ shelf_->SetAlignment(GetAlignment());
UpdateVisibilityState();
LayoutShelf();
}
+bool ShelfLayoutManager::IsAlignmentLocked() const {
+ SessionStateDelegate* session_state_delegate =
James Cook 2015/02/17 20:03:36 nit: move this lower down, closer to where it is u
+ Shell::GetInstance()->session_state_delegate();
+ if (state_.is_screen_locked)
+ return true;
+ // The session state becomes active at the start of transitioning to a user
+ // session, however the session is considered blocked until the full UI is
+ // ready. Exit early to allow for proper layout.
+ if (session_state_delegate->GetSessionState() ==
+ SessionStateDelegate::SESSION_STATE_ACTIVE) {
+ return false;
+ }
+ if (session_state_delegate->IsUserSessionBlocked() ||
+ state_.is_adding_user_screen) {
+ return true;
+ }
+ return false;
+}
+
} // namespace ash

Powered by Google App Engine
This is Rietveld 408576698