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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "ui/aura/aura_constants.h" 5 #include "ui/aura/aura_constants.h"
6 #include "ui/aura/desktop.h" 6 #include "ui/aura/desktop.h"
7 #include "ui/aura/screen_aura.h" 7 #include "ui/aura/screen_aura.h"
8 #include "ui/aura/test/aura_test_base.h" 8 #include "ui/aura/test/aura_test_base.h"
9 #include "ui/aura/test/test_desktop_delegate.h" 9 #include "ui/aura/test/test_desktop_delegate.h"
10 #include "ui/aura/window.h" 10 #include "ui/aura/window.h"
11 #include "ui/aura_shell/workspace/workspace.h" 11 #include "ui/aura_shell/workspace/workspace.h"
12 #include "ui/aura_shell/workspace/workspace_manager.h" 12 #include "ui/aura_shell/workspace/workspace_manager.h"
13 #include "ui/aura_shell/workspace/workspace_observer.h"
13 #include "ui/base/ui_base_types.h" 14 #include "ui/base/ui_base_types.h"
14 15
16 namespace {
17 using aura_shell::internal::Workspace;
18 using aura_shell::internal::WorkspaceManager;
15 using aura::Window; 19 using aura::Window;
16 20
21 class TestWorkspaceObserver : public aura_shell::internal::WorkspaceObserver {
22 public:
23 explicit TestWorkspaceObserver(WorkspaceManager* manager)
24 : manager_(manager),
25 move_source_(NULL),
26 move_target_(NULL),
27 active_workspace_(NULL),
28 old_active_workspace_(NULL) {
29 manager_->AddObserver(this);
30 }
31
32 virtual ~TestWorkspaceObserver() {
33 manager_->RemoveObserver(this);
34 }
35
36 Window* move_source() { return move_source_; }
37 Window* move_target() { return move_target_; }
38 Workspace* active_workspace() { return active_workspace_; }
39 Workspace* old_active_workspace() { return old_active_workspace_; }
40
41 // Resets the observer states.
42 void reset() {
43 active_workspace_ = NULL;
44 old_active_workspace_ = NULL;
45 move_source_ = NULL;
46 move_target_ = NULL;
47 }
48
49 // Overridden from WorkspaceObserver:
50 virtual void WindowMoved(WorkspaceManager* manager,
51 Window* source,
52 Window* target) {
53 move_source_ = source;
54 move_target_ = target;
55 }
56 virtual void ActiveWorkspaceChanged(WorkspaceManager* manager,
57 Workspace* old) {
58 old_active_workspace_ = old;
59 active_workspace_ = manager->GetActiveWorkspace();
60 }
61
62 private:
63 WorkspaceManager* manager_;
64 Window* move_source_;
65 Window* move_target_;
66 Workspace* active_workspace_;
67 Workspace* old_active_workspace_;
68
69 DISALLOW_COPY_AND_ASSIGN(TestWorkspaceObserver);
70 };
71
72 } // namespace
73
17 namespace aura_shell { 74 namespace aura_shell {
18 namespace internal { 75 namespace internal {
19 76
20 class WorkspaceManagerTestBase : public aura::test::AuraTestBase { 77 class WorkspaceManagerTestBase : public aura::test::AuraTestBase {
21 public: 78 public:
22 WorkspaceManagerTestBase() {} 79 WorkspaceManagerTestBase() {}
23 virtual ~WorkspaceManagerTestBase() {} 80 virtual ~WorkspaceManagerTestBase() {}
24 81
25 virtual void SetUp() OVERRIDE { 82 virtual void SetUp() OVERRIDE {
26 aura::test::AuraTestBase::SetUp(); 83 aura::test::AuraTestBase::SetUp();
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 delete ws2; 223 delete ws2;
167 // The size of viewport() for no workspace case must be 224 // The size of viewport() for no workspace case must be
168 // same as one viewport() case. 225 // same as one viewport() case.
169 EXPECT_EQ("0,0 500x300", viewport()->bounds().ToString()); 226 EXPECT_EQ("0,0 500x300", viewport()->bounds().ToString());
170 227
171 // Reset now before windows are destroyed. 228 // Reset now before windows are destroyed.
172 manager_.reset(); 229 manager_.reset();
173 } 230 }
174 231
175 TEST_F(WorkspaceManagerTest, WorkspaceManagerActivate) { 232 TEST_F(WorkspaceManagerTest, WorkspaceManagerActivate) {
233 TestWorkspaceObserver observer(manager_.get());
176 Workspace* ws1 = manager_->CreateWorkspace(); 234 Workspace* ws1 = manager_->CreateWorkspace();
177 Workspace* ws2 = manager_->CreateWorkspace(); 235 Workspace* ws2 = manager_->CreateWorkspace();
178 EXPECT_EQ(NULL, manager_->GetActiveWorkspace()); 236 EXPECT_EQ(NULL, manager_->GetActiveWorkspace());
179 237
180 // Activate ws1. 238 // Activate ws1.
181 ws1->Activate(); 239 ws1->Activate();
182 EXPECT_EQ(ws1, manager_->GetActiveWorkspace()); 240 EXPECT_EQ(ws1, manager_->GetActiveWorkspace());
241 EXPECT_EQ(NULL, observer.old_active_workspace());
242 EXPECT_EQ(ws1, observer.active_workspace());
243 observer.reset();
183 244
184 // Activate ws2. 245 // Activate ws2.
185 ws2->Activate(); 246 ws2->Activate();
186 EXPECT_EQ(ws2, manager_->GetActiveWorkspace()); 247 EXPECT_EQ(ws2, manager_->GetActiveWorkspace());
248 EXPECT_EQ(ws1, observer.old_active_workspace());
249 EXPECT_EQ(ws2, observer.active_workspace());
250 observer.reset();
187 251
188 // Deleting active workspace sets active workspace to NULL. 252 // Deleting active workspace sets active workspace to NULL.
189 delete ws2; 253 delete ws2;
190 EXPECT_EQ(NULL, manager_->GetActiveWorkspace()); 254 EXPECT_EQ(NULL, manager_->GetActiveWorkspace());
255 EXPECT_EQ(ws2, observer.old_active_workspace());
256 EXPECT_EQ(NULL, observer.active_workspace());
191 manager_.reset(); 257 manager_.reset();
192 } 258 }
193 259
194 TEST_F(WorkspaceManagerTest, FindRotateWindow) { 260 TEST_F(WorkspaceManagerTest, FindRotateWindow) {
195 manager_->SetWorkspaceSize(gfx::Size(500, 300)); 261 manager_->SetWorkspaceSize(gfx::Size(500, 300));
196 262
197 Workspace* ws1 = manager_->CreateWorkspace(); 263 Workspace* ws1 = manager_->CreateWorkspace();
198 scoped_ptr<Window> w11(CreateTestWindow()); 264 scoped_ptr<Window> w11(CreateTestWindow());
199 w11->SetBounds(gfx::Rect(0, 0, 100, 100)); 265 w11->SetBounds(gfx::Rect(0, 0, 100, 100));
200 ws1->AddWindowAfter(w11.get(), NULL); 266 ws1->AddWindowAfter(w11.get(), NULL);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 manager_->FindRotateWindowForLocation(gfx::Point(760, 0))); 309 manager_->FindRotateWindowForLocation(gfx::Point(760, 0)));
244 EXPECT_EQ(w21.get(), 310 EXPECT_EQ(w21.get(),
245 manager_->FindRotateWindowForLocation(gfx::Point(840, 0))); 311 manager_->FindRotateWindowForLocation(gfx::Point(840, 0)));
246 EXPECT_EQ(NULL, manager_->FindRotateWindowForLocation(gfx::Point(860, 0))); 312 EXPECT_EQ(NULL, manager_->FindRotateWindowForLocation(gfx::Point(860, 0)));
247 313
248 // Reset now before windows are destroyed. 314 // Reset now before windows are destroyed.
249 manager_.reset(); 315 manager_.reset();
250 } 316 }
251 317
252 TEST_F(WorkspaceManagerTest, RotateWindows) { 318 TEST_F(WorkspaceManagerTest, RotateWindows) {
319 TestWorkspaceObserver observer(manager_.get());
253 Workspace* ws1 = manager_->CreateWorkspace(); 320 Workspace* ws1 = manager_->CreateWorkspace();
254 Workspace* ws2 = manager_->CreateWorkspace(); 321 Workspace* ws2 = manager_->CreateWorkspace();
255 322
256 scoped_ptr<Window> w11(CreateTestWindow()); 323 scoped_ptr<Window> w11(CreateTestWindow());
257 ws1->AddWindowAfter(w11.get(), NULL); 324 ws1->AddWindowAfter(w11.get(), NULL);
258 325
259 scoped_ptr<Window> w21(CreateTestWindow()); 326 scoped_ptr<Window> w21(CreateTestWindow());
260 scoped_ptr<Window> w22(CreateTestWindow()); 327 scoped_ptr<Window> w22(CreateTestWindow());
261 ws2->AddWindowAfter(w21.get(), NULL); 328 ws2->AddWindowAfter(w21.get(), NULL);
262 ws2->AddWindowAfter(w22.get(), NULL); 329 ws2->AddWindowAfter(w22.get(), NULL);
263 330
264 EXPECT_EQ(0, ws1->GetIndexOf(w11.get())); 331 EXPECT_EQ(0, ws1->GetIndexOf(w11.get()));
265 EXPECT_EQ(0, ws2->GetIndexOf(w21.get())); 332 EXPECT_EQ(0, ws2->GetIndexOf(w21.get()));
266 EXPECT_EQ(1, ws2->GetIndexOf(w22.get())); 333 EXPECT_EQ(1, ws2->GetIndexOf(w22.get()));
267 334
268 // Rotate right most to left most. 335 // Rotate right most to left most.
269 manager_->RotateWindows(w22.get(), w11.get()); 336 manager_->RotateWindows(w22.get(), w11.get());
337 EXPECT_EQ(w22.get(), observer.move_source());
338 EXPECT_EQ(w11.get(), observer.move_target());
270 339
271 EXPECT_EQ(0, ws1->GetIndexOf(w22.get())); 340 EXPECT_EQ(0, ws1->GetIndexOf(w22.get()));
272 EXPECT_EQ(0, ws2->GetIndexOf(w11.get())); 341 EXPECT_EQ(0, ws2->GetIndexOf(w11.get()));
273 EXPECT_EQ(1, ws2->GetIndexOf(w21.get())); 342 EXPECT_EQ(1, ws2->GetIndexOf(w21.get()));
274 343
275 // Rotate left most to right most. 344 // Rotate left most to right most.
276 manager_->RotateWindows(w22.get(), w21.get()); 345 manager_->RotateWindows(w22.get(), w21.get());
277 EXPECT_EQ(0, ws1->GetIndexOf(w11.get())); 346 EXPECT_EQ(0, ws1->GetIndexOf(w11.get()));
278 EXPECT_EQ(0, ws2->GetIndexOf(w21.get())); 347 EXPECT_EQ(0, ws2->GetIndexOf(w21.get()));
279 EXPECT_EQ(1, ws2->GetIndexOf(w22.get())); 348 EXPECT_EQ(1, ws2->GetIndexOf(w22.get()));
349 EXPECT_EQ(w22.get(), observer.move_source());
350 EXPECT_EQ(w21.get(), observer.move_target());
280 351
281 // Rotate left most to 1st element in 2nd workspace. 352 // Rotate left most to 1st element in 2nd workspace.
282 manager_->RotateWindows(w11.get(), w21.get()); 353 manager_->RotateWindows(w11.get(), w21.get());
283 EXPECT_EQ(0, ws1->GetIndexOf(w21.get())); 354 EXPECT_EQ(0, ws1->GetIndexOf(w21.get()));
284 EXPECT_EQ(0, ws2->GetIndexOf(w11.get())); 355 EXPECT_EQ(0, ws2->GetIndexOf(w11.get()));
285 EXPECT_EQ(1, ws2->GetIndexOf(w22.get())); 356 EXPECT_EQ(1, ws2->GetIndexOf(w22.get()));
357 EXPECT_EQ(w11.get(), observer.move_source());
358 EXPECT_EQ(w21.get(), observer.move_target());
286 359
287 // Rotate middle to right most. 360 // Rotate middle to right most.
288 manager_->RotateWindows(w11.get(), w22.get()); 361 manager_->RotateWindows(w11.get(), w22.get());
289 EXPECT_EQ(0, ws1->GetIndexOf(w21.get())); 362 EXPECT_EQ(0, ws1->GetIndexOf(w21.get()));
290 EXPECT_EQ(0, ws2->GetIndexOf(w22.get())); 363 EXPECT_EQ(0, ws2->GetIndexOf(w22.get()));
291 EXPECT_EQ(1, ws2->GetIndexOf(w11.get())); 364 EXPECT_EQ(1, ws2->GetIndexOf(w11.get()));
365 EXPECT_EQ(w11.get(), observer.move_source());
366 EXPECT_EQ(w22.get(), observer.move_target());
292 367
293 // Rotate middle to left most. 368 // Rotate middle to left most.
294 manager_->RotateWindows(w22.get(), w21.get()); 369 manager_->RotateWindows(w22.get(), w21.get());
295 EXPECT_EQ(0, ws1->GetIndexOf(w22.get())); 370 EXPECT_EQ(0, ws1->GetIndexOf(w22.get()));
296 EXPECT_EQ(0, ws2->GetIndexOf(w21.get())); 371 EXPECT_EQ(0, ws2->GetIndexOf(w21.get()));
297 EXPECT_EQ(1, ws2->GetIndexOf(w11.get())); 372 EXPECT_EQ(1, ws2->GetIndexOf(w11.get()));
373 EXPECT_EQ(w22.get(), observer.move_source());
374 EXPECT_EQ(w21.get(), observer.move_target());
298 375
299 // Reset now before windows are destroyed. 376 // Reset now before windows are destroyed.
300 manager_.reset(); 377 manager_.reset();
301 } 378 }
302 379
303 class WorkspaceTest : public WorkspaceManagerTestBase { 380 class WorkspaceTest : public WorkspaceManagerTestBase {
304 }; 381 };
305 382
306 TEST_F(WorkspaceTest, WorkspaceBasic) { 383 TEST_F(WorkspaceTest, WorkspaceBasic) {
307 Workspace* ws = manager_->CreateWorkspace(); 384 Workspace* ws = manager_->CreateWorkspace();
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 603
527 w2->SetIntProperty(aura::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); 604 w2->SetIntProperty(aura::kShowStateKey, ui::SHOW_STATE_FULLSCREEN);
528 EXPECT_TRUE(ws->ContainsFullscreenWindow()); 605 EXPECT_TRUE(ws->ContainsFullscreenWindow());
529 606
530 w2->Hide(); 607 w2->Hide();
531 EXPECT_FALSE(ws->ContainsFullscreenWindow()); 608 EXPECT_FALSE(ws->ContainsFullscreenWindow());
532 } 609 }
533 610
534 } // namespace internal 611 } // namespace internal
535 } // namespace aura_shell 612 } // namespace aura_shell
OLDNEW
« 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