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

Side by Side Diff: ash/shelf/shelf_widget.cc

Issue 1851883002: Cleanup shelf initialization and observation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Check for shelf before setting prefs in ChromeLauncherController. Created 4 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/shelf/shelf_widget.h" 5 #include "ash/shelf/shelf_widget.h"
6 6
7 #include "ash/ash_switches.h" 7 #include "ash/ash_switches.h"
8 #include "ash/focus_cycler.h" 8 #include "ash/focus_cycler.h"
9 #include "ash/root_window_controller.h" 9 #include "ash/root_window_controller.h"
10 #include "ash/session/session_state_delegate.h" 10 #include "ash/session/session_state_delegate.h"
(...skipping 704 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 case user::LOGGED_IN_OWNER: 715 case user::LOGGED_IN_OWNER:
716 return true; 716 return true;
717 case user::LOGGED_IN_PUBLIC: 717 case user::LOGGED_IN_PUBLIC:
718 case user::LOGGED_IN_SUPERVISED: 718 case user::LOGGED_IN_SUPERVISED:
719 case user::LOGGED_IN_GUEST: 719 case user::LOGGED_IN_GUEST:
720 case user::LOGGED_IN_KIOSK_APP: 720 case user::LOGGED_IN_KIOSK_APP:
721 case user::LOGGED_IN_NONE: 721 case user::LOGGED_IN_NONE:
722 return false; 722 return false;
723 } 723 }
724 724
725 DCHECK(false); 725 NOTREACHED();
726 return false; 726 return false;
727 } 727 }
728 728
729 ShelfAlignment ShelfWidget::GetAlignment() const { 729 ShelfAlignment ShelfWidget::GetAlignment() const {
730 return shelf_layout_manager_->GetAlignment(); 730 // TODO(msw): This should not be called before |shelf_| is created.
731 return shelf_ ? shelf_->GetAlignment() : SHELF_ALIGNMENT_BOTTOM;
731 } 732 }
732 733
733 void ShelfWidget::SetAlignment(ShelfAlignment alignment) { 734 void ShelfWidget::OnShelfAlignmentChanged() {
734 if (shelf_) 735 status_area_widget_->SetShelfAlignment(GetAlignment());
735 shelf_->SetAlignment(alignment);
736 status_area_widget_->SetShelfAlignment(alignment);
737 delegate_view_->SchedulePaint(); 736 delegate_view_->SchedulePaint();
738 } 737 }
739 738
740 void ShelfWidget::SetDimsShelf(bool dimming) { 739 void ShelfWidget::SetDimsShelf(bool dimming) {
741 delegate_view_->SetDimmed(dimming); 740 delegate_view_->SetDimmed(dimming);
742 // Repaint all children, allowing updates to reflect dimmed state eg: 741 // Repaint all children, allowing updates to reflect dimmed state eg:
743 // status area background, app list button and overflow button. 742 // status area background, app list button and overflow button.
744 if (shelf_) 743 if (shelf_)
745 shelf_->SchedulePaint(); 744 shelf_->SchedulePaint();
746 status_area_widget_->SchedulePaint(); 745 status_area_widget_->SchedulePaint();
747 } 746 }
748 747
749 bool ShelfWidget::GetDimsShelf() const { 748 bool ShelfWidget::GetDimsShelf() const {
750 return delegate_view_->GetDimmed(); 749 return delegate_view_->GetDimmed();
751 } 750 }
752 751
753 void ShelfWidget::CreateShelf() { 752 void ShelfWidget::CreateShelf() {
754 if (shelf_) 753 if (shelf_)
755 return; 754 return;
756 755
757 Shell* shell = Shell::GetInstance(); 756 Shell* shell = Shell::GetInstance();
758 // This needs to be called before shelf_model(). 757 ShelfDelegate* delegate = shell->GetShelfDelegate();
759 ShelfDelegate* shelf_delegate = shell->GetShelfDelegate(); 758 shelf_.reset(new Shelf(shell->shelf_model(), delegate, this));
760 if (!shelf_delegate) 759 delegate->OnShelfCreated(shelf_.get());
761 return; // Not ready to create Shelf.
762 760
763 shelf_.reset(
764 new Shelf(shell->shelf_model(), shell->GetShelfDelegate(), this));
765 SetFocusCycler(shell->focus_cycler()); 761 SetFocusCycler(shell->focus_cycler());
766 762
767 // Inform the root window controller. 763 // Inform the root window controller.
768 RootWindowController::ForWindow(window_container_)->OnShelfCreated(); 764 RootWindowController::ForWindow(window_container_)->OnShelfCreated();
769 765
770 shelf_->SetVisible( 766 shelf_->SetVisible(
771 shell->session_state_delegate()->IsActiveUserSessionStarted()); 767 shell->session_state_delegate()->IsActiveUserSessionStarted());
772 shelf_layout_manager_->LayoutShelf(); 768 shelf_layout_manager_->LayoutShelf();
773 shelf_layout_manager_->UpdateAutoHideState(); 769 shelf_layout_manager_->UpdateAutoHideState();
774 Show(); 770 Show();
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
830 DCHECK(delegate_view_); 826 DCHECK(delegate_view_);
831 return delegate_view_->disable_dimming_animations_for_test(); 827 return delegate_view_->disable_dimming_animations_for_test();
832 } 828 }
833 829
834 void ShelfWidget::WillDeleteShelf() { 830 void ShelfWidget::WillDeleteShelf() {
835 shelf_layout_manager_->RemoveObserver(this); 831 shelf_layout_manager_->RemoveObserver(this);
836 shelf_layout_manager_ = NULL; 832 shelf_layout_manager_ = NULL;
837 } 833 }
838 834
839 } // namespace ash 835 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698