| Index: ash/shell.cc
 | 
| diff --git a/ash/shell.cc b/ash/shell.cc
 | 
| index 2e100f0b942c8c5f1756d08d3f1e05455580f90d..66a9b6227682556ad2a804542b4caa497454f556 100644
 | 
| --- a/ash/shell.cc
 | 
| +++ b/ash/shell.cc
 | 
| @@ -40,10 +40,10 @@
 | 
|  #include "ash/root_window_controller.h"
 | 
|  #include "ash/session/session_state_delegate.h"
 | 
|  #include "ash/shelf/app_list_shelf_item_delegate.h"
 | 
| +#include "ash/shelf/shelf.h"
 | 
|  #include "ash/shelf/shelf_delegate.h"
 | 
|  #include "ash/shelf/shelf_item_delegate.h"
 | 
|  #include "ash/shelf/shelf_item_delegate_manager.h"
 | 
| -#include "ash/shelf/shelf_layout_manager.h"
 | 
|  #include "ash/shelf/shelf_model.h"
 | 
|  #include "ash/shelf/shelf_widget.h"
 | 
|  #include "ash/shelf/shelf_window_watcher.h"
 | 
| @@ -511,25 +511,21 @@ void Shell::UpdateShelfVisibility() {
 | 
|  
 | 
|  void Shell::SetShelfAutoHideBehavior(ShelfAutoHideBehavior behavior,
 | 
|                                       aura::Window* root_window) {
 | 
| -  ShelfWidget* shelf_widget = GetRootWindowController(root_window)->shelf();
 | 
| -  shelf_widget->shelf_layout_manager()->SetAutoHideBehavior(behavior);
 | 
| +  Shelf::ForWindow(root_window)->SetAutoHideBehavior(behavior);
 | 
|  }
 | 
|  
 | 
|  ShelfAutoHideBehavior Shell::GetShelfAutoHideBehavior(
 | 
|      aura::Window* root_window) const {
 | 
| -  ShelfWidget* shelf_widget = GetRootWindowController(root_window)->shelf();
 | 
| -  return shelf_widget->shelf_layout_manager()->auto_hide_behavior();
 | 
| +  return Shelf::ForWindow(root_window)->GetAutoHideBehavior();
 | 
|  }
 | 
|  
 | 
|  void Shell::SetShelfAlignment(ShelfAlignment alignment,
 | 
|                                aura::Window* root_window) {
 | 
| -  ShelfWidget* shelf_widget = GetRootWindowController(root_window)->shelf();
 | 
| -  shelf_widget->shelf_layout_manager()->SetAlignment(alignment);
 | 
| +  Shelf::ForWindow(root_window)->SetAlignment(alignment);
 | 
|  }
 | 
|  
 | 
|  ShelfAlignment Shell::GetShelfAlignment(const aura::Window* root_window) const {
 | 
| -  ShelfWidget* shelf_widget = GetRootWindowController(root_window)->shelf();
 | 
| -  return shelf_widget->shelf_layout_manager()->GetAlignment();
 | 
| +  return Shelf::ForWindow(root_window)->GetAlignment();
 | 
|  }
 | 
|  
 | 
|  void Shell::OnShelfAlignmentChanged(aura::Window* root_window) {
 | 
| @@ -537,6 +533,11 @@ void Shell::OnShelfAlignmentChanged(aura::Window* root_window) {
 | 
|                      OnShelfAlignmentChanged(root_window));
 | 
|  }
 | 
|  
 | 
| +void Shell::OnShelfAutoHideBehaviorChanged(aura::Window* root_window) {
 | 
| +  FOR_EACH_OBSERVER(ShellObserver, observers_,
 | 
| +                    OnShelfAutoHideBehaviorChanged(root_window));
 | 
| +}
 | 
| +
 | 
|  void Shell::NotifyFullscreenStateChange(bool is_fullscreen,
 | 
|                                          aura::Window* root_window) {
 | 
|    FOR_EACH_OBSERVER(ShellObserver, observers_, OnFullscreenStateChanged(
 | 
| @@ -587,7 +588,6 @@ SystemTray* Shell::GetPrimarySystemTray() {
 | 
|  
 | 
|  ShelfDelegate* Shell::GetShelfDelegate() {
 | 
|    if (!shelf_delegate_) {
 | 
| -    shelf_model_.reset(new ShelfModel);
 | 
|      // Creates ShelfItemDelegateManager before ShelfDelegate.
 | 
|      shelf_item_delegate_manager_.reset(
 | 
|          new ShelfItemDelegateManager(shelf_model_.get()));
 | 
| @@ -642,6 +642,7 @@ Shell::Shell(ShellDelegate* delegate, base::SequencedWorkerPool* blocking_pool)
 | 
|      : target_root_window_(nullptr),
 | 
|        scoped_target_root_window_(nullptr),
 | 
|        delegate_(delegate),
 | 
| +      shelf_model_(new ShelfModel),
 | 
|        window_positioner_(new WindowPositioner),
 | 
|        activation_client_(nullptr),
 | 
|  #if defined(OS_CHROMEOS)
 | 
| 
 |