OLD | NEW |
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_constants.h" | 10 #include "ash/ash_constants.h" |
11 #include "ash/ash_switches.h" | 11 #include "ash/ash_switches.h" |
12 #include "ash/desktop_background/desktop_background_controller.h" | 12 #include "ash/desktop_background/desktop_background_controller.h" |
13 #include "ash/desktop_background/desktop_background_widget_controller.h" | 13 #include "ash/desktop_background/desktop_background_widget_controller.h" |
14 #include "ash/desktop_background/user_wallpaper_delegate.h" | 14 #include "ash/desktop_background/user_wallpaper_delegate.h" |
15 #include "ash/display/display_manager.h" | 15 #include "ash/display/display_manager.h" |
16 #include "ash/focus_cycler.h" | 16 #include "ash/focus_cycler.h" |
17 #include "ash/high_contrast/high_contrast_controller.h" | 17 #include "ash/high_contrast/high_contrast_controller.h" |
| 18 #include "ash/host/ash_window_tree_host.h" |
18 #include "ash/root_window_settings.h" | 19 #include "ash/root_window_settings.h" |
19 #include "ash/session_state_delegate.h" | 20 #include "ash/session_state_delegate.h" |
20 #include "ash/shelf/shelf_layout_manager.h" | 21 #include "ash/shelf/shelf_layout_manager.h" |
21 #include "ash/shelf/shelf_types.h" | 22 #include "ash/shelf/shelf_types.h" |
22 #include "ash/shelf/shelf_widget.h" | 23 #include "ash/shelf/shelf_widget.h" |
23 #include "ash/shell.h" | 24 #include "ash/shell.h" |
24 #include "ash/shell_delegate.h" | 25 #include "ash/shell_delegate.h" |
25 #include "ash/shell_factory.h" | 26 #include "ash/shell_factory.h" |
26 #include "ash/shell_window_ids.h" | 27 #include "ash/shell_window_ids.h" |
27 #include "ash/switchable_windows.h" | 28 #include "ash/switchable_windows.h" |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 ui::Layer* new_layer) OVERRIDE {} | 258 ui::Layer* new_layer) OVERRIDE {} |
258 | 259 |
259 private: | 260 private: |
260 DISALLOW_COPY_AND_ASSIGN(EmptyWindowDelegate); | 261 DISALLOW_COPY_AND_ASSIGN(EmptyWindowDelegate); |
261 }; | 262 }; |
262 | 263 |
263 } // namespace | 264 } // namespace |
264 | 265 |
265 namespace internal { | 266 namespace internal { |
266 | 267 |
267 void RootWindowController::CreateForPrimaryDisplay(aura::WindowTreeHost* host) { | 268 void RootWindowController::CreateForPrimaryDisplay(AshWindowTreeHost* host) { |
268 RootWindowController* controller = new RootWindowController(host); | 269 RootWindowController* controller = new RootWindowController(host); |
269 controller->Init(RootWindowController::PRIMARY, | 270 controller->Init(RootWindowController::PRIMARY, |
270 Shell::GetInstance()->delegate()->IsFirstRunAfterBoot()); | 271 Shell::GetInstance()->delegate()->IsFirstRunAfterBoot()); |
271 } | 272 } |
272 | 273 |
273 void RootWindowController::CreateForSecondaryDisplay( | 274 void RootWindowController::CreateForSecondaryDisplay( |
274 aura::WindowTreeHost* host) { | 275 AshWindowTreeHost* host) { |
275 RootWindowController* controller = new RootWindowController(host); | 276 RootWindowController* controller = new RootWindowController(host); |
276 controller->Init(RootWindowController::SECONDARY, false /* first run */); | 277 controller->Init(RootWindowController::SECONDARY, false /* first run */); |
277 } | 278 } |
278 | 279 |
279 void RootWindowController::CreateForVirtualKeyboardDisplay( | 280 void RootWindowController::CreateForVirtualKeyboardDisplay( |
280 aura::WindowTreeHost* host) { | 281 AshWindowTreeHost* host) { |
281 RootWindowController* controller = new RootWindowController(host); | 282 RootWindowController* controller = new RootWindowController(host); |
282 controller->Init(RootWindowController::VIRTUAL_KEYBOARD, | 283 controller->Init(RootWindowController::VIRTUAL_KEYBOARD, |
283 false /* first run */); | 284 false /* first run */); |
284 } | 285 } |
285 | 286 |
286 // static | 287 // static |
287 RootWindowController* RootWindowController::ForShelf(aura::Window* window) { | 288 RootWindowController* RootWindowController::ForShelf(aura::Window* window) { |
288 return GetRootWindowController(window->GetRootWindow()); | 289 return GetRootWindowController(window->GetRootWindow()); |
289 } | 290 } |
290 | 291 |
(...skipping 12 matching lines...) Expand all Loading... |
303 aura::Window* RootWindowController::GetContainerForWindow( | 304 aura::Window* RootWindowController::GetContainerForWindow( |
304 aura::Window* window) { | 305 aura::Window* window) { |
305 aura::Window* container = window->parent(); | 306 aura::Window* container = window->parent(); |
306 while (container && container->type() != ui::wm::WINDOW_TYPE_UNKNOWN) | 307 while (container && container->type() != ui::wm::WINDOW_TYPE_UNKNOWN) |
307 container = container->parent(); | 308 container = container->parent(); |
308 return container; | 309 return container; |
309 } | 310 } |
310 | 311 |
311 RootWindowController::~RootWindowController() { | 312 RootWindowController::~RootWindowController() { |
312 Shutdown(); | 313 Shutdown(); |
313 host_.reset(); | 314 ash_host_.reset(); |
314 // The CaptureClient needs to be around for as long as the RootWindow is | 315 // The CaptureClient needs to be around for as long as the RootWindow is |
315 // valid. | 316 // valid. |
316 capture_client_.reset(); | 317 capture_client_.reset(); |
317 } | 318 } |
318 | 319 |
319 void RootWindowController::SetWallpaperController( | 320 void RootWindowController::SetWallpaperController( |
320 DesktopBackgroundWidgetController* controller) { | 321 DesktopBackgroundWidgetController* controller) { |
321 wallpaper_controller_.reset(controller); | 322 wallpaper_controller_.reset(controller); |
322 } | 323 } |
323 | 324 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 } | 380 } |
380 return modal_container ? static_cast<SystemModalContainerLayoutManager*>( | 381 return modal_container ? static_cast<SystemModalContainerLayoutManager*>( |
381 modal_container->layout_manager()) : NULL; | 382 modal_container->layout_manager()) : NULL; |
382 } | 383 } |
383 | 384 |
384 aura::Window* RootWindowController::GetContainer(int container_id) { | 385 aura::Window* RootWindowController::GetContainer(int container_id) { |
385 return root_window()->GetChildById(container_id); | 386 return root_window()->GetChildById(container_id); |
386 } | 387 } |
387 | 388 |
388 const aura::Window* RootWindowController::GetContainer(int container_id) const { | 389 const aura::Window* RootWindowController::GetContainer(int container_id) const { |
389 return host_->window()->GetChildById(container_id); | 390 return ash_host_->AsWindowTreeHost()->window()->GetChildById(container_id); |
390 } | 391 } |
391 | 392 |
392 void RootWindowController::ShowShelf() { | 393 void RootWindowController::ShowShelf() { |
393 if (!shelf_->shelf()) | 394 if (!shelf_->shelf()) |
394 return; | 395 return; |
395 shelf_->shelf()->SetVisible(true); | 396 shelf_->shelf()->SetVisible(true); |
396 shelf_->status_area_widget()->Show(); | 397 shelf_->status_area_widget()->Show(); |
397 } | 398 } |
398 | 399 |
399 void RootWindowController::OnShelfCreated() { | 400 void RootWindowController::OnShelfCreated() { |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
648 keyboard_controller->RemoveObserver(shelf()->shelf_layout_manager()); | 649 keyboard_controller->RemoveObserver(shelf()->shelf_layout_manager()); |
649 keyboard_controller->RemoveObserver(panel_layout_manager_); | 650 keyboard_controller->RemoveObserver(panel_layout_manager_); |
650 keyboard_controller->RemoveObserver(docked_layout_manager_); | 651 keyboard_controller->RemoveObserver(docked_layout_manager_); |
651 } | 652 } |
652 } | 653 } |
653 } | 654 } |
654 | 655 |
655 //////////////////////////////////////////////////////////////////////////////// | 656 //////////////////////////////////////////////////////////////////////////////// |
656 // RootWindowController, private: | 657 // RootWindowController, private: |
657 | 658 |
658 RootWindowController::RootWindowController(aura::WindowTreeHost* host) | 659 RootWindowController::RootWindowController(AshWindowTreeHost* ash_host) |
659 : host_(host), | 660 : ash_host_(ash_host), |
660 root_window_layout_(NULL), | 661 root_window_layout_(NULL), |
661 docked_layout_manager_(NULL), | 662 docked_layout_manager_(NULL), |
662 panel_layout_manager_(NULL), | 663 panel_layout_manager_(NULL), |
663 touch_hud_debug_(NULL), | 664 touch_hud_debug_(NULL), |
664 touch_hud_projection_(NULL) { | 665 touch_hud_projection_(NULL) { |
665 GetRootWindowSettings(root_window())->controller = this; | 666 GetRootWindowSettings(root_window())->controller = this; |
666 screen_dimmer_.reset(new ScreenDimmer(root_window())); | 667 screen_dimmer_.reset(new ScreenDimmer(root_window())); |
667 | 668 |
668 stacking_controller_.reset(new StackingController); | 669 stacking_controller_.reset(new StackingController); |
669 aura::client::SetWindowTreeClient(root_window(), stacking_controller_.get()); | 670 aura::client::SetWindowTreeClient(root_window(), stacking_controller_.get()); |
670 capture_client_.reset(new ::wm::ScopedCaptureClient(root_window())); | 671 capture_client_.reset(new ::wm::ScopedCaptureClient(root_window())); |
671 } | 672 } |
672 | 673 |
673 void RootWindowController::Init(RootWindowType root_window_type, | 674 void RootWindowController::Init(RootWindowType root_window_type, |
674 bool first_run_after_boot) { | 675 bool first_run_after_boot) { |
675 Shell* shell = Shell::GetInstance(); | 676 Shell* shell = Shell::GetInstance(); |
676 shell->InitRootWindow(root_window()); | 677 shell->InitRootWindow(root_window()); |
677 | 678 |
678 host_->SetCursor(ui::kCursorPointer); | 679 ash_host_->AsWindowTreeHost()->SetCursor(ui::kCursorPointer); |
679 CreateContainersInRootWindow(root_window()); | 680 CreateContainersInRootWindow(root_window()); |
680 | 681 |
681 if (root_window_type == VIRTUAL_KEYBOARD) { | 682 if (root_window_type == VIRTUAL_KEYBOARD) { |
682 shell->InitKeyboard(); | 683 shell->InitKeyboard(); |
683 return; | 684 return; |
684 } | 685 } |
685 | 686 |
686 CreateSystemBackground(first_run_after_boot); | 687 CreateSystemBackground(first_run_after_boot); |
687 | 688 |
688 InitLayoutManagers(); | 689 InitLayoutManagers(); |
689 InitTouchHuds(); | 690 InitTouchHuds(); |
690 | 691 |
691 if (Shell::GetPrimaryRootWindowController()-> | 692 if (Shell::GetPrimaryRootWindowController()-> |
692 GetSystemModalLayoutManager(NULL)->has_modal_background()) { | 693 GetSystemModalLayoutManager(NULL)->has_modal_background()) { |
693 GetSystemModalLayoutManager(NULL)->CreateModalBackground(); | 694 GetSystemModalLayoutManager(NULL)->CreateModalBackground(); |
694 } | 695 } |
695 | 696 |
696 shell->AddShellObserver(this); | 697 shell->AddShellObserver(this); |
697 | 698 |
698 if (root_window_type == PRIMARY) { | 699 if (root_window_type == PRIMARY) { |
699 root_window_layout()->OnWindowResized(); | 700 root_window_layout()->OnWindowResized(); |
700 if (!keyboard::IsKeyboardUsabilityExperimentEnabled()) | 701 if (!keyboard::IsKeyboardUsabilityExperimentEnabled()) |
701 shell->InitKeyboard(); | 702 shell->InitKeyboard(); |
702 } else { | 703 } else { |
703 root_window_layout()->OnWindowResized(); | 704 root_window_layout()->OnWindowResized(); |
704 shell->desktop_background_controller()->OnRootWindowAdded(root_window()); | 705 shell->desktop_background_controller()->OnRootWindowAdded(root_window()); |
705 shell->high_contrast_controller()->OnRootWindowAdded(root_window()); | 706 shell->high_contrast_controller()->OnRootWindowAdded(root_window()); |
706 host_->Show(); | 707 ash_host_->AsWindowTreeHost()->Show(); |
707 | 708 |
708 // Create a shelf if a user is already logged in. | 709 // Create a shelf if a user is already logged in. |
709 if (shell->session_state_delegate()->NumberOfLoggedInUsers()) | 710 if (shell->session_state_delegate()->NumberOfLoggedInUsers()) |
710 shelf()->CreateShelf(); | 711 shelf()->CreateShelf(); |
711 } | 712 } |
712 } | 713 } |
713 | 714 |
714 void RootWindowController::InitLayoutManagers() { | 715 void RootWindowController::InitLayoutManagers() { |
715 root_window_layout_ = new RootWindowLayoutManager(root_window()); | 716 root_window_layout_ = new RootWindowLayoutManager(root_window()); |
716 root_window()->SetLayoutManager(root_window_layout_); | 717 root_window()->SetLayoutManager(root_window_layout_); |
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1005 DisableTouchHudProjection(); | 1006 DisableTouchHudProjection(); |
1006 } | 1007 } |
1007 | 1008 |
1008 RootWindowController* GetRootWindowController( | 1009 RootWindowController* GetRootWindowController( |
1009 const aura::Window* root_window) { | 1010 const aura::Window* root_window) { |
1010 return root_window ? GetRootWindowSettings(root_window)->controller : NULL; | 1011 return root_window ? GetRootWindowSettings(root_window)->controller : NULL; |
1011 } | 1012 } |
1012 | 1013 |
1013 } // namespace internal | 1014 } // namespace internal |
1014 } // namespace ash | 1015 } // namespace ash |
OLD | NEW |