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

Side by Side Diff: ash/common/wm_shell.cc

Issue 2177663002: mash: Move ownership of ShelfDelegate to WmShell (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix wallpaper tests again Created 4 years, 5 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
« no previous file with comments | « ash/common/wm_shell.h ('k') | ash/metrics/user_metrics_recorder.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #include "ash/common/wm_shell.h" 5 #include "ash/common/wm_shell.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "ash/common/accelerators/accelerator_controller.h" 9 #include "ash/common/accelerators/accelerator_controller.h"
10 #include "ash/common/accessibility_delegate.h" 10 #include "ash/common/accessibility_delegate.h"
11 #include "ash/common/focus_cycler.h" 11 #include "ash/common/focus_cycler.h"
12 #include "ash/common/keyboard/keyboard_ui.h" 12 #include "ash/common/keyboard/keyboard_ui.h"
13 #include "ash/common/session/session_state_delegate.h"
13 #include "ash/common/shelf/app_list_shelf_item_delegate.h" 14 #include "ash/common/shelf/app_list_shelf_item_delegate.h"
15 #include "ash/common/shelf/shelf_delegate.h"
14 #include "ash/common/shelf/shelf_model.h" 16 #include "ash/common/shelf/shelf_model.h"
15 #include "ash/common/shell_delegate.h" 17 #include "ash/common/shell_delegate.h"
16 #include "ash/common/shell_window_ids.h" 18 #include "ash/common/shell_window_ids.h"
17 #include "ash/common/system/brightness_control_delegate.h" 19 #include "ash/common/system/brightness_control_delegate.h"
18 #include "ash/common/system/keyboard_brightness_control_delegate.h" 20 #include "ash/common/system/keyboard_brightness_control_delegate.h"
19 #include "ash/common/system/toast/toast_manager.h" 21 #include "ash/common/system/toast/toast_manager.h"
20 #include "ash/common/system/tray/system_tray_delegate.h" 22 #include "ash/common/system/tray/system_tray_delegate.h"
21 #include "ash/common/system/tray/system_tray_notifier.h" 23 #include "ash/common/system/tray/system_tray_notifier.h"
22 #include "ash/common/wm/maximize_mode/maximize_mode_controller.h" 24 #include "ash/common/wm/maximize_mode/maximize_mode_controller.h"
23 #include "ash/common/wm/mru_window_tracker.h" 25 #include "ash/common/wm/mru_window_tracker.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 // Create the app list item in the shelf data model. 62 // Create the app list item in the shelf data model.
61 AppListShelfItemDelegate::CreateAppListItemAndDelegate(shelf_model_.get()); 63 AppListShelfItemDelegate::CreateAppListItemAndDelegate(shelf_model_.get());
62 } 64 }
63 65
64 void WmShell::Shutdown() { 66 void WmShell::Shutdown() {
65 // Accesses WmShell in its destructor. 67 // Accesses WmShell in its destructor.
66 accessibility_delegate_.reset(); 68 accessibility_delegate_.reset();
67 // ShelfItemDelegate subclasses it owns have complex cleanup to run (e.g. ARC 69 // ShelfItemDelegate subclasses it owns have complex cleanup to run (e.g. ARC
68 // shelf items in Chrome) so explicitly shutdown early. 70 // shelf items in Chrome) so explicitly shutdown early.
69 shelf_model_->DestroyItemDelegates(); 71 shelf_model_->DestroyItemDelegates();
72 // Must be destroyed before FocusClient.
73 shelf_delegate_.reset();
70 } 74 }
71 75
72 void WmShell::OnMaximizeModeStarted() { 76 void WmShell::OnMaximizeModeStarted() {
73 FOR_EACH_OBSERVER(ShellObserver, shell_observers_, OnMaximizeModeStarted()); 77 FOR_EACH_OBSERVER(ShellObserver, shell_observers_, OnMaximizeModeStarted());
74 } 78 }
75 79
76 void WmShell::OnMaximizeModeEnded() { 80 void WmShell::OnMaximizeModeEnded() {
77 FOR_EACH_OBSERVER(ShellObserver, shell_observers_, OnMaximizeModeEnded()); 81 FOR_EACH_OBSERVER(ShellObserver, shell_observers_, OnMaximizeModeEnded());
78 } 82 }
79 83
(...skipping 21 matching lines...) Expand all
101 } 105 }
102 106
103 void WmShell::AddLockStateObserver(LockStateObserver* observer) { 107 void WmShell::AddLockStateObserver(LockStateObserver* observer) {
104 lock_state_observers_.AddObserver(observer); 108 lock_state_observers_.AddObserver(observer);
105 } 109 }
106 110
107 void WmShell::RemoveLockStateObserver(LockStateObserver* observer) { 111 void WmShell::RemoveLockStateObserver(LockStateObserver* observer) {
108 lock_state_observers_.RemoveObserver(observer); 112 lock_state_observers_.RemoveObserver(observer);
109 } 113 }
110 114
115 void WmShell::SetShelfDelegateForTesting(
116 std::unique_ptr<ShelfDelegate> test_delegate) {
117 shelf_delegate_ = std::move(test_delegate);
118 }
119
111 WmShell::WmShell(std::unique_ptr<ShellDelegate> shell_delegate) 120 WmShell::WmShell(std::unique_ptr<ShellDelegate> shell_delegate)
112 : delegate_(std::move(shell_delegate)), 121 : delegate_(std::move(shell_delegate)),
113 focus_cycler_(new FocusCycler), 122 focus_cycler_(new FocusCycler),
114 shelf_model_(new ShelfModel), // Must create before ShelfDelegate. 123 shelf_model_(new ShelfModel), // Must create before ShelfDelegate.
115 system_tray_notifier_(new SystemTrayNotifier), 124 system_tray_notifier_(new SystemTrayNotifier),
116 window_cycle_controller_(new WindowCycleController), 125 window_cycle_controller_(new WindowCycleController),
117 window_selector_controller_(new WindowSelectorController) { 126 window_selector_controller_(new WindowSelectorController) {
118 #if defined(OS_CHROMEOS) 127 #if defined(OS_CHROMEOS)
119 brightness_control_delegate_.reset(new system::BrightnessControllerChromeos); 128 brightness_control_delegate_.reset(new system::BrightnessControllerChromeos);
120 keyboard_brightness_control_delegate_.reset(new KeyboardBrightnessController); 129 keyboard_brightness_control_delegate_.reset(new KeyboardBrightnessController);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 } 197 }
189 198
190 void WmShell::DeleteSystemTrayDelegate() { 199 void WmShell::DeleteSystemTrayDelegate() {
191 DCHECK(system_tray_delegate_); 200 DCHECK(system_tray_delegate_);
192 #if defined(OS_CHROMEOS) 201 #if defined(OS_CHROMEOS)
193 logout_confirmation_controller_.reset(); 202 logout_confirmation_controller_.reset();
194 #endif 203 #endif
195 system_tray_delegate_.reset(); 204 system_tray_delegate_.reset();
196 } 205 }
197 206
207 void WmShell::CreateShelfDelegate() {
208 // May be called multiple times as shelves are created and destroyed.
209 if (shelf_delegate_)
210 return;
211 // Must occur after SessionStateDelegate creation and user login because
212 // Chrome's implementation of ShelfDelegate assumes it can get information
213 // about multi-profile login state.
214 DCHECK(GetSessionStateDelegate());
215 DCHECK_GT(GetSessionStateDelegate()->NumberOfLoggedInUsers(), 0);
216 shelf_delegate_.reset(delegate_->CreateShelfDelegate(shelf_model_.get()));
217 }
218
198 void WmShell::DeleteWindowCycleController() { 219 void WmShell::DeleteWindowCycleController() {
199 window_cycle_controller_.reset(); 220 window_cycle_controller_.reset();
200 } 221 }
201 222
202 void WmShell::DeleteWindowSelectorController() { 223 void WmShell::DeleteWindowSelectorController() {
203 window_selector_controller_.reset(); 224 window_selector_controller_.reset();
204 } 225 }
205 226
206 void WmShell::CreateMaximizeModeController() { 227 void WmShell::CreateMaximizeModeController() {
207 maximize_mode_controller_.reset(new MaximizeModeController); 228 maximize_mode_controller_.reset(new MaximizeModeController);
(...skipping 14 matching lines...) Expand all
222 void WmShell::DeleteToastManager() { 243 void WmShell::DeleteToastManager() {
223 toast_manager_.reset(); 244 toast_manager_.reset();
224 } 245 }
225 246
226 void WmShell::SetAcceleratorController( 247 void WmShell::SetAcceleratorController(
227 std::unique_ptr<AcceleratorController> accelerator_controller) { 248 std::unique_ptr<AcceleratorController> accelerator_controller) {
228 accelerator_controller_ = std::move(accelerator_controller); 249 accelerator_controller_ = std::move(accelerator_controller);
229 } 250 }
230 251
231 } // namespace ash 252 } // namespace ash
OLDNEW
« no previous file with comments | « ash/common/wm_shell.h ('k') | ash/metrics/user_metrics_recorder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698