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 #include "ash/display/multi_display_manager.h" | 6 #include "ash/display/multi_display_manager.h" |
7 #include "ash/shell.h" | 7 #include "ash/shell.h" |
8 #include "ash/test/ash_test_base.h" | 8 #include "ash/test/ash_test_base.h" |
9 #include "ash/wm/window_cycle_controller.h" | 9 #include "ash/wm/window_cycle_controller.h" |
10 #include "ash/wm/window_util.h" | 10 #include "ash/wm/window_util.h" |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 EXPECT_EQ(ui::kCursorPointer, root_windows[1]->last_cursor().native_type()); | 182 EXPECT_EQ(ui::kCursorPointer, root_windows[1]->last_cursor().native_type()); |
183 Shell::GetInstance()->SetCursor(ui::kCursorCopy); | 183 Shell::GetInstance()->SetCursor(ui::kCursorCopy); |
184 EXPECT_EQ(ui::kCursorCopy, root_windows[0]->last_cursor().native_type()); | 184 EXPECT_EQ(ui::kCursorCopy, root_windows[0]->last_cursor().native_type()); |
185 EXPECT_EQ(ui::kCursorCopy, root_windows[1]->last_cursor().native_type()); | 185 EXPECT_EQ(ui::kCursorCopy, root_windows[1]->last_cursor().native_type()); |
186 } | 186 } |
187 | 187 |
188 TEST_F(ExtendedDesktopTest, CycleWindows) { | 188 TEST_F(ExtendedDesktopTest, CycleWindows) { |
189 internal::DisplayController::SetVirtualScreenCoordinatesEnabled(true); | 189 internal::DisplayController::SetVirtualScreenCoordinatesEnabled(true); |
190 UpdateDisplay("0+0-700x500,0+0-500x500"); | 190 UpdateDisplay("0+0-700x500,0+0-500x500"); |
191 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); | 191 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
192 // Emulate virtual screen coordinate system. | |
193 root_windows[0]->SetBounds(gfx::Rect(0, 0, 700, 500)); | |
194 root_windows[1]->SetBounds(gfx::Rect(700, 0, 500, 500)); | |
195 | 192 |
196 WindowCycleController* controller = | 193 WindowCycleController* controller = |
197 Shell::GetInstance()->window_cycle_controller(); | 194 Shell::GetInstance()->window_cycle_controller(); |
198 | 195 |
199 views::Widget* d1_w1 = CreateTestWidget(gfx::Rect(10, 10, 100, 100)); | 196 views::Widget* d1_w1 = CreateTestWidget(gfx::Rect(10, 10, 100, 100)); |
200 EXPECT_EQ(root_windows[0], d1_w1->GetNativeView()->GetRootWindow()); | 197 EXPECT_EQ(root_windows[0], d1_w1->GetNativeView()->GetRootWindow()); |
201 views::Widget* d2_w1 = CreateTestWidget(gfx::Rect(800, 10, 100, 100)); | 198 views::Widget* d2_w1 = CreateTestWidget(gfx::Rect(800, 10, 100, 100)); |
202 EXPECT_EQ(root_windows[1], d2_w1->GetNativeView()->GetRootWindow()); | 199 EXPECT_EQ(root_windows[1], d2_w1->GetNativeView()->GetRootWindow()); |
203 EXPECT_TRUE(wm::IsActiveWindow(d2_w1->GetNativeView())); | 200 EXPECT_TRUE(wm::IsActiveWindow(d2_w1->GetNativeView())); |
204 | 201 |
(...skipping 29 matching lines...) Expand all Loading... |
234 controller->HandleCycleWindow(WindowCycleController::BACKWARD, true); | 231 controller->HandleCycleWindow(WindowCycleController::BACKWARD, true); |
235 EXPECT_TRUE(wm::IsActiveWindow(d2_w1->GetNativeView())); | 232 EXPECT_TRUE(wm::IsActiveWindow(d2_w1->GetNativeView())); |
236 controller->HandleCycleWindow(WindowCycleController::BACKWARD, true); | 233 controller->HandleCycleWindow(WindowCycleController::BACKWARD, true); |
237 EXPECT_TRUE(wm::IsActiveWindow(d2_w2->GetNativeView())); | 234 EXPECT_TRUE(wm::IsActiveWindow(d2_w2->GetNativeView())); |
238 internal::DisplayController::SetVirtualScreenCoordinatesEnabled(false); | 235 internal::DisplayController::SetVirtualScreenCoordinatesEnabled(false); |
239 } | 236 } |
240 | 237 |
241 TEST_F(ExtendedDesktopTest, GetRootWindowAt) { | 238 TEST_F(ExtendedDesktopTest, GetRootWindowAt) { |
242 internal::DisplayController::SetVirtualScreenCoordinatesEnabled(true); | 239 internal::DisplayController::SetVirtualScreenCoordinatesEnabled(true); |
243 UpdateDisplay("0+0-700x500,0+0-500x500"); | 240 UpdateDisplay("0+0-700x500,0+0-500x500"); |
| 241 Shell::GetInstance()->display_controller()->SetSecondaryDisplayLayout( |
| 242 internal::DisplayController::LEFT); |
244 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); | 243 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
245 // Emulate virtual screen coordinate system. | |
246 root_windows[0]->SetBounds(gfx::Rect(500, 0, 700, 500)); | |
247 root_windows[1]->SetBounds(gfx::Rect(0, 0, 500, 500)); | |
248 | 244 |
249 EXPECT_EQ(root_windows[1], Shell::GetRootWindowAt(gfx::Point(100, 100))); | 245 EXPECT_EQ(root_windows[1], Shell::GetRootWindowAt(gfx::Point(-400, 100))); |
250 EXPECT_EQ(root_windows[1], Shell::GetRootWindowAt(gfx::Point(499, 100))); | 246 EXPECT_EQ(root_windows[1], Shell::GetRootWindowAt(gfx::Point(-1, 100))); |
251 EXPECT_EQ(root_windows[0], Shell::GetRootWindowAt(gfx::Point(500, 300))); | 247 EXPECT_EQ(root_windows[0], Shell::GetRootWindowAt(gfx::Point(0, 300))); |
252 EXPECT_EQ(root_windows[0], Shell::GetRootWindowAt(gfx::Point(1200,300))); | 248 EXPECT_EQ(root_windows[0], Shell::GetRootWindowAt(gfx::Point(700,300))); |
253 | 249 |
254 // Zero origin. | 250 // Zero origin. |
255 EXPECT_EQ(root_windows[1], Shell::GetRootWindowAt(gfx::Point(0, 0))); | 251 EXPECT_EQ(root_windows[0], Shell::GetRootWindowAt(gfx::Point(0, 0))); |
256 | 252 |
257 // Out of range point should return the primary root window | 253 // Out of range point should return the primary root window |
258 EXPECT_EQ(root_windows[0], Shell::GetRootWindowAt(gfx::Point(-100, 0))); | 254 EXPECT_EQ(root_windows[0], Shell::GetRootWindowAt(gfx::Point(-600, 0))); |
259 EXPECT_EQ(root_windows[0], Shell::GetRootWindowAt(gfx::Point(1201, 100))); | 255 EXPECT_EQ(root_windows[0], Shell::GetRootWindowAt(gfx::Point(701, 100))); |
260 internal::DisplayController::SetVirtualScreenCoordinatesEnabled(false); | 256 internal::DisplayController::SetVirtualScreenCoordinatesEnabled(false); |
261 } | 257 } |
262 | 258 |
263 TEST_F(ExtendedDesktopTest, GetRootWindowMatching) { | 259 TEST_F(ExtendedDesktopTest, GetRootWindowMatching) { |
264 internal::DisplayController::SetVirtualScreenCoordinatesEnabled(true); | 260 internal::DisplayController::SetVirtualScreenCoordinatesEnabled(true); |
265 UpdateDisplay("0+0-700x500,0+0-500x500"); | 261 UpdateDisplay("0+0-700x500,0+0-500x500"); |
| 262 Shell::GetInstance()->display_controller()->SetSecondaryDisplayLayout( |
| 263 internal::DisplayController::LEFT); |
| 264 |
266 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); | 265 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
267 // Emulate virtual screen coordinate system. | |
268 root_windows[0]->SetBounds(gfx::Rect(500, 0, 700, 500)); | |
269 root_windows[1]->SetBounds(gfx::Rect(0, 0, 500, 500)); | |
270 | 266 |
271 // Containing rect. | 267 // Containing rect. |
272 EXPECT_EQ(root_windows[1], | 268 EXPECT_EQ(root_windows[1], |
273 Shell::GetRootWindowMatching(gfx::Rect(200, 10, 50, 50))); | 269 Shell::GetRootWindowMatching(gfx::Rect(-300, 10, 50, 50))); |
274 EXPECT_EQ(root_windows[0], | 270 EXPECT_EQ(root_windows[0], |
275 Shell::GetRootWindowMatching(gfx::Rect(600, 10, 50, 50))); | 271 Shell::GetRootWindowMatching(gfx::Rect(100, 10, 50, 50))); |
276 | 272 |
277 // Intersecting rect. | 273 // Intersecting rect. |
278 EXPECT_EQ(root_windows[1], | 274 EXPECT_EQ(root_windows[1], |
279 Shell::GetRootWindowMatching(gfx::Rect(300, 0, 300, 300))); | 275 Shell::GetRootWindowMatching(gfx::Rect(-200, 0, 300, 300))); |
280 EXPECT_EQ(root_windows[0], | 276 EXPECT_EQ(root_windows[0], |
281 Shell::GetRootWindowMatching(gfx::Rect(400, 0, 300, 300))); | 277 Shell::GetRootWindowMatching(gfx::Rect(-100, 0, 300, 300))); |
282 | 278 |
283 // Zero origin. | 279 // Zero origin. |
284 EXPECT_EQ(root_windows[1], | 280 EXPECT_EQ(root_windows[0], |
285 Shell::GetRootWindowMatching(gfx::Rect(0, 0, 0, 0))); | 281 Shell::GetRootWindowMatching(gfx::Rect(0, 0, 0, 0))); |
286 EXPECT_EQ(root_windows[1], | 282 EXPECT_EQ(root_windows[0], |
287 Shell::GetRootWindowMatching(gfx::Rect(0, 0, 1, 1))); | 283 Shell::GetRootWindowMatching(gfx::Rect(0, 0, 1, 1))); |
288 | 284 |
289 // Empty rect. | 285 // Empty rect. |
290 EXPECT_EQ(root_windows[1], | 286 EXPECT_EQ(root_windows[1], |
| 287 Shell::GetRootWindowMatching(gfx::Rect(-400, 100, 0, 0))); |
| 288 EXPECT_EQ(root_windows[0], |
291 Shell::GetRootWindowMatching(gfx::Rect(100, 100, 0, 0))); | 289 Shell::GetRootWindowMatching(gfx::Rect(100, 100, 0, 0))); |
292 EXPECT_EQ(root_windows[0], | |
293 Shell::GetRootWindowMatching(gfx::Rect(600, 100, 0, 0))); | |
294 | 290 |
295 // Out of range rect should return the primary root window. | 291 // Out of range rect should return the primary root window. |
296 EXPECT_EQ(root_windows[0], | 292 EXPECT_EQ(root_windows[0], |
297 Shell::GetRootWindowMatching(gfx::Rect(-100, -300, 50, 50))); | 293 Shell::GetRootWindowMatching(gfx::Rect(-600, -300, 50, 50))); |
298 EXPECT_EQ(root_windows[0], | 294 EXPECT_EQ(root_windows[0], |
299 Shell::GetRootWindowMatching(gfx::Rect(0, 2000, 50, 50))); | 295 Shell::GetRootWindowMatching(gfx::Rect(0, 1000, 50, 50))); |
300 internal::DisplayController::SetVirtualScreenCoordinatesEnabled(false); | 296 internal::DisplayController::SetVirtualScreenCoordinatesEnabled(false); |
301 } | 297 } |
302 | 298 |
303 TEST_F(ExtendedDesktopTest, Capture) { | 299 TEST_F(ExtendedDesktopTest, Capture) { |
304 UpdateDisplay("0+0-1000x600,1001+0-600x400"); | 300 UpdateDisplay("0+0-1000x600,1001+0-600x400"); |
305 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); | 301 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
306 | 302 |
307 aura::test::EventCountDelegate r1_d1; | 303 aura::test::EventCountDelegate r1_d1; |
308 aura::test::EventCountDelegate r1_d2; | 304 aura::test::EventCountDelegate r1_d2; |
309 aura::test::EventCountDelegate r2_d1; | 305 aura::test::EventCountDelegate r2_d1; |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 // Convert point in the Root1's window to the Root2's window Coord. | 380 // Convert point in the Root1's window to the Root2's window Coord. |
385 p.SetPoint(0, 0); | 381 p.SetPoint(0, 0); |
386 aura::Window::ConvertPointToWindow(root_windows[0], root_windows[1], &p); | 382 aura::Window::ConvertPointToWindow(root_windows[0], root_windows[1], &p); |
387 EXPECT_EQ("-500,-500", p.ToString()); | 383 EXPECT_EQ("-500,-500", p.ToString()); |
388 p.SetPoint(0, 0); | 384 p.SetPoint(0, 0); |
389 aura::Window::ConvertPointToWindow(d1, d2, &p); | 385 aura::Window::ConvertPointToWindow(d1, d2, &p); |
390 EXPECT_EQ("-510,-510", p.ToString()); | 386 EXPECT_EQ("-510,-510", p.ToString()); |
391 } | 387 } |
392 } // namespace internal | 388 } // namespace internal |
393 } // namespace ash | 389 } // namespace ash |
OLD | NEW |