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

Side by Side Diff: ash/wm/workspace/workspace_manager2.h

Issue 11087009: Merge 159822 - ash: Display system background while loading wallpaper. (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1271/src/
Patch Set: Created 8 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 #ifndef ASH_WM_WORKSPACE_WORKSPACE_MANAGER2_H_ 5 #ifndef ASH_WM_WORKSPACE_WORKSPACE_MANAGER2_H_
6 #define ASH_WM_WORKSPACE_WORKSPACE_MANAGER2_H_ 6 #define ASH_WM_WORKSPACE_WORKSPACE_MANAGER2_H_
7 7
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 18 matching lines...) Expand all
29 } 29 }
30 30
31 namespace ui { 31 namespace ui {
32 class Layer; 32 class Layer;
33 } 33 }
34 34
35 namespace ash { 35 namespace ash {
36 namespace internal { 36 namespace internal {
37 37
38 class ShelfLayoutManager; 38 class ShelfLayoutManager;
39 class SystemBackgroundController;
40 class WorkspaceLayoutManager2; 39 class WorkspaceLayoutManager2;
41 class WorkspaceManagerTest2; 40 class WorkspaceManagerTest2;
42 class Workspace2; 41 class Workspace2;
43 42
44 // WorkspaceManager manages multiple workspaces in the desktop. Workspaces are 43 // WorkspaceManager manages multiple workspaces in the desktop. Workspaces are
45 // implicitly created as windows are maximized (or made fullscreen), and 44 // implicitly created as windows are maximized (or made fullscreen), and
46 // destroyed when maximized windows are closed or restored. There is always one 45 // destroyed when maximized windows are closed or restored. There is always one
47 // workspace for the desktop. 46 // workspace for the desktop.
48 // Internally WorkspaceManager2 creates a Window for each Workspace. As windows 47 // Internally WorkspaceManager2 creates a Window for each Workspace. As windows
49 // are maximized and restored they are reparented to the right Window. 48 // are maximized and restored they are reparented to the right Window.
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 void SelectNextWorkspace(AnimateType animate_type); 127 void SelectNextWorkspace(AnimateType animate_type);
129 128
130 // Schedules |workspace| for deletion when it no longer contains any layers. 129 // Schedules |workspace| for deletion when it no longer contains any layers.
131 // See comments above |to_delete_| as to why we do this. 130 // See comments above |to_delete_| as to why we do this.
132 void ScheduleDelete(Workspace2* workspace); 131 void ScheduleDelete(Workspace2* workspace);
133 132
134 // Deletes any workspaces scheduled via ScheduleDelete() that don't contain 133 // Deletes any workspaces scheduled via ScheduleDelete() that don't contain
135 // any layers. 134 // any layers.
136 void ProcessDeletion(); 135 void ProcessDeletion();
137 136
138 // Deletes |background_controller_|. Called from |destroy_background_timer_|.
139 void DestroySystemBackground();
140
141 // Sets |unminimizing_workspace_| to |workspace|. 137 // Sets |unminimizing_workspace_| to |workspace|.
142 void SetUnminimizingWorkspace(Workspace2* workspace); 138 void SetUnminimizingWorkspace(Workspace2* workspace);
143 139
144 // These methods are forwarded from the LayoutManager installed on the 140 // These methods are forwarded from the LayoutManager installed on the
145 // Workspace's window. 141 // Workspace's window.
146 void OnWindowAddedToWorkspace(Workspace2* workspace, aura::Window* child); 142 void OnWindowAddedToWorkspace(Workspace2* workspace, aura::Window* child);
147 void OnWillRemoveWindowFromWorkspace(Workspace2* workspace, 143 void OnWillRemoveWindowFromWorkspace(Workspace2* workspace,
148 aura::Window* child); 144 aura::Window* child);
149 void OnWindowRemovedFromWorkspace(Workspace2* workspace, aura::Window* child); 145 void OnWindowRemovedFromWorkspace(Workspace2* workspace, aura::Window* child);
150 void OnWorkspaceChildWindowVisibilityChanged(Workspace2* workspace, 146 void OnWorkspaceChildWindowVisibilityChanged(Workspace2* workspace,
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 // Ideally we would delete workspaces when not needed. Unfortunately doing so 183 // Ideally we would delete workspaces when not needed. Unfortunately doing so
188 // would effectively cancel animations. Instead when a workspace is no longer 184 // would effectively cancel animations. Instead when a workspace is no longer
189 // needed we add it here and start a timer. When the timer fires any windows 185 // needed we add it here and start a timer. When the timer fires any windows
190 // no longer contain layers are deleted. 186 // no longer contain layers are deleted.
191 std::set<Workspace2*> to_delete_; 187 std::set<Workspace2*> to_delete_;
192 base::OneShotTimer<WorkspaceManager2> delete_timer_; 188 base::OneShotTimer<WorkspaceManager2> delete_timer_;
193 189
194 // See comments in SetUnminimizingWorkspace() for details. 190 // See comments in SetUnminimizingWorkspace() for details.
195 base::WeakPtrFactory<WorkspaceManager2> clear_unminimizing_workspace_factory_; 191 base::WeakPtrFactory<WorkspaceManager2> clear_unminimizing_workspace_factory_;
196 192
197 // Used to show the system level background. Non-null when the background is
198 // visible.
199 scoped_ptr<SystemBackgroundController> background_controller_;
200
201 // Timer used to destroy the background. We wait to destroy until animations
202 // complete.
203 base::OneShotTimer<WorkspaceManager2> destroy_background_timer_;
204
205 // See comments in SetUnminimizingWorkspace() for details. 193 // See comments in SetUnminimizingWorkspace() for details.
206 Workspace2* unminimizing_workspace_; 194 Workspace2* unminimizing_workspace_;
207 195
208 // Set to true if the app is terminating. If true we don't animate the 196 // Set to true if the app is terminating. If true we don't animate the
209 // background, otherwise it can get stuck in the fading position when chrome 197 // background, otherwise it can get stuck in the fading position when chrome
210 // exits (as the last frame we draw before exiting is a frame from the 198 // exits (as the last frame we draw before exiting is a frame from the
211 // animation). 199 // animation).
212 bool app_terminating_; 200 bool app_terminating_;
213 201
214 // If non-empty this is the amount of time animating the desktop in/out. 202 // If non-empty this is the amount of time animating the desktop in/out.
215 base::TimeDelta switch_duration_; 203 base::TimeDelta switch_duration_;
216 204
217 DISALLOW_COPY_AND_ASSIGN(WorkspaceManager2); 205 DISALLOW_COPY_AND_ASSIGN(WorkspaceManager2);
218 }; 206 };
219 207
220 } // namespace internal 208 } // namespace internal
221 } // namespace ash 209 } // namespace ash
222 210
223 #endif // ASH_WM_WORKSPACE_WORKSPACE_MANAGER2_H_ 211 #endif // ASH_WM_WORKSPACE_WORKSPACE_MANAGER2_H_
OLDNEW
« no previous file with comments | « ash/wm/workspace/system_background_controller.cc ('k') | ash/wm/workspace/workspace_manager2.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698