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

Side by Side Diff: ash/root_window_controller.cc

Issue 2620913003: Removes WmRootWindowController subclasses (Closed)
Patch Set: spelling Created 3 years, 11 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/root_window_controller.h ('k') | ash/shell.h » ('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 (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 #include "ash/root_window_controller.h" 5 #include "ash/root_window_controller.h"
6 6
7 #include <queue> 7 #include <queue>
8 #include <vector> 8 #include <vector>
9 9
10 #include "ash/ash_touch_exploration_manager_chromeos.h" 10 #include "ash/ash_touch_exploration_manager_chromeos.h"
11 #include "ash/aura/aura_layout_manager_adapter.h" 11 #include "ash/aura/aura_layout_manager_adapter.h"
12 #include "ash/aura/wm_root_window_controller_aura.h"
13 #include "ash/aura/wm_window_aura.h" 12 #include "ash/aura/wm_window_aura.h"
14 #include "ash/common/ash_constants.h" 13 #include "ash/common/ash_constants.h"
15 #include "ash/common/ash_switches.h" 14 #include "ash/common/ash_switches.h"
16 #include "ash/common/focus_cycler.h" 15 #include "ash/common/focus_cycler.h"
17 #include "ash/common/login_status.h" 16 #include "ash/common/login_status.h"
18 #include "ash/common/session/session_state_delegate.h" 17 #include "ash/common/session/session_state_delegate.h"
19 #include "ash/common/shelf/shelf_delegate.h" 18 #include "ash/common/shelf/shelf_delegate.h"
20 #include "ash/common/shelf/shelf_layout_manager.h" 19 #include "ash/common/shelf/shelf_layout_manager.h"
21 #include "ash/common/shelf/shelf_widget.h" 20 #include "ash/common/shelf/shelf_widget.h"
22 #include "ash/common/shelf/wm_shelf.h" 21 #include "ash/common/shelf/wm_shelf.h"
23 #include "ash/common/shell_delegate.h" 22 #include "ash/common/shell_delegate.h"
24 #include "ash/common/system/status_area_layout_manager.h" 23 #include "ash/common/system/status_area_layout_manager.h"
25 #include "ash/common/system/status_area_widget.h" 24 #include "ash/common/system/status_area_widget.h"
26 #include "ash/common/system/tray/system_tray_delegate.h" 25 #include "ash/common/system/tray/system_tray_delegate.h"
27 #include "ash/common/wallpaper/wallpaper_delegate.h" 26 #include "ash/common/wallpaper/wallpaper_delegate.h"
28 #include "ash/common/wallpaper/wallpaper_widget_controller.h" 27 #include "ash/common/wallpaper/wallpaper_widget_controller.h"
29 #include "ash/common/wm/always_on_top_controller.h" 28 #include "ash/common/wm/always_on_top_controller.h"
30 #include "ash/common/wm/container_finder.h" 29 #include "ash/common/wm/container_finder.h"
31 #include "ash/common/wm/dock/docked_window_layout_manager.h" 30 #include "ash/common/wm/dock/docked_window_layout_manager.h"
32 #include "ash/common/wm/fullscreen_window_finder.h" 31 #include "ash/common/wm/fullscreen_window_finder.h"
33 #include "ash/common/wm/panels/panel_layout_manager.h" 32 #include "ash/common/wm/panels/panel_layout_manager.h"
34 #include "ash/common/wm/root_window_layout_manager.h" 33 #include "ash/common/wm/root_window_layout_manager.h"
35 #include "ash/common/wm/switchable_windows.h" 34 #include "ash/common/wm/switchable_windows.h"
36 #include "ash/common/wm/system_modal_container_layout_manager.h" 35 #include "ash/common/wm/system_modal_container_layout_manager.h"
37 #include "ash/common/wm/window_state.h" 36 #include "ash/common/wm/window_state.h"
38 #include "ash/common/wm/workspace/workspace_layout_manager.h" 37 #include "ash/common/wm/workspace/workspace_layout_manager.h"
39 #include "ash/common/wm/workspace_controller.h" 38 #include "ash/common/wm/workspace_controller.h"
39 #include "ash/common/wm_root_window_controller.h"
40 #include "ash/common/wm_shell.h" 40 #include "ash/common/wm_shell.h"
41 #include "ash/common/wm_window.h" 41 #include "ash/common/wm_window.h"
42 #include "ash/high_contrast/high_contrast_controller.h" 42 #include "ash/high_contrast/high_contrast_controller.h"
43 #include "ash/host/ash_window_tree_host.h" 43 #include "ash/host/ash_window_tree_host.h"
44 #include "ash/public/cpp/shelf_types.h" 44 #include "ash/public/cpp/shelf_types.h"
45 #include "ash/public/cpp/shell_window_ids.h" 45 #include "ash/public/cpp/shell_window_ids.h"
46 #include "ash/root_window_settings.h" 46 #include "ash/root_window_settings.h"
47 #include "ash/shelf/shelf_window_targeter.h" 47 #include "ash/shelf/shelf_window_targeter.h"
48 #include "ash/shell.h" 48 #include "ash/shell.h"
49 #include "ash/touch/touch_hud_debug.h" 49 #include "ash/touch/touch_hud_debug.h"
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 // If the target window is above blocking window, the window can handle 132 // If the target window is above blocking window, the window can handle
133 // events. 133 // events.
134 return std::find(blocking_iter, windows.end(), target) != windows.end(); 134 return std::find(blocking_iter, windows.end(), target) != windows.end();
135 } 135 }
136 136
137 return true; 137 return true;
138 } 138 }
139 139
140 } // namespace 140 } // namespace
141 141
142 RootWindowController::~RootWindowController() {
143 Shutdown();
144 ash_host_.reset();
145 mus_window_tree_host_.reset();
146 // The CaptureClient needs to be around for as long as the RootWindow is
147 // valid.
148 capture_client_.reset();
149 }
150
142 void RootWindowController::CreateForPrimaryDisplay(AshWindowTreeHost* host) { 151 void RootWindowController::CreateForPrimaryDisplay(AshWindowTreeHost* host) {
143 RootWindowController* controller = new RootWindowController(host); 152 RootWindowController* controller = new RootWindowController(host, nullptr);
144 controller->Init(RootWindowController::PRIMARY); 153 controller->Init(RootWindowType::PRIMARY);
145 } 154 }
146 155
147 void RootWindowController::CreateForSecondaryDisplay(AshWindowTreeHost* host) { 156 void RootWindowController::CreateForSecondaryDisplay(AshWindowTreeHost* host) {
148 RootWindowController* controller = new RootWindowController(host); 157 RootWindowController* controller = new RootWindowController(host, nullptr);
149 controller->Init(RootWindowController::SECONDARY); 158 controller->Init(RootWindowType::SECONDARY);
150 } 159 }
151 160
152 // static 161 // static
153 RootWindowController* RootWindowController::ForWindow( 162 RootWindowController* RootWindowController::ForWindow(
154 const aura::Window* window) { 163 const aura::Window* window) {
155 CHECK(Shell::HasInstance()); 164 DCHECK(window);
165 CHECK(WmShell::HasInstance() &&
166 (WmShell::Get()->IsRunningInMash() || Shell::HasInstance()));
156 return GetRootWindowController(window->GetRootWindow()); 167 return GetRootWindowController(window->GetRootWindow());
157 } 168 }
158 169
159 // static 170 // static
160 RootWindowController* RootWindowController::ForTargetRootWindow() { 171 RootWindowController* RootWindowController::ForTargetRootWindow() {
161 CHECK(Shell::HasInstance()); 172 CHECK(Shell::HasInstance());
162 return GetRootWindowController(Shell::GetTargetRootWindow()); 173 return GetRootWindowController(Shell::GetTargetRootWindow());
163 } 174 }
164 175
165 RootWindowController::~RootWindowController() {
166 Shutdown();
167 ash_host_.reset();
168 // The CaptureClient needs to be around for as long as the RootWindow is
169 // valid.
170 capture_client_.reset();
171 }
172
173 aura::WindowTreeHost* RootWindowController::GetHost() { 176 aura::WindowTreeHost* RootWindowController::GetHost() {
174 return ash_host_->AsWindowTreeHost(); 177 return window_tree_host_;
175 } 178 }
176 179
177 const aura::WindowTreeHost* RootWindowController::GetHost() const { 180 const aura::WindowTreeHost* RootWindowController::GetHost() const {
178 return ash_host_->AsWindowTreeHost(); 181 return window_tree_host_;
179 } 182 }
180 183
181 aura::Window* RootWindowController::GetRootWindow() { 184 aura::Window* RootWindowController::GetRootWindow() {
182 return GetHost()->window(); 185 return GetHost()->window();
183 } 186 }
184 187
185 const aura::Window* RootWindowController::GetRootWindow() const { 188 const aura::Window* RootWindowController::GetRootWindow() const {
186 return GetHost()->window(); 189 return GetHost()->window();
187 } 190 }
188 191
189 WorkspaceController* RootWindowController::workspace_controller() { 192 WorkspaceController* RootWindowController::workspace_controller() {
190 return wm_root_window_controller_->workspace_controller(); 193 return wm_root_window_controller_->workspace_controller();
191 } 194 }
192 195
193 void RootWindowController::Shutdown() { 196 void RootWindowController::Shutdown() {
194 WmShell::Get()->RemoveShellObserver(this); 197 WmShell::Get()->RemoveShellObserver(this);
195 198
196 touch_exploration_manager_.reset(); 199 touch_exploration_manager_.reset();
197 200
198 wm_root_window_controller_->ResetRootForNewWindowsIfNecessary(); 201 wm_root_window_controller_->ResetRootForNewWindowsIfNecessary();
199 202
200 CloseChildWindows(); 203 CloseChildWindows();
201 aura::Window* root_window = GetRootWindow(); 204 aura::Window* root_window = GetRootWindow();
202 GetRootWindowSettings(root_window)->controller = NULL; 205 GetRootWindowSettings(root_window)->controller = NULL;
203 // Forget with the display ID so that display lookup 206 // Forget with the display ID so that display lookup
204 // ends up with invalid display. 207 // ends up with invalid display.
205 GetRootWindowSettings(root_window)->display_id = display::kInvalidDisplayId; 208 GetRootWindowSettings(root_window)->display_id = display::kInvalidDisplayId;
206 ash_host_->PrepareForShutdown(); 209 if (ash_host_)
210 ash_host_->PrepareForShutdown();
207 211
208 system_wallpaper_.reset(); 212 system_wallpaper_.reset();
209 aura::client::SetScreenPositionClient(root_window, NULL); 213 aura::client::SetScreenPositionClient(root_window, NULL);
210 } 214 }
211 215
212 bool RootWindowController::CanWindowReceiveEvents(aura::Window* window) { 216 bool RootWindowController::CanWindowReceiveEvents(aura::Window* window) {
213 if (GetRootWindow() != window->GetRootWindow()) 217 if (GetRootWindow() != window->GetRootWindow())
214 return false; 218 return false;
215 219
216 // Always allow events to fall through to the virtual keyboard even if 220 // Always allow events to fall through to the virtual keyboard even if
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 WmWindowAura::Get(window)); 256 WmWindowAura::Get(window));
253 257
254 return true; 258 return true;
255 } 259 }
256 260
257 aura::Window* RootWindowController::GetContainer(int container_id) { 261 aura::Window* RootWindowController::GetContainer(int container_id) {
258 return GetRootWindow()->GetChildById(container_id); 262 return GetRootWindow()->GetChildById(container_id);
259 } 263 }
260 264
261 const aura::Window* RootWindowController::GetContainer(int container_id) const { 265 const aura::Window* RootWindowController::GetContainer(int container_id) const {
262 return ash_host_->AsWindowTreeHost()->window()->GetChildById(container_id); 266 return window_tree_host_->window()->GetChildById(container_id);
263 } 267 }
264 268
265 void RootWindowController::OnInitialWallpaperAnimationStarted() { 269 void RootWindowController::OnInitialWallpaperAnimationStarted() {
266 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 270 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
267 switches::kAshAnimateFromBootSplashScreen) && 271 switches::kAshAnimateFromBootSplashScreen) &&
268 boot_splash_screen_.get()) { 272 boot_splash_screen_.get()) {
269 // Make the splash screen fade out so it doesn't obscure the wallpaper's 273 // Make the splash screen fade out so it doesn't obscure the wallpaper's
270 // brightness/grayscale animation. 274 // brightness/grayscale animation.
271 boot_splash_screen_->StartHideAnimation( 275 boot_splash_screen_->StartHideAnimation(
272 base::TimeDelta::FromMilliseconds(kBootSplashScreenHideDurationMs)); 276 base::TimeDelta::FromMilliseconds(kBootSplashScreenHideDurationMs));
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 386
383 void RootWindowController::SetTouchAccessibilityAnchorPoint( 387 void RootWindowController::SetTouchAccessibilityAnchorPoint(
384 const gfx::Point& anchor_point) { 388 const gfx::Point& anchor_point) {
385 if (touch_exploration_manager_) 389 if (touch_exploration_manager_)
386 touch_exploration_manager_->SetTouchAccessibilityAnchorPoint(anchor_point); 390 touch_exploration_manager_->SetTouchAccessibilityAnchorPoint(anchor_point);
387 } 391 }
388 392
389 //////////////////////////////////////////////////////////////////////////////// 393 ////////////////////////////////////////////////////////////////////////////////
390 // RootWindowController, private: 394 // RootWindowController, private:
391 395
392 RootWindowController::RootWindowController(AshWindowTreeHost* ash_host) 396 RootWindowController::RootWindowController(
397 AshWindowTreeHost* ash_host,
398 aura::WindowTreeHost* window_tree_host)
393 : ash_host_(ash_host), 399 : ash_host_(ash_host),
400 mus_window_tree_host_(window_tree_host),
401 window_tree_host_(ash_host ? ash_host->AsWindowTreeHost()
402 : window_tree_host),
394 wm_shelf_(base::MakeUnique<WmShelf>()), 403 wm_shelf_(base::MakeUnique<WmShelf>()),
395 touch_hud_debug_(NULL), 404 touch_hud_debug_(NULL),
396 touch_hud_projection_(NULL) { 405 touch_hud_projection_(NULL) {
406 DCHECK((ash_host && !window_tree_host) || (!ash_host && window_tree_host));
397 aura::Window* root_window = GetRootWindow(); 407 aura::Window* root_window = GetRootWindow();
398 GetRootWindowSettings(root_window)->controller = this; 408 GetRootWindowSettings(root_window)->controller = this;
399 409
400 // Has to happen after this is set as |controller| of RootWindowSettings. 410 // Has to happen after this is set as |controller| of RootWindowSettings.
401 wm_root_window_controller_ = WmRootWindowControllerAura::Get(root_window); 411 wm_root_window_controller_ = base::MakeUnique<WmRootWindowController>(
412 this, WmWindowAura::Get(root_window));
402 413
403 stacking_controller_.reset(new StackingController); 414 stacking_controller_.reset(new StackingController);
404 aura::client::SetWindowParentingClient(root_window, 415 aura::client::SetWindowParentingClient(root_window,
405 stacking_controller_.get()); 416 stacking_controller_.get());
406 capture_client_.reset(new ::wm::ScopedCaptureClient(root_window)); 417 capture_client_.reset(new ::wm::ScopedCaptureClient(root_window));
407 } 418 }
408 419
409 void RootWindowController::Init(RootWindowType root_window_type) { 420 void RootWindowController::Init(RootWindowType root_window_type) {
410 aura::Window* root_window = GetRootWindow(); 421 aura::Window* root_window = GetRootWindow();
411 Shell* shell = Shell::GetInstance(); 422 WmShell* wm_shell = WmShell::Get();
412 shell->InitRootWindow(root_window); 423 Shell* shell = nullptr;
424 if (!wm_shell->IsRunningInMash()) {
425 shell = Shell::GetInstance();
426 shell->InitRootWindow(root_window);
427 }
413 428
414 wm_root_window_controller_->CreateContainers(); 429 wm_root_window_controller_->CreateContainers();
415 430
416 CreateSystemWallpaper(root_window_type); 431 CreateSystemWallpaper(root_window_type);
417 432
418 InitLayoutManagers(); 433 InitLayoutManagers();
419 InitTouchHuds(); 434 InitTouchHuds();
420 435
421 if (WmShell::Get() 436 if (wm_shell->GetPrimaryRootWindowController()
422 ->GetPrimaryRootWindowController()
423 ->GetSystemModalLayoutManager(nullptr) 437 ->GetSystemModalLayoutManager(nullptr)
424 ->has_window_dimmer()) { 438 ->has_window_dimmer()) {
425 wm_root_window_controller_->GetSystemModalLayoutManager(nullptr) 439 wm_root_window_controller_->GetSystemModalLayoutManager(nullptr)
426 ->CreateModalBackground(); 440 ->CreateModalBackground();
427 } 441 }
428 442
429 WmShell::Get()->AddShellObserver(this); 443 wm_shell->AddShellObserver(this);
430 444
431 wm_root_window_controller_->root_window_layout_manager()->OnWindowResized(); 445 wm_root_window_controller_->root_window_layout_manager()->OnWindowResized();
432 if (root_window_type == PRIMARY) { 446 if (root_window_type == RootWindowType::PRIMARY) {
433 shell->InitKeyboard(); 447 if (!wm_shell->IsRunningInMash())
448 shell->InitKeyboard();
434 } else { 449 } else {
435 ash_host_->AsWindowTreeHost()->Show(); 450 window_tree_host_->Show();
436 451
437 // Create a shelf if a user is already logged in. 452 // Create a shelf if a user is already logged in.
438 if (WmShell::Get()->GetSessionStateDelegate()->NumberOfLoggedInUsers()) 453 if (wm_shell->GetSessionStateDelegate()->NumberOfLoggedInUsers())
439 wm_root_window_controller_->CreateShelf(); 454 wm_root_window_controller_->CreateShelf();
440 455
441 // Notify shell observers about new root window. 456 // Notify shell observers about new root window.
442 shell->OnRootWindowAdded(WmWindowAura::Get(root_window)); 457 if (!wm_shell->IsRunningInMash())
458 shell->OnRootWindowAdded(WmWindowAura::Get(root_window));
443 } 459 }
444 460
461 // TODO: AshTouchExplorationManager doesn't work with mus.
462 // http://crbug.com/679782
445 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( 463 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
446 switches::kAshDisableTouchExplorationMode)) { 464 switches::kAshDisableTouchExplorationMode) &&
465 !wm_shell->IsRunningInMash()) {
447 touch_exploration_manager_.reset(new AshTouchExplorationManager(this)); 466 touch_exploration_manager_.reset(new AshTouchExplorationManager(this));
448 } 467 }
449 } 468 }
450 469
451 void RootWindowController::InitLayoutManagers() { 470 void RootWindowController::InitLayoutManagers() {
452 // Create the shelf and status area widgets. 471 // Create the shelf and status area widgets.
453 DCHECK(!wm_shelf_->shelf_widget()); 472 DCHECK(!wm_shelf_->shelf_widget());
454 aura::Window* shelf_container = GetContainer(kShellWindowId_ShelfContainer); 473 aura::Window* shelf_container = GetContainer(kShellWindowId_ShelfContainer);
455 aura::Window* status_container = GetContainer(kShellWindowId_StatusContainer); 474 aura::Window* status_container = GetContainer(kShellWindowId_StatusContainer);
456 WmWindow* wm_shelf_container = WmWindowAura::Get(shelf_container); 475 WmWindow* wm_shelf_container = WmWindowAura::Get(shelf_container);
(...skipping 19 matching lines...) Expand all
476 -kResizeOutsideBoundsSize); 495 -kResizeOutsideBoundsSize);
477 gfx::Insets touch_extend = 496 gfx::Insets touch_extend =
478 mouse_extend.Scale(kResizeOutsideBoundsScaleForTouch); 497 mouse_extend.Scale(kResizeOutsideBoundsScaleForTouch);
479 aura::Window* panel_container = GetContainer(kShellWindowId_PanelContainer); 498 aura::Window* panel_container = GetContainer(kShellWindowId_PanelContainer);
480 panel_container->SetEventTargeter(std::unique_ptr<ui::EventTargeter>( 499 panel_container->SetEventTargeter(std::unique_ptr<ui::EventTargeter>(
481 new AttachedPanelWindowTargeter(panel_container, mouse_extend, 500 new AttachedPanelWindowTargeter(panel_container, mouse_extend,
482 touch_extend, panel_layout_manager()))); 501 touch_extend, panel_layout_manager())));
483 } 502 }
484 503
485 void RootWindowController::InitTouchHuds() { 504 void RootWindowController::InitTouchHuds() {
505 if (WmShell::Get()->IsRunningInMash())
506 return;
507
486 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); 508 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
487 if (command_line->HasSwitch(switches::kAshTouchHud)) 509 if (command_line->HasSwitch(switches::kAshTouchHud))
488 set_touch_hud_debug(new TouchHudDebug(GetRootWindow())); 510 set_touch_hud_debug(new TouchHudDebug(GetRootWindow()));
489 if (Shell::GetInstance()->is_touch_hud_projection_enabled()) 511 if (Shell::GetInstance()->is_touch_hud_projection_enabled())
490 EnableTouchHudProjection(); 512 EnableTouchHudProjection();
491 } 513 }
492 514
493 void RootWindowController::CreateSystemWallpaper( 515 void RootWindowController::CreateSystemWallpaper(
494 RootWindowType root_window_type) { 516 RootWindowType root_window_type) {
495 SkColor color = SK_ColorBLACK; 517 SkColor color = SK_ColorBLACK;
496 // The splash screen appears on the primary display at boot. If this is a 518 // The splash screen appears on the primary display at boot. If this is a
497 // secondary monitor (either connected at boot or connected later) or if the 519 // secondary monitor (either connected at boot or connected later) or if the
498 // browser restarted for a second login then don't use the boot color. 520 // browser restarted for a second login then don't use the boot color.
499 const bool is_boot_splash_screen = 521 const bool is_boot_splash_screen =
500 root_window_type == PRIMARY && 522 root_window_type == RootWindowType::PRIMARY &&
501 base::CommandLine::ForCurrentProcess()->HasSwitch( 523 base::CommandLine::ForCurrentProcess()->HasSwitch(
502 chromeos::switches::kFirstExecAfterBoot); 524 chromeos::switches::kFirstExecAfterBoot);
503 if (is_boot_splash_screen) 525 if (is_boot_splash_screen)
504 color = kChromeOsBootColor; 526 color = kChromeOsBootColor;
505 system_wallpaper_.reset( 527 system_wallpaper_.reset(
506 new SystemWallpaperController(GetRootWindow(), color)); 528 new SystemWallpaperController(GetRootWindow(), color));
507 529
508 // Make a copy of the system's boot splash screen so we can composite it 530 // Make a copy of the system's boot splash screen so we can composite it
509 // onscreen until the wallpaper is ready. 531 // onscreen until the wallpaper is ready.
510 if (is_boot_splash_screen && 532 if (is_boot_splash_screen &&
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 EnableTouchHudProjection(); 567 EnableTouchHudProjection();
546 else 568 else
547 DisableTouchHudProjection(); 569 DisableTouchHudProjection();
548 } 570 }
549 571
550 RootWindowController* GetRootWindowController(const aura::Window* root_window) { 572 RootWindowController* GetRootWindowController(const aura::Window* root_window) {
551 return root_window ? GetRootWindowSettings(root_window)->controller : nullptr; 573 return root_window ? GetRootWindowSettings(root_window)->controller : nullptr;
552 } 574 }
553 575
554 } // namespace ash 576 } // namespace ash
OLDNEW
« no previous file with comments | « ash/root_window_controller.h ('k') | ash/shell.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698