1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef ASH_WM_WORKSPACE_CONTROLLER_H_
6 #define ASH_WM_WORKSPACE_CONTROLLER_H_
8 #include "ash/ash_export.h"
9 #include "ash/wm/workspace/workspace_types.h"
10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h"
18 class ShelfLayoutManager
;
19 class WorkspaceControllerTestHelper
;
20 class WorkspaceEventHandler
;
21 class WorkspaceLayoutManager
;
22 class WorkspaceLayoutManagerDelegate
;
24 // WorkspaceController acts as a central place that ties together all the
25 // various workspace pieces.
26 class ASH_EXPORT WorkspaceController
{
28 explicit WorkspaceController(aura::Window
* viewport
);
29 virtual ~WorkspaceController();
31 // Returns the current window state.
32 WorkspaceWindowState
GetWindowState() const;
34 void SetShelf(ShelfLayoutManager
* shelf
);
36 // Starts the animation that occurs on first login.
37 void DoInitialAnimation();
39 // Add a delegate which adds a backdrop behind the top window of the default
41 void SetMaximizeBackdropDelegate(
42 scoped_ptr
<WorkspaceLayoutManagerDelegate
> delegate
);
44 WorkspaceLayoutManager
* layout_manager() { return layout_manager_
; }
47 friend class WorkspaceControllerTestHelper
;
49 aura::Window
* viewport_
;
51 ShelfLayoutManager
* shelf_
;
52 scoped_ptr
<WorkspaceEventHandler
> event_handler_
;
53 WorkspaceLayoutManager
* layout_manager_
;
55 DISALLOW_COPY_AND_ASSIGN(WorkspaceController
);
60 #endif // ASH_WM_WORKSPACE_CONTROLLER_H_