OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ash/display/display_controller.h" | 5 #include "ash/display/display_controller.h" |
6 | 6 |
7 #include "ash/ash_switches.h" | 7 #include "ash/ash_switches.h" |
8 #include "ash/display/display_info.h" | 8 #include "ash/display/display_info.h" |
9 #include "ash/display/display_layout_store.h" | 9 #include "ash/display/display_layout_store.h" |
10 #include "ash/display/display_manager.h" | 10 #include "ash/display/display_manager.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 | 60 |
61 class TestObserver : public DisplayController::Observer, | 61 class TestObserver : public DisplayController::Observer, |
62 public gfx::DisplayObserver, | 62 public gfx::DisplayObserver, |
63 public aura::client::FocusChangeObserver, | 63 public aura::client::FocusChangeObserver, |
64 public aura::client::ActivationChangeObserver { | 64 public aura::client::ActivationChangeObserver { |
65 public: | 65 public: |
66 TestObserver() | 66 TestObserver() |
67 : changing_count_(0), | 67 : changing_count_(0), |
68 changed_count_(0), | 68 changed_count_(0), |
69 bounds_changed_count_(0), | 69 bounds_changed_count_(0), |
| 70 rotation_changed_count_(0), |
| 71 workarea_changed_count_(0), |
70 changed_display_id_(0), | 72 changed_display_id_(0), |
71 focus_changed_count_(0), | 73 focus_changed_count_(0), |
72 activation_changed_count_(0) { | 74 activation_changed_count_(0) { |
73 Shell::GetInstance()->display_controller()->AddObserver(this); | 75 Shell::GetInstance()->display_controller()->AddObserver(this); |
74 Shell::GetScreen()->AddObserver(this); | 76 Shell::GetScreen()->AddObserver(this); |
75 aura::client::GetFocusClient(Shell::GetPrimaryRootWindow())-> | 77 aura::client::GetFocusClient(Shell::GetPrimaryRootWindow())-> |
76 AddObserver(this); | 78 AddObserver(this); |
77 aura::client::GetActivationClient(Shell::GetPrimaryRootWindow())-> | 79 aura::client::GetActivationClient(Shell::GetPrimaryRootWindow())-> |
78 AddObserver(this); | 80 AddObserver(this); |
79 } | 81 } |
80 | 82 |
81 virtual ~TestObserver() { | 83 virtual ~TestObserver() { |
82 Shell::GetInstance()->display_controller()->RemoveObserver(this); | 84 Shell::GetInstance()->display_controller()->RemoveObserver(this); |
83 Shell::GetScreen()->RemoveObserver(this); | 85 Shell::GetScreen()->RemoveObserver(this); |
84 aura::client::GetFocusClient(Shell::GetPrimaryRootWindow())-> | 86 aura::client::GetFocusClient(Shell::GetPrimaryRootWindow())-> |
85 RemoveObserver(this); | 87 RemoveObserver(this); |
86 aura::client::GetActivationClient(Shell::GetPrimaryRootWindow())-> | 88 aura::client::GetActivationClient(Shell::GetPrimaryRootWindow())-> |
87 RemoveObserver(this); | 89 RemoveObserver(this); |
88 } | 90 } |
89 | 91 |
90 // Overridden from DisplayController::Observer | 92 // Overridden from DisplayController::Observer |
91 virtual void OnDisplayConfigurationChanging() OVERRIDE { | 93 virtual void OnDisplayConfigurationChanging() OVERRIDE { |
92 ++changing_count_; | 94 ++changing_count_; |
93 } | 95 } |
94 virtual void OnDisplayConfigurationChanged() OVERRIDE { | 96 virtual void OnDisplayConfigurationChanged() OVERRIDE { |
95 ++changed_count_; | 97 ++changed_count_; |
96 } | 98 } |
97 | 99 |
98 // Overrideen from gfx::DisplayObserver | 100 // Overrideen from gfx::DisplayObserver |
99 virtual void OnDisplayBoundsChanged(const gfx::Display& display) OVERRIDE { | 101 virtual void OnDisplayMetricsChanged( |
| 102 const gfx::Display& display, |
| 103 DisplayObserver::DisplayMetrics metrics) OVERRIDE { |
100 changed_display_id_ = display.id(); | 104 changed_display_id_ = display.id(); |
101 bounds_changed_count_ ++; | 105 if (metrics & DISPLAY_METRICS_BOUNDS) |
| 106 ++bounds_changed_count_; |
| 107 if (metrics & DISPLAY_METRICS_ROTATION) |
| 108 ++rotation_changed_count_; |
| 109 if (metrics & DISPLAY_METRICS_WORK_AREA) |
| 110 ++workarea_changed_count_; |
102 } | 111 } |
103 virtual void OnDisplayAdded(const gfx::Display& new_display) OVERRIDE { | 112 virtual void OnDisplayAdded(const gfx::Display& new_display) OVERRIDE { |
104 } | 113 } |
105 virtual void OnDisplayRemoved(const gfx::Display& old_display) OVERRIDE { | 114 virtual void OnDisplayRemoved(const gfx::Display& old_display) OVERRIDE { |
106 } | 115 } |
107 | 116 |
108 // Overridden from aura::client::FocusChangeObserver | 117 // Overridden from aura::client::FocusChangeObserver |
109 virtual void OnWindowFocused(aura::Window* gained_focus, | 118 virtual void OnWindowFocused(aura::Window* gained_focus, |
110 aura::Window* lost_focus) OVERRIDE { | 119 aura::Window* lost_focus) OVERRIDE { |
111 focus_changed_count_++; | 120 focus_changed_count_++; |
(...skipping 12 matching lines...) Expand all Loading... |
124 int CountAndReset() { | 133 int CountAndReset() { |
125 EXPECT_EQ(changing_count_, changed_count_); | 134 EXPECT_EQ(changing_count_, changed_count_); |
126 changed_count_ = 0; | 135 changed_count_ = 0; |
127 return Resetter<int>(&changing_count_).value(); | 136 return Resetter<int>(&changing_count_).value(); |
128 } | 137 } |
129 | 138 |
130 int64 GetBoundsChangedCountAndReset() { | 139 int64 GetBoundsChangedCountAndReset() { |
131 return Resetter<int>(&bounds_changed_count_).value(); | 140 return Resetter<int>(&bounds_changed_count_).value(); |
132 } | 141 } |
133 | 142 |
| 143 int64 GetRotationChangedCountAndReset() { |
| 144 return Resetter<int>(&rotation_changed_count_).value(); |
| 145 } |
| 146 |
| 147 int64 GetWorkareaChangedCountAndReset() { |
| 148 return Resetter<int>(&workarea_changed_count_).value(); |
| 149 } |
| 150 |
134 int64 GetChangedDisplayIdAndReset() { | 151 int64 GetChangedDisplayIdAndReset() { |
135 return Resetter<int64>(&changed_display_id_).value(); | 152 return Resetter<int64>(&changed_display_id_).value(); |
136 } | 153 } |
137 | 154 |
138 int GetFocusChangedCountAndReset() { | 155 int GetFocusChangedCountAndReset() { |
139 return Resetter<int>(&focus_changed_count_).value(); | 156 return Resetter<int>(&focus_changed_count_).value(); |
140 } | 157 } |
141 | 158 |
142 int GetActivationChangedCountAndReset() { | 159 int GetActivationChangedCountAndReset() { |
143 return Resetter<int>(&activation_changed_count_).value(); | 160 return Resetter<int>(&activation_changed_count_).value(); |
144 } | 161 } |
145 | 162 |
146 private: | 163 private: |
147 int changing_count_; | 164 int changing_count_; |
148 int changed_count_; | 165 int changed_count_; |
149 | 166 |
150 int bounds_changed_count_; | 167 int bounds_changed_count_; |
| 168 int rotation_changed_count_; |
| 169 int workarea_changed_count_; |
151 int64 changed_display_id_; | 170 int64 changed_display_id_; |
152 | 171 |
153 int focus_changed_count_; | 172 int focus_changed_count_; |
154 int activation_changed_count_; | 173 int activation_changed_count_; |
155 | 174 |
156 DISALLOW_COPY_AND_ASSIGN(TestObserver); | 175 DISALLOW_COPY_AND_ASSIGN(TestObserver); |
157 }; | 176 }; |
158 | 177 |
159 gfx::Display GetPrimaryDisplay() { | 178 gfx::Display GetPrimaryDisplay() { |
160 return Shell::GetScreen()->GetDisplayNearestWindow( | 179 return Shell::GetScreen()->GetDisplayNearestWindow( |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 return; | 399 return; |
381 | 400 |
382 // Creates windows to catch activation change event. | 401 // Creates windows to catch activation change event. |
383 scoped_ptr<aura::Window> w1(CreateTestWindowInShellWithId(1)); | 402 scoped_ptr<aura::Window> w1(CreateTestWindowInShellWithId(1)); |
384 w1->Focus(); | 403 w1->Focus(); |
385 | 404 |
386 TestObserver observer; | 405 TestObserver observer; |
387 UpdateDisplay("500x500,400x400"); | 406 UpdateDisplay("500x500,400x400"); |
388 EXPECT_EQ(1, observer.CountAndReset()); // resize and add | 407 EXPECT_EQ(1, observer.CountAndReset()); // resize and add |
389 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); | 408 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); |
| 409 EXPECT_EQ(1, observer.GetWorkareaChangedCountAndReset()); |
390 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 410 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
391 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 411 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
392 gfx::Insets insets(5, 5, 5, 5); | 412 gfx::Insets insets(5, 5, 5, 5); |
393 int64 secondary_display_id = ScreenUtil::GetSecondaryDisplay().id(); | 413 int64 secondary_display_id = ScreenUtil::GetSecondaryDisplay().id(); |
394 Shell::GetInstance()->display_manager()->UpdateWorkAreaOfDisplay( | 414 Shell::GetInstance()->display_manager()->UpdateWorkAreaOfDisplay( |
395 secondary_display_id, insets); | 415 secondary_display_id, insets); |
396 | 416 |
397 // Default layout is RIGHT. | 417 // Default layout is RIGHT. |
398 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 418 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
399 EXPECT_EQ("500,0 400x400", GetSecondaryDisplay().bounds().ToString()); | 419 EXPECT_EQ("500,0 400x400", GetSecondaryDisplay().bounds().ToString()); |
400 EXPECT_EQ("505,5 390x390", GetSecondaryDisplay().work_area().ToString()); | 420 EXPECT_EQ("505,5 390x390", GetSecondaryDisplay().work_area().ToString()); |
401 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 421 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
402 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 422 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
403 | 423 |
404 // Layout the secondary display to the bottom of the primary. | 424 // Layout the secondary display to the bottom of the primary. |
405 SetSecondaryDisplayLayout(DisplayLayout::BOTTOM); | 425 SetSecondaryDisplayLayout(DisplayLayout::BOTTOM); |
406 EXPECT_EQ(1, observer.CountAndReset()); | 426 EXPECT_EQ(1, observer.CountAndReset()); |
407 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); | 427 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); |
| 428 EXPECT_EQ(1, observer.GetWorkareaChangedCountAndReset()); |
408 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 429 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
409 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 430 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
410 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); | 431 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); |
411 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 432 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
412 EXPECT_EQ("0,500 400x400", GetSecondaryDisplay().bounds().ToString()); | 433 EXPECT_EQ("0,500 400x400", GetSecondaryDisplay().bounds().ToString()); |
413 EXPECT_EQ("5,505 390x390", GetSecondaryDisplay().work_area().ToString()); | 434 EXPECT_EQ("5,505 390x390", GetSecondaryDisplay().work_area().ToString()); |
414 | 435 |
415 // Layout the secondary display to the left of the primary. | 436 // Layout the secondary display to the left of the primary. |
416 SetSecondaryDisplayLayout(DisplayLayout::LEFT); | 437 SetSecondaryDisplayLayout(DisplayLayout::LEFT); |
417 EXPECT_EQ(1, observer.CountAndReset()); | 438 EXPECT_EQ(1, observer.CountAndReset()); |
418 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); | 439 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); |
| 440 EXPECT_EQ(1, observer.GetWorkareaChangedCountAndReset()); |
419 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 441 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
420 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 442 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
421 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); | 443 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); |
422 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 444 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
423 EXPECT_EQ("-400,0 400x400", GetSecondaryDisplay().bounds().ToString()); | 445 EXPECT_EQ("-400,0 400x400", GetSecondaryDisplay().bounds().ToString()); |
424 EXPECT_EQ("-395,5 390x390", GetSecondaryDisplay().work_area().ToString()); | 446 EXPECT_EQ("-395,5 390x390", GetSecondaryDisplay().work_area().ToString()); |
425 | 447 |
426 // Layout the secondary display to the top of the primary. | 448 // Layout the secondary display to the top of the primary. |
427 SetSecondaryDisplayLayout(DisplayLayout::TOP); | 449 SetSecondaryDisplayLayout(DisplayLayout::TOP); |
428 EXPECT_EQ(1, observer.CountAndReset()); | 450 EXPECT_EQ(1, observer.CountAndReset()); |
429 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); | 451 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); |
| 452 EXPECT_EQ(1, observer.GetWorkareaChangedCountAndReset()); |
430 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 453 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
431 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 454 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
432 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); | 455 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); |
433 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 456 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
434 EXPECT_EQ("0,-400 400x400", GetSecondaryDisplay().bounds().ToString()); | 457 EXPECT_EQ("0,-400 400x400", GetSecondaryDisplay().bounds().ToString()); |
435 EXPECT_EQ("5,-395 390x390", GetSecondaryDisplay().work_area().ToString()); | 458 EXPECT_EQ("5,-395 390x390", GetSecondaryDisplay().work_area().ToString()); |
436 | 459 |
437 // Layout to the right with an offset. | 460 // Layout to the right with an offset. |
438 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::RIGHT, 300); | 461 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::RIGHT, 300); |
439 EXPECT_EQ(1, observer.CountAndReset()); // resize and add | 462 EXPECT_EQ(1, observer.CountAndReset()); // resize and add |
440 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); | 463 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); |
| 464 EXPECT_EQ(1, observer.GetWorkareaChangedCountAndReset()); |
441 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 465 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
442 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 466 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
443 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); | 467 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); |
444 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 468 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
445 EXPECT_EQ("500,300 400x400", GetSecondaryDisplay().bounds().ToString()); | 469 EXPECT_EQ("500,300 400x400", GetSecondaryDisplay().bounds().ToString()); |
446 | 470 |
447 // Keep the minimum 100. | 471 // Keep the minimum 100. |
448 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::RIGHT, 490); | 472 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::RIGHT, 490); |
449 EXPECT_EQ(1, observer.CountAndReset()); // resize and add | 473 EXPECT_EQ(1, observer.CountAndReset()); // resize and add |
450 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); | 474 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); |
| 475 EXPECT_EQ(1, observer.GetWorkareaChangedCountAndReset()); |
451 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 476 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
452 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 477 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
453 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); | 478 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); |
454 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 479 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
455 EXPECT_EQ("500,400 400x400", GetSecondaryDisplay().bounds().ToString()); | 480 EXPECT_EQ("500,400 400x400", GetSecondaryDisplay().bounds().ToString()); |
456 | 481 |
457 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::RIGHT, -400); | 482 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::RIGHT, -400); |
458 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); | 483 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); |
459 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); | 484 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); |
| 485 EXPECT_EQ(1, observer.GetWorkareaChangedCountAndReset()); |
460 EXPECT_EQ(1, observer.CountAndReset()); // resize and add | 486 EXPECT_EQ(1, observer.CountAndReset()); // resize and add |
461 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 487 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
462 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 488 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
463 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 489 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
464 EXPECT_EQ("500,-300 400x400", GetSecondaryDisplay().bounds().ToString()); | 490 EXPECT_EQ("500,-300 400x400", GetSecondaryDisplay().bounds().ToString()); |
465 | 491 |
466 // Layout to the bottom with an offset. | 492 // Layout to the bottom with an offset. |
467 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -200); | 493 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -200); |
468 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); | 494 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); |
469 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); | 495 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); |
| 496 EXPECT_EQ(1, observer.GetWorkareaChangedCountAndReset()); |
470 EXPECT_EQ(1, observer.CountAndReset()); // resize and add | 497 EXPECT_EQ(1, observer.CountAndReset()); // resize and add |
471 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 498 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
472 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 499 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
473 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 500 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
474 EXPECT_EQ("-200,500 400x400", GetSecondaryDisplay().bounds().ToString()); | 501 EXPECT_EQ("-200,500 400x400", GetSecondaryDisplay().bounds().ToString()); |
475 | 502 |
476 // Keep the minimum 100. | 503 // Keep the minimum 100. |
477 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, 490); | 504 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, 490); |
478 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); | 505 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); |
479 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); | 506 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); |
| 507 EXPECT_EQ(1, observer.GetWorkareaChangedCountAndReset()); |
480 EXPECT_EQ(1, observer.CountAndReset()); // resize and add | 508 EXPECT_EQ(1, observer.CountAndReset()); // resize and add |
481 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 509 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
482 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 510 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
483 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 511 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
484 EXPECT_EQ("400,500 400x400", GetSecondaryDisplay().bounds().ToString()); | 512 EXPECT_EQ("400,500 400x400", GetSecondaryDisplay().bounds().ToString()); |
485 | 513 |
486 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -400); | 514 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -400); |
487 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); | 515 EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset()); |
488 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); | 516 EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset()); |
| 517 EXPECT_EQ(1, observer.GetWorkareaChangedCountAndReset()); |
489 EXPECT_EQ(1, observer.CountAndReset()); // resize and add | 518 EXPECT_EQ(1, observer.CountAndReset()); // resize and add |
490 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 519 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
491 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 520 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
492 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 521 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
493 EXPECT_EQ("-300,500 400x400", GetSecondaryDisplay().bounds().ToString()); | 522 EXPECT_EQ("-300,500 400x400", GetSecondaryDisplay().bounds().ToString()); |
494 | 523 |
495 // Setting the same layout shouldn't invoke observers. | 524 // Setting the same layout shouldn't invoke observers. |
496 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -400); | 525 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -400); |
497 EXPECT_EQ(0, observer.GetChangedDisplayIdAndReset()); | 526 EXPECT_EQ(0, observer.GetChangedDisplayIdAndReset()); |
498 EXPECT_EQ(0, observer.GetBoundsChangedCountAndReset()); | 527 EXPECT_EQ(0, observer.GetBoundsChangedCountAndReset()); |
| 528 EXPECT_EQ(0, observer.GetWorkareaChangedCountAndReset()); |
499 EXPECT_EQ(0, observer.CountAndReset()); // resize and add | 529 EXPECT_EQ(0, observer.CountAndReset()); // resize and add |
500 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 530 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
501 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 531 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
502 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); | 532 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); |
503 EXPECT_EQ("-300,500 400x400", GetSecondaryDisplay().bounds().ToString()); | 533 EXPECT_EQ("-300,500 400x400", GetSecondaryDisplay().bounds().ToString()); |
504 | 534 |
505 UpdateDisplay("500x500"); | 535 UpdateDisplay("500x500"); |
506 EXPECT_LE(1, observer.GetFocusChangedCountAndReset()); | 536 EXPECT_LE(1, observer.GetFocusChangedCountAndReset()); |
507 EXPECT_LE(1, observer.GetActivationChangedCountAndReset()); | 537 EXPECT_LE(1, observer.GetActivationChangedCountAndReset()); |
508 } | 538 } |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
552 EXPECT_EQ("0,0 250x250", w1->bounds().ToString()); | 582 EXPECT_EQ("0,0 250x250", w1->bounds().ToString()); |
553 // Dock mode. | 583 // Dock mode. |
554 TestObserver observer; | 584 TestObserver observer; |
555 display_info_list.clear(); | 585 display_info_list.clear(); |
556 display_info_list.push_back(external_display_info); | 586 display_info_list.push_back(external_display_info); |
557 display_manager->OnNativeDisplaysChanged(display_info_list); | 587 display_manager->OnNativeDisplaysChanged(display_info_list); |
558 EXPECT_EQ(1U, display_manager->GetNumDisplays()); | 588 EXPECT_EQ(1U, display_manager->GetNumDisplays()); |
559 EXPECT_EQ(1U, display_manager->num_connected_displays()); | 589 EXPECT_EQ(1U, display_manager->num_connected_displays()); |
560 EXPECT_EQ(0, observer.GetChangedDisplayIdAndReset()); | 590 EXPECT_EQ(0, observer.GetChangedDisplayIdAndReset()); |
561 EXPECT_EQ(0, observer.GetBoundsChangedCountAndReset()); | 591 EXPECT_EQ(0, observer.GetBoundsChangedCountAndReset()); |
| 592 EXPECT_EQ(0, observer.GetWorkareaChangedCountAndReset()); |
562 EXPECT_EQ(1, observer.CountAndReset()); | 593 EXPECT_EQ(1, observer.CountAndReset()); |
563 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 594 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
564 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 595 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
565 | 596 |
566 EXPECT_TRUE(window_state->IsFullscreen()); | 597 EXPECT_TRUE(window_state->IsFullscreen()); |
567 EXPECT_EQ("0,0 500x500", w1->bounds().ToString()); | 598 EXPECT_EQ("0,0 500x500", w1->bounds().ToString()); |
568 } | 599 } |
569 | 600 |
570 TEST_F(DisplayControllerTest, BoundsUpdated) { | 601 TEST_F(DisplayControllerTest, BoundsUpdated) { |
571 if (!SupportsMultipleDisplays()) | 602 if (!SupportsMultipleDisplays()) |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
620 EXPECT_EQ("0,0 200x250", GetPrimaryDisplay().bounds().ToString()); | 651 EXPECT_EQ("0,0 200x250", GetPrimaryDisplay().bounds().ToString()); |
621 EXPECT_EQ("0,250 300x300", GetSecondaryDisplay().bounds().ToString()); | 652 EXPECT_EQ("0,250 300x300", GetSecondaryDisplay().bounds().ToString()); |
622 | 653 |
623 // No change | 654 // No change |
624 UpdateDisplay("400x500*2,300x300"); | 655 UpdateDisplay("400x500*2,300x300"); |
625 EXPECT_EQ(0, observer.CountAndReset()); | 656 EXPECT_EQ(0, observer.CountAndReset()); |
626 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 657 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
627 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 658 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
628 | 659 |
629 // Rotation | 660 // Rotation |
| 661 observer.GetRotationChangedCountAndReset(); // we only want to reset. |
630 int64 primary_id = GetPrimaryDisplay().id(); | 662 int64 primary_id = GetPrimaryDisplay().id(); |
631 display_manager->SetDisplayRotation(primary_id, gfx::Display::ROTATE_90); | 663 display_manager->SetDisplayRotation(primary_id, gfx::Display::ROTATE_90); |
| 664 EXPECT_EQ(1, observer.GetRotationChangedCountAndReset()); |
632 EXPECT_EQ(1, observer.CountAndReset()); | 665 EXPECT_EQ(1, observer.CountAndReset()); |
633 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 666 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
634 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 667 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
635 display_manager->SetDisplayRotation(primary_id, gfx::Display::ROTATE_90); | 668 display_manager->SetDisplayRotation(primary_id, gfx::Display::ROTATE_90); |
| 669 EXPECT_EQ(0, observer.GetRotationChangedCountAndReset()); |
636 EXPECT_EQ(0, observer.CountAndReset()); | 670 EXPECT_EQ(0, observer.CountAndReset()); |
637 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 671 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
638 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); | 672 EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); |
639 | 673 |
640 // UI scale is eanbled only on internal display. | 674 // UI scale is eanbled only on internal display. |
641 int64 secondary_id = GetSecondaryDisplay().id(); | 675 int64 secondary_id = GetSecondaryDisplay().id(); |
642 gfx::Display::SetInternalDisplayId(secondary_id); | 676 gfx::Display::SetInternalDisplayId(secondary_id); |
643 display_manager->SetDisplayUIScale(secondary_id, 1.125f); | 677 display_manager->SetDisplayUIScale(secondary_id, 1.125f); |
644 EXPECT_EQ(1, observer.CountAndReset()); | 678 EXPECT_EQ(1, observer.CountAndReset()); |
645 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); | 679 EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); |
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1025 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 1059 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
1026 TestEventHandler event_handler; | 1060 TestEventHandler event_handler; |
1027 Shell::GetInstance()->AddPreTargetHandler(&event_handler); | 1061 Shell::GetInstance()->AddPreTargetHandler(&event_handler); |
1028 | 1062 |
1029 UpdateDisplay("120x200,300x400*2"); | 1063 UpdateDisplay("120x200,300x400*2"); |
1030 gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay(); | 1064 gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay(); |
1031 int64 display2_id = ScreenUtil::GetSecondaryDisplay().id(); | 1065 int64 display2_id = ScreenUtil::GetSecondaryDisplay().id(); |
1032 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 1066 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
1033 aura::test::EventGenerator generator1(root_windows[0]); | 1067 aura::test::EventGenerator generator1(root_windows[0]); |
1034 | 1068 |
| 1069 TestObserver observer; |
1035 EXPECT_EQ("120x200", root_windows[0]->bounds().size().ToString()); | 1070 EXPECT_EQ("120x200", root_windows[0]->bounds().size().ToString()); |
1036 EXPECT_EQ("150x200", root_windows[1]->bounds().size().ToString()); | 1071 EXPECT_EQ("150x200", root_windows[1]->bounds().size().ToString()); |
1037 EXPECT_EQ("120,0 150x200", | 1072 EXPECT_EQ("120,0 150x200", |
1038 ScreenUtil::GetSecondaryDisplay().bounds().ToString()); | 1073 ScreenUtil::GetSecondaryDisplay().bounds().ToString()); |
1039 generator1.MoveMouseToInHost(50, 40); | 1074 generator1.MoveMouseToInHost(50, 40); |
1040 EXPECT_EQ("50,40", event_handler.GetLocationAndReset()); | 1075 EXPECT_EQ("50,40", event_handler.GetLocationAndReset()); |
1041 EXPECT_EQ(gfx::Display::ROTATE_0, GetStoredRotation(display1.id())); | 1076 EXPECT_EQ(gfx::Display::ROTATE_0, GetStoredRotation(display1.id())); |
1042 EXPECT_EQ(gfx::Display::ROTATE_0, GetStoredRotation(display2_id)); | 1077 EXPECT_EQ(gfx::Display::ROTATE_0, GetStoredRotation(display2_id)); |
| 1078 EXPECT_EQ(0, observer.GetRotationChangedCountAndReset()); |
1043 | 1079 |
1044 display_manager->SetDisplayRotation(display1.id(), | 1080 display_manager->SetDisplayRotation(display1.id(), |
1045 gfx::Display::ROTATE_90); | 1081 gfx::Display::ROTATE_90); |
1046 EXPECT_EQ("200x120", root_windows[0]->bounds().size().ToString()); | 1082 EXPECT_EQ("200x120", root_windows[0]->bounds().size().ToString()); |
1047 EXPECT_EQ("150x200", root_windows[1]->bounds().size().ToString()); | 1083 EXPECT_EQ("150x200", root_windows[1]->bounds().size().ToString()); |
1048 EXPECT_EQ("200,0 150x200", | 1084 EXPECT_EQ("200,0 150x200", |
1049 ScreenUtil::GetSecondaryDisplay().bounds().ToString()); | 1085 ScreenUtil::GetSecondaryDisplay().bounds().ToString()); |
1050 generator1.MoveMouseToInHost(50, 40); | 1086 generator1.MoveMouseToInHost(50, 40); |
1051 EXPECT_EQ("40,69", event_handler.GetLocationAndReset()); | 1087 EXPECT_EQ("40,69", event_handler.GetLocationAndReset()); |
1052 EXPECT_EQ(gfx::Display::ROTATE_90, GetStoredRotation(display1.id())); | 1088 EXPECT_EQ(gfx::Display::ROTATE_90, GetStoredRotation(display1.id())); |
1053 EXPECT_EQ(gfx::Display::ROTATE_0, GetStoredRotation(display2_id)); | 1089 EXPECT_EQ(gfx::Display::ROTATE_0, GetStoredRotation(display2_id)); |
| 1090 EXPECT_EQ(1, observer.GetRotationChangedCountAndReset()); |
1054 | 1091 |
1055 DisplayLayout display_layout(DisplayLayout::BOTTOM, 50); | 1092 DisplayLayout display_layout(DisplayLayout::BOTTOM, 50); |
1056 display_manager->SetLayoutForCurrentDisplays(display_layout); | 1093 display_manager->SetLayoutForCurrentDisplays(display_layout); |
1057 EXPECT_EQ("50,120 150x200", | 1094 EXPECT_EQ("50,120 150x200", |
1058 ScreenUtil::GetSecondaryDisplay().bounds().ToString()); | 1095 ScreenUtil::GetSecondaryDisplay().bounds().ToString()); |
1059 | 1096 |
1060 display_manager->SetDisplayRotation(display2_id, | 1097 display_manager->SetDisplayRotation(display2_id, |
1061 gfx::Display::ROTATE_270); | 1098 gfx::Display::ROTATE_270); |
1062 EXPECT_EQ("200x120", root_windows[0]->bounds().size().ToString()); | 1099 EXPECT_EQ("200x120", root_windows[0]->bounds().size().ToString()); |
1063 EXPECT_EQ("200x150", root_windows[1]->bounds().size().ToString()); | 1100 EXPECT_EQ("200x150", root_windows[1]->bounds().size().ToString()); |
1064 EXPECT_EQ("50,120 200x150", | 1101 EXPECT_EQ("50,120 200x150", |
1065 ScreenUtil::GetSecondaryDisplay().bounds().ToString()); | 1102 ScreenUtil::GetSecondaryDisplay().bounds().ToString()); |
1066 EXPECT_EQ(gfx::Display::ROTATE_90, GetStoredRotation(display1.id())); | 1103 EXPECT_EQ(gfx::Display::ROTATE_90, GetStoredRotation(display1.id())); |
1067 EXPECT_EQ(gfx::Display::ROTATE_270, GetStoredRotation(display2_id)); | 1104 EXPECT_EQ(gfx::Display::ROTATE_270, GetStoredRotation(display2_id)); |
| 1105 EXPECT_EQ(1, observer.GetRotationChangedCountAndReset()); |
1068 | 1106 |
1069 #if !defined(OS_WIN) | 1107 #if !defined(OS_WIN) |
1070 aura::test::EventGenerator generator2(root_windows[1]); | 1108 aura::test::EventGenerator generator2(root_windows[1]); |
1071 generator2.MoveMouseToInHost(50, 40); | 1109 generator2.MoveMouseToInHost(50, 40); |
1072 EXPECT_EQ("179,25", event_handler.GetLocationAndReset()); | 1110 EXPECT_EQ("179,25", event_handler.GetLocationAndReset()); |
1073 display_manager->SetDisplayRotation(display1.id(), | 1111 display_manager->SetDisplayRotation(display1.id(), |
1074 gfx::Display::ROTATE_180); | 1112 gfx::Display::ROTATE_180); |
1075 | 1113 |
1076 EXPECT_EQ("120x200", root_windows[0]->bounds().size().ToString()); | 1114 EXPECT_EQ("120x200", root_windows[0]->bounds().size().ToString()); |
1077 EXPECT_EQ("200x150", root_windows[1]->bounds().size().ToString()); | 1115 EXPECT_EQ("200x150", root_windows[1]->bounds().size().ToString()); |
1078 // Dislay must share at least 100, so the x's offset becomes 20. | 1116 // Dislay must share at least 100, so the x's offset becomes 20. |
1079 EXPECT_EQ("20,200 200x150", | 1117 EXPECT_EQ("20,200 200x150", |
1080 ScreenUtil::GetSecondaryDisplay().bounds().ToString()); | 1118 ScreenUtil::GetSecondaryDisplay().bounds().ToString()); |
1081 EXPECT_EQ(gfx::Display::ROTATE_180, GetStoredRotation(display1.id())); | 1119 EXPECT_EQ(gfx::Display::ROTATE_180, GetStoredRotation(display1.id())); |
1082 EXPECT_EQ(gfx::Display::ROTATE_270, GetStoredRotation(display2_id)); | 1120 EXPECT_EQ(gfx::Display::ROTATE_270, GetStoredRotation(display2_id)); |
| 1121 EXPECT_EQ(1, observer.GetRotationChangedCountAndReset()); |
1083 | 1122 |
1084 generator1.MoveMouseToInHost(50, 40); | 1123 generator1.MoveMouseToInHost(50, 40); |
1085 EXPECT_EQ("69,159", event_handler.GetLocationAndReset()); | 1124 EXPECT_EQ("69,159", event_handler.GetLocationAndReset()); |
1086 #endif | 1125 #endif |
1087 | 1126 |
1088 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); | 1127 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
1089 } | 1128 } |
1090 | 1129 |
1091 TEST_F(DisplayControllerTest, ScaleRootWindow) { | 1130 TEST_F(DisplayControllerTest, ScaleRootWindow) { |
1092 if (!SupportsMultipleDisplays()) | 1131 if (!SupportsMultipleDisplays()) |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1293 EXPECT_EQ("aura_root_x", GetXWindowName(secondary->GetHost())); | 1332 EXPECT_EQ("aura_root_x", GetXWindowName(secondary->GetHost())); |
1294 | 1333 |
1295 // Switching back to single display. | 1334 // Switching back to single display. |
1296 UpdateDisplay("300x400"); | 1335 UpdateDisplay("300x400"); |
1297 EXPECT_EQ("aura_root_0", GetXWindowName( | 1336 EXPECT_EQ("aura_root_0", GetXWindowName( |
1298 Shell::GetPrimaryRootWindow()->GetHost())); | 1337 Shell::GetPrimaryRootWindow()->GetHost())); |
1299 } | 1338 } |
1300 #endif | 1339 #endif |
1301 | 1340 |
1302 } // namespace ash | 1341 } // namespace ash |
OLD | NEW |