| 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/focus_manager_factory.h" | 10 #include "ash/accelerators/focus_manager_factory.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 #include "ash/shell_factory.h" | 29 #include "ash/shell_factory.h" |
| 30 #include "ash/shell_window_ids.h" | 30 #include "ash/shell_window_ids.h" |
| 31 #include "ash/system/status_area_widget.h" | 31 #include "ash/system/status_area_widget.h" |
| 32 #include "ash/tooltips/tooltip_controller.h" | 32 #include "ash/tooltips/tooltip_controller.h" |
| 33 #include "ash/touch/touch_observer_hud.h" | 33 #include "ash/touch/touch_observer_hud.h" |
| 34 #include "ash/wm/activation_controller.h" | 34 #include "ash/wm/activation_controller.h" |
| 35 #include "ash/wm/always_on_top_controller.h" | 35 #include "ash/wm/always_on_top_controller.h" |
| 36 #include "ash/wm/app_list_controller.h" | 36 #include "ash/wm/app_list_controller.h" |
| 37 #include "ash/wm/base_layout_manager.h" | 37 #include "ash/wm/base_layout_manager.h" |
| 38 #include "ash/wm/capture_controller.h" | 38 #include "ash/wm/capture_controller.h" |
| 39 #include "ash/wm/coordinate_conversion.h" |
| 39 #include "ash/wm/custom_frame_view_ash.h" | 40 #include "ash/wm/custom_frame_view_ash.h" |
| 40 #include "ash/wm/dialog_frame_view.h" | 41 #include "ash/wm/dialog_frame_view.h" |
| 41 #include "ash/wm/event_client_impl.h" | 42 #include "ash/wm/event_client_impl.h" |
| 42 #include "ash/wm/event_rewriter_event_filter.h" | 43 #include "ash/wm/event_rewriter_event_filter.h" |
| 43 #include "ash/wm/overlay_event_filter.h" | 44 #include "ash/wm/overlay_event_filter.h" |
| 44 #include "ash/wm/power_button_controller.h" | 45 #include "ash/wm/power_button_controller.h" |
| 45 #include "ash/wm/property_util.h" | 46 #include "ash/wm/property_util.h" |
| 46 #include "ash/wm/resize_shadow_controller.h" | 47 #include "ash/wm/resize_shadow_controller.h" |
| 47 #include "ash/wm/root_window_layout_manager.h" | 48 #include "ash/wm/root_window_layout_manager.h" |
| 48 #include "ash/wm/screen_dimmer.h" | 49 #include "ash/wm/screen_dimmer.h" |
| (...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 507 aura::Env::GetInstance()->RemovePreTargetHandler(filter); | 508 aura::Env::GetInstance()->RemovePreTargetHandler(filter); |
| 508 } | 509 } |
| 509 | 510 |
| 510 void Shell::ShowContextMenu(const gfx::Point& location) { | 511 void Shell::ShowContextMenu(const gfx::Point& location) { |
| 511 // No context menus if user have not logged in. | 512 // No context menus if user have not logged in. |
| 512 if (!delegate_.get() || !delegate_->IsUserLoggedIn()) | 513 if (!delegate_.get() || !delegate_->IsUserLoggedIn()) |
| 513 return; | 514 return; |
| 514 // No context menus when screen is locked. | 515 // No context menus when screen is locked. |
| 515 if (IsScreenLocked()) | 516 if (IsScreenLocked()) |
| 516 return; | 517 return; |
| 517 if (launcher()) | 518 aura::RootWindow* root = |
| 518 launcher()->ShowContextMenu(location); | 519 wm::GetRootWindowMatching(gfx::Rect(location, gfx::Size())); |
| 520 Launcher::ForWindow(root)->ShowContextMenu(location); |
| 519 } | 521 } |
| 520 | 522 |
| 521 void Shell::ToggleAppList() { | 523 void Shell::ToggleAppList() { |
| 522 if (!app_list_controller_.get()) | 524 if (!app_list_controller_.get()) |
| 523 app_list_controller_.reset(new internal::AppListController); | 525 app_list_controller_.reset(new internal::AppListController); |
| 524 app_list_controller_->SetVisible(!app_list_controller_->IsVisible()); | 526 app_list_controller_->SetVisible(!app_list_controller_->IsVisible()); |
| 525 } | 527 } |
| 526 | 528 |
| 527 bool Shell::GetAppListTargetVisibility() const { | 529 bool Shell::GetAppListTargetVisibility() const { |
| 528 return app_list_controller_.get() && | 530 return app_list_controller_.get() && |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 572 return; | 574 return; |
| 573 FOR_EACH_OBSERVER(ShellObserver, observers_, | 575 FOR_EACH_OBSERVER(ShellObserver, observers_, |
| 574 OnDisplayWorkAreaInsetsChanged()); | 576 OnDisplayWorkAreaInsetsChanged()); |
| 575 } | 577 } |
| 576 | 578 |
| 577 void Shell::OnLoginStateChanged(user::LoginStatus status) { | 579 void Shell::OnLoginStateChanged(user::LoginStatus status) { |
| 578 FOR_EACH_OBSERVER(ShellObserver, observers_, OnLoginStateChanged(status)); | 580 FOR_EACH_OBSERVER(ShellObserver, observers_, OnLoginStateChanged(status)); |
| 579 ash::Shell::GetInstance()->UpdateShelfVisibility(); | 581 ash::Shell::GetInstance()->UpdateShelfVisibility(); |
| 580 } | 582 } |
| 581 | 583 |
| 584 void Shell::UpdateAfterLoginStatusChange(user::LoginStatus status) { |
| 585 GetPrimaryRootWindowController()->status_area_widget()-> |
| 586 UpdateAfterLoginStatusChange(status); |
| 587 } |
| 588 |
| 582 void Shell::OnAppTerminating() { | 589 void Shell::OnAppTerminating() { |
| 583 FOR_EACH_OBSERVER(ShellObserver, observers_, OnAppTerminating()); | 590 FOR_EACH_OBSERVER(ShellObserver, observers_, OnAppTerminating()); |
| 584 } | 591 } |
| 585 | 592 |
| 586 void Shell::OnLockStateChanged(bool locked) { | 593 void Shell::OnLockStateChanged(bool locked) { |
| 587 FOR_EACH_OBSERVER(ShellObserver, observers_, OnLockStateChanged(locked)); | 594 FOR_EACH_OBSERVER(ShellObserver, observers_, OnLockStateChanged(locked)); |
| 588 } | 595 } |
| 589 | 596 |
| 590 void Shell::CreateLauncher() { | 597 void Shell::CreateLauncher() { |
| 591 GetPrimaryRootWindowController()->CreateLauncher(); | 598 GetPrimaryRootWindowController()->CreateLauncher(); |
| 592 } | 599 } |
| 593 | 600 |
| 594 void Shell::ShowLauncher() { | 601 void Shell::ShowLauncher() { |
| 595 GetPrimaryRootWindowController()->ShowLauncher(); | 602 GetPrimaryRootWindowController()->ShowLauncher(); |
| 596 } | 603 } |
| 597 | 604 |
| 598 void Shell::AddShellObserver(ShellObserver* observer) { | 605 void Shell::AddShellObserver(ShellObserver* observer) { |
| 599 observers_.AddObserver(observer); | 606 observers_.AddObserver(observer); |
| 600 } | 607 } |
| 601 | 608 |
| 602 void Shell::RemoveShellObserver(ShellObserver* observer) { | 609 void Shell::RemoveShellObserver(ShellObserver* observer) { |
| 603 observers_.RemoveObserver(observer); | 610 observers_.RemoveObserver(observer); |
| 604 } | 611 } |
| 605 | 612 |
| 606 Launcher* Shell::launcher() { | |
| 607 return GetPrimaryRootWindowController()->launcher(); | |
| 608 } | |
| 609 | |
| 610 void Shell::UpdateShelfVisibility() { | 613 void Shell::UpdateShelfVisibility() { |
| 614 // TODO(oshima): Update all root windows. |
| 611 GetPrimaryRootWindowController()->UpdateShelfVisibility(); | 615 GetPrimaryRootWindowController()->UpdateShelfVisibility(); |
| 612 } | 616 } |
| 613 | 617 |
| 614 void Shell::SetShelfAutoHideBehavior(ShelfAutoHideBehavior behavior) { | 618 void Shell::SetShelfAutoHideBehavior(ShelfAutoHideBehavior behavior) { |
| 615 GetPrimaryRootWindowController()->SetShelfAutoHideBehavior(behavior); | 619 GetPrimaryRootWindowController()->SetShelfAutoHideBehavior(behavior); |
| 616 } | 620 } |
| 617 | 621 |
| 618 ShelfAutoHideBehavior Shell::GetShelfAutoHideBehavior() const { | 622 ShelfAutoHideBehavior Shell::GetShelfAutoHideBehavior() const { |
| 619 return GetPrimaryRootWindowController()->GetShelfAutoHideBehavior(); | 623 return GetPrimaryRootWindowController()->GetShelfAutoHideBehavior(); |
| 620 } | 624 } |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 657 } | 661 } |
| 658 if (!activated) { | 662 if (!activated) { |
| 659 RemoveEnvEventFilter(modality_filter_.get()); | 663 RemoveEnvEventFilter(modality_filter_.get()); |
| 660 modality_filter_.reset(); | 664 modality_filter_.reset(); |
| 661 for (RootWindowControllerList::iterator iter = controllers.begin(); | 665 for (RootWindowControllerList::iterator iter = controllers.begin(); |
| 662 iter != controllers.end(); ++iter) | 666 iter != controllers.end(); ++iter) |
| 663 (*iter)->GetSystemModalLayoutManager(removed)->DestroyModalBackground(); | 667 (*iter)->GetSystemModalLayoutManager(removed)->DestroyModalBackground(); |
| 664 } | 668 } |
| 665 } | 669 } |
| 666 | 670 |
| 667 internal::ShelfLayoutManager* Shell::shelf() const { | 671 WebNotificationTray* Shell::GetWebNotificationTray() { |
| 668 return GetPrimaryRootWindowController()->shelf(); | 672 return GetPrimaryRootWindowController()->status_area_widget()-> |
| 669 } | 673 web_notification_tray(); |
| 670 | |
| 671 internal::StatusAreaWidget* Shell::status_area_widget() const { | |
| 672 return GetPrimaryRootWindowController()->status_area_widget(); | |
| 673 } | 674 } |
| 674 | 675 |
| 675 SystemTrayDelegate* Shell::tray_delegate() { | 676 SystemTrayDelegate* Shell::tray_delegate() { |
| 676 return status_area_widget() ? status_area_widget()->system_tray_delegate() : | 677 // TODO(oshima): Decouple system tray and its delegate. |
| 677 NULL; | 678 internal::StatusAreaWidget* status_area_widget = |
| 679 GetPrimaryRootWindowController()->status_area_widget(); |
| 680 return status_area_widget ? status_area_widget->system_tray_delegate() : NULL; |
| 678 } | 681 } |
| 679 | 682 |
| 680 SystemTray* Shell::system_tray() { | 683 SystemTray* Shell::system_tray() { |
| 681 return status_area_widget() ? status_area_widget()->system_tray() : | 684 internal::StatusAreaWidget* status_area_widget = |
| 682 NULL; | 685 GetPrimaryRootWindowController()->status_area_widget(); |
| 686 return status_area_widget ? status_area_widget->system_tray() : NULL; |
| 683 } | 687 } |
| 684 | 688 |
| 685 void Shell::InitRootWindowForSecondaryDisplay(aura::RootWindow* root) { | 689 void Shell::InitRootWindowForSecondaryDisplay(aura::RootWindow* root) { |
| 686 root->set_focus_manager(focus_manager_.get()); | 690 root->set_focus_manager(focus_manager_.get()); |
| 687 internal::RootWindowController* controller = | 691 internal::RootWindowController* controller = |
| 688 new internal::RootWindowController(root); | 692 new internal::RootWindowController(root); |
| 689 controller->CreateContainers(); | 693 controller->CreateContainers(); |
| 690 InitRootWindowController(controller); | 694 InitRootWindowController(controller); |
| 691 controller->root_window_layout()->OnWindowResized(); | 695 controller->root_window_layout()->OnWindowResized(); |
| 692 desktop_background_controller_->OnRootWindowAdded(root); | 696 desktop_background_controller_->OnRootWindowAdded(root); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 758 iter != controllers.end(); ++iter) { | 762 iter != controllers.end(); ++iter) { |
| 759 if ((*iter)->GetSystemModalLayoutManager(window)-> | 763 if ((*iter)->GetSystemModalLayoutManager(window)-> |
| 760 CanWindowReceiveEvents(window)) { | 764 CanWindowReceiveEvents(window)) { |
| 761 return true; | 765 return true; |
| 762 } | 766 } |
| 763 } | 767 } |
| 764 return false; | 768 return false; |
| 765 } | 769 } |
| 766 | 770 |
| 767 } // namespace ash | 771 } // namespace ash |
| OLD | NEW |