Chromium Code Reviews| 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/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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 91 test::AshTestBase::TearDown(); | 91 test::AshTestBase::TearDown(); |
| 92 // Make sure that primary display is accessible after shutdown. | 92 // Make sure that primary display is accessible after shutdown. |
| 93 gfx::Display primary = Shell::GetScreen()->GetPrimaryDisplay(); | 93 gfx::Display primary = Shell::GetScreen()->GetPrimaryDisplay(); |
| 94 EXPECT_EQ("0,0 444x333", primary.bounds().ToString()); | 94 EXPECT_EQ("0,0 444x333", primary.bounds().ToString()); |
| 95 EXPECT_EQ(2, Shell::GetScreen()->GetNumDisplays()); | 95 EXPECT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
| 96 } | 96 } |
| 97 }; | 97 }; |
| 98 | 98 |
| 99 class TestEventHandler : public ui::EventHandler { | 99 class TestEventHandler : public ui::EventHandler { |
| 100 public: | 100 public: |
| 101 TestEventHandler() : target_root_(NULL) {} | 101 TestEventHandler() : target_root_(NULL), |
| 102 touch_radius_x_(0.0), | |
| 103 touch_radius_y_(0.0), | |
| 104 scroll_x_offset_(0.0), | |
| 105 scroll_y_offset_(0.0), | |
| 106 scroll_x_offset_ordinal_(0.0), | |
| 107 scroll_y_offset_ordinal_(0.0) {} | |
| 102 virtual ~TestEventHandler() {} | 108 virtual ~TestEventHandler() {} |
| 103 | 109 |
| 104 virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE { | 110 virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE { |
| 105 aura::Window* target = static_cast<aura::Window*>(event->target()); | 111 aura::Window* target = static_cast<aura::Window*>(event->target()); |
| 106 // Only record when the target is the background which covers | 112 // Only record when the target is the background which covers |
| 107 // entire root window. | 113 // entire root window. |
| 108 if (target->name() != "DesktopBackgroundView") | 114 if (target->name() != "DesktopBackgroundView") |
| 109 return; | 115 return; |
| 110 mouse_location_ = event->location(); | 116 mouse_location_ = event->location(); |
| 111 target_root_ = target->GetRootWindow(); | 117 target_root_ = target->GetRootWindow(); |
| 112 event->StopPropagation(); | 118 event->StopPropagation(); |
| 113 } | 119 } |
| 114 | 120 |
| 121 virtual void OnTouchEvent(ui::TouchEvent* event) OVERRIDE { | |
| 122 aura::Window* target = static_cast<aura::Window*>(event->target()); | |
| 123 // Only record when the target is the background which covers | |
| 124 // entire root window. | |
| 125 if (target->name() != "DesktopBackgroundView") | |
|
oshima
2013/04/04 17:57:08
since this is now used in 3 places, can you define
Yufeng Shen (Slow to review)
2013/04/04 18:13:12
Done.
| |
| 126 return; | |
| 127 touch_radius_x_ = event->radius_x(); | |
| 128 touch_radius_y_ = event->radius_y(); | |
| 129 event->StopPropagation(); | |
| 130 } | |
| 131 | |
| 132 virtual void OnScrollEvent(ui::ScrollEvent* event) OVERRIDE { | |
| 133 aura::Window* target = static_cast<aura::Window*>(event->target()); | |
| 134 // Only record when the target is the background which covers | |
| 135 // entire root window. | |
| 136 if (target->name() != "DesktopBackgroundView") | |
| 137 return; | |
| 138 | |
| 139 if (event->type() == ui::ET_SCROLL) { | |
| 140 scroll_x_offset_ = event->x_offset(); | |
| 141 scroll_y_offset_ = event->y_offset(); | |
| 142 scroll_x_offset_ordinal_ = event->x_offset_ordinal(); | |
| 143 scroll_y_offset_ordinal_ = event->y_offset_ordinal(); | |
| 144 } | |
| 145 event->StopPropagation(); | |
| 146 } | |
| 147 | |
| 115 std::string GetLocationAndReset() { | 148 std::string GetLocationAndReset() { |
| 116 std::string result = mouse_location_.ToString(); | 149 std::string result = mouse_location_.ToString(); |
| 117 mouse_location_.SetPoint(0, 0); | 150 mouse_location_.SetPoint(0, 0); |
| 118 target_root_ = NULL; | 151 target_root_ = NULL; |
| 119 return result; | 152 return result; |
| 120 } | 153 } |
| 121 | 154 |
| 155 float touch_radius_x() { return touch_radius_x_; } | |
| 156 float touch_radius_y() { return touch_radius_y_; } | |
| 157 float scroll_x_offset() { return scroll_x_offset_; } | |
| 158 float scroll_y_offset() { return scroll_y_offset_; } | |
| 159 float scroll_x_offset_ordinal() { return scroll_x_offset_ordinal_; } | |
| 160 float scroll_y_offset_ordinal() { return scroll_y_offset_ordinal_; } | |
| 161 | |
| 122 private: | 162 private: |
| 123 gfx::Point mouse_location_; | 163 gfx::Point mouse_location_; |
| 124 aura::RootWindow* target_root_; | 164 aura::RootWindow* target_root_; |
| 125 | 165 |
| 166 float touch_radius_x_; | |
| 167 float touch_radius_y_; | |
| 168 float scroll_x_offset_; | |
| 169 float scroll_y_offset_; | |
| 170 float scroll_x_offset_ordinal_; | |
| 171 float scroll_y_offset_ordinal_; | |
| 172 | |
| 126 DISALLOW_COPY_AND_ASSIGN(TestEventHandler); | 173 DISALLOW_COPY_AND_ASSIGN(TestEventHandler); |
| 127 }; | 174 }; |
| 128 | 175 |
| 129 gfx::Display::Rotation GetStoredRotation(int64 id) { | 176 gfx::Display::Rotation GetStoredRotation(int64 id) { |
| 130 return Shell::GetInstance()->display_manager()->GetDisplayInfo(id).rotation(); | 177 return Shell::GetInstance()->display_manager()->GetDisplayInfo(id).rotation(); |
| 131 } | 178 } |
| 132 | 179 |
| 133 float GetStoredUIScale(int64 id) { | 180 float GetStoredUIScale(int64 id) { |
| 134 return Shell::GetInstance()->display_manager()->GetDisplayInfo(id).ui_scale(); | 181 return Shell::GetInstance()->display_manager()->GetDisplayInfo(id).ui_scale(); |
| 135 } | 182 } |
| (...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 784 display2 = ScreenAsh::GetSecondaryDisplay(); | 831 display2 = ScreenAsh::GetSecondaryDisplay(); |
| 785 EXPECT_EQ("0,0 375x250", display1.bounds().ToString()); | 832 EXPECT_EQ("0,0 375x250", display1.bounds().ToString()); |
| 786 EXPECT_EQ("0,0 375x250", root_windows[0]->bounds().ToString()); | 833 EXPECT_EQ("0,0 375x250", root_windows[0]->bounds().ToString()); |
| 787 EXPECT_EQ("375,0 500x300", display2.bounds().ToString()); | 834 EXPECT_EQ("375,0 500x300", display2.bounds().ToString()); |
| 788 EXPECT_EQ(1.25f, GetStoredUIScale(display1.id())); | 835 EXPECT_EQ(1.25f, GetStoredUIScale(display1.id())); |
| 789 EXPECT_EQ(1.0f, GetStoredUIScale(display2.id())); | 836 EXPECT_EQ(1.0f, GetStoredUIScale(display2.id())); |
| 790 | 837 |
| 791 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); | 838 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
| 792 } | 839 } |
| 793 | 840 |
| 841 | |
| 842 #if defined(OS_WIN) | |
| 843 // On Win8 bots, the host window can't be resized and | |
| 844 // SetTransform updates the window using the orignal host window | |
| 845 // size. | |
| 846 #define MAYBE_TouchScale DISABLED_TouchScale | |
| 847 #else | |
| 848 #define MAYBE_TouchScale TouchScale | |
| 849 #endif | |
| 850 | |
| 851 TEST_F(DisplayControllerTest, MAYBE_TouchScale) { | |
| 852 TestEventHandler event_handler; | |
| 853 Shell::GetInstance()->AddPreTargetHandler(&event_handler); | |
| 854 | |
| 855 UpdateDisplay("200x200*2"); | |
| 856 gfx::Display display = Shell::GetScreen()->GetPrimaryDisplay(); | |
| 857 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); | |
| 858 aura::RootWindow* root_window = root_windows[0]; | |
| 859 aura::test::EventGenerator generator(root_window); | |
| 860 | |
| 861 generator.PressMoveAndReleaseTouchTo(50, 50); | |
| 862 // Default test touches have radius_x/y = 1.0, with device scale | |
| 863 // factor = 2, the scaled radius_x/y should be 0.5. | |
| 864 EXPECT_EQ(0.5, event_handler.touch_radius_x()); | |
| 865 EXPECT_EQ(0.5, event_handler.touch_radius_y()); | |
| 866 | |
| 867 generator.ScrollSequence(gfx::Point(0,0), | |
| 868 base::TimeDelta::FromMilliseconds(100), | |
| 869 10.0, 1.0, 5, 1); | |
| 870 | |
| 871 // With device scale factor = 2, ordinal_offset * 2 = offset. | |
| 872 EXPECT_EQ(event_handler.scroll_x_offset(), | |
| 873 event_handler.scroll_x_offset_ordinal() * 2); | |
| 874 EXPECT_EQ(event_handler.scroll_y_offset(), | |
| 875 event_handler.scroll_y_offset_ordinal() * 2); | |
| 876 | |
| 877 Shell::GetInstance()->RemovePreTargetHandler(&event_handler); | |
| 878 } | |
| 879 | |
| 794 } // namespace test | 880 } // namespace test |
| 795 } // namespace ash | 881 } // namespace ash |
| OLD | NEW |