OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/extended_mouse_warp_controller.h" | 5 #include "ash/display/extended_mouse_warp_controller.h" |
6 | 6 |
7 #include "ash/display/display_layout_store.h" | 7 #include "ash/display/display_layout_store.h" |
8 #include "ash/display/display_manager.h" | 8 #include "ash/display/display_manager.h" |
9 #include "ash/display/mouse_cursor_event_filter.h" | 9 #include "ash/display/mouse_cursor_event_filter.h" |
10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 UpdateDisplay("360x360,700x700"); | 42 UpdateDisplay("360x360,700x700"); |
43 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 43 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
44 | 44 |
45 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 45 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
46 DisplayLayout layout(DisplayLayout::RIGHT, 0); | 46 DisplayLayout layout(DisplayLayout::RIGHT, 0); |
47 display_manager->SetLayoutForCurrentDisplays(layout); | 47 display_manager->SetLayoutForCurrentDisplays(layout); |
48 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 48 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
49 | 49 |
50 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 50 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
51 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), | 51 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), |
52 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 52 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
53 EXPECT_EQ(gfx::Rect(360, 0, 1, 360), | 53 EXPECT_EQ(gfx::Rect(360, 0, 1, 360), |
54 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 54 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
55 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 55 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
56 EXPECT_EQ(gfx::Rect(360, 16, 1, 344), | 56 EXPECT_EQ(gfx::Rect(360, 16, 1, 344), |
57 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 57 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
58 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), | 58 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), |
59 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 59 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
60 | 60 |
61 // Move 2nd display downwards a bit. | 61 // Move 2nd display downwards a bit. |
62 layout.offset = 5; | 62 layout.offset = 5; |
63 display_manager->SetLayoutForCurrentDisplays(layout); | 63 display_manager->SetLayoutForCurrentDisplays(layout); |
64 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 64 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
65 // This is same as before because the 2nd display's y is above | 65 // This is same as before because the 2nd display's y is above |
66 // the indicator's x. | 66 // the indicator's x. |
67 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 67 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
68 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), | 68 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), |
69 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 69 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
70 EXPECT_EQ(gfx::Rect(360, 5, 1, 355), | 70 EXPECT_EQ(gfx::Rect(360, 5, 1, 355), |
71 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 71 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
72 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 72 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
73 EXPECT_EQ(gfx::Rect(360, 21, 1, 339), | 73 EXPECT_EQ(gfx::Rect(360, 21, 1, 339), |
74 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 74 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
75 EXPECT_EQ(gfx::Rect(359, 5, 1, 355), | 75 EXPECT_EQ(gfx::Rect(359, 5, 1, 355), |
76 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 76 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
77 | 77 |
78 // Move it down further so that the shared edge is shorter than | 78 // Move it down further so that the shared edge is shorter than |
79 // minimum hole size (160). | 79 // minimum hole size (160). |
80 layout.offset = 200; | 80 layout.offset = 200; |
81 display_manager->SetLayoutForCurrentDisplays(layout); | 81 display_manager->SetLayoutForCurrentDisplays(layout); |
82 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 82 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
83 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 83 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
84 EXPECT_EQ(gfx::Rect(359, 200, 1, 160), | 84 EXPECT_EQ(gfx::Rect(359, 200, 1, 160), |
85 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 85 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
86 EXPECT_EQ(gfx::Rect(360, 200, 1, 160), | 86 EXPECT_EQ(gfx::Rect(360, 200, 1, 160), |
87 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 87 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
88 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 88 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
89 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 89 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
90 EXPECT_EQ(gfx::Rect(360, 200, 1, 160), | 90 EXPECT_EQ(gfx::Rect(360, 200, 1, 160), |
91 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 91 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
92 EXPECT_EQ(gfx::Rect(359, 200, 1, 160), | 92 EXPECT_EQ(gfx::Rect(359, 200, 1, 160), |
93 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 93 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
94 | 94 |
95 // Now move 2nd display upwards | 95 // Now move 2nd display upwards |
96 layout.offset = -5; | 96 layout.offset = -5; |
97 display_manager->SetLayoutForCurrentDisplays(layout); | 97 display_manager->SetLayoutForCurrentDisplays(layout); |
98 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 98 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
99 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 99 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
100 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), | 100 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), |
101 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 101 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
102 EXPECT_EQ(gfx::Rect(360, 0, 1, 360), | 102 EXPECT_EQ(gfx::Rect(360, 0, 1, 360), |
103 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 103 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
104 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 104 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
105 // 16 px are reserved on 2nd display from top, so y must be | 105 // 16 px are reserved on 2nd display from top, so y must be |
106 // (16 - 5) = 11 | 106 // (16 - 5) = 11 |
107 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 107 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
108 EXPECT_EQ(gfx::Rect(360, 11, 1, 349), | 108 EXPECT_EQ(gfx::Rect(360, 11, 1, 349), |
109 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 109 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
110 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), | 110 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), |
111 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 111 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
112 | 112 |
113 event_filter()->HideSharedEdgeIndicator(); | 113 event_filter()->HideSharedEdgeIndicator(); |
114 } | 114 } |
115 | 115 |
116 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnLeft) { | 116 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnLeft) { |
117 if (!SupportsMultipleDisplays()) | 117 if (!SupportsMultipleDisplays()) |
118 return; | 118 return; |
119 | 119 |
120 UpdateDisplay("360x360,700x700"); | 120 UpdateDisplay("360x360,700x700"); |
121 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 121 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
122 | 122 |
123 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 123 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
124 DisplayLayout layout(DisplayLayout::LEFT, 0); | 124 DisplayLayout layout(DisplayLayout::LEFT, 0); |
125 display_manager->SetLayoutForCurrentDisplays(layout); | 125 display_manager->SetLayoutForCurrentDisplays(layout); |
126 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 126 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
127 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 127 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
128 EXPECT_EQ(gfx::Rect(0, 16, 1, 344), | 128 EXPECT_EQ(gfx::Rect(0, 16, 1, 344), |
129 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 129 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
130 EXPECT_EQ(gfx::Rect(-1, 0, 1, 360), | 130 EXPECT_EQ(gfx::Rect(-1, 0, 1, 360), |
131 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 131 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
132 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 132 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
133 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 133 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
134 EXPECT_EQ(gfx::Rect(-1, 16, 1, 344), | 134 EXPECT_EQ(gfx::Rect(-1, 16, 1, 344), |
135 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 135 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
136 EXPECT_EQ(gfx::Rect(0, 0, 1, 360), | 136 EXPECT_EQ(gfx::Rect(0, 0, 1, 360), |
137 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 137 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
138 | 138 |
139 layout.offset = 250; | 139 layout.offset = 250; |
140 display_manager->SetLayoutForCurrentDisplays(layout); | 140 display_manager->SetLayoutForCurrentDisplays(layout); |
141 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 141 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
142 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 142 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
143 EXPECT_EQ(gfx::Rect(0, 250, 1, 110), | 143 EXPECT_EQ(gfx::Rect(0, 250, 1, 110), |
144 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 144 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
145 EXPECT_EQ(gfx::Rect(-1, 250, 1, 110), | 145 EXPECT_EQ(gfx::Rect(-1, 250, 1, 110), |
146 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 146 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
147 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 147 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
148 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 148 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
149 EXPECT_EQ(gfx::Rect(-1, 250, 1, 110), | 149 EXPECT_EQ(gfx::Rect(-1, 250, 1, 110), |
150 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 150 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
151 EXPECT_EQ(gfx::Rect(0, 250, 1, 110), | 151 EXPECT_EQ(gfx::Rect(0, 250, 1, 110), |
152 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 152 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
153 event_filter()->HideSharedEdgeIndicator(); | 153 event_filter()->HideSharedEdgeIndicator(); |
154 } | 154 } |
155 | 155 |
156 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnTopBottom) { | 156 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnTopBottom) { |
157 if (!SupportsMultipleDisplays()) | 157 if (!SupportsMultipleDisplays()) |
158 return; | 158 return; |
159 | 159 |
160 UpdateDisplay("360x360,700x700"); | 160 UpdateDisplay("360x360,700x700"); |
161 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 161 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
162 | 162 |
163 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 163 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
164 DisplayLayout layout(DisplayLayout::TOP, 0); | 164 DisplayLayout layout(DisplayLayout::TOP, 0); |
165 display_manager->SetLayoutForCurrentDisplays(layout); | 165 display_manager->SetLayoutForCurrentDisplays(layout); |
166 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 166 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
167 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 167 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
168 EXPECT_EQ(gfx::Rect(0, 0, 360, 1), | 168 EXPECT_EQ(gfx::Rect(0, 0, 360, 1), |
169 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 169 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
170 EXPECT_EQ(gfx::Rect(0, -1, 360, 1), | 170 EXPECT_EQ(gfx::Rect(0, -1, 360, 1), |
171 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 171 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
172 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 172 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
173 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 173 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
174 EXPECT_EQ(gfx::Rect(0, -1, 360, 1), | 174 EXPECT_EQ(gfx::Rect(0, -1, 360, 1), |
175 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 175 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
176 EXPECT_EQ(gfx::Rect(0, 0, 360, 1), | 176 EXPECT_EQ(gfx::Rect(0, 0, 360, 1), |
177 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 177 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
178 | 178 |
179 layout.offset = 250; | 179 layout.offset = 250; |
180 display_manager->SetLayoutForCurrentDisplays(layout); | 180 display_manager->SetLayoutForCurrentDisplays(layout); |
181 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 181 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
182 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 182 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
183 EXPECT_EQ(gfx::Rect(250, 0, 110, 1), | 183 EXPECT_EQ(gfx::Rect(250, 0, 110, 1), |
184 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 184 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
185 EXPECT_EQ(gfx::Rect(250, -1, 110, 1), | 185 EXPECT_EQ(gfx::Rect(250, -1, 110, 1), |
186 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 186 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
187 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 187 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
188 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 188 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
189 EXPECT_EQ(gfx::Rect(250, -1, 110, 1), | 189 EXPECT_EQ(gfx::Rect(250, -1, 110, 1), |
190 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 190 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
191 EXPECT_EQ(gfx::Rect(250, 0, 110, 1), | 191 EXPECT_EQ(gfx::Rect(250, 0, 110, 1), |
192 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 192 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
193 | 193 |
194 layout.position = DisplayLayout::BOTTOM; | 194 layout.position = DisplayLayout::BOTTOM; |
195 layout.offset = 0; | 195 layout.offset = 0; |
196 display_manager->SetLayoutForCurrentDisplays(layout); | 196 display_manager->SetLayoutForCurrentDisplays(layout); |
197 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 197 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
198 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 198 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
199 EXPECT_EQ(gfx::Rect(0, 359, 360, 1), | 199 EXPECT_EQ(gfx::Rect(0, 359, 360, 1), |
200 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 200 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
201 EXPECT_EQ(gfx::Rect(0, 360, 360, 1), | 201 EXPECT_EQ(gfx::Rect(0, 360, 360, 1), |
202 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 202 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
203 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 203 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
204 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 204 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
205 EXPECT_EQ(gfx::Rect(0, 360, 360, 1), | 205 EXPECT_EQ(gfx::Rect(0, 360, 360, 1), |
206 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 206 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
207 EXPECT_EQ(gfx::Rect(0, 359, 360, 1), | 207 EXPECT_EQ(gfx::Rect(0, 359, 360, 1), |
208 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 208 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
209 | 209 |
210 event_filter()->HideSharedEdgeIndicator(); | 210 event_filter()->HideSharedEdgeIndicator(); |
211 } | 211 } |
212 | 212 |
213 // Verify indicators show up as expected with 3+ displays. | 213 // Verify indicators show up as expected with 3+ displays. |
214 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestThreeDisplays) { | 214 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestThreeDisplays) { |
215 if (!SupportsMultipleDisplays()) | 215 if (!SupportsMultipleDisplays()) |
216 return; | 216 return; |
217 | 217 |
| 218 auto run_test = [this] { |
| 219 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 220 |
| 221 // Left most display |
| 222 event_filter()->ShowSharedEdgeIndicator(root_windows[0]); |
| 223 ASSERT_EQ(2U, mouse_warp_controller()->warp_regions_.size()); |
| 224 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), |
| 225 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 226 EXPECT_EQ(gfx::Rect(360, 0, 1, 360), |
| 227 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 228 EXPECT_EQ(gfx::Rect(1060, 16, 1, 684), |
| 229 mouse_warp_controller()->warp_regions_[1]->a_indicator_bounds()); |
| 230 EXPECT_EQ(gfx::Rect(1059, 0, 1, 700), |
| 231 mouse_warp_controller()->warp_regions_[1]->b_indicator_bounds()); |
| 232 |
| 233 // Middle display |
| 234 event_filter()->ShowSharedEdgeIndicator(root_windows[1]); |
| 235 ASSERT_EQ(2U, mouse_warp_controller()->warp_regions_.size()); |
| 236 EXPECT_EQ(gfx::Rect(360, 16, 1, 344), |
| 237 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 238 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), |
| 239 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 240 EXPECT_EQ(gfx::Rect(1059, 16, 1, 684), |
| 241 mouse_warp_controller()->warp_regions_[1]->a_indicator_bounds()); |
| 242 EXPECT_EQ(gfx::Rect(1060, 0, 1, 700), |
| 243 mouse_warp_controller()->warp_regions_[1]->b_indicator_bounds()); |
| 244 |
| 245 // Right most display |
| 246 event_filter()->ShowSharedEdgeIndicator(root_windows[2]); |
| 247 ASSERT_EQ(2U, mouse_warp_controller()->warp_regions_.size()); |
| 248 EXPECT_EQ(gfx::Rect(360, 16, 1, 344), |
| 249 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 250 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), |
| 251 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 252 EXPECT_EQ(gfx::Rect(1060, 16, 1, 684), |
| 253 mouse_warp_controller()->warp_regions_[1]->a_indicator_bounds()); |
| 254 EXPECT_EQ(gfx::Rect(1059, 0, 1, 700), |
| 255 mouse_warp_controller()->warp_regions_[1]->b_indicator_bounds()); |
| 256 |
| 257 event_filter()->HideSharedEdgeIndicator(); |
| 258 }; |
| 259 |
218 UpdateDisplay("360x360,700x700,1000x1000"); | 260 UpdateDisplay("360x360,700x700,1000x1000"); |
219 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 261 run_test(); |
220 | 262 |
221 // Left most display | 263 UpdateDisplay("360x360,700x700,1000x1000"); |
222 event_filter()->ShowSharedEdgeIndicator(root_windows[0]); | 264 Shell::GetInstance()->window_tree_host_manager()->SwapPrimaryDisplayForTest(); |
223 ASSERT_EQ(2U, mouse_warp_controller()->warp_regions_.size()); | 265 run_test(); |
224 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), | |
225 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | |
226 EXPECT_EQ(gfx::Rect(360, 0, 1, 360), | |
227 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | |
228 EXPECT_EQ(gfx::Rect(1060, 16, 1, 684), | |
229 mouse_warp_controller()->warp_regions_[1]->a_indicator_bounds); | |
230 EXPECT_EQ(gfx::Rect(1059, 0, 1, 700), | |
231 mouse_warp_controller()->warp_regions_[1]->b_indicator_bounds); | |
232 | |
233 // Middle display | |
234 event_filter()->ShowSharedEdgeIndicator(root_windows[1]); | |
235 ASSERT_EQ(2U, mouse_warp_controller()->warp_regions_.size()); | |
236 EXPECT_EQ(gfx::Rect(360, 16, 1, 344), | |
237 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | |
238 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), | |
239 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | |
240 EXPECT_EQ(gfx::Rect(1059, 16, 1, 684), | |
241 mouse_warp_controller()->warp_regions_[1]->a_indicator_bounds); | |
242 EXPECT_EQ(gfx::Rect(1060, 0, 1, 700), | |
243 mouse_warp_controller()->warp_regions_[1]->b_indicator_bounds); | |
244 | |
245 // Right most display | |
246 event_filter()->ShowSharedEdgeIndicator(root_windows[2]); | |
247 ASSERT_EQ(2U, mouse_warp_controller()->warp_regions_.size()); | |
248 EXPECT_EQ(gfx::Rect(360, 16, 1, 344), | |
249 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | |
250 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), | |
251 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | |
252 EXPECT_EQ(gfx::Rect(1060, 16, 1, 684), | |
253 mouse_warp_controller()->warp_regions_[1]->a_indicator_bounds); | |
254 EXPECT_EQ(gfx::Rect(1059, 0, 1, 700), | |
255 mouse_warp_controller()->warp_regions_[1]->b_indicator_bounds); | |
256 | |
257 event_filter()->HideSharedEdgeIndicator(); | |
258 } | 266 } |
259 | 267 |
260 } // namespace ash | 268 } // namespace ash |
OLD | NEW |