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

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

Issue 13916004: Translate 1 pixel not 1 dip when rotating the display. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove chromeos specific test that is no longer necessary Created 7 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « ash/display/display_controller.cc ('k') | ui/aura/root_window.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/display/display_info.h" 7 #include "ash/display/display_info.h"
8 #include "ash/display/display_manager.h" 8 #include "ash/display/display_manager.h"
9 #include "ash/launcher/launcher.h" 9 #include "ash/launcher/launcher.h"
10 #include "ash/screen_ash.h" 10 #include "ash/screen_ash.h"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 TestEventHandler() : target_root_(NULL), 103 TestEventHandler() : target_root_(NULL),
104 touch_radius_x_(0.0), 104 touch_radius_x_(0.0),
105 touch_radius_y_(0.0), 105 touch_radius_y_(0.0),
106 scroll_x_offset_(0.0), 106 scroll_x_offset_(0.0),
107 scroll_y_offset_(0.0), 107 scroll_y_offset_(0.0),
108 scroll_x_offset_ordinal_(0.0), 108 scroll_x_offset_ordinal_(0.0),
109 scroll_y_offset_ordinal_(0.0) {} 109 scroll_y_offset_ordinal_(0.0) {}
110 virtual ~TestEventHandler() {} 110 virtual ~TestEventHandler() {}
111 111
112 virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE { 112 virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE {
113 if (event->flags() & ui::EF_IS_SYNTHESIZED)
114 return;
113 aura::Window* target = static_cast<aura::Window*>(event->target()); 115 aura::Window* target = static_cast<aura::Window*>(event->target());
114 // Only record when the target is the background which covers 116 mouse_location_ = event->root_location();
115 // entire root window.
116 if (target->name() != kDesktopBackgroundView)
117 return;
118 mouse_location_ = event->location();
119 target_root_ = target->GetRootWindow(); 117 target_root_ = target->GetRootWindow();
120 event->StopPropagation(); 118 event->StopPropagation();
121 } 119 }
122 120
123 virtual void OnTouchEvent(ui::TouchEvent* event) OVERRIDE { 121 virtual void OnTouchEvent(ui::TouchEvent* event) OVERRIDE {
124 aura::Window* target = static_cast<aura::Window*>(event->target()); 122 aura::Window* target = static_cast<aura::Window*>(event->target());
125 // Only record when the target is the background which covers 123 // Only record when the target is the background which covers
126 // entire root window. 124 // entire root window.
127 if (target->name() != kDesktopBackgroundView) 125 if (target->name() != kDesktopBackgroundView)
128 return; 126 return;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 }; 174 };
177 175
178 gfx::Display::Rotation GetStoredRotation(int64 id) { 176 gfx::Display::Rotation GetStoredRotation(int64 id) {
179 return Shell::GetInstance()->display_manager()->GetDisplayInfo(id).rotation(); 177 return Shell::GetInstance()->display_manager()->GetDisplayInfo(id).rotation();
180 } 178 }
181 179
182 float GetStoredUIScale(int64 id) { 180 float GetStoredUIScale(int64 id) {
183 return Shell::GetInstance()->display_manager()->GetDisplayInfo(id).ui_scale(); 181 return Shell::GetInstance()->display_manager()->GetDisplayInfo(id).ui_scale();
184 } 182 }
185 183
184 void MoveMouseToInHostCoord(aura::RootWindow* root_window,
185 int host_x,
186 int host_y) {
187 gfx::Point move_point(host_x, host_y);
188 ui::MouseEvent mouseev(ui::ET_MOUSE_MOVED, move_point, move_point, 0);
189 root_window->AsRootWindowHostDelegate()->OnHostMouseEvent(&mouseev);
190 }
191
186 } // namespace 192 } // namespace
187 193
188 typedef test::AshTestBase DisplayControllerTest; 194 typedef test::AshTestBase DisplayControllerTest;
189 195
190 TEST_F(DisplayControllerShutdownTest, Shutdown) { 196 TEST_F(DisplayControllerShutdownTest, Shutdown) {
191 UpdateDisplay("444x333, 200x200"); 197 UpdateDisplay("444x333, 200x200");
192 } 198 }
193 199
194 TEST_F(DisplayControllerTest, SecondaryDisplayLayout) { 200 TEST_F(DisplayControllerTest, SecondaryDisplayLayout) {
195 TestObserver observer; 201 TestObserver observer;
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 EXPECT_EQ("right, 50", 419 EXPECT_EQ("right, 50",
414 display_controller->GetCurrentDisplayLayout().ToString()); 420 display_controller->GetCurrentDisplayLayout().ToString());
415 421
416 // Switch primary and secondary 422 // Switch primary and secondary
417 display_controller->SetPrimaryDisplay(secondary_display); 423 display_controller->SetPrimaryDisplay(secondary_display);
418 const DisplayLayout& inverted_layout = 424 const DisplayLayout& inverted_layout =
419 display_controller->GetCurrentDisplayLayout(); 425 display_controller->GetCurrentDisplayLayout();
420 EXPECT_EQ("left, -50", inverted_layout.ToString()); 426 EXPECT_EQ("left, -50", inverted_layout.ToString());
421 427
422 EXPECT_EQ(secondary_display.id(), 428 EXPECT_EQ(secondary_display.id(),
423 Shell::GetScreen()->GetPrimaryDisplay().id()); 429 Shell::GetScreen()->GetPrimaryDisplay().id());
424 EXPECT_EQ(primary_display.id(), ScreenAsh::GetSecondaryDisplay().id()); 430 EXPECT_EQ(primary_display.id(), ScreenAsh::GetSecondaryDisplay().id());
425 EXPECT_EQ(secondary_display.id(), 431 EXPECT_EQ(secondary_display.id(),
426 Shell::GetScreen()->GetDisplayNearestPoint( 432 Shell::GetScreen()->GetDisplayNearestPoint(
427 gfx::Point(-100, -100)).id()); 433 gfx::Point(-100, -100)).id());
428 EXPECT_EQ(secondary_display.id(), 434 EXPECT_EQ(secondary_display.id(),
429 Shell::GetScreen()->GetDisplayNearestWindow(NULL).id()); 435 Shell::GetScreen()->GetDisplayNearestWindow(NULL).id());
430 436
431 EXPECT_EQ( 437 EXPECT_EQ(
432 primary_root, 438 primary_root,
433 display_controller->GetRootWindowForDisplayId(secondary_display.id())); 439 display_controller->GetRootWindowForDisplayId(secondary_display.id()));
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 EXPECT_EQ("30,20", event_handler.GetLocationAndReset()); 725 EXPECT_EQ("30,20", event_handler.GetLocationAndReset());
720 726
721 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); 727 Shell::GetInstance()->RemovePreTargetHandler(&event_handler);
722 } 728 }
723 729
724 #if defined(OS_WIN) 730 #if defined(OS_WIN)
725 // On Win8 bots, the host window can't be resized and 731 // On Win8 bots, the host window can't be resized and
726 // SetTransform updates the window using the orignal host window 732 // SetTransform updates the window using the orignal host window
727 // size. 733 // size.
728 #define MAYBE_Rotate DISABLED_Rotate 734 #define MAYBE_Rotate DISABLED_Rotate
735 #define MAYBE_ScaleRootWindow DISABLED_ScaleRootWindow
736 #define MAYBE_TouchScale DISABLED_TouchScale
737 #define MAYBE_ConvertHostToRootCoords DISABLED_ConvertHostToRootCoords
729 #else 738 #else
730 #define MAYBE_Rotate Rotate 739 #define MAYBE_Rotate Rotate
740 #define MAYBE_ScaleRootWindow ScaleRootWindow
741 #define MAYBE_TouchScale TouchScale
742 #define MAYBE_ConvertHostToRootCoords ConvertHostToRootCoords
731 #endif 743 #endif
732 744
733 TEST_F(DisplayControllerTest, MAYBE_Rotate) { 745 TEST_F(DisplayControllerTest, MAYBE_Rotate) {
734 DisplayController* display_controller = 746 DisplayController* display_controller =
735 Shell::GetInstance()->display_controller(); 747 Shell::GetInstance()->display_controller();
736 internal::DisplayManager* display_manager = 748 internal::DisplayManager* display_manager =
737 Shell::GetInstance()->display_manager(); 749 Shell::GetInstance()->display_manager();
738 TestEventHandler event_handler; 750 TestEventHandler event_handler;
739 Shell::GetInstance()->AddPreTargetHandler(&event_handler); 751 Shell::GetInstance()->AddPreTargetHandler(&event_handler);
740 752
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 ScreenAsh::GetSecondaryDisplay().bounds().ToString()); 803 ScreenAsh::GetSecondaryDisplay().bounds().ToString());
792 EXPECT_EQ(gfx::Display::ROTATE_180, GetStoredRotation(display1.id())); 804 EXPECT_EQ(gfx::Display::ROTATE_180, GetStoredRotation(display1.id()));
793 EXPECT_EQ(gfx::Display::ROTATE_270, GetStoredRotation(display2_id)); 805 EXPECT_EQ(gfx::Display::ROTATE_270, GetStoredRotation(display2_id));
794 806
795 generator1.MoveMouseTo(50, 40); 807 generator1.MoveMouseTo(50, 40);
796 EXPECT_EQ("69,159", event_handler.GetLocationAndReset()); 808 EXPECT_EQ("69,159", event_handler.GetLocationAndReset());
797 809
798 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); 810 Shell::GetInstance()->RemovePreTargetHandler(&event_handler);
799 } 811 }
800 812
801 #if defined(OS_WIN)
802 // On Win8 bots, the host window can't be resized and
803 // SetTransform updates the window using the orignal host window
804 // size.
805 #define MAYBE_ScaleRootWindow DISABLED_ScaleRootWindow
806 #else
807 #define MAYBE_ScaleRootWindow ScaleRootWindow
808 #endif
809
810 TEST_F(DisplayControllerTest, MAYBE_ScaleRootWindow) { 813 TEST_F(DisplayControllerTest, MAYBE_ScaleRootWindow) {
811 TestEventHandler event_handler; 814 TestEventHandler event_handler;
812 Shell::GetInstance()->AddPreTargetHandler(&event_handler); 815 Shell::GetInstance()->AddPreTargetHandler(&event_handler);
813 816
814 UpdateDisplay("600x400*2@1.5,500x300"); 817 UpdateDisplay("600x400*2@1.5,500x300");
815 818
816 gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay(); 819 gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay();
817 gfx::Display display2 = ScreenAsh::GetSecondaryDisplay(); 820 gfx::Display display2 = ScreenAsh::GetSecondaryDisplay();
818 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); 821 Shell::RootWindowList root_windows = Shell::GetAllRootWindows();
819 EXPECT_EQ("0,0 450x300", display1.bounds().ToString()); 822 EXPECT_EQ("0,0 450x300", display1.bounds().ToString());
(...skipping 13 matching lines...) Expand all
833 display2 = ScreenAsh::GetSecondaryDisplay(); 836 display2 = ScreenAsh::GetSecondaryDisplay();
834 EXPECT_EQ("0,0 375x250", display1.bounds().ToString()); 837 EXPECT_EQ("0,0 375x250", display1.bounds().ToString());
835 EXPECT_EQ("0,0 375x250", root_windows[0]->bounds().ToString()); 838 EXPECT_EQ("0,0 375x250", root_windows[0]->bounds().ToString());
836 EXPECT_EQ("375,0 500x300", display2.bounds().ToString()); 839 EXPECT_EQ("375,0 500x300", display2.bounds().ToString());
837 EXPECT_EQ(1.25f, GetStoredUIScale(display1.id())); 840 EXPECT_EQ(1.25f, GetStoredUIScale(display1.id()));
838 EXPECT_EQ(1.0f, GetStoredUIScale(display2.id())); 841 EXPECT_EQ(1.0f, GetStoredUIScale(display2.id()));
839 842
840 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); 843 Shell::GetInstance()->RemovePreTargetHandler(&event_handler);
841 } 844 }
842 845
843
844 #if defined(OS_WIN)
845 // On Win8 bots, the host window can't be resized and
846 // SetTransform updates the window using the orignal host window
847 // size.
848 #define MAYBE_TouchScale DISABLED_TouchScale
849 #else
850 #define MAYBE_TouchScale TouchScale
851 #endif
852
853 TEST_F(DisplayControllerTest, MAYBE_TouchScale) { 846 TEST_F(DisplayControllerTest, MAYBE_TouchScale) {
854 TestEventHandler event_handler; 847 TestEventHandler event_handler;
855 Shell::GetInstance()->AddPreTargetHandler(&event_handler); 848 Shell::GetInstance()->AddPreTargetHandler(&event_handler);
856 849
857 UpdateDisplay("200x200*2"); 850 UpdateDisplay("200x200*2");
858 gfx::Display display = Shell::GetScreen()->GetPrimaryDisplay(); 851 gfx::Display display = Shell::GetScreen()->GetPrimaryDisplay();
859 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); 852 Shell::RootWindowList root_windows = Shell::GetAllRootWindows();
860 aura::RootWindow* root_window = root_windows[0]; 853 aura::RootWindow* root_window = root_windows[0];
861 aura::test::EventGenerator generator(root_window); 854 aura::test::EventGenerator generator(root_window);
862 855
863 generator.PressMoveAndReleaseTouchTo(50, 50); 856 generator.PressMoveAndReleaseTouchTo(50, 50);
864 // Default test touches have radius_x/y = 1.0, with device scale 857 // Default test touches have radius_x/y = 1.0, with device scale
865 // factor = 2, the scaled radius_x/y should be 0.5. 858 // factor = 2, the scaled radius_x/y should be 0.5.
866 EXPECT_EQ(0.5, event_handler.touch_radius_x()); 859 EXPECT_EQ(0.5, event_handler.touch_radius_x());
867 EXPECT_EQ(0.5, event_handler.touch_radius_y()); 860 EXPECT_EQ(0.5, event_handler.touch_radius_y());
868 861
869 generator.ScrollSequence(gfx::Point(0,0), 862 generator.ScrollSequence(gfx::Point(0,0),
870 base::TimeDelta::FromMilliseconds(100), 863 base::TimeDelta::FromMilliseconds(100),
871 10.0, 1.0, 5, 1); 864 10.0, 1.0, 5, 1);
872 865
873 // With device scale factor = 2, ordinal_offset * 2 = offset. 866 // With device scale factor = 2, ordinal_offset * 2 = offset.
874 EXPECT_EQ(event_handler.scroll_x_offset(), 867 EXPECT_EQ(event_handler.scroll_x_offset(),
875 event_handler.scroll_x_offset_ordinal() * 2); 868 event_handler.scroll_x_offset_ordinal() * 2);
876 EXPECT_EQ(event_handler.scroll_y_offset(), 869 EXPECT_EQ(event_handler.scroll_y_offset(),
877 event_handler.scroll_y_offset_ordinal() * 2); 870 event_handler.scroll_y_offset_ordinal() * 2);
878 871
879 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); 872 Shell::GetInstance()->RemovePreTargetHandler(&event_handler);
880 } 873 }
881 874
875 TEST_F(DisplayControllerTest, MAYBE_ConvertHostToRootCoords) {
876 TestEventHandler event_handler;
877 Shell::GetInstance()->AddPreTargetHandler(&event_handler);
878
879 UpdateDisplay("600x400*2/r@1.5");
880
881 gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay();
882 Shell::RootWindowList root_windows = Shell::GetAllRootWindows();
883 EXPECT_EQ("0,0 300x450", display1.bounds().ToString());
884 EXPECT_EQ("0,0 300x450", root_windows[0]->bounds().ToString());
885 EXPECT_EQ(1.5f, GetStoredUIScale(display1.id()));
886
887 MoveMouseToInHostCoord(root_windows[0], 0, 0);
888 EXPECT_EQ("0,449", event_handler.GetLocationAndReset());
889 MoveMouseToInHostCoord(root_windows[0], 599, 0);
890 EXPECT_EQ("0,0", event_handler.GetLocationAndReset());
891 MoveMouseToInHostCoord(root_windows[0], 599, 399);
892 EXPECT_EQ("299,0", event_handler.GetLocationAndReset());
893 MoveMouseToInHostCoord(root_windows[0], 0, 399);
894 EXPECT_EQ("299,449", event_handler.GetLocationAndReset());
895
896 Shell::GetInstance()->RemovePreTargetHandler(&event_handler);
897 }
898
882 } // namespace test 899 } // namespace test
883 } // namespace ash 900 } // namespace ash
OLDNEW
« no previous file with comments | « ash/display/display_controller.cc ('k') | ui/aura/root_window.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698