| 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/shell.h" | 5 #include "ash/shell.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "ash/accelerators/accelerator_controller.h" | 10 #include "ash/accelerators/accelerator_controller.h" |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 190 return !!instance_; | 190 return !!instance_; |
| 191 } | 191 } |
| 192 | 192 |
| 193 // static | 193 // static |
| 194 void Shell::DeleteInstance() { | 194 void Shell::DeleteInstance() { |
| 195 delete instance_; | 195 delete instance_; |
| 196 instance_ = NULL; | 196 instance_ = NULL; |
| 197 } | 197 } |
| 198 | 198 |
| 199 // static | 199 // static |
| 200 internal::RootWindowController* Shell::GetPrimaryRootWindowController() { | 200 RootWindowController* Shell::GetPrimaryRootWindowController() { |
| 201 return internal::GetRootWindowController(GetPrimaryRootWindow()); | 201 return GetRootWindowController(GetPrimaryRootWindow()); |
| 202 } | 202 } |
| 203 | 203 |
| 204 // static | 204 // static |
| 205 Shell::RootWindowControllerList Shell::GetAllRootWindowControllers() { | 205 Shell::RootWindowControllerList Shell::GetAllRootWindowControllers() { |
| 206 return Shell::GetInstance()->display_controller()-> | 206 return Shell::GetInstance()->display_controller()-> |
| 207 GetAllRootWindowControllers(); | 207 GetAllRootWindowControllers(); |
| 208 } | 208 } |
| 209 | 209 |
| 210 // static | 210 // static |
| 211 aura::Window* Shell::GetPrimaryRootWindow() { | 211 aura::Window* Shell::GetPrimaryRootWindow() { |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 ui::MenuSourceType source_type) { | 266 ui::MenuSourceType source_type) { |
| 267 // No context menus if there is no session with an active user. | 267 // No context menus if there is no session with an active user. |
| 268 if (!session_state_delegate_->NumberOfLoggedInUsers()) | 268 if (!session_state_delegate_->NumberOfLoggedInUsers()) |
| 269 return; | 269 return; |
| 270 // No context menus when screen is locked. | 270 // No context menus when screen is locked. |
| 271 if (session_state_delegate_->IsScreenLocked()) | 271 if (session_state_delegate_->IsScreenLocked()) |
| 272 return; | 272 return; |
| 273 | 273 |
| 274 aura::Window* root = | 274 aura::Window* root = |
| 275 wm::GetRootWindowMatching(gfx::Rect(location_in_screen, gfx::Size())); | 275 wm::GetRootWindowMatching(gfx::Rect(location_in_screen, gfx::Size())); |
| 276 internal::GetRootWindowController(root)-> | 276 GetRootWindowController(root) |
| 277 ShowContextMenu(location_in_screen, source_type); | 277 ->ShowContextMenu(location_in_screen, source_type); |
| 278 } | 278 } |
| 279 | 279 |
| 280 void Shell::ToggleAppList(aura::Window* window) { | 280 void Shell::ToggleAppList(aura::Window* window) { |
| 281 // If the context window is not given, show it on the target root window. | 281 // If the context window is not given, show it on the target root window. |
| 282 if (!window) | 282 if (!window) |
| 283 window = GetTargetRootWindow(); | 283 window = GetTargetRootWindow(); |
| 284 if (!app_list_controller_) | 284 if (!app_list_controller_) |
| 285 app_list_controller_.reset(new internal::AppListController); | 285 app_list_controller_.reset(new AppListController); |
| 286 app_list_controller_->SetVisible(!app_list_controller_->IsVisible(), window); | 286 app_list_controller_->SetVisible(!app_list_controller_->IsVisible(), window); |
| 287 } | 287 } |
| 288 | 288 |
| 289 bool Shell::GetAppListTargetVisibility() const { | 289 bool Shell::GetAppListTargetVisibility() const { |
| 290 return app_list_controller_.get() && | 290 return app_list_controller_.get() && |
| 291 app_list_controller_->GetTargetVisibility(); | 291 app_list_controller_->GetTargetVisibility(); |
| 292 } | 292 } |
| 293 | 293 |
| 294 aura::Window* Shell::GetAppListWindow() { | 294 aura::Window* Shell::GetAppListWindow() { |
| 295 return app_list_controller_.get() ? app_list_controller_->GetWindow() : NULL; | 295 return app_list_controller_.get() ? app_list_controller_->GetWindow() : NULL; |
| 296 } | 296 } |
| 297 | 297 |
| 298 app_list::AppListView* Shell::GetAppListView() { | 298 app_list::AppListView* Shell::GetAppListView() { |
| 299 return app_list_controller_.get() ? app_list_controller_->GetView() : NULL; | 299 return app_list_controller_.get() ? app_list_controller_->GetView() : NULL; |
| 300 } | 300 } |
| 301 | 301 |
| 302 bool Shell::IsSystemModalWindowOpen() const { | 302 bool Shell::IsSystemModalWindowOpen() const { |
| 303 if (simulate_modal_window_open_for_testing_) | 303 if (simulate_modal_window_open_for_testing_) |
| 304 return true; | 304 return true; |
| 305 const std::vector<aura::Window*> containers = GetContainersFromAllRootWindows( | 305 const std::vector<aura::Window*> containers = GetContainersFromAllRootWindows( |
| 306 internal::kShellWindowId_SystemModalContainer, NULL); | 306 kShellWindowId_SystemModalContainer, NULL); |
| 307 for (std::vector<aura::Window*>::const_iterator cit = containers.begin(); | 307 for (std::vector<aura::Window*>::const_iterator cit = containers.begin(); |
| 308 cit != containers.end(); ++cit) { | 308 cit != containers.end(); ++cit) { |
| 309 for (aura::Window::Windows::const_iterator wit = (*cit)->children().begin(); | 309 for (aura::Window::Windows::const_iterator wit = (*cit)->children().begin(); |
| 310 wit != (*cit)->children().end(); ++wit) { | 310 wit != (*cit)->children().end(); ++wit) { |
| 311 if ((*wit)->GetProperty(aura::client::kModalKey) == | 311 if ((*wit)->GetProperty(aura::client::kModalKey) == |
| 312 ui::MODAL_TYPE_SYSTEM && (*wit)->TargetVisibility()) { | 312 ui::MODAL_TYPE_SYSTEM && (*wit)->TargetVisibility()) { |
| 313 return true; | 313 return true; |
| 314 } | 314 } |
| 315 } | 315 } |
| 316 } | 316 } |
| 317 return false; | 317 return false; |
| 318 } | 318 } |
| 319 | 319 |
| 320 views::NonClientFrameView* Shell::CreateDefaultNonClientFrameView( | 320 views::NonClientFrameView* Shell::CreateDefaultNonClientFrameView( |
| 321 views::Widget* widget) { | 321 views::Widget* widget) { |
| 322 // Use translucent-style window frames for dialogs. | 322 // Use translucent-style window frames for dialogs. |
| 323 return new CustomFrameViewAsh(widget); | 323 return new CustomFrameViewAsh(widget); |
| 324 } | 324 } |
| 325 | 325 |
| 326 void Shell::RotateFocus(Direction direction) { | 326 void Shell::RotateFocus(Direction direction) { |
| 327 focus_cycler_->RotateFocus( | 327 focus_cycler_->RotateFocus(direction == FORWARD ? FocusCycler::FORWARD |
| 328 direction == FORWARD ? internal::FocusCycler::FORWARD : | 328 : FocusCycler::BACKWARD); |
| 329 internal::FocusCycler::BACKWARD); | |
| 330 } | 329 } |
| 331 | 330 |
| 332 void Shell::SetDisplayWorkAreaInsets(Window* contains, | 331 void Shell::SetDisplayWorkAreaInsets(Window* contains, |
| 333 const gfx::Insets& insets) { | 332 const gfx::Insets& insets) { |
| 334 if (!display_controller_->UpdateWorkAreaOfDisplayNearestWindow( | 333 if (!display_controller_->UpdateWorkAreaOfDisplayNearestWindow( |
| 335 contains, insets)) { | 334 contains, insets)) { |
| 336 return; | 335 return; |
| 337 } | 336 } |
| 338 FOR_EACH_OBSERVER(ShellObserver, observers_, | 337 FOR_EACH_OBSERVER(ShellObserver, observers_, |
| 339 OnDisplayWorkAreaInsetsChanged()); | 338 OnDisplayWorkAreaInsetsChanged()); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 358 void Shell::OnAppTerminating() { | 357 void Shell::OnAppTerminating() { |
| 359 FOR_EACH_OBSERVER(ShellObserver, observers_, OnAppTerminating()); | 358 FOR_EACH_OBSERVER(ShellObserver, observers_, OnAppTerminating()); |
| 360 } | 359 } |
| 361 | 360 |
| 362 void Shell::OnLockStateChanged(bool locked) { | 361 void Shell::OnLockStateChanged(bool locked) { |
| 363 FOR_EACH_OBSERVER(ShellObserver, observers_, OnLockStateChanged(locked)); | 362 FOR_EACH_OBSERVER(ShellObserver, observers_, OnLockStateChanged(locked)); |
| 364 #ifndef NDEBUG | 363 #ifndef NDEBUG |
| 365 // Make sure that there is no system modal in Lock layer when unlocked. | 364 // Make sure that there is no system modal in Lock layer when unlocked. |
| 366 if (!locked) { | 365 if (!locked) { |
| 367 std::vector<aura::Window*> containers = GetContainersFromAllRootWindows( | 366 std::vector<aura::Window*> containers = GetContainersFromAllRootWindows( |
| 368 internal::kShellWindowId_LockSystemModalContainer, | 367 kShellWindowId_LockSystemModalContainer, GetPrimaryRootWindow()); |
| 369 GetPrimaryRootWindow()); | |
| 370 for (std::vector<aura::Window*>::const_iterator iter = containers.begin(); | 368 for (std::vector<aura::Window*>::const_iterator iter = containers.begin(); |
| 371 iter != containers.end(); ++iter) { | 369 iter != containers.end(); ++iter) { |
| 372 DCHECK_EQ(0u, (*iter)->children().size()); | 370 DCHECK_EQ(0u, (*iter)->children().size()); |
| 373 } | 371 } |
| 374 } | 372 } |
| 375 #endif | 373 #endif |
| 376 } | 374 } |
| 377 | 375 |
| 378 void Shell::OnCastingSessionStartedOrStopped(bool started) { | 376 void Shell::OnCastingSessionStartedOrStopped(bool started) { |
| 379 #if defined(OS_CHROMEOS) && defined(USE_X11) | 377 #if defined(OS_CHROMEOS) && defined(USE_X11) |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 439 void Shell::AddShellObserver(ShellObserver* observer) { | 437 void Shell::AddShellObserver(ShellObserver* observer) { |
| 440 observers_.AddObserver(observer); | 438 observers_.AddObserver(observer); |
| 441 } | 439 } |
| 442 | 440 |
| 443 void Shell::RemoveShellObserver(ShellObserver* observer) { | 441 void Shell::RemoveShellObserver(ShellObserver* observer) { |
| 444 observers_.RemoveObserver(observer); | 442 observers_.RemoveObserver(observer); |
| 445 } | 443 } |
| 446 | 444 |
| 447 void Shell::EnableMaximizeModeWindowManager(bool enable) { | 445 void Shell::EnableMaximizeModeWindowManager(bool enable) { |
| 448 if (enable && !maximize_mode_window_manager_.get()) { | 446 if (enable && !maximize_mode_window_manager_.get()) { |
| 449 maximize_mode_window_manager_.reset( | 447 maximize_mode_window_manager_.reset(new MaximizeModeWindowManager()); |
| 450 new internal::MaximizeModeWindowManager()); | |
| 451 } else if (!enable && maximize_mode_window_manager_.get()) { | 448 } else if (!enable && maximize_mode_window_manager_.get()) { |
| 452 maximize_mode_window_manager_.reset(); | 449 maximize_mode_window_manager_.reset(); |
| 453 } | 450 } |
| 454 } | 451 } |
| 455 | 452 |
| 456 bool Shell::IsMaximizeModeWindowManagerEnabled() { | 453 bool Shell::IsMaximizeModeWindowManagerEnabled() { |
| 457 return maximize_mode_window_manager_.get() != NULL; | 454 return maximize_mode_window_manager_.get() != NULL; |
| 458 } | 455 } |
| 459 | 456 |
| 460 void Shell::UpdateShelfVisibility() { | 457 void Shell::UpdateShelfVisibility() { |
| 461 RootWindowControllerList controllers = GetAllRootWindowControllers(); | 458 RootWindowControllerList controllers = GetAllRootWindowControllers(); |
| 462 for (RootWindowControllerList::iterator iter = controllers.begin(); | 459 for (RootWindowControllerList::iterator iter = controllers.begin(); |
| 463 iter != controllers.end(); ++iter) | 460 iter != controllers.end(); ++iter) |
| 464 if ((*iter)->shelf()) | 461 if ((*iter)->shelf()) |
| 465 (*iter)->UpdateShelfVisibility(); | 462 (*iter)->UpdateShelfVisibility(); |
| 466 } | 463 } |
| 467 | 464 |
| 468 void Shell::SetShelfAutoHideBehavior(ShelfAutoHideBehavior behavior, | 465 void Shell::SetShelfAutoHideBehavior(ShelfAutoHideBehavior behavior, |
| 469 aura::Window* root_window) { | 466 aura::Window* root_window) { |
| 470 ash::internal::ShelfLayoutManager::ForShelf(root_window)-> | 467 ash::ShelfLayoutManager::ForShelf(root_window)->SetAutoHideBehavior(behavior); |
| 471 SetAutoHideBehavior(behavior); | |
| 472 } | 468 } |
| 473 | 469 |
| 474 ShelfAutoHideBehavior Shell::GetShelfAutoHideBehavior( | 470 ShelfAutoHideBehavior Shell::GetShelfAutoHideBehavior( |
| 475 aura::Window* root_window) const { | 471 aura::Window* root_window) const { |
| 476 return ash::internal::ShelfLayoutManager::ForShelf(root_window)-> | 472 return ash::ShelfLayoutManager::ForShelf(root_window)->auto_hide_behavior(); |
| 477 auto_hide_behavior(); | |
| 478 } | 473 } |
| 479 | 474 |
| 480 void Shell::SetShelfAlignment(ShelfAlignment alignment, | 475 void Shell::SetShelfAlignment(ShelfAlignment alignment, |
| 481 aura::Window* root_window) { | 476 aura::Window* root_window) { |
| 482 if (ash::internal::ShelfLayoutManager::ForShelf(root_window)-> | 477 if (ash::ShelfLayoutManager::ForShelf(root_window)->SetAlignment(alignment)) { |
| 483 SetAlignment(alignment)) { | |
| 484 FOR_EACH_OBSERVER( | 478 FOR_EACH_OBSERVER( |
| 485 ShellObserver, observers_, OnShelfAlignmentChanged(root_window)); | 479 ShellObserver, observers_, OnShelfAlignmentChanged(root_window)); |
| 486 } | 480 } |
| 487 } | 481 } |
| 488 | 482 |
| 489 ShelfAlignment Shell::GetShelfAlignment(aura::Window* root_window) { | 483 ShelfAlignment Shell::GetShelfAlignment(aura::Window* root_window) { |
| 490 return internal::GetRootWindowController(root_window)-> | 484 return GetRootWindowController(root_window) |
| 491 GetShelfLayoutManager()->GetAlignment(); | 485 ->GetShelfLayoutManager() |
| 486 ->GetAlignment(); |
| 492 } | 487 } |
| 493 | 488 |
| 494 void Shell::SetDimming(bool should_dim) { | 489 void Shell::SetDimming(bool should_dim) { |
| 495 RootWindowControllerList controllers = GetAllRootWindowControllers(); | 490 RootWindowControllerList controllers = GetAllRootWindowControllers(); |
| 496 for (RootWindowControllerList::iterator iter = controllers.begin(); | 491 for (RootWindowControllerList::iterator iter = controllers.begin(); |
| 497 iter != controllers.end(); ++iter) | 492 iter != controllers.end(); ++iter) |
| 498 (*iter)->screen_dimmer()->SetDimming(should_dim); | 493 (*iter)->screen_dimmer()->SetDimming(should_dim); |
| 499 } | 494 } |
| 500 | 495 |
| 501 void Shell::NotifyFullscreenStateChange(bool is_fullscreen, | 496 void Shell::NotifyFullscreenStateChange(bool is_fullscreen, |
| 502 aura::Window* root_window) { | 497 aura::Window* root_window) { |
| 503 FOR_EACH_OBSERVER(ShellObserver, observers_, OnFullscreenStateChanged( | 498 FOR_EACH_OBSERVER(ShellObserver, observers_, OnFullscreenStateChanged( |
| 504 is_fullscreen, root_window)); | 499 is_fullscreen, root_window)); |
| 505 } | 500 } |
| 506 | 501 |
| 507 void Shell::CreateModalBackground(aura::Window* window) { | 502 void Shell::CreateModalBackground(aura::Window* window) { |
| 508 if (!modality_filter_) { | 503 if (!modality_filter_) { |
| 509 modality_filter_.reset(new internal::SystemModalContainerEventFilter(this)); | 504 modality_filter_.reset(new SystemModalContainerEventFilter(this)); |
| 510 AddPreTargetHandler(modality_filter_.get()); | 505 AddPreTargetHandler(modality_filter_.get()); |
| 511 } | 506 } |
| 512 RootWindowControllerList controllers = GetAllRootWindowControllers(); | 507 RootWindowControllerList controllers = GetAllRootWindowControllers(); |
| 513 for (RootWindowControllerList::iterator iter = controllers.begin(); | 508 for (RootWindowControllerList::iterator iter = controllers.begin(); |
| 514 iter != controllers.end(); ++iter) | 509 iter != controllers.end(); ++iter) |
| 515 (*iter)->GetSystemModalLayoutManager(window)->CreateModalBackground(); | 510 (*iter)->GetSystemModalLayoutManager(window)->CreateModalBackground(); |
| 516 } | 511 } |
| 517 | 512 |
| 518 void Shell::OnModalWindowRemoved(aura::Window* removed) { | 513 void Shell::OnModalWindowRemoved(aura::Window* removed) { |
| 519 RootWindowControllerList controllers = GetAllRootWindowControllers(); | 514 RootWindowControllerList controllers = GetAllRootWindowControllers(); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 547 } | 542 } |
| 548 | 543 |
| 549 ShelfDelegate* Shell::GetShelfDelegate() { | 544 ShelfDelegate* Shell::GetShelfDelegate() { |
| 550 if (!shelf_delegate_) { | 545 if (!shelf_delegate_) { |
| 551 shelf_model_.reset(new ShelfModel); | 546 shelf_model_.reset(new ShelfModel); |
| 552 // Creates ShelfItemDelegateManager before ShelfDelegate. | 547 // Creates ShelfItemDelegateManager before ShelfDelegate. |
| 553 shelf_item_delegate_manager_.reset( | 548 shelf_item_delegate_manager_.reset( |
| 554 new ShelfItemDelegateManager(shelf_model_.get())); | 549 new ShelfItemDelegateManager(shelf_model_.get())); |
| 555 | 550 |
| 556 shelf_delegate_.reset(delegate_->CreateShelfDelegate(shelf_model_.get())); | 551 shelf_delegate_.reset(delegate_->CreateShelfDelegate(shelf_model_.get())); |
| 557 scoped_ptr<ShelfItemDelegate> controller( | 552 scoped_ptr<ShelfItemDelegate> controller(new AppListShelfItemDelegate); |
| 558 new internal::AppListShelfItemDelegate); | |
| 559 | 553 |
| 560 // Finding the shelf model's location of the app list and setting its | 554 // Finding the shelf model's location of the app list and setting its |
| 561 // ShelfItemDelegate. | 555 // ShelfItemDelegate. |
| 562 int app_list_index = shelf_model_->GetItemIndexForType(TYPE_APP_LIST); | 556 int app_list_index = shelf_model_->GetItemIndexForType(TYPE_APP_LIST); |
| 563 DCHECK_GE(app_list_index, 0); | 557 DCHECK_GE(app_list_index, 0); |
| 564 ShelfID app_list_id = shelf_model_->items()[app_list_index].id; | 558 ShelfID app_list_id = shelf_model_->items()[app_list_index].id; |
| 565 DCHECK(app_list_id); | 559 DCHECK(app_list_id); |
| 566 shelf_item_delegate_manager_->SetShelfItemDelegate(app_list_id, | 560 shelf_item_delegate_manager_->SetShelfItemDelegate(app_list_id, |
| 567 controller.Pass()); | 561 controller.Pass()); |
| 568 shelf_window_watcher_.reset(new internal::ShelfWindowWatcher( | 562 shelf_window_watcher_.reset(new ShelfWindowWatcher( |
| 569 shelf_model_.get(), | 563 shelf_model_.get(), shelf_item_delegate_manager_.get())); |
| 570 shelf_item_delegate_manager_.get())); | |
| 571 } | 564 } |
| 572 return shelf_delegate_.get(); | 565 return shelf_delegate_.get(); |
| 573 } | 566 } |
| 574 | 567 |
| 575 void Shell::SetTouchHudProjectionEnabled(bool enabled) { | 568 void Shell::SetTouchHudProjectionEnabled(bool enabled) { |
| 576 if (is_touch_hud_projection_enabled_ == enabled) | 569 if (is_touch_hud_projection_enabled_ == enabled) |
| 577 return; | 570 return; |
| 578 | 571 |
| 579 is_touch_hud_projection_enabled_ = enabled; | 572 is_touch_hud_projection_enabled_ = enabled; |
| 580 FOR_EACH_OBSERVER(ShellObserver, observers_, | 573 FOR_EACH_OBSERVER(ShellObserver, observers_, |
| (...skipping 30 matching lines...) Expand all Loading... |
| 611 #if defined(OS_CHROMEOS) | 604 #if defined(OS_CHROMEOS) |
| 612 output_configurator_(new ui::OutputConfigurator()), | 605 output_configurator_(new ui::OutputConfigurator()), |
| 613 #endif // defined(OS_CHROMEOS) | 606 #endif // defined(OS_CHROMEOS) |
| 614 native_cursor_manager_(new AshNativeCursorManager), | 607 native_cursor_manager_(new AshNativeCursorManager), |
| 615 cursor_manager_( | 608 cursor_manager_( |
| 616 scoped_ptr< ::wm::NativeCursorManager>(native_cursor_manager_)), | 609 scoped_ptr< ::wm::NativeCursorManager>(native_cursor_manager_)), |
| 617 simulate_modal_window_open_for_testing_(false), | 610 simulate_modal_window_open_for_testing_(false), |
| 618 is_touch_hud_projection_enabled_(false) { | 611 is_touch_hud_projection_enabled_(false) { |
| 619 DCHECK(delegate_.get()); | 612 DCHECK(delegate_.get()); |
| 620 gpu_support_.reset(delegate_->CreateGPUSupport()); | 613 gpu_support_.reset(delegate_->CreateGPUSupport()); |
| 621 display_manager_.reset(new internal::DisplayManager); | 614 display_manager_.reset(new DisplayManager); |
| 622 display_controller_.reset(new DisplayController); | 615 display_controller_.reset(new DisplayController); |
| 623 #if defined(OS_CHROMEOS) && defined(USE_X11) | 616 #if defined(OS_CHROMEOS) && defined(USE_X11) |
| 624 user_metrics_recorder_.reset(new UserMetricsRecorder); | 617 user_metrics_recorder_.reset(new UserMetricsRecorder); |
| 625 #endif // defined(OS_CHROMEOS) | 618 #endif // defined(OS_CHROMEOS) |
| 626 | 619 |
| 627 #if defined(OS_CHROMEOS) | 620 #if defined(OS_CHROMEOS) |
| 628 internal::PowerStatus::Initialize(); | 621 PowerStatus::Initialize(); |
| 629 #endif | 622 #endif |
| 630 } | 623 } |
| 631 | 624 |
| 632 Shell::~Shell() { | 625 Shell::~Shell() { |
| 633 TRACE_EVENT0("shutdown", "ash::Shell::Destructor"); | 626 TRACE_EVENT0("shutdown", "ash::Shell::Destructor"); |
| 634 | 627 |
| 635 delegate_->PreShutdown(); | 628 delegate_->PreShutdown(); |
| 636 | 629 |
| 637 views::FocusManagerFactory::Install(NULL); | 630 views::FocusManagerFactory::Install(NULL); |
| 638 | 631 |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 770 if (output_configurator_animation_) | 763 if (output_configurator_animation_) |
| 771 output_configurator_->RemoveObserver(output_configurator_animation_.get()); | 764 output_configurator_->RemoveObserver(output_configurator_animation_.get()); |
| 772 if (display_error_observer_) | 765 if (display_error_observer_) |
| 773 output_configurator_->RemoveObserver(display_error_observer_.get()); | 766 output_configurator_->RemoveObserver(display_error_observer_.get()); |
| 774 if (projecting_observer_) | 767 if (projecting_observer_) |
| 775 output_configurator_->RemoveObserver(projecting_observer_.get()); | 768 output_configurator_->RemoveObserver(projecting_observer_.get()); |
| 776 display_change_observer_.reset(); | 769 display_change_observer_.reset(); |
| 777 #endif // defined(OS_CHROMEOS) | 770 #endif // defined(OS_CHROMEOS) |
| 778 | 771 |
| 779 #if defined(OS_CHROMEOS) | 772 #if defined(OS_CHROMEOS) |
| 780 internal::PowerStatus::Shutdown(); | 773 PowerStatus::Shutdown(); |
| 781 #endif | 774 #endif |
| 782 | 775 |
| 783 DCHECK(instance_ == this); | 776 DCHECK(instance_ == this); |
| 784 instance_ = NULL; | 777 instance_ = NULL; |
| 785 } | 778 } |
| 786 | 779 |
| 787 void Shell::Init() { | 780 void Shell::Init() { |
| 788 delegate_->PreInit(); | 781 delegate_->PreInit(); |
| 789 if (keyboard::IsKeyboardUsabilityExperimentEnabled()) { | 782 if (keyboard::IsKeyboardUsabilityExperimentEnabled()) { |
| 790 display_manager_->SetSecondDisplayMode( | 783 display_manager_->SetSecondDisplayMode(DisplayManager::VIRTUAL_KEYBOARD); |
| 791 internal::DisplayManager::VIRTUAL_KEYBOARD); | |
| 792 } | 784 } |
| 793 bool display_initialized = display_manager_->InitFromCommandLine(); | 785 bool display_initialized = display_manager_->InitFromCommandLine(); |
| 794 #if defined(OS_CHROMEOS) | 786 #if defined(OS_CHROMEOS) |
| 795 output_configurator_->Init(!gpu_support_->IsPanelFittingDisabled()); | 787 output_configurator_->Init(!gpu_support_->IsPanelFittingDisabled()); |
| 796 output_configurator_animation_.reset( | 788 output_configurator_animation_.reset(new OutputConfiguratorAnimation()); |
| 797 new internal::OutputConfiguratorAnimation()); | |
| 798 output_configurator_->AddObserver(output_configurator_animation_.get()); | 789 output_configurator_->AddObserver(output_configurator_animation_.get()); |
| 799 | 790 |
| 800 projecting_observer_.reset(new internal::ProjectingObserver()); | 791 projecting_observer_.reset(new ProjectingObserver()); |
| 801 output_configurator_->AddObserver(projecting_observer_.get()); | 792 output_configurator_->AddObserver(projecting_observer_.get()); |
| 802 | 793 |
| 803 if (!display_initialized && base::SysInfo::IsRunningOnChromeOS()) { | 794 if (!display_initialized && base::SysInfo::IsRunningOnChromeOS()) { |
| 804 display_change_observer_.reset(new internal::DisplayChangeObserver); | 795 display_change_observer_.reset(new DisplayChangeObserver); |
| 805 // Register |display_change_observer_| first so that the rest of | 796 // Register |display_change_observer_| first so that the rest of |
| 806 // observer gets invoked after the root windows are configured. | 797 // observer gets invoked after the root windows are configured. |
| 807 output_configurator_->AddObserver(display_change_observer_.get()); | 798 output_configurator_->AddObserver(display_change_observer_.get()); |
| 808 display_error_observer_.reset(new internal::DisplayErrorObserver()); | 799 display_error_observer_.reset(new DisplayErrorObserver()); |
| 809 output_configurator_->AddObserver(display_error_observer_.get()); | 800 output_configurator_->AddObserver(display_error_observer_.get()); |
| 810 output_configurator_->set_state_controller(display_change_observer_.get()); | 801 output_configurator_->set_state_controller(display_change_observer_.get()); |
| 811 output_configurator_->set_mirroring_controller(display_manager_.get()); | 802 output_configurator_->set_mirroring_controller(display_manager_.get()); |
| 812 output_configurator_->ForceInitialConfigure( | 803 output_configurator_->ForceInitialConfigure( |
| 813 delegate_->IsFirstRunAfterBoot() ? kChromeOsBootColor : 0); | 804 delegate_->IsFirstRunAfterBoot() ? kChromeOsBootColor : 0); |
| 814 display_initialized = true; | 805 display_initialized = true; |
| 815 } | 806 } |
| 816 #endif // defined(OS_CHROMEOS) | 807 #endif // defined(OS_CHROMEOS) |
| 817 if (!display_initialized) | 808 if (!display_initialized) |
| 818 display_manager_->InitDefaultDisplay(); | 809 display_manager_->InitDefaultDisplay(); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 835 AddPreTargetHandler(this); | 826 AddPreTargetHandler(this); |
| 836 | 827 |
| 837 env_filter_.reset(new ::wm::CompoundEventFilter); | 828 env_filter_.reset(new ::wm::CompoundEventFilter); |
| 838 AddPreTargetHandler(env_filter_.get()); | 829 AddPreTargetHandler(env_filter_.get()); |
| 839 | 830 |
| 840 ::wm::FocusController* focus_controller = | 831 ::wm::FocusController* focus_controller = |
| 841 new ::wm::FocusController(new wm::AshFocusRules); | 832 new ::wm::FocusController(new wm::AshFocusRules); |
| 842 focus_client_.reset(focus_controller); | 833 focus_client_.reset(focus_controller); |
| 843 activation_client_ = focus_controller; | 834 activation_client_ = focus_controller; |
| 844 activation_client_->AddObserver(this); | 835 activation_client_->AddObserver(this); |
| 845 focus_cycler_.reset(new internal::FocusCycler()); | 836 focus_cycler_.reset(new FocusCycler()); |
| 846 | 837 |
| 847 screen_position_controller_.reset(new internal::ScreenPositionController); | 838 screen_position_controller_.reset(new ScreenPositionController); |
| 848 window_tree_host_factory_.reset(delegate_->CreateWindowTreeHostFactory()); | 839 window_tree_host_factory_.reset(delegate_->CreateWindowTreeHostFactory()); |
| 849 | 840 |
| 850 display_controller_->Start(); | 841 display_controller_->Start(); |
| 851 display_controller_->InitPrimaryDisplay(); | 842 display_controller_->InitPrimaryDisplay(); |
| 852 aura::Window* root_window = display_controller_->GetPrimaryRootWindow(); | 843 aura::Window* root_window = display_controller_->GetPrimaryRootWindow(); |
| 853 target_root_window_ = root_window; | 844 target_root_window_ = root_window; |
| 854 | 845 |
| 855 #if defined(OS_CHROMEOS) | 846 #if defined(OS_CHROMEOS) |
| 856 resolution_notification_controller_.reset( | 847 resolution_notification_controller_.reset( |
| 857 new internal::ResolutionNotificationController); | 848 new ResolutionNotificationController); |
| 858 #endif | 849 #endif |
| 859 | 850 |
| 860 cursor_manager_.SetDisplay(GetScreen()->GetPrimaryDisplay()); | 851 cursor_manager_.SetDisplay(GetScreen()->GetPrimaryDisplay()); |
| 861 | 852 |
| 862 nested_dispatcher_controller_.reset(new NestedDispatcherController); | 853 nested_dispatcher_controller_.reset(new NestedDispatcherController); |
| 863 accelerator_controller_.reset(new AcceleratorController); | 854 accelerator_controller_.reset(new AcceleratorController); |
| 864 | 855 |
| 865 #if defined(OS_CHROMEOS) && defined(USE_X11) | 856 #if defined(OS_CHROMEOS) && defined(USE_X11) |
| 866 magnifier_key_scroll_handler_ = MagnifierKeyScroller::CreateHandler().Pass(); | 857 magnifier_key_scroll_handler_ = MagnifierKeyScroller::CreateHandler().Pass(); |
| 867 AddPreTargetHandler(magnifier_key_scroll_handler_.get()); | 858 AddPreTargetHandler(magnifier_key_scroll_handler_.get()); |
| 868 speech_feedback_handler_ = SpokenFeedbackToggler::CreateHandler().Pass(); | 859 speech_feedback_handler_ = SpokenFeedbackToggler::CreateHandler().Pass(); |
| 869 AddPreTargetHandler(speech_feedback_handler_.get()); | 860 AddPreTargetHandler(speech_feedback_handler_.get()); |
| 870 #endif | 861 #endif |
| 871 | 862 |
| 872 // The order in which event filters are added is significant. | 863 // The order in which event filters are added is significant. |
| 873 | 864 |
| 874 #if defined(OS_CHROMEOS) | 865 #if defined(OS_CHROMEOS) |
| 875 // The StickyKeysController also rewrites events and must be added | 866 // The StickyKeysController also rewrites events and must be added |
| 876 // before observers, but after the EventRewriterEventFilter. | 867 // before observers, but after the EventRewriterEventFilter. |
| 877 sticky_keys_controller_.reset(new StickyKeysController); | 868 sticky_keys_controller_.reset(new StickyKeysController); |
| 878 AddPreTargetHandler(sticky_keys_controller_.get()); | 869 AddPreTargetHandler(sticky_keys_controller_.get()); |
| 879 #endif | 870 #endif |
| 880 | 871 |
| 881 // wm::UserActivityDetector passes events to observers, so let them get | 872 // wm::UserActivityDetector passes events to observers, so let them get |
| 882 // rewritten first. | 873 // rewritten first. |
| 883 user_activity_detector_.reset(new ::wm::UserActivityDetector); | 874 user_activity_detector_.reset(new ::wm::UserActivityDetector); |
| 884 AddPreTargetHandler(user_activity_detector_.get()); | 875 AddPreTargetHandler(user_activity_detector_.get()); |
| 885 | 876 |
| 886 overlay_filter_.reset(new internal::OverlayEventFilter); | 877 overlay_filter_.reset(new OverlayEventFilter); |
| 887 AddPreTargetHandler(overlay_filter_.get()); | 878 AddPreTargetHandler(overlay_filter_.get()); |
| 888 AddShellObserver(overlay_filter_.get()); | 879 AddShellObserver(overlay_filter_.get()); |
| 889 | 880 |
| 890 input_method_filter_.reset(new ::wm::InputMethodEventFilter( | 881 input_method_filter_.reset(new ::wm::InputMethodEventFilter( |
| 891 root_window->GetHost()->GetAcceleratedWidget())); | 882 root_window->GetHost()->GetAcceleratedWidget())); |
| 892 AddPreTargetHandler(input_method_filter_.get()); | 883 AddPreTargetHandler(input_method_filter_.get()); |
| 893 | 884 |
| 894 accelerator_filter_.reset(new internal::AcceleratorFilter); | 885 accelerator_filter_.reset(new AcceleratorFilter); |
| 895 AddPreTargetHandler(accelerator_filter_.get()); | 886 AddPreTargetHandler(accelerator_filter_.get()); |
| 896 | 887 |
| 897 event_transformation_handler_.reset(new internal::EventTransformationHandler); | 888 event_transformation_handler_.reset(new EventTransformationHandler); |
| 898 AddPreTargetHandler(event_transformation_handler_.get()); | 889 AddPreTargetHandler(event_transformation_handler_.get()); |
| 899 | 890 |
| 900 toplevel_window_event_handler_.reset(new ToplevelWindowEventHandler); | 891 toplevel_window_event_handler_.reset(new ToplevelWindowEventHandler); |
| 901 | 892 |
| 902 system_gesture_filter_.reset(new internal::SystemGestureEventFilter); | 893 system_gesture_filter_.reset(new SystemGestureEventFilter); |
| 903 AddPreTargetHandler(system_gesture_filter_.get()); | 894 AddPreTargetHandler(system_gesture_filter_.get()); |
| 904 | 895 |
| 905 keyboard_metrics_filter_.reset(new internal::KeyboardUMAEventFilter); | 896 keyboard_metrics_filter_.reset(new KeyboardUMAEventFilter); |
| 906 AddPreTargetHandler(keyboard_metrics_filter_.get()); | 897 AddPreTargetHandler(keyboard_metrics_filter_.get()); |
| 907 | 898 |
| 908 // The keyboard system must be initialized before the RootWindowController is | 899 // The keyboard system must be initialized before the RootWindowController is |
| 909 // created. | 900 // created. |
| 910 #if defined(OS_CHROMEOS) | 901 #if defined(OS_CHROMEOS) |
| 911 keyboard::InitializeKeyboard(); | 902 keyboard::InitializeKeyboard(); |
| 912 #endif | 903 #endif |
| 913 | 904 |
| 914 lock_state_controller_.reset(new LockStateController); | 905 lock_state_controller_.reset(new LockStateController); |
| 915 power_button_controller_.reset(new PowerButtonController( | 906 power_button_controller_.reset(new PowerButtonController( |
| 916 lock_state_controller_.get())); | 907 lock_state_controller_.get())); |
| 917 #if defined(OS_CHROMEOS) | 908 #if defined(OS_CHROMEOS) |
| 918 // Pass the initial display state to PowerButtonController. | 909 // Pass the initial display state to PowerButtonController. |
| 919 power_button_controller_->OnDisplayModeChanged( | 910 power_button_controller_->OnDisplayModeChanged( |
| 920 output_configurator_->cached_outputs()); | 911 output_configurator_->cached_outputs()); |
| 921 #endif | 912 #endif |
| 922 AddShellObserver(lock_state_controller_.get()); | 913 AddShellObserver(lock_state_controller_.get()); |
| 923 | 914 |
| 924 drag_drop_controller_.reset(new internal::DragDropController); | 915 drag_drop_controller_.reset(new DragDropController); |
| 925 mouse_cursor_filter_.reset(new internal::MouseCursorEventFilter()); | 916 mouse_cursor_filter_.reset(new MouseCursorEventFilter()); |
| 926 PrependPreTargetHandler(mouse_cursor_filter_.get()); | 917 PrependPreTargetHandler(mouse_cursor_filter_.get()); |
| 927 | 918 |
| 928 // Create Controllers that may need root window. | 919 // Create Controllers that may need root window. |
| 929 // TODO(oshima): Move as many controllers before creating | 920 // TODO(oshima): Move as many controllers before creating |
| 930 // RootWindowController as possible. | 921 // RootWindowController as possible. |
| 931 visibility_controller_.reset(new AshVisibilityController); | 922 visibility_controller_.reset(new AshVisibilityController); |
| 932 | 923 |
| 933 magnification_controller_.reset( | 924 magnification_controller_.reset( |
| 934 MagnificationController::CreateInstance()); | 925 MagnificationController::CreateInstance()); |
| 935 mru_window_tracker_.reset(new MruWindowTracker(activation_client_)); | 926 mru_window_tracker_.reset(new MruWindowTracker(activation_client_)); |
| 936 | 927 |
| 937 partial_magnification_controller_.reset( | 928 partial_magnification_controller_.reset( |
| 938 new PartialMagnificationController()); | 929 new PartialMagnificationController()); |
| 939 | 930 |
| 940 autoclick_controller_.reset(AutoclickController::CreateInstance()); | 931 autoclick_controller_.reset(AutoclickController::CreateInstance()); |
| 941 | 932 |
| 942 high_contrast_controller_.reset(new HighContrastController); | 933 high_contrast_controller_.reset(new HighContrastController); |
| 943 video_detector_.reset(new VideoDetector); | 934 video_detector_.reset(new VideoDetector); |
| 944 window_selector_controller_.reset(new WindowSelectorController()); | 935 window_selector_controller_.reset(new WindowSelectorController()); |
| 945 | 936 |
| 946 tooltip_controller_.reset( | 937 tooltip_controller_.reset( |
| 947 new views::corewm::TooltipController( | 938 new views::corewm::TooltipController( |
| 948 scoped_ptr<views::corewm::Tooltip>( | 939 scoped_ptr<views::corewm::Tooltip>( |
| 949 new views::corewm::TooltipAura(gfx::SCREEN_TYPE_ALTERNATE)))); | 940 new views::corewm::TooltipAura(gfx::SCREEN_TYPE_ALTERNATE)))); |
| 950 AddPreTargetHandler(tooltip_controller_.get()); | 941 AddPreTargetHandler(tooltip_controller_.get()); |
| 951 | 942 |
| 952 event_client_.reset(new internal::EventClientImpl); | 943 event_client_.reset(new EventClientImpl); |
| 953 | 944 |
| 954 // This controller needs to be set before SetupManagedWindowMode. | 945 // This controller needs to be set before SetupManagedWindowMode. |
| 955 desktop_background_controller_.reset(new DesktopBackgroundController()); | 946 desktop_background_controller_.reset(new DesktopBackgroundController()); |
| 956 user_wallpaper_delegate_.reset(delegate_->CreateUserWallpaperDelegate()); | 947 user_wallpaper_delegate_.reset(delegate_->CreateUserWallpaperDelegate()); |
| 957 | 948 |
| 958 session_state_delegate_.reset(delegate_->CreateSessionStateDelegate()); | 949 session_state_delegate_.reset(delegate_->CreateSessionStateDelegate()); |
| 959 accessibility_delegate_.reset(delegate_->CreateAccessibilityDelegate()); | 950 accessibility_delegate_.reset(delegate_->CreateAccessibilityDelegate()); |
| 960 new_window_delegate_.reset(delegate_->CreateNewWindowDelegate()); | 951 new_window_delegate_.reset(delegate_->CreateNewWindowDelegate()); |
| 961 media_delegate_.reset(delegate_->CreateMediaDelegate()); | 952 media_delegate_.reset(delegate_->CreateMediaDelegate()); |
| 962 | 953 |
| 963 resize_shadow_controller_.reset(new internal::ResizeShadowController()); | 954 resize_shadow_controller_.reset(new ResizeShadowController()); |
| 964 shadow_controller_.reset( | 955 shadow_controller_.reset( |
| 965 new ::wm::ShadowController(activation_client_)); | 956 new ::wm::ShadowController(activation_client_)); |
| 966 | 957 |
| 967 // Create system_tray_notifier_ before the delegate. | 958 // Create system_tray_notifier_ before the delegate. |
| 968 system_tray_notifier_.reset(new ash::SystemTrayNotifier()); | 959 system_tray_notifier_.reset(new ash::SystemTrayNotifier()); |
| 969 | 960 |
| 970 // Initialize system_tray_delegate_ before initializing StatusAreaWidget. | 961 // Initialize system_tray_delegate_ before initializing StatusAreaWidget. |
| 971 system_tray_delegate_.reset(delegate()->CreateSystemTrayDelegate()); | 962 system_tray_delegate_.reset(delegate()->CreateSystemTrayDelegate()); |
| 972 DCHECK(system_tray_delegate_.get()); | 963 DCHECK(system_tray_delegate_.get()); |
| 973 | 964 |
| 974 locale_notification_controller_.reset( | 965 locale_notification_controller_.reset(new LocaleNotificationController); |
| 975 new internal::LocaleNotificationController); | |
| 976 | 966 |
| 977 // Initialize system_tray_delegate_ after StatusAreaWidget is created. | 967 // Initialize system_tray_delegate_ after StatusAreaWidget is created. |
| 978 system_tray_delegate_->Initialize(); | 968 system_tray_delegate_->Initialize(); |
| 979 | 969 |
| 980 #if defined(OS_CHROMEOS) | 970 #if defined(OS_CHROMEOS) |
| 981 // Create the LogoutConfirmationController after the SystemTrayDelegate. | 971 // Create the LogoutConfirmationController after the SystemTrayDelegate. |
| 982 logout_confirmation_controller_.reset( | 972 logout_confirmation_controller_.reset(new LogoutConfirmationController( |
| 983 new internal::LogoutConfirmationController( | 973 base::Bind(&SystemTrayDelegate::SignOut, |
| 984 base::Bind(&SystemTrayDelegate::SignOut, | 974 base::Unretained(system_tray_delegate_.get())))); |
| 985 base::Unretained(system_tray_delegate_.get())))); | |
| 986 #endif | 975 #endif |
| 987 | 976 |
| 988 // TODO(oshima): Initialize all RootWindowControllers once, and | 977 // TODO(oshima): Initialize all RootWindowControllers once, and |
| 989 // initialize controller/delegates above when initializing the | 978 // initialize controller/delegates above when initializing the |
| 990 // primary root window controller. | 979 // primary root window controller. |
| 991 internal::RootWindowController::CreateForPrimaryDisplay( | 980 RootWindowController::CreateForPrimaryDisplay(root_window->GetHost()); |
| 992 root_window->GetHost()); | |
| 993 | 981 |
| 994 display_controller_->InitSecondaryDisplays(); | 982 display_controller_->InitSecondaryDisplays(); |
| 995 | 983 |
| 996 // It needs to be created after RootWindowController has been created | 984 // It needs to be created after RootWindowController has been created |
| 997 // (which calls OnWindowResized has been called, otherwise the | 985 // (which calls OnWindowResized has been called, otherwise the |
| 998 // widget will not paint when restoring after a browser crash. Also it needs | 986 // widget will not paint when restoring after a browser crash. Also it needs |
| 999 // to be created after InitSecondaryDisplays() to initialize the wallpapers in | 987 // to be created after InitSecondaryDisplays() to initialize the wallpapers in |
| 1000 // the correct size. | 988 // the correct size. |
| 1001 user_wallpaper_delegate_->InitializeWallpaper(); | 989 user_wallpaper_delegate_->InitializeWallpaper(); |
| 1002 | 990 |
| 1003 if (initially_hide_cursor_) | 991 if (initially_hide_cursor_) |
| 1004 cursor_manager_.HideCursor(); | 992 cursor_manager_.HideCursor(); |
| 1005 cursor_manager_.SetCursor(ui::kCursorPointer); | 993 cursor_manager_.SetCursor(ui::kCursorPointer); |
| 1006 | 994 |
| 1007 #if defined(OS_CHROMEOS) | 995 #if defined(OS_CHROMEOS) |
| 1008 // Set accelerator controller delegates. | 996 // Set accelerator controller delegates. |
| 1009 accelerator_controller_->SetBrightnessControlDelegate( | 997 accelerator_controller_->SetBrightnessControlDelegate( |
| 1010 scoped_ptr<ash::BrightnessControlDelegate>( | 998 scoped_ptr<ash::BrightnessControlDelegate>( |
| 1011 new ash::system::BrightnessControllerChromeos).Pass()); | 999 new ash::system::BrightnessControllerChromeos).Pass()); |
| 1012 | 1000 |
| 1013 power_event_observer_.reset(new internal::PowerEventObserver()); | 1001 power_event_observer_.reset(new PowerEventObserver()); |
| 1014 user_activity_notifier_.reset( | 1002 user_activity_notifier_.reset( |
| 1015 new internal::UserActivityNotifier(user_activity_detector_.get())); | 1003 new UserActivityNotifier(user_activity_detector_.get())); |
| 1016 video_activity_notifier_.reset( | 1004 video_activity_notifier_.reset( |
| 1017 new internal::VideoActivityNotifier(video_detector_.get())); | 1005 new VideoActivityNotifier(video_detector_.get())); |
| 1018 bluetooth_notification_controller_.reset( | 1006 bluetooth_notification_controller_.reset(new BluetoothNotificationController); |
| 1019 new internal::BluetoothNotificationController); | 1007 last_window_closed_logout_reminder_.reset(new LastWindowClosedLogoutReminder); |
| 1020 last_window_closed_logout_reminder_.reset( | |
| 1021 new internal::LastWindowClosedLogoutReminder); | |
| 1022 #endif | 1008 #endif |
| 1023 | 1009 |
| 1024 weak_display_manager_factory_.reset( | 1010 weak_display_manager_factory_.reset( |
| 1025 new base::WeakPtrFactory<internal::DisplayManager>( | 1011 new base::WeakPtrFactory<DisplayManager>(display_manager_.get())); |
| 1026 display_manager_.get())); | |
| 1027 // The compositor thread and main message loop have to be running in | 1012 // The compositor thread and main message loop have to be running in |
| 1028 // order to create mirror window. Run it after the main message loop | 1013 // order to create mirror window. Run it after the main message loop |
| 1029 // is started. | 1014 // is started. |
| 1030 base::MessageLoopForUI::current()->PostTask( | 1015 base::MessageLoopForUI::current()->PostTask( |
| 1031 FROM_HERE, | 1016 FROM_HERE, |
| 1032 base::Bind(&internal::DisplayManager::CreateMirrorWindowIfAny, | 1017 base::Bind(&DisplayManager::CreateMirrorWindowIfAny, |
| 1033 weak_display_manager_factory_->GetWeakPtr())); | 1018 weak_display_manager_factory_->GetWeakPtr())); |
| 1034 } | 1019 } |
| 1035 | 1020 |
| 1036 void Shell::InitKeyboard() { | 1021 void Shell::InitKeyboard() { |
| 1037 if (keyboard::IsKeyboardEnabled()) { | 1022 if (keyboard::IsKeyboardEnabled()) { |
| 1038 if (keyboard_controller_.get()) { | 1023 if (keyboard_controller_.get()) { |
| 1039 RootWindowControllerList controllers = GetAllRootWindowControllers(); | 1024 RootWindowControllerList controllers = GetAllRootWindowControllers(); |
| 1040 for (RootWindowControllerList::iterator iter = controllers.begin(); | 1025 for (RootWindowControllerList::iterator iter = controllers.begin(); |
| 1041 iter != controllers.end(); ++iter) { | 1026 iter != controllers.end(); ++iter) { |
| 1042 (*iter)->DeactivateKeyboard(keyboard_controller_.get()); | 1027 (*iter)->DeactivateKeyboard(keyboard_controller_.get()); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1076 if (nested_dispatcher_controller_) { | 1061 if (nested_dispatcher_controller_) { |
| 1077 aura::client::SetDispatcherClient(root_window, | 1062 aura::client::SetDispatcherClient(root_window, |
| 1078 nested_dispatcher_controller_.get()); | 1063 nested_dispatcher_controller_.get()); |
| 1079 } | 1064 } |
| 1080 } | 1065 } |
| 1081 | 1066 |
| 1082 bool Shell::CanWindowReceiveEvents(aura::Window* window) { | 1067 bool Shell::CanWindowReceiveEvents(aura::Window* window) { |
| 1083 RootWindowControllerList controllers = GetAllRootWindowControllers(); | 1068 RootWindowControllerList controllers = GetAllRootWindowControllers(); |
| 1084 for (RootWindowControllerList::iterator iter = controllers.begin(); | 1069 for (RootWindowControllerList::iterator iter = controllers.begin(); |
| 1085 iter != controllers.end(); ++iter) { | 1070 iter != controllers.end(); ++iter) { |
| 1086 internal::SystemModalContainerLayoutManager* layout_manager = | 1071 SystemModalContainerLayoutManager* layout_manager = |
| 1087 (*iter)->GetSystemModalLayoutManager(window); | 1072 (*iter)->GetSystemModalLayoutManager(window); |
| 1088 if (layout_manager && layout_manager->CanWindowReceiveEvents(window)) | 1073 if (layout_manager && layout_manager->CanWindowReceiveEvents(window)) |
| 1089 return true; | 1074 return true; |
| 1090 // Allow events to fall through to the virtual keyboard even if displaying | 1075 // Allow events to fall through to the virtual keyboard even if displaying |
| 1091 // a system modal dialog. | 1076 // a system modal dialog. |
| 1092 if ((*iter)->IsVirtualKeyboardWindow(window)) | 1077 if ((*iter)->IsVirtualKeyboardWindow(window)) |
| 1093 return true; | 1078 return true; |
| 1094 } | 1079 } |
| 1095 | 1080 |
| 1096 return false; | 1081 return false; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1122 //////////////////////////////////////////////////////////////////////////////// | 1107 //////////////////////////////////////////////////////////////////////////////// |
| 1123 // Shell, aura::client::ActivationChangeObserver implementation: | 1108 // Shell, aura::client::ActivationChangeObserver implementation: |
| 1124 | 1109 |
| 1125 void Shell::OnWindowActivated(aura::Window* gained_active, | 1110 void Shell::OnWindowActivated(aura::Window* gained_active, |
| 1126 aura::Window* lost_active) { | 1111 aura::Window* lost_active) { |
| 1127 if (gained_active) | 1112 if (gained_active) |
| 1128 target_root_window_ = gained_active->GetRootWindow(); | 1113 target_root_window_ = gained_active->GetRootWindow(); |
| 1129 } | 1114 } |
| 1130 | 1115 |
| 1131 } // namespace ash | 1116 } // namespace ash |
| OLD | NEW |