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

Side by Side Diff: ash/display/display_controller_unittest.cc

Issue 259253002: Add OnDisplayMetricsChanged in DisplayObserver. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@update_orientation
Patch Set: jochen comments (inc. git cl format) Created 6 years, 7 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 unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698