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

Unified Diff: ash/common/wm/workspace_controller.cc

Issue 2292183003: Moves WorkspaceController to ash/common (Closed)
Patch Set: merge 2 trunk Created 4 years, 4 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
Index: ash/common/wm/workspace_controller.cc
diff --git a/ash/wm/workspace_controller.cc b/ash/common/wm/workspace_controller.cc
similarity index 92%
rename from ash/wm/workspace_controller.cc
rename to ash/common/wm/workspace_controller.cc
index 7c893ca0117a3104bcd51c2942e4bc42ec5e255e..e29732631f133cbdc46150f24df116e5a6f6bd4d 100644
--- a/ash/wm/workspace_controller.cc
+++ b/ash/common/wm/workspace_controller.cc
@@ -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

Powered by Google App Engine
This is Rietveld 408576698