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

Unified Diff: ash/common/wm_shell.cc

Issue 2734653002: chromeos: Move files in //ash/common to //ash (Closed)
Patch Set: fix a11y tests, fix docs Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/common/wm_shell.h ('k') | ash/common/wm_transient_window_observer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/common/wm_shell.cc
diff --git a/ash/common/wm_shell.cc b/ash/common/wm_shell.cc
deleted file mode 100644
index fcd7804aad242e9f61489c6f20e761ce8871bae5..0000000000000000000000000000000000000000
--- a/ash/common/wm_shell.cc
+++ /dev/null
@@ -1,470 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/common/wm_shell.h"
-
-#include <utility>
-
-#include "ash/common/accelerators/accelerator_controller.h"
-#include "ash/common/accelerators/ash_focus_manager_factory.h"
-#include "ash/common/accessibility_delegate.h"
-#include "ash/common/cast_config_controller.h"
-#include "ash/common/devtools/ash_devtools_css_agent.h"
-#include "ash/common/devtools/ash_devtools_dom_agent.h"
-#include "ash/common/focus_cycler.h"
-#include "ash/common/keyboard/keyboard_ui.h"
-#include "ash/common/media_controller.h"
-#include "ash/common/new_window_controller.h"
-#include "ash/common/palette_delegate.h"
-#include "ash/common/session/session_controller.h"
-#include "ash/common/session/session_state_delegate.h"
-#include "ash/common/shelf/app_list_shelf_item_delegate.h"
-#include "ash/common/shelf/shelf_controller.h"
-#include "ash/common/shelf/shelf_delegate.h"
-#include "ash/common/shelf/shelf_model.h"
-#include "ash/common/shelf/shelf_window_watcher.h"
-#include "ash/common/shell_delegate.h"
-#include "ash/common/shutdown_controller.h"
-#include "ash/common/system/brightness_control_delegate.h"
-#include "ash/common/system/chromeos/brightness/brightness_controller_chromeos.h"
-#include "ash/common/system/chromeos/keyboard_brightness_controller.h"
-#include "ash/common/system/chromeos/network/vpn_list.h"
-#include "ash/common/system/chromeos/session/logout_confirmation_controller.h"
-#include "ash/common/system/keyboard_brightness_control_delegate.h"
-#include "ash/common/system/locale/locale_notification_controller.h"
-#include "ash/common/system/toast/toast_manager.h"
-#include "ash/common/system/tray/system_tray_controller.h"
-#include "ash/common/system/tray/system_tray_delegate.h"
-#include "ash/common/system/tray/system_tray_notifier.h"
-#include "ash/common/wallpaper/wallpaper_controller.h"
-#include "ash/common/wallpaper/wallpaper_delegate.h"
-#include "ash/common/wm/immersive_context_ash.h"
-#include "ash/common/wm/maximize_mode/maximize_mode_controller.h"
-#include "ash/common/wm/mru_window_tracker.h"
-#include "ash/common/wm/overview/window_selector_controller.h"
-#include "ash/common/wm/root_window_finder.h"
-#include "ash/common/wm/system_modal_container_layout_manager.h"
-#include "ash/common/wm/window_cycle_controller.h"
-#include "ash/common/wm_activation_observer.h"
-#include "ash/common/wm_window.h"
-#include "ash/public/cpp/shell_window_ids.h"
-#include "ash/root_window_controller.h"
-#include "ash/shell.h"
-#include "base/bind.h"
-#include "base/logging.h"
-#include "base/memory/ptr_util.h"
-#include "base/threading/sequenced_worker_pool.h"
-#include "services/preferences/public/cpp/pref_client_store.h"
-#include "services/preferences/public/interfaces/preferences.mojom.h"
-#include "services/service_manager/public/cpp/connector.h"
-#include "ui/app_list/presenter/app_list.h"
-#include "ui/display/display.h"
-#include "ui/views/focus/focus_manager_factory.h"
-#include "ui/wm/public/activation_client.h"
-
-namespace ash {
-
-// static
-WmShell* WmShell::instance_ = nullptr;
-
-WmShell::~WmShell() {
- session_controller_->RemoveSessionStateObserver(this);
-}
-
-// static
-void WmShell::Set(WmShell* instance) {
- instance_ = instance;
-}
-
-// static
-WmShell* WmShell::Get() {
- return instance_;
-}
-
-void WmShell::Initialize(const scoped_refptr<base::SequencedWorkerPool>& pool) {
- blocking_pool_ = pool;
-
- // Some delegates access WmShell during their construction. Create them here
- // instead of the WmShell constructor.
- accessibility_delegate_.reset(delegate_->CreateAccessibilityDelegate());
- palette_delegate_ = delegate_->CreatePaletteDelegate();
- toast_manager_.reset(new ToastManager);
-
- // Create the app list item in the shelf data model.
- AppListShelfItemDelegate::CreateAppListItemAndDelegate(shelf_model());
-
- // Install the custom factory early on so that views::FocusManagers for Tray,
- // Shelf, and WallPaper could be created by the factory.
- views::FocusManagerFactory::Install(new AshFocusManagerFactory);
-
- wallpaper_controller_.reset(new WallpaperController(blocking_pool_));
-
- // Start devtools server
- devtools_server_ = ui::devtools::UiDevToolsServer::Create(nullptr);
- if (devtools_server_) {
- auto dom_backend = base::MakeUnique<devtools::AshDevToolsDOMAgent>(this);
- auto css_backend =
- base::MakeUnique<devtools::AshDevToolsCSSAgent>(dom_backend.get());
- auto devtools_client = base::MakeUnique<ui::devtools::UiDevToolsClient>(
- "Ash", devtools_server_.get());
- devtools_client->AddAgent(std::move(dom_backend));
- devtools_client->AddAgent(std::move(css_backend));
- devtools_server_->AttachClient(std::move(devtools_client));
- }
-}
-
-void WmShell::Shutdown() {
- if (added_activation_observer_)
- Shell::GetInstance()->activation_client()->RemoveObserver(this);
-
- // These members access WmShell in their destructors.
- wallpaper_controller_.reset();
- accessibility_delegate_.reset();
-
- // ShelfWindowWatcher has window observers and a pointer to the shelf model.
- shelf_window_watcher_.reset();
- // ShelfItemDelegate subclasses it owns have complex cleanup to run (e.g. ARC
- // shelf items in Chrome) so explicitly shutdown early.
- shelf_model()->DestroyItemDelegates();
- // Must be destroyed before FocusClient.
- shelf_delegate_.reset();
-
- // Balances the Install() in Initialize().
- views::FocusManagerFactory::Install(nullptr);
-
- // Removes itself as an observer of |pref_store_|.
- shelf_controller_.reset();
-}
-
-ShelfModel* WmShell::shelf_model() {
- return shelf_controller_->model();
-}
-
-void WmShell::ShowContextMenu(const gfx::Point& location_in_screen,
- ui::MenuSourceType source_type) {
- // Bail if there is no active user session or if the screen is locked.
- if (GetSessionStateDelegate()->NumberOfLoggedInUsers() < 1 ||
- GetSessionStateDelegate()->IsScreenLocked()) {
- return;
- }
-
- WmWindow* root = wm::GetRootWindowAt(location_in_screen);
- root->GetRootWindowController()->ShowContextMenu(location_in_screen,
- source_type);
-}
-
-void WmShell::CreateShelfView() {
- // Must occur after SessionStateDelegate creation and user login.
- DCHECK(GetSessionStateDelegate());
- DCHECK_GT(GetSessionStateDelegate()->NumberOfLoggedInUsers(), 0);
- CreateShelfDelegate();
-
- for (WmWindow* root_window : GetAllRootWindows())
- root_window->GetRootWindowController()->CreateShelfView();
-}
-
-void WmShell::CreateShelfDelegate() {
- // May be called multiple times as shelves are created and destroyed.
- if (shelf_delegate_)
- return;
- // Must occur after SessionStateDelegate creation and user login because
- // Chrome's implementation of ShelfDelegate assumes it can get information
- // about multi-profile login state.
- DCHECK(GetSessionStateDelegate());
- DCHECK_GT(GetSessionStateDelegate()->NumberOfLoggedInUsers(), 0);
- shelf_delegate_.reset(delegate_->CreateShelfDelegate(shelf_model()));
- shelf_window_watcher_.reset(new ShelfWindowWatcher(shelf_model()));
-}
-
-void WmShell::OnMaximizeModeStarted() {
- for (auto& observer : shell_observers_)
- observer.OnMaximizeModeStarted();
-}
-
-void WmShell::OnMaximizeModeEnding() {
- for (auto& observer : shell_observers_)
- observer.OnMaximizeModeEnding();
-}
-
-void WmShell::OnMaximizeModeEnded() {
- for (auto& observer : shell_observers_)
- observer.OnMaximizeModeEnded();
-}
-
-void WmShell::UpdateAfterLoginStatusChange(LoginStatus status) {
- for (WmWindow* root_window : GetAllRootWindows()) {
- root_window->GetRootWindowController()->UpdateAfterLoginStatusChange(
- status);
- }
-}
-
-void WmShell::NotifyFullscreenStateChanged(bool is_fullscreen,
- WmWindow* root_window) {
- for (auto& observer : shell_observers_)
- observer.OnFullscreenStateChanged(is_fullscreen, root_window);
-}
-
-void WmShell::NotifyPinnedStateChanged(WmWindow* pinned_window) {
- for (auto& observer : shell_observers_)
- observer.OnPinnedStateChanged(pinned_window);
-}
-
-void WmShell::NotifyVirtualKeyboardActivated(bool activated) {
- for (auto& observer : shell_observers_)
- observer.OnVirtualKeyboardStateChanged(activated);
-}
-
-void WmShell::NotifyShelfCreatedForRootWindow(WmWindow* root_window) {
- for (auto& observer : shell_observers_)
- observer.OnShelfCreatedForRootWindow(root_window);
-}
-
-void WmShell::NotifyShelfAlignmentChanged(WmWindow* root_window) {
- for (auto& observer : shell_observers_)
- observer.OnShelfAlignmentChanged(root_window);
-}
-
-void WmShell::NotifyShelfAutoHideBehaviorChanged(WmWindow* root_window) {
- for (auto& observer : shell_observers_)
- observer.OnShelfAutoHideBehaviorChanged(root_window);
-}
-
-void WmShell::AddActivationObserver(WmActivationObserver* observer) {
- if (!added_activation_observer_) {
- added_activation_observer_ = true;
- Shell::GetInstance()->activation_client()->AddObserver(this);
- }
- activation_observers_.AddObserver(observer);
-}
-
-void WmShell::RemoveActivationObserver(WmActivationObserver* observer) {
- activation_observers_.RemoveObserver(observer);
-}
-
-void WmShell::AddShellObserver(ShellObserver* observer) {
- shell_observers_.AddObserver(observer);
-}
-
-void WmShell::RemoveShellObserver(ShellObserver* observer) {
- shell_observers_.RemoveObserver(observer);
-}
-
-void WmShell::OnLockStateEvent(LockStateObserver::EventType event) {
- for (auto& observer : lock_state_observers_)
- observer.OnLockStateEvent(event);
-}
-
-void WmShell::AddLockStateObserver(LockStateObserver* observer) {
- lock_state_observers_.AddObserver(observer);
-}
-
-void WmShell::RemoveLockStateObserver(LockStateObserver* observer) {
- lock_state_observers_.RemoveObserver(observer);
-}
-
-void WmShell::SetShelfDelegateForTesting(
- std::unique_ptr<ShelfDelegate> test_delegate) {
- shelf_delegate_ = std::move(test_delegate);
-}
-
-void WmShell::SetPaletteDelegateForTesting(
- std::unique_ptr<PaletteDelegate> palette_delegate) {
- palette_delegate_ = std::move(palette_delegate);
-}
-
-WmShell::WmShell(std::unique_ptr<ShellDelegate> shell_delegate)
- : delegate_(std::move(shell_delegate)),
- app_list_(base::MakeUnique<app_list::AppList>()),
- brightness_control_delegate_(
- base::MakeUnique<system::BrightnessControllerChromeos>()),
- cast_config_(base::MakeUnique<CastConfigController>()),
- focus_cycler_(base::MakeUnique<FocusCycler>()),
- immersive_context_(base::MakeUnique<ImmersiveContextAsh>()),
- keyboard_brightness_control_delegate_(
- base::MakeUnique<KeyboardBrightnessController>()),
- locale_notification_controller_(
- base::MakeUnique<LocaleNotificationController>()),
- media_controller_(base::MakeUnique<MediaController>()),
- new_window_controller_(base::MakeUnique<NewWindowController>()),
- session_controller_(base::MakeUnique<SessionController>()),
- shelf_controller_(base::MakeUnique<ShelfController>()),
- shutdown_controller_(base::MakeUnique<ShutdownController>()),
- system_tray_controller_(base::MakeUnique<SystemTrayController>()),
- system_tray_notifier_(base::MakeUnique<SystemTrayNotifier>()),
- vpn_list_(base::MakeUnique<VpnList>()),
- wallpaper_delegate_(delegate_->CreateWallpaperDelegate()),
- window_cycle_controller_(base::MakeUnique<WindowCycleController>()),
- window_selector_controller_(
- base::MakeUnique<WindowSelectorController>()) {
- session_controller_->AddSessionStateObserver(this);
-
- prefs::mojom::PreferencesServiceFactoryPtr pref_factory_ptr;
- // Can be null in tests.
- if (!delegate_->GetShellConnector())
- return;
- delegate_->GetShellConnector()->BindInterface(prefs::mojom::kServiceName,
- &pref_factory_ptr);
- pref_store_ = new preferences::PrefClientStore(std::move(pref_factory_ptr));
-}
-
-RootWindowController* WmShell::GetPrimaryRootWindowController() {
- return GetPrimaryRootWindow()->GetRootWindowController();
-}
-
-WmWindow* WmShell::GetRootWindowForNewWindows() {
- if (scoped_root_window_for_new_windows_)
- return scoped_root_window_for_new_windows_;
- return root_window_for_new_windows_;
-}
-
-bool WmShell::IsSystemModalWindowOpen() {
- if (simulate_modal_window_open_for_testing_)
- return true;
-
- // Traverse all system modal containers, and find its direct child window
- // with "SystemModal" setting, and visible.
- for (WmWindow* root : GetAllRootWindows()) {
- WmWindow* system_modal =
- root->GetChildByShellWindowId(kShellWindowId_SystemModalContainer);
- if (!system_modal)
- continue;
- for (const WmWindow* child : system_modal->GetChildren()) {
- if (child->IsSystemModal() && child->GetTargetVisibility()) {
- return true;
- }
- }
- }
- return false;
-}
-
-void WmShell::CreateModalBackground(WmWindow* window) {
- for (WmWindow* root_window : GetAllRootWindows()) {
- root_window->GetRootWindowController()
- ->GetSystemModalLayoutManager(window)
- ->CreateModalBackground();
- }
-}
-
-void WmShell::OnModalWindowRemoved(WmWindow* removed) {
- WmWindow::Windows root_windows = GetAllRootWindows();
- for (WmWindow* root_window : root_windows) {
- if (root_window->GetRootWindowController()
- ->GetSystemModalLayoutManager(removed)
- ->ActivateNextModalWindow()) {
- return;
- }
- }
- for (WmWindow* root_window : root_windows) {
- root_window->GetRootWindowController()
- ->GetSystemModalLayoutManager(removed)
- ->DestroyModalBackground();
- }
-}
-
-void WmShell::ShowAppList() {
- // Show the app list on the default display for new windows.
- app_list_->Show(GetRootWindowForNewWindows()->GetDisplayNearestWindow().id());
-}
-
-void WmShell::DismissAppList() {
- app_list_->Dismiss();
-}
-
-void WmShell::ToggleAppList() {
- // Toggle the app list on the default display for new windows.
- app_list_->ToggleAppList(
- GetRootWindowForNewWindows()->GetDisplayNearestWindow().id());
-}
-
-bool WmShell::IsApplistVisible() const {
- return app_list_->IsVisible();
-}
-
-bool WmShell::GetAppListTargetVisibility() const {
- return app_list_->GetTargetVisibility();
-}
-
-void WmShell::SetKeyboardUI(std::unique_ptr<KeyboardUI> keyboard_ui) {
- keyboard_ui_ = std::move(keyboard_ui);
-}
-
-void WmShell::SetSystemTrayDelegate(
- std::unique_ptr<SystemTrayDelegate> delegate) {
- DCHECK(delegate);
- system_tray_delegate_ = std::move(delegate);
- system_tray_delegate_->Initialize();
- // Accesses WmShell in its constructor.
- logout_confirmation_controller_.reset(new LogoutConfirmationController(
- base::Bind(&SystemTrayController::SignOut,
- base::Unretained(system_tray_controller_.get()))));
-}
-
-void WmShell::DeleteSystemTrayDelegate() {
- DCHECK(system_tray_delegate_);
- // Accesses WmShell in its destructor.
- logout_confirmation_controller_.reset();
- system_tray_delegate_.reset();
-}
-
-void WmShell::DeleteWindowCycleController() {
- window_cycle_controller_.reset();
-}
-
-void WmShell::DeleteWindowSelectorController() {
- window_selector_controller_.reset();
-}
-
-void WmShell::CreateMaximizeModeController() {
- maximize_mode_controller_.reset(new MaximizeModeController);
-}
-
-void WmShell::DeleteMaximizeModeController() {
- maximize_mode_controller_.reset();
-}
-
-void WmShell::CreateMruWindowTracker() {
- mru_window_tracker_.reset(new MruWindowTracker);
-}
-
-void WmShell::DeleteMruWindowTracker() {
- mru_window_tracker_.reset();
-}
-
-void WmShell::DeleteToastManager() {
- toast_manager_.reset();
-}
-
-void WmShell::SetAcceleratorController(
- std::unique_ptr<AcceleratorController> accelerator_controller) {
- accelerator_controller_ = std::move(accelerator_controller);
-}
-
-void WmShell::SessionStateChanged(session_manager::SessionState state) {
- // Create the shelf when a session becomes active. It's safe to do this
- // multiple times (e.g. initial login vs. multiprofile add session).
- if (state == session_manager::SessionState::ACTIVE)
- CreateShelfView();
-}
-
-void WmShell::OnWindowActivated(
- aura::client::ActivationChangeObserver::ActivationReason reason,
- aura::Window* gained_active,
- aura::Window* lost_active) {
- WmWindow* gained_active_wm = WmWindow::Get(gained_active);
- WmWindow* lost_active_wm = WmWindow::Get(lost_active);
- if (gained_active_wm)
- set_root_window_for_new_windows(gained_active_wm->GetRootWindow());
- for (auto& observer : activation_observers_)
- observer.OnWindowActivated(gained_active_wm, lost_active_wm);
-}
-
-void WmShell::OnAttemptToReactivateWindow(aura::Window* request_active,
- aura::Window* actual_active) {
- for (auto& observer : activation_observers_) {
- observer.OnAttemptToReactivateWindow(WmWindow::Get(request_active),
- WmWindow::Get(actual_active));
- }
-}
-
-} // namespace ash
« no previous file with comments | « ash/common/wm_shell.h ('k') | ash/common/wm_transient_window_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698