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. 4 5 #ifndef ASH_WM_WORKSPACE_CONTROLLER_H_ 6 #define ASH_WM_WORKSPACE_CONTROLLER_H_ 7 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" 12 13 namespace aura { 14 class Window; 15 } 16 17 namespace ash { 18 namespace internal { 19 20 class ShelfLayoutManager; 21 class WorkspaceControllerTestHelper; 22 class WorkspaceEventHandler; 23 class WorkspaceLayoutManager; 24 25 // WorkspaceController acts as a central place that ties together all the 26 // various workspace pieces. 27 class ASH_EXPORT WorkspaceController { 28 public: 29 explicit WorkspaceController(aura::Window* viewport); 30 virtual ~WorkspaceController(); 31 32 // Returns the current window state. 33 WorkspaceWindowState GetWindowState() const; 34 35 void SetShelf(ShelfLayoutManager* shelf); 36 37 // Starts the animation that occurs on first login. 38 void DoInitialAnimation(); 39 40 private: 41 friend class WorkspaceControllerTestHelper; 42 43 aura::Window* viewport_; 44 45 internal::ShelfLayoutManager* shelf_; 46 scoped_ptr<internal::WorkspaceEventHandler> event_handler_; 47 internal::WorkspaceLayoutManager* layout_manager_; 48 49 DISALLOW_COPY_AND_ASSIGN(WorkspaceController); 50 }; 51 52 } // namespace internal 53 } // namespace ash 54 55 #endif // ASH_WM_WORKSPACE_CONTROLLER_H_ 56