OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "ui/views/widget/desktop_aura/desktop_screen_x11.h" | 5 #include "ui/views/widget/desktop_aura/desktop_screen_x11.h" |
6 | 6 |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 #include "ui/gfx/display_observer.h" | 9 #include "ui/gfx/display_observer.h" |
10 #include "ui/views/test/views_test_base.h" | 10 #include "ui/views/test/views_test_base.h" |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 gfx::Rect(640, 0, 1024, 768))); | 192 gfx::Rect(640, 0, 1024, 768))); |
193 displays.push_back(gfx::Display(kSecondDisplay, gfx::Rect(0, 0, 640, 480))); | 193 displays.push_back(gfx::Display(kSecondDisplay, gfx::Rect(0, 0, 640, 480))); |
194 screen()->ProcessDisplayChange(displays); | 194 screen()->ProcessDisplayChange(displays); |
195 | 195 |
196 // The first display in the list is always the primary, even if other | 196 // The first display in the list is always the primary, even if other |
197 // displays are to the left in screen layout. | 197 // displays are to the left in screen layout. |
198 EXPECT_EQ(kFirstDisplay, screen()->GetPrimaryDisplay().id()); | 198 EXPECT_EQ(kFirstDisplay, screen()->GetPrimaryDisplay().id()); |
199 } | 199 } |
200 | 200 |
201 TEST_F(DesktopScreenX11Test, GetWindowAtScreenPoint) { | 201 TEST_F(DesktopScreenX11Test, GetWindowAtScreenPoint) { |
202 Widget* window_one = BuildTopLevelDesktopWidget(gfx::Rect(10, 10, 10, 10)); | 202 Widget* window_one = BuildTopLevelDesktopWidget(gfx::Rect(110, 110, 10, 10)); |
203 Widget* window_two = BuildTopLevelDesktopWidget(gfx::Rect(50, 50, 10, 10)); | 203 Widget* window_two = BuildTopLevelDesktopWidget(gfx::Rect(150, 150, 10, 10)); |
204 Widget* window_three = BuildTopLevelDesktopWidget(gfx::Rect(15, 15, 20, 20)); | 204 Widget* window_three = |
| 205 BuildTopLevelDesktopWidget(gfx::Rect(115, 115, 20, 20)); |
| 206 |
| 207 window_three->Show(); |
| 208 window_two->Show(); |
| 209 window_one->Show(); |
205 | 210 |
206 // Make sure the internal state of DesktopWindowTreeHostX11 is set up | 211 // Make sure the internal state of DesktopWindowTreeHostX11 is set up |
207 // correctly. | 212 // correctly. |
208 ASSERT_EQ(3u, DesktopWindowTreeHostX11::GetAllOpenWindows().size()); | 213 ASSERT_EQ(3u, DesktopWindowTreeHostX11::GetAllOpenWindows().size()); |
209 | 214 |
210 EXPECT_EQ(window_one->GetNativeWindow(), | 215 EXPECT_EQ(window_one->GetNativeWindow(), |
211 screen()->GetWindowAtScreenPoint(gfx::Point(15, 15))); | 216 screen()->GetWindowAtScreenPoint(gfx::Point(115, 115))); |
212 EXPECT_EQ(window_two->GetNativeWindow(), | 217 EXPECT_EQ(window_two->GetNativeWindow(), |
213 screen()->GetWindowAtScreenPoint(gfx::Point(55, 55))); | 218 screen()->GetWindowAtScreenPoint(gfx::Point(155, 155))); |
214 EXPECT_EQ(NULL, | 219 EXPECT_EQ(NULL, |
215 screen()->GetWindowAtScreenPoint(gfx::Point(100, 100))); | 220 screen()->GetWindowAtScreenPoint(gfx::Point(200, 200))); |
216 | 221 |
217 // Bring the third window in front. It overlaps with the first window. | 222 // Bring the third window in front. It overlaps with the first window. |
218 // Hit-testing on the intersecting region should give the third window. | 223 // Hit-testing on the intersecting region should give the third window. |
219 window_three->Activate(); | 224 window_three->Activate(); |
220 EXPECT_EQ(window_three->GetNativeWindow(), | 225 EXPECT_EQ(window_three->GetNativeWindow(), |
221 screen()->GetWindowAtScreenPoint(gfx::Point(15, 15))); | 226 screen()->GetWindowAtScreenPoint(gfx::Point(115, 115))); |
222 | 227 |
223 window_one->CloseNow(); | 228 window_one->CloseNow(); |
224 window_two->CloseNow(); | 229 window_two->CloseNow(); |
| 230 window_three->CloseNow(); |
225 } | 231 } |
226 | 232 |
227 TEST_F(DesktopScreenX11Test, GetDisplayNearestWindow) { | 233 TEST_F(DesktopScreenX11Test, GetDisplayNearestWindow) { |
228 // Set up a two monitor situation. | 234 // Set up a two monitor situation. |
229 std::vector<gfx::Display> displays; | 235 std::vector<gfx::Display> displays; |
230 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 236 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
231 displays.push_back(gfx::Display(kSecondDisplay, | 237 displays.push_back(gfx::Display(kSecondDisplay, |
232 gfx::Rect(640, 0, 1024, 768))); | 238 gfx::Rect(640, 0, 1024, 768))); |
233 screen()->ProcessDisplayChange(displays); | 239 screen()->ProcessDisplayChange(displays); |
234 | 240 |
235 Widget* window_one = BuildTopLevelDesktopWidget(gfx::Rect(10, 10, 10, 10)); | 241 Widget* window_one = BuildTopLevelDesktopWidget(gfx::Rect(10, 10, 10, 10)); |
236 Widget* window_two = BuildTopLevelDesktopWidget(gfx::Rect(650, 50, 10, 10)); | 242 Widget* window_two = BuildTopLevelDesktopWidget(gfx::Rect(650, 50, 10, 10)); |
237 | 243 |
238 EXPECT_EQ( | 244 EXPECT_EQ( |
239 kFirstDisplay, | 245 kFirstDisplay, |
240 screen()->GetDisplayNearestWindow(window_one->GetNativeWindow()).id()); | 246 screen()->GetDisplayNearestWindow(window_one->GetNativeWindow()).id()); |
241 EXPECT_EQ( | 247 EXPECT_EQ( |
242 kSecondDisplay, | 248 kSecondDisplay, |
243 screen()->GetDisplayNearestWindow(window_two->GetNativeWindow()).id()); | 249 screen()->GetDisplayNearestWindow(window_two->GetNativeWindow()).id()); |
244 | 250 |
245 window_one->CloseNow(); | 251 window_one->CloseNow(); |
246 window_two->CloseNow(); | 252 window_two->CloseNow(); |
247 } | 253 } |
248 | 254 |
249 } // namespace views | 255 } // namespace views |
OLD | NEW |