text: // Copyright 2014 The Chromium Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style license that can be
  // found in the LICENSE file.
  
  #ifndef ASH_WM_WORKSPACE_WORKSPACE_LAYOUT_MANAGER_DELEGATE_H_
  #define ASH_WM_WORKSPACE_WORKSPACE_LAYOUT_MANAGER_DELEGATE_H_
  
  #include "ash/wm/wm_types.h"
  
  namespace aura {
  class Window;
  }
  
  namespace ash {
  namespace wm {
  class WindowState;
  }
  
  // A delegate which can be set to create and control a backdrop which gets
  // placed below the top level window.
  class WorkspaceLayoutManagerDelegate {
   public:
    WorkspaceLayoutManagerDelegate() {}
    virtual ~WorkspaceLayoutManagerDelegate() {}
  
    // A window got added to the layout.
    virtual void OnWindowAddedToLayout(aura::Window* child) = 0;
  
    // A window got removed from the layout.
    virtual void OnWindowRemovedFromLayout(aura::Window* child) = 0;
  
    // The visibility of a window has changed.
    virtual void OnChildWindowVisibilityChanged(aura::Window* child,
                                                bool visible) = 0;
  
    // The stacking order of a window has changed.
    virtual void OnWindowStackingChanged(aura::Window* window) = 0;
  
    // A window state type has changed.
    virtual void OnPostWindowStateTypeChange(wm::WindowState* window_state,
                                             wm::WindowStateType old_type) = 0;
  
    // The work area insets have changed, altering the total available space.
    virtual void OnDisplayWorkAreaInsetsChanged() = 0;
  };
  
  }  // namespace ash
  
  #endif  // ASH_WM_WORKSPACE_WORKSPACE_LAYOUT_MANAGER_DELEGATE_H_
  