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 28 matching lines...) Expand all Loading... |
39 if (!SupportsMultipleDisplays()) | 39 if (!SupportsMultipleDisplays()) |
40 return; | 40 return; |
41 | 41 |
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 EXPECT_EQ("359,16 1x344", | 49 |
50 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 50 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
51 EXPECT_EQ("360,0 1x360", | 51 EXPECT_EQ( |
52 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 52 "359,16 1x344", |
| 53 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 54 EXPECT_EQ( |
| 55 "360,0 1x360", |
| 56 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
53 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 57 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
54 EXPECT_EQ("360,16 1x344", | 58 EXPECT_EQ( |
55 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 59 "360,16 1x344", |
56 EXPECT_EQ("359,0 1x360", | 60 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
57 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 61 EXPECT_EQ( |
| 62 "359,0 1x360", |
| 63 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
58 | 64 |
59 // Move 2nd display downwards a bit. | 65 // Move 2nd display downwards a bit. |
60 layout.offset = 5; | 66 layout.offset = 5; |
61 display_manager->SetLayoutForCurrentDisplays(layout); | 67 display_manager->SetLayoutForCurrentDisplays(layout); |
62 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 68 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
63 // This is same as before because the 2nd display's y is above | 69 // This is same as before because the 2nd display's y is above |
64 // the indicator's x. | 70 // the indicator's x. |
65 EXPECT_EQ("359,16 1x344", | 71 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
66 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 72 EXPECT_EQ( |
67 EXPECT_EQ("360,5 1x355", | 73 "359,16 1x344", |
68 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 74 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 75 EXPECT_EQ( |
| 76 "360,5 1x355", |
| 77 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
69 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 78 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
70 EXPECT_EQ("360,21 1x339", | 79 EXPECT_EQ( |
71 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 80 "360,21 1x339", |
72 EXPECT_EQ("359,5 1x355", | 81 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
73 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 82 EXPECT_EQ( |
| 83 "359,5 1x355", |
| 84 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
74 | 85 |
75 // Move it down further so that the shared edge is shorter than | 86 // Move it down further so that the shared edge is shorter than |
76 // minimum hole size (160). | 87 // minimum hole size (160). |
77 layout.offset = 200; | 88 layout.offset = 200; |
78 display_manager->SetLayoutForCurrentDisplays(layout); | 89 display_manager->SetLayoutForCurrentDisplays(layout); |
79 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 90 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
80 EXPECT_EQ("359,200 1x160", | 91 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
81 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 92 EXPECT_EQ( |
82 EXPECT_EQ("360,200 1x160", | 93 "359,200 1x160", |
83 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 94 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 95 EXPECT_EQ( |
| 96 "360,200 1x160", |
| 97 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
84 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 98 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
85 EXPECT_EQ("360,200 1x160", | 99 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
86 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 100 EXPECT_EQ( |
87 EXPECT_EQ("359,200 1x160", | 101 "360,200 1x160", |
88 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 102 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 103 EXPECT_EQ( |
| 104 "359,200 1x160", |
| 105 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
89 | 106 |
90 // Now move 2nd display upwards | 107 // Now move 2nd display upwards |
91 layout.offset = -5; | 108 layout.offset = -5; |
92 display_manager->SetLayoutForCurrentDisplays(layout); | 109 display_manager->SetLayoutForCurrentDisplays(layout); |
93 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 110 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
94 EXPECT_EQ("359,16 1x344", | 111 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
95 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 112 EXPECT_EQ( |
96 EXPECT_EQ("360,0 1x360", | 113 "359,16 1x344", |
97 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 114 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 115 EXPECT_EQ( |
| 116 "360,0 1x360", |
| 117 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
98 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 118 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
99 // 16 px are reserved on 2nd display from top, so y must be | 119 // 16 px are reserved on 2nd display from top, so y must be |
100 // (16 - 5) = 11 | 120 // (16 - 5) = 11 |
101 EXPECT_EQ("360,11 1x349", | 121 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
102 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 122 EXPECT_EQ( |
103 EXPECT_EQ("359,0 1x360", | 123 "360,11 1x349", |
104 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 124 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 125 EXPECT_EQ( |
| 126 "359,0 1x360", |
| 127 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
105 | 128 |
106 event_filter()->HideSharedEdgeIndicator(); | 129 event_filter()->HideSharedEdgeIndicator(); |
107 } | 130 } |
108 | 131 |
109 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnLeft) { | 132 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnLeft) { |
110 if (!SupportsMultipleDisplays()) | 133 if (!SupportsMultipleDisplays()) |
111 return; | 134 return; |
112 | 135 |
113 UpdateDisplay("360x360,700x700"); | 136 UpdateDisplay("360x360,700x700"); |
114 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 137 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
115 | 138 |
116 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 139 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
117 DisplayLayout layout(DisplayLayout::LEFT, 0); | 140 DisplayLayout layout(DisplayLayout::LEFT, 0); |
118 display_manager->SetLayoutForCurrentDisplays(layout); | 141 display_manager->SetLayoutForCurrentDisplays(layout); |
119 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 142 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
120 EXPECT_EQ("0,16 1x344", | 143 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
121 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 144 EXPECT_EQ( |
122 EXPECT_EQ("-1,0 1x360", | 145 "0,16 1x344", |
123 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 146 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 147 EXPECT_EQ( |
| 148 "-1,0 1x360", |
| 149 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
124 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 150 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
125 EXPECT_EQ("-1,16 1x344", | 151 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
126 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 152 EXPECT_EQ( |
127 EXPECT_EQ("0,0 1x360", | 153 "-1,16 1x344", |
128 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 154 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 155 EXPECT_EQ( |
| 156 "0,0 1x360", |
| 157 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
129 | 158 |
130 layout.offset = 250; | 159 layout.offset = 250; |
131 display_manager->SetLayoutForCurrentDisplays(layout); | 160 display_manager->SetLayoutForCurrentDisplays(layout); |
132 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 161 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
133 EXPECT_EQ("0,250 1x110", | 162 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
134 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 163 EXPECT_EQ( |
135 EXPECT_EQ("-1,250 1x110", | 164 "0,250 1x110", |
136 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 165 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 166 EXPECT_EQ( |
| 167 "-1,250 1x110", |
| 168 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
137 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 169 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
138 EXPECT_EQ("-1,250 1x110", | 170 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
139 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 171 EXPECT_EQ( |
140 EXPECT_EQ("0,250 1x110", | 172 "-1,250 1x110", |
141 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 173 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 174 EXPECT_EQ( |
| 175 "0,250 1x110", |
| 176 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
142 event_filter()->HideSharedEdgeIndicator(); | 177 event_filter()->HideSharedEdgeIndicator(); |
143 } | 178 } |
144 | 179 |
145 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnTopBottom) { | 180 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnTopBottom) { |
146 if (!SupportsMultipleDisplays()) | 181 if (!SupportsMultipleDisplays()) |
147 return; | 182 return; |
148 | 183 |
149 UpdateDisplay("360x360,700x700"); | 184 UpdateDisplay("360x360,700x700"); |
150 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 185 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
151 | 186 |
152 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 187 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
153 DisplayLayout layout(DisplayLayout::TOP, 0); | 188 DisplayLayout layout(DisplayLayout::TOP, 0); |
154 display_manager->SetLayoutForCurrentDisplays(layout); | 189 display_manager->SetLayoutForCurrentDisplays(layout); |
155 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 190 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
156 EXPECT_EQ("0,0 360x1", | 191 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
157 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 192 EXPECT_EQ( |
158 EXPECT_EQ("0,-1 360x1", | 193 "0,0 360x1", |
159 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 194 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 195 EXPECT_EQ( |
| 196 "0,-1 360x1", |
| 197 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
160 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 198 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
161 EXPECT_EQ("0,-1 360x1", | 199 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
162 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 200 EXPECT_EQ( |
163 EXPECT_EQ("0,0 360x1", | 201 "0,-1 360x1", |
164 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 202 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 203 EXPECT_EQ( |
| 204 "0,0 360x1", |
| 205 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
165 | 206 |
166 layout.offset = 250; | 207 layout.offset = 250; |
167 display_manager->SetLayoutForCurrentDisplays(layout); | 208 display_manager->SetLayoutForCurrentDisplays(layout); |
168 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 209 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
169 EXPECT_EQ("250,0 110x1", | 210 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
170 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 211 EXPECT_EQ( |
171 EXPECT_EQ("250,-1 110x1", | 212 "250,0 110x1", |
172 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 213 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 214 EXPECT_EQ( |
| 215 "250,-1 110x1", |
| 216 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
173 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 217 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
174 EXPECT_EQ("250,-1 110x1", | 218 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
175 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 219 EXPECT_EQ( |
176 EXPECT_EQ("250,0 110x1", | 220 "250,-1 110x1", |
177 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 221 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 222 EXPECT_EQ( |
| 223 "250,0 110x1", |
| 224 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
178 | 225 |
179 layout.position = DisplayLayout::BOTTOM; | 226 layout.position = DisplayLayout::BOTTOM; |
180 layout.offset = 0; | 227 layout.offset = 0; |
181 display_manager->SetLayoutForCurrentDisplays(layout); | 228 display_manager->SetLayoutForCurrentDisplays(layout); |
182 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 229 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
183 EXPECT_EQ("0,359 360x1", | 230 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
184 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 231 EXPECT_EQ( |
185 EXPECT_EQ("0,360 360x1", | 232 "0,359 360x1", |
186 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 233 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 234 EXPECT_EQ( |
| 235 "0,360 360x1", |
| 236 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
187 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 237 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
188 EXPECT_EQ("0,360 360x1", | 238 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
189 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 239 EXPECT_EQ( |
190 EXPECT_EQ("0,359 360x1", | 240 "0,360 360x1", |
191 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 241 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 242 EXPECT_EQ( |
| 243 "0,359 360x1", |
| 244 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
192 | 245 |
193 event_filter()->HideSharedEdgeIndicator(); | 246 event_filter()->HideSharedEdgeIndicator(); |
194 } | 247 } |
195 | 248 |
196 } // namespace ash | 249 } // namespace ash |
OLD | NEW |