| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |