Commit f71e6c9f authored by sky's avatar sky Committed by Commit bot

Moves WorkspaceController to ash/common

I move creation to RootWindowControllerCommon, but I think
RootWindowControllerCommon should go away. I'm going to do that next,
which will result in some additional cleanup.

BUG=624173
TEST=covered by tests
R=msw@chromium.org

Review-Url: https://codereview.chromium.org/2292183003
Cr-Commit-Position: refs/heads/master@{#415374}
parent 1d3fdb0e
......@@ -526,6 +526,8 @@
'common/wm/workspace/workspace_types.h',
'common/wm/workspace/workspace_window_resizer.cc',
'common/wm/workspace/workspace_window_resizer.h',
'common/wm/workspace_controller.cc',
'common/wm/workspace_controller.h',
'common/wm_activation_observer.h',
'common/wm_display_observer.h',
'common/wm_layout_manager.h',
......@@ -807,8 +809,6 @@
'wm/window_util.h',
'wm/workspace/workspace_event_handler_aura.cc',
'wm/workspace/workspace_event_handler_aura.h',
'wm/workspace_controller.cc',
'wm/workspace_controller.h',
],
'ash_with_content_sources': [
'content/ash_with_content_export.h',
......
......@@ -10,11 +10,11 @@
#include "ash/common/shelf/shelf.h"
#include "ash/common/shelf/shelf_widget.h"
#include "ash/common/wm/workspace/workspace_layout_manager_backdrop_delegate.h"
#include "ash/common/wm/workspace_controller.h"
#include "ash/common/wm_root_window_controller_observer.h"
#include "ash/display/window_tree_host_manager.h"
#include "ash/root_window_controller.h"
#include "ash/shell.h"
#include "ash/wm/workspace_controller.h"
#include "ui/aura/window.h"
#include "ui/aura/window_event_dispatcher.h"
#include "ui/aura/window_property.h"
......
......@@ -6,6 +6,8 @@
#include "ash/common/shell_window_ids.h"
#include "ash/common/wm/root_window_layout_manager.h"
#include "ash/common/wm/workspace/workspace_layout_manager.h"
#include "ash/common/wm/workspace_controller.h"
#include "ash/common/wm_shell.h"
#include "ash/common/wm_window.h"
#include "base/memory/ptr_util.h"
......@@ -212,6 +214,14 @@ void RootWindowControllerCommon::CreateContainers() {
void RootWindowControllerCommon::CreateLayoutManagers() {
root_window_layout_ = new wm::RootWindowLayoutManager(root_);
root_->SetLayoutManager(base::WrapUnique(root_window_layout_));
WmWindow* default_container =
root_->GetChildByShellWindowId(kShellWindowId_DefaultContainer);
workspace_controller_.reset(new WorkspaceController(default_container));
}
void RootWindowControllerCommon::DeleteWorkspaceController() {
workspace_controller_.reset();
}
} // namespace ash
......@@ -5,12 +5,15 @@
#ifndef ASH_COMMON_ROOT_WINDOW_CONTROLLER_COMMON_H_
#define ASH_COMMON_ROOT_WINDOW_CONTROLLER_COMMON_H_
#include <memory>
#include "ash/ash_export.h"
#include "base/macros.h"
namespace ash {
class WmWindow;
class WorkspaceController;
namespace wm {
class RootWindowLayoutManager;
......@@ -30,15 +33,23 @@ class ASH_EXPORT RootWindowControllerCommon {
// Creates the LayoutManagers for the windows created by CreateContainers().
void CreateLayoutManagers();
void DeleteWorkspaceController();
wm::RootWindowLayoutManager* root_window_layout() {
return root_window_layout_;
}
WorkspaceController* workspace_controller() {
return workspace_controller_.get();
}
private:
WmWindow* root_;
wm::RootWindowLayoutManager* root_window_layout_;
std::unique_ptr<WorkspaceController> workspace_controller_;
DISALLOW_COPY_AND_ASSIGN(RootWindowControllerCommon);
};
......
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/wm/workspace_controller.h"
#include "ash/common/wm/workspace_controller.h"
#include <utility>
......@@ -19,14 +19,8 @@
#include "ash/common/wm_shell.h"
#include "ash/common/wm_window.h"
#include "base/memory/ptr_util.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/window.h"
#include "ui/aura/window_event_dispatcher.h"
#include "ui/compositor/layer.h"
#include "ui/compositor/scoped_layer_animation_settings.h"
#include "ui/wm/core/visibility_controller.h"
#include "ui/wm/core/window_animations.h"
#include "ui/wm/public/activation_client.h"
namespace ash {
namespace {
......@@ -44,11 +38,16 @@ WorkspaceController::WorkspaceController(WmWindow* viewport)
: viewport_(viewport),
event_handler_(WmShell::Get()->CreateWorkspaceEventHandler(viewport)),
layout_manager_(new WorkspaceLayoutManager(viewport)) {
viewport_->AddObserver(this);
viewport_->SetVisibilityAnimationTransition(::wm::ANIMATE_NONE);
viewport_->SetLayoutManager(base::WrapUnique(layout_manager_));
}
WorkspaceController::~WorkspaceController() {
if (!viewport_)
return;
viewport_->RemoveObserver(this);
viewport_->SetLayoutManager(nullptr);
}
......@@ -124,4 +123,12 @@ void WorkspaceController::SetMaximizeBackdropDelegate(
layout_manager_->SetMaximizeBackdropDelegate(std::move(delegate));
}
void WorkspaceController::OnWindowDestroying(WmWindow* window) {
DCHECK_EQ(window, viewport_);
viewport_->RemoveObserver(this);
viewport_ = nullptr;
// Destroy |event_handler_| too as it depends upon |window|.
event_handler_.reset();
}
} // namespace ash
......@@ -2,13 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ASH_WM_WORKSPACE_CONTROLLER_H_
#define ASH_WM_WORKSPACE_CONTROLLER_H_
#ifndef ASH_COMMON_WM_WORKSPACE_CONTROLLER_H_
#define ASH_COMMON_WM_WORKSPACE_CONTROLLER_H_
#include <memory>
#include "ash/ash_export.h"
#include "ash/common/wm/workspace/workspace_types.h"
#include "ash/common/wm_window_observer.h"
#include "base/macros.h"
namespace ash {
......@@ -20,10 +21,10 @@ class WorkspaceLayoutManagerBackdropDelegate;
// WorkspaceController acts as a central place that ties together all the
// various workspace pieces.
class ASH_EXPORT WorkspaceController {
class ASH_EXPORT WorkspaceController : public WmWindowObserver {
public:
explicit WorkspaceController(WmWindow* viewport);
virtual ~WorkspaceController();
~WorkspaceController() override;
// Returns the current window state.
wm::WorkspaceWindowState GetWindowState() const;
......@@ -41,6 +42,9 @@ class ASH_EXPORT WorkspaceController {
private:
friend class WorkspaceControllerTestHelper;
// WmWindowObserver:
void OnWindowDestroying(WmWindow* window) override;
WmWindow* viewport_;
std::unique_ptr<WorkspaceEventHandler> event_handler_;
......@@ -52,4 +56,4 @@ class ASH_EXPORT WorkspaceController {
} // namespace ash
#endif // ASH_WM_WORKSPACE_CONTROLLER_H_
#endif // ASH_COMMON_WM_WORKSPACE_CONTROLLER_H_
......@@ -82,7 +82,9 @@ RootWindowController::RootWindowController(WindowManager* window_manager,
new AlwaysOnTopController(always_on_top_container));
}
RootWindowController::~RootWindowController() {}
RootWindowController::~RootWindowController() {
root_window_controller_common_->DeleteWorkspaceController();
}
shell::Connector* RootWindowController::GetConnector() {
return window_manager_->connector();
......
......@@ -36,6 +36,7 @@
#include "ash/common/wm/switchable_windows.h"
#include "ash/common/wm/window_state.h"
#include "ash/common/wm/workspace/workspace_layout_manager.h"
#include "ash/common/wm/workspace_controller.h"
#include "ash/common/wm_shell.h"
#include "ash/common/wm_window.h"
#include "ash/display/display_manager.h"
......@@ -57,7 +58,6 @@
#include "ash/wm/window_properties.h"
#include "ash/wm/window_state_aura.h"
#include "ash/wm/window_util.h"
#include "ash/wm/workspace_controller.h"
#include "base/command_line.h"
#include "base/macros.h"
#include "base/memory/ptr_util.h"
......@@ -331,6 +331,10 @@ const aura::Window* RootWindowController::GetRootWindow() const {
return GetHost()->window();
}
WorkspaceController* RootWindowController::workspace_controller() {
return root_window_controller_common_->workspace_controller();
}
void RootWindowController::SetWallpaperWidgetController(
WallpaperWidgetController* controller) {
wallpaper_widget_controller_.reset(controller);
......@@ -373,7 +377,6 @@ void RootWindowController::Shutdown() {
CloseChildWindows();
GetRootWindowSettings(root_window)->controller = NULL;
workspace_controller_.reset();
// Forget with the display ID so that display lookup
// ends up with invalid display.
GetRootWindowSettings(root_window)->display_id =
......@@ -574,7 +577,7 @@ void RootWindowController::CloseChildWindows() {
wallpaper_widget_controller_.reset();
animating_wallpaper_widget_controller_.reset();
workspace_controller_.reset();
root_window_controller_common_->DeleteWorkspaceController();
aura::client::SetTooltipClient(root_window, NULL);
// Explicitly destroy top level windows. We do this as during part of
......@@ -618,7 +621,7 @@ void RootWindowController::CloseChildWindows() {
void RootWindowController::MoveWindowsTo(aura::Window* dst) {
// Clear the workspace controller, so it doesn't incorrectly update the shelf.
workspace_controller_.reset();
root_window_controller_common_->DeleteWorkspaceController();
ReparentAllWindows(GetRootWindow(), dst);
}
......@@ -678,7 +681,7 @@ void RootWindowController::ActivateKeyboard(
keyboard_controller->AddObserver(shelf_widget()->shelf_layout_manager());
keyboard_controller->AddObserver(panel_layout_manager_);
keyboard_controller->AddObserver(docked_layout_manager_);
keyboard_controller->AddObserver(workspace_controller_->layout_manager());
keyboard_controller->AddObserver(workspace_controller()->layout_manager());
keyboard_controller->AddObserver(
always_on_top_controller_->GetLayoutManager());
WmShell::Get()->NotifyVirtualKeyboardActivated(true);
......@@ -708,7 +711,7 @@ void RootWindowController::DeactivateKeyboard(
keyboard_controller->RemoveObserver(panel_layout_manager_);
keyboard_controller->RemoveObserver(docked_layout_manager_);
keyboard_controller->RemoveObserver(
workspace_controller_->layout_manager());
workspace_controller()->layout_manager());
keyboard_controller->RemoveObserver(
always_on_top_controller_->GetLayoutManager());
WmShell::Get()->NotifyVirtualKeyboardActivated(false);
......@@ -813,10 +816,6 @@ void RootWindowController::InitLayoutManagers() {
lock_modal_container->SetLayoutManager(
new SystemModalContainerLayoutManager(lock_modal_container));
WmWindow* default_container =
WmWindowAura::Get(GetContainer(kShellWindowId_DefaultContainer));
workspace_controller_.reset(new WorkspaceController(default_container));
WmWindow* always_on_top_container =
WmWindowAura::Get(GetContainer(kShellWindowId_AlwaysOnTopContainer));
always_on_top_controller_.reset(
......
......@@ -111,9 +111,7 @@ class ASH_EXPORT RootWindowController : public ShellObserver {
aura::Window* GetRootWindow();
const aura::Window* GetRootWindow() const;
WorkspaceController* workspace_controller() {
return workspace_controller_.get();
}
WorkspaceController* workspace_controller();
AlwaysOnTopController* always_on_top_controller() {
return always_on_top_controller_.get();
......@@ -309,7 +307,6 @@ class ASH_EXPORT RootWindowController : public ShellObserver {
std::unique_ptr<AshTouchExplorationManager> touch_exploration_manager_;
#endif
std::unique_ptr<WorkspaceController> workspace_controller_;
std::unique_ptr<AlwaysOnTopController> always_on_top_controller_;
// Heads-up displays for touch events. These HUDs are not owned by the root
......
......@@ -37,6 +37,7 @@
#include "ash/common/wm/mru_window_tracker.h"
#include "ash/common/wm/root_window_finder.h"
#include "ash/common/wm/window_positioner.h"
#include "ash/common/wm/workspace_controller.h"
#include "ash/common/wm_shell.h"
#include "ash/display/cursor_window_controller.h"
#include "ash/display/display_configuration_controller.h"
......@@ -75,7 +76,6 @@
#include "ash/wm/window_animations.h"
#include "ash/wm/window_properties.h"
#include "ash/wm/window_util.h"
#include "ash/wm/workspace_controller.h"
#include "base/bind.h"
#include "base/memory/ptr_util.h"
#include "base/trace_event/trace_event.h"
......
......@@ -6,6 +6,7 @@
#include "ash/common/shell_window_ids.h"
#include "ash/common/wm/window_state.h"
#include "ash/common/wm/workspace_controller.h"
#include "ash/root_window_controller.h"
#include "ash/shell.h"
#include "ash/test/ash_test_base.h"
......@@ -13,7 +14,6 @@
#include "ash/wm/resize_shadow_controller.h"
#include "ash/wm/window_state_aura.h"
#include "ash/wm/window_util.h"
#include "ash/wm/workspace_controller.h"
#include "base/compiler_specific.h"
#include "base/threading/thread_task_runner_handle.h"
#include "testing/gtest/include/gtest/gtest.h"
......
......@@ -12,9 +12,9 @@
#include "ash/aura/wm_window_aura.h"
#include "ash/common/shelf/wm_shelf.h"
#include "ash/common/wm/window_animation_types.h"
#include "ash/common/wm/workspace_controller.h"
#include "ash/screen_util.h"
#include "ash/wm/window_util.h"
#include "ash/wm/workspace_controller.h"
#include "base/i18n/rtl.h"
#include "base/logging.h"
#include "base/stl_util.h"
......
......@@ -7,9 +7,9 @@
#include "ash/common/shell_window_ids.h"
#include "ash/common/wm/window_animation_types.h"
#include "ash/common/wm/window_state.h"
#include "ash/common/wm/workspace_controller.h"
#include "ash/test/ash_test_base.h"
#include "ash/wm/window_state_aura.h"
#include "ash/wm/workspace_controller.h"
#include "base/time/time.h"
#include "ui/aura/test/test_windows.h"
#include "ui/aura/window.h"
......
......@@ -8,11 +8,11 @@
#include "ash/common/ash_constants.h"
#include "ash/common/frame/custom_frame_view_ash.h"
#include "ash/common/wm/workspace/workspace_event_handler_test_helper.h"
#include "ash/common/wm/workspace_controller.h"
#include "ash/shell.h"
#include "ash/test/ash_test_base.h"
#include "ash/test/shell_test_api.h"
#include "ash/wm/window_util.h"
#include "ash/wm/workspace_controller.h"
#include "ash/wm/workspace_controller_test_helper.h"
#include "base/stl_util.h"
#include "ui/aura/test/test_window_delegate.h"
......
......@@ -6,12 +6,12 @@
#include "ash/common/wm/window_state.h"
#include "ash/common/wm/wm_event.h"
#include "ash/common/wm/workspace_controller.h"
#include "ash/screen_util.h"
#include "ash/shell.h"
#include "ash/test/ash_test_base.h"
#include "ash/wm/window_state_aura.h"
#include "ash/wm/window_util.h"
#include "ash/wm/workspace_controller.h"
#include "ash/wm/workspace_controller_test_helper.h"
#include "base/threading/thread_task_runner_handle.h"
#include "ui/aura/client/aura_constants.h"
......
......@@ -12,6 +12,7 @@
#include "ash/common/wm/window_state.h"
#include "ash/common/wm/wm_event.h"
#include "ash/common/wm/workspace/phantom_window_controller.h"
#include "ash/common/wm/workspace_controller.h"
#include "ash/display/display_manager.h"
#include "ash/screen_util.h"
#include "ash/shell.h"
......@@ -19,7 +20,6 @@
#include "ash/test/display_manager_test_api.h"
#include "ash/wm/window_state_aura.h"
#include "ash/wm/window_util.h"
#include "ash/wm/workspace_controller.h"
#include "base/command_line.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
......
......@@ -5,7 +5,7 @@
#include "ash/wm/workspace_controller_test_helper.h"
#include "ash/common/wm/workspace/workspace_event_handler_test_helper.h"
#include "ash/wm/workspace_controller.h"
#include "ash/common/wm/workspace_controller.h"
#include "ui/aura/window.h"
namespace ash {
......
......@@ -5,7 +5,7 @@
#ifndef ASH_WM_WORKSPACE_CONTROLLER_TEST_HELPER_H_
#define ASH_WM_WORKSPACE_CONTROLLER_TEST_HELPER_H_
#include "ash/wm/workspace_controller.h"
#include "ash/common/wm/workspace_controller.h"
#include "base/macros.h"
namespace ash {
......
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/wm/workspace_controller.h"
#include "ash/common/wm/workspace_controller.h"
#include <map>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment