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

Unified Diff: ui/aura_shell/workspace/workspace_manager_unittest.cc

Issue 8430024: Add WorkspaceObserver to observe changes in workspace state (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: update comments Created 9 years, 1 month 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 | « ui/aura_shell/workspace/workspace_manager.cc ('k') | ui/aura_shell/workspace/workspace_observer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/aura_shell/workspace/workspace_manager_unittest.cc
diff --git a/ui/aura_shell/workspace/workspace_manager_unittest.cc b/ui/aura_shell/workspace/workspace_manager_unittest.cc
index 30f7237bf113db52efc1b88af29b56233dfdadce..052a0c540db2b1bee4aa81ad51566638cf2fd466 100644
--- a/ui/aura_shell/workspace/workspace_manager_unittest.cc
+++ b/ui/aura_shell/workspace/workspace_manager_unittest.cc
@@ -10,10 +10,67 @@
#include "ui/aura/window.h"
#include "ui/aura_shell/workspace/workspace.h"
#include "ui/aura_shell/workspace/workspace_manager.h"
+#include "ui/aura_shell/workspace/workspace_observer.h"
#include "ui/base/ui_base_types.h"
+namespace {
+using aura_shell::internal::Workspace;
+using aura_shell::internal::WorkspaceManager;
using aura::Window;
+class TestWorkspaceObserver : public aura_shell::internal::WorkspaceObserver {
+ public:
+ explicit TestWorkspaceObserver(WorkspaceManager* manager)
+ : manager_(manager),
+ move_source_(NULL),
+ move_target_(NULL),
+ active_workspace_(NULL),
+ old_active_workspace_(NULL) {
+ manager_->AddObserver(this);
+ }
+
+ virtual ~TestWorkspaceObserver() {
+ manager_->RemoveObserver(this);
+ }
+
+ Window* move_source() { return move_source_; }
+ Window* move_target() { return move_target_; }
+ Workspace* active_workspace() { return active_workspace_; }
+ Workspace* old_active_workspace() { return old_active_workspace_; }
+
+ // Resets the observer states.
+ void reset() {
+ active_workspace_ = NULL;
+ old_active_workspace_ = NULL;
+ move_source_ = NULL;
+ move_target_ = NULL;
+ }
+
+ // Overridden from WorkspaceObserver:
+ virtual void WindowMoved(WorkspaceManager* manager,
+ Window* source,
+ Window* target) {
+ move_source_ = source;
+ move_target_ = target;
+ }
+ virtual void ActiveWorkspaceChanged(WorkspaceManager* manager,
+ Workspace* old) {
+ old_active_workspace_ = old;
+ active_workspace_ = manager->GetActiveWorkspace();
+ }
+
+ private:
+ WorkspaceManager* manager_;
+ Window* move_source_;
+ Window* move_target_;
+ Workspace* active_workspace_;
+ Workspace* old_active_workspace_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestWorkspaceObserver);
+};
+
+} // namespace
+
namespace aura_shell {
namespace internal {
@@ -173,6 +230,7 @@ TEST_F(WorkspaceManagerTest, DISABLED_Overview) {
}
TEST_F(WorkspaceManagerTest, WorkspaceManagerActivate) {
+ TestWorkspaceObserver observer(manager_.get());
Workspace* ws1 = manager_->CreateWorkspace();
Workspace* ws2 = manager_->CreateWorkspace();
EXPECT_EQ(NULL, manager_->GetActiveWorkspace());
@@ -180,14 +238,22 @@ TEST_F(WorkspaceManagerTest, WorkspaceManagerActivate) {
// Activate ws1.
ws1->Activate();
EXPECT_EQ(ws1, manager_->GetActiveWorkspace());
+ EXPECT_EQ(NULL, observer.old_active_workspace());
+ EXPECT_EQ(ws1, observer.active_workspace());
+ observer.reset();
// Activate ws2.
ws2->Activate();
EXPECT_EQ(ws2, manager_->GetActiveWorkspace());
+ EXPECT_EQ(ws1, observer.old_active_workspace());
+ EXPECT_EQ(ws2, observer.active_workspace());
+ observer.reset();
// Deleting active workspace sets active workspace to NULL.
delete ws2;
EXPECT_EQ(NULL, manager_->GetActiveWorkspace());
+ EXPECT_EQ(ws2, observer.old_active_workspace());
+ EXPECT_EQ(NULL, observer.active_workspace());
manager_.reset();
}
@@ -250,6 +316,7 @@ TEST_F(WorkspaceManagerTest, FindRotateWindow) {
}
TEST_F(WorkspaceManagerTest, RotateWindows) {
+ TestWorkspaceObserver observer(manager_.get());
Workspace* ws1 = manager_->CreateWorkspace();
Workspace* ws2 = manager_->CreateWorkspace();
@@ -267,6 +334,8 @@ TEST_F(WorkspaceManagerTest, RotateWindows) {
// Rotate right most to left most.
manager_->RotateWindows(w22.get(), w11.get());
+ EXPECT_EQ(w22.get(), observer.move_source());
+ EXPECT_EQ(w11.get(), observer.move_target());
EXPECT_EQ(0, ws1->GetIndexOf(w22.get()));
EXPECT_EQ(0, ws2->GetIndexOf(w11.get()));
@@ -277,24 +346,32 @@ TEST_F(WorkspaceManagerTest, RotateWindows) {
EXPECT_EQ(0, ws1->GetIndexOf(w11.get()));
EXPECT_EQ(0, ws2->GetIndexOf(w21.get()));
EXPECT_EQ(1, ws2->GetIndexOf(w22.get()));
+ EXPECT_EQ(w22.get(), observer.move_source());
+ EXPECT_EQ(w21.get(), observer.move_target());
// Rotate left most to 1st element in 2nd workspace.
manager_->RotateWindows(w11.get(), w21.get());
EXPECT_EQ(0, ws1->GetIndexOf(w21.get()));
EXPECT_EQ(0, ws2->GetIndexOf(w11.get()));
EXPECT_EQ(1, ws2->GetIndexOf(w22.get()));
+ EXPECT_EQ(w11.get(), observer.move_source());
+ EXPECT_EQ(w21.get(), observer.move_target());
// Rotate middle to right most.
manager_->RotateWindows(w11.get(), w22.get());
EXPECT_EQ(0, ws1->GetIndexOf(w21.get()));
EXPECT_EQ(0, ws2->GetIndexOf(w22.get()));
EXPECT_EQ(1, ws2->GetIndexOf(w11.get()));
+ EXPECT_EQ(w11.get(), observer.move_source());
+ EXPECT_EQ(w22.get(), observer.move_target());
// Rotate middle to left most.
manager_->RotateWindows(w22.get(), w21.get());
EXPECT_EQ(0, ws1->GetIndexOf(w22.get()));
EXPECT_EQ(0, ws2->GetIndexOf(w21.get()));
EXPECT_EQ(1, ws2->GetIndexOf(w11.get()));
+ EXPECT_EQ(w22.get(), observer.move_source());
+ EXPECT_EQ(w21.get(), observer.move_target());
// Reset now before windows are destroyed.
manager_.reset();
« no previous file with comments | « ui/aura_shell/workspace/workspace_manager.cc ('k') | ui/aura_shell/workspace/workspace_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698