| 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/shelf/shelf_layout_manager.h" | 5 #include "ash/shelf/shelf_layout_manager.h" |
| 6 | 6 |
| 7 #include "ash/accelerators/accelerator_controller.h" | 7 #include "ash/accelerators/accelerator_controller.h" |
| 8 #include "ash/accelerators/accelerator_table.h" | 8 #include "ash/accelerators/accelerator_table.h" |
| 9 #include "ash/focus_cycler.h" | 9 #include "ash/focus_cycler.h" |
| 10 #include "ash/public/cpp/config.h" | 10 #include "ash/public/cpp/config.h" |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 | 155 |
| 156 if (type == ui::ET_GESTURE_SCROLL_UPDATE) | 156 if (type == ui::ET_GESTURE_SCROLL_UPDATE) |
| 157 scroll_.Add(delta); | 157 scroll_.Add(delta); |
| 158 | 158 |
| 159 WmShelf* shelf = test::AshTestBase::GetPrimaryShelf(); | 159 WmShelf* shelf = test::AshTestBase::GetPrimaryShelf(); |
| 160 gfx::Rect shelf_bounds = GetShelfWidget()->GetWindowBoundsInScreen(); | 160 gfx::Rect shelf_bounds = GetShelfWidget()->GetWindowBoundsInScreen(); |
| 161 if (shelf->IsHorizontalAlignment()) { | 161 if (shelf->IsHorizontalAlignment()) { |
| 162 EXPECT_EQ(auto_hidden_shelf_widget_bounds_.bottom(), | 162 EXPECT_EQ(auto_hidden_shelf_widget_bounds_.bottom(), |
| 163 shelf_bounds.bottom()); | 163 shelf_bounds.bottom()); |
| 164 EXPECT_EQ(shelf_widget_bounds_.bottom(), shelf_bounds.bottom()); | 164 EXPECT_EQ(shelf_widget_bounds_.bottom(), shelf_bounds.bottom()); |
| 165 } else if (SHELF_ALIGNMENT_RIGHT == shelf->GetAlignment()) { | 165 } else if (SHELF_ALIGNMENT_RIGHT == shelf->alignment()) { |
| 166 EXPECT_EQ(auto_hidden_shelf_widget_bounds_.right(), shelf_bounds.right()); | 166 EXPECT_EQ(auto_hidden_shelf_widget_bounds_.right(), shelf_bounds.right()); |
| 167 EXPECT_EQ(shelf_widget_bounds_.right(), shelf_bounds.right()); | 167 EXPECT_EQ(shelf_widget_bounds_.right(), shelf_bounds.right()); |
| 168 } else if (SHELF_ALIGNMENT_LEFT == shelf->GetAlignment()) { | 168 } else if (SHELF_ALIGNMENT_LEFT == shelf->alignment()) { |
| 169 EXPECT_EQ(auto_hidden_shelf_widget_bounds_.x(), shelf_bounds.x()); | 169 EXPECT_EQ(auto_hidden_shelf_widget_bounds_.x(), shelf_bounds.x()); |
| 170 EXPECT_EQ(shelf_widget_bounds_.x(), shelf_bounds.x()); | 170 EXPECT_EQ(shelf_widget_bounds_.x(), shelf_bounds.x()); |
| 171 } | 171 } |
| 172 | 172 |
| 173 float scroll_delta = | 173 float scroll_delta = |
| 174 GetShelfLayoutManager()->PrimaryAxisValue(scroll_.y(), scroll_.x()); | 174 GetShelfLayoutManager()->PrimaryAxisValue(scroll_.y(), scroll_.x()); |
| 175 bool increasing_drag = | 175 bool increasing_drag = |
| 176 GetShelfLayoutManager()->SelectValueForShelfAlignment( | 176 GetShelfLayoutManager()->SelectValueForShelfAlignment( |
| 177 scroll_delta<0, scroll_delta> 0, scroll_delta < 0); | 177 scroll_delta<0, scroll_delta> 0, scroll_delta < 0); |
| 178 int shelf_size = GetShelfLayoutManager()->PrimaryAxisValue( | 178 int shelf_size = GetShelfLayoutManager()->PrimaryAxisValue( |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 386 // Swipe up yet again to show it. | 386 // Swipe up yet again to show it. |
| 387 end = start + delta; | 387 end = start + delta; |
| 388 generator.GestureScrollSequenceWithCallback( | 388 generator.GestureScrollSequenceWithCallback( |
| 389 end, start, kTimeDelta, kNumScrollSteps, | 389 end, start, kTimeDelta, kNumScrollSteps, |
| 390 base::Bind(&ShelfDragCallback::ProcessScroll, | 390 base::Bind(&ShelfDragCallback::ProcessScroll, |
| 391 base::Unretained(&handler))); | 391 base::Unretained(&handler))); |
| 392 | 392 |
| 393 // Swipe down very little. It shouldn't change any state. | 393 // Swipe down very little. It shouldn't change any state. |
| 394 if (shelf->IsHorizontalAlignment()) | 394 if (shelf->IsHorizontalAlignment()) |
| 395 end.set_y(start.y() + shelf_shown.height() * 3 / 10); | 395 end.set_y(start.y() + shelf_shown.height() * 3 / 10); |
| 396 else if (SHELF_ALIGNMENT_LEFT == shelf->GetAlignment()) | 396 else if (SHELF_ALIGNMENT_LEFT == shelf->alignment()) |
| 397 end.set_x(start.x() - shelf_shown.width() * 3 / 10); | 397 end.set_x(start.x() - shelf_shown.width() * 3 / 10); |
| 398 else if (SHELF_ALIGNMENT_RIGHT == shelf->GetAlignment()) | 398 else if (SHELF_ALIGNMENT_RIGHT == shelf->alignment()) |
| 399 end.set_x(start.x() + shelf_shown.width() * 3 / 10); | 399 end.set_x(start.x() + shelf_shown.width() * 3 / 10); |
| 400 generator.GestureScrollSequence(start, end, kTimeDelta, 5); | 400 generator.GestureScrollSequence(start, end, kTimeDelta, 5); |
| 401 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 401 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
| 402 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior()); | 402 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior()); |
| 403 EXPECT_EQ(bounds_shelf.ToString(), window->bounds().ToString()); | 403 EXPECT_EQ(bounds_shelf.ToString(), window->bounds().ToString()); |
| 404 EXPECT_EQ(shelf_shown.ToString(), | 404 EXPECT_EQ(shelf_shown.ToString(), |
| 405 GetShelfWidget()->GetWindowBoundsInScreen().ToString()); | 405 GetShelfWidget()->GetWindowBoundsInScreen().ToString()); |
| 406 | 406 |
| 407 // Swipe down again to hide. | 407 // Swipe down again to hide. |
| 408 end = start + delta; | 408 end = start + delta; |
| 409 generator.GestureScrollSequenceWithCallback( | 409 generator.GestureScrollSequenceWithCallback( |
| 410 start, end, kTimeDelta, kNumScrollSteps, | 410 start, end, kTimeDelta, kNumScrollSteps, |
| 411 base::Bind(&ShelfDragCallback::ProcessScroll, | 411 base::Bind(&ShelfDragCallback::ProcessScroll, |
| 412 base::Unretained(&handler))); | 412 base::Unretained(&handler))); |
| 413 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); | 413 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
| 414 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); | 414 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
| 415 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior()); | 415 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior()); |
| 416 EXPECT_EQ(bounds_noshelf.ToString(), window->bounds().ToString()); | 416 EXPECT_EQ(bounds_noshelf.ToString(), window->bounds().ToString()); |
| 417 EXPECT_EQ(shelf_hidden.ToString(), | 417 EXPECT_EQ(shelf_hidden.ToString(), |
| 418 GetShelfWidget()->GetWindowBoundsInScreen().ToString()); | 418 GetShelfWidget()->GetWindowBoundsInScreen().ToString()); |
| 419 | 419 |
| 420 // Swipe up in extended hit region to show it. | 420 // Swipe up in extended hit region to show it. |
| 421 gfx::Point extended_start = start; | 421 gfx::Point extended_start = start; |
| 422 if (shelf->IsHorizontalAlignment()) | 422 if (shelf->IsHorizontalAlignment()) |
| 423 extended_start.set_y(GetShelfWidget()->GetWindowBoundsInScreen().y() - 1); | 423 extended_start.set_y(GetShelfWidget()->GetWindowBoundsInScreen().y() - 1); |
| 424 else if (SHELF_ALIGNMENT_LEFT == shelf->GetAlignment()) | 424 else if (SHELF_ALIGNMENT_LEFT == shelf->alignment()) |
| 425 extended_start.set_x(GetShelfWidget()->GetWindowBoundsInScreen().right() + | 425 extended_start.set_x(GetShelfWidget()->GetWindowBoundsInScreen().right() + |
| 426 1); | 426 1); |
| 427 else if (SHELF_ALIGNMENT_RIGHT == shelf->GetAlignment()) | 427 else if (SHELF_ALIGNMENT_RIGHT == shelf->alignment()) |
| 428 extended_start.set_x(GetShelfWidget()->GetWindowBoundsInScreen().x() - 1); | 428 extended_start.set_x(GetShelfWidget()->GetWindowBoundsInScreen().x() - 1); |
| 429 end = extended_start - delta; | 429 end = extended_start - delta; |
| 430 generator.GestureScrollSequenceWithCallback( | 430 generator.GestureScrollSequenceWithCallback( |
| 431 extended_start, end, kTimeDelta, kNumScrollSteps, | 431 extended_start, end, kTimeDelta, kNumScrollSteps, |
| 432 base::Bind(&ShelfDragCallback::ProcessScroll, | 432 base::Bind(&ShelfDragCallback::ProcessScroll, |
| 433 base::Unretained(&handler))); | 433 base::Unretained(&handler))); |
| 434 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 434 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
| 435 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior()); | 435 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior()); |
| 436 EXPECT_EQ(bounds_shelf.ToString(), window->bounds().ToString()); | 436 EXPECT_EQ(bounds_shelf.ToString(), window->bounds().ToString()); |
| 437 EXPECT_EQ(shelf_shown.ToString(), | 437 EXPECT_EQ(shelf_shown.ToString(), |
| (...skipping 25 matching lines...) Expand all Loading... |
| 463 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); | 463 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
| 464 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior()); | 464 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior()); |
| 465 EXPECT_EQ(shelf_hidden.ToString(), | 465 EXPECT_EQ(shelf_hidden.ToString(), |
| 466 GetShelfWidget()->GetWindowBoundsInScreen().ToString()); | 466 GetShelfWidget()->GetWindowBoundsInScreen().ToString()); |
| 467 | 467 |
| 468 // Swipe up from below the shelf where a bezel would be, this should show the | 468 // Swipe up from below the shelf where a bezel would be, this should show the |
| 469 // shelf. | 469 // shelf. |
| 470 gfx::Point below_start = start; | 470 gfx::Point below_start = start; |
| 471 if (shelf->IsHorizontalAlignment()) | 471 if (shelf->IsHorizontalAlignment()) |
| 472 below_start.set_y(GetShelfWidget()->GetWindowBoundsInScreen().bottom() + 1); | 472 below_start.set_y(GetShelfWidget()->GetWindowBoundsInScreen().bottom() + 1); |
| 473 else if (SHELF_ALIGNMENT_LEFT == shelf->GetAlignment()) | 473 else if (SHELF_ALIGNMENT_LEFT == shelf->alignment()) |
| 474 below_start.set_x(GetShelfWidget()->GetWindowBoundsInScreen().x() - 1); | 474 below_start.set_x(GetShelfWidget()->GetWindowBoundsInScreen().x() - 1); |
| 475 else if (SHELF_ALIGNMENT_RIGHT == shelf->GetAlignment()) | 475 else if (SHELF_ALIGNMENT_RIGHT == shelf->alignment()) |
| 476 below_start.set_x(GetShelfWidget()->GetWindowBoundsInScreen().right() + 1); | 476 below_start.set_x(GetShelfWidget()->GetWindowBoundsInScreen().right() + 1); |
| 477 end = below_start - delta; | 477 end = below_start - delta; |
| 478 generator.GestureScrollSequence(below_start, end, kTimeDelta, | 478 generator.GestureScrollSequence(below_start, end, kTimeDelta, |
| 479 kNumScrollSteps); | 479 kNumScrollSteps); |
| 480 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 480 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
| 481 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior()); | 481 EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior()); |
| 482 EXPECT_EQ(bounds_shelf.ToString(), window->bounds().ToString()); | 482 EXPECT_EQ(bounds_shelf.ToString(), window->bounds().ToString()); |
| 483 EXPECT_EQ(shelf_shown.ToString(), | 483 EXPECT_EQ(shelf_shown.ToString(), |
| 484 GetShelfWidget()->GetWindowBoundsInScreen().ToString()); | 484 GetShelfWidget()->GetWindowBoundsInScreen().ToString()); |
| 485 | 485 |
| (...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1272 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 1272 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
| 1273 | 1273 |
| 1274 shelf->SetAlignment(SHELF_ALIGNMENT_LEFT); | 1274 shelf->SetAlignment(SHELF_ALIGNMENT_LEFT); |
| 1275 gfx::Rect shelf_bounds(GetShelfWidget()->GetWindowBoundsInScreen()); | 1275 gfx::Rect shelf_bounds(GetShelfWidget()->GetWindowBoundsInScreen()); |
| 1276 display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay(); | 1276 display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay(); |
| 1277 ASSERT_NE(-1, display.id()); | 1277 ASSERT_NE(-1, display.id()); |
| 1278 EXPECT_EQ(layout_manager->GetIdealBounds().width(), | 1278 EXPECT_EQ(layout_manager->GetIdealBounds().width(), |
| 1279 display.GetWorkAreaInsets().left()); | 1279 display.GetWorkAreaInsets().left()); |
| 1280 EXPECT_GE(shelf_bounds.width(), | 1280 EXPECT_GE(shelf_bounds.width(), |
| 1281 GetShelfWidget()->GetContentsView()->GetPreferredSize().width()); | 1281 GetShelfWidget()->GetContentsView()->GetPreferredSize().width()); |
| 1282 EXPECT_EQ(SHELF_ALIGNMENT_LEFT, GetPrimarySystemTray()->shelf_alignment()); | 1282 EXPECT_EQ(SHELF_ALIGNMENT_LEFT, GetPrimarySystemTray()->shelf()->alignment()); |
| 1283 StatusAreaWidget* status_area_widget = GetShelfWidget()->status_area_widget(); | 1283 StatusAreaWidget* status_area_widget = GetShelfWidget()->status_area_widget(); |
| 1284 gfx::Rect status_bounds(status_area_widget->GetWindowBoundsInScreen()); | 1284 gfx::Rect status_bounds(status_area_widget->GetWindowBoundsInScreen()); |
| 1285 // TODO(estade): Re-enable this check. See crbug.com/660928. | 1285 // TODO(estade): Re-enable this check. See crbug.com/660928. |
| 1286 // EXPECT_GE( | 1286 // EXPECT_GE( |
| 1287 // status_bounds.width(), | 1287 // status_bounds.width(), |
| 1288 // status_area_widget->GetContentsView()->GetPreferredSize().width()); | 1288 // status_area_widget->GetContentsView()->GetPreferredSize().width()); |
| 1289 EXPECT_EQ(layout_manager->GetIdealBounds().width(), | 1289 EXPECT_EQ(layout_manager->GetIdealBounds().width(), |
| 1290 display.GetWorkAreaInsets().left()); | 1290 display.GetWorkAreaInsets().left()); |
| 1291 EXPECT_EQ(0, display.GetWorkAreaInsets().top()); | 1291 EXPECT_EQ(0, display.GetWorkAreaInsets().top()); |
| 1292 EXPECT_EQ(0, display.GetWorkAreaInsets().bottom()); | 1292 EXPECT_EQ(0, display.GetWorkAreaInsets().bottom()); |
| 1293 EXPECT_EQ(0, display.GetWorkAreaInsets().right()); | 1293 EXPECT_EQ(0, display.GetWorkAreaInsets().right()); |
| 1294 EXPECT_EQ(display.bounds().x(), shelf_bounds.x()); | 1294 EXPECT_EQ(display.bounds().x(), shelf_bounds.x()); |
| 1295 EXPECT_EQ(display.bounds().y(), shelf_bounds.y()); | 1295 EXPECT_EQ(display.bounds().y(), shelf_bounds.y()); |
| 1296 EXPECT_EQ(display.bounds().height(), shelf_bounds.height()); | 1296 EXPECT_EQ(display.bounds().height(), shelf_bounds.height()); |
| 1297 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 1297 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
| 1298 display = display::Screen::GetScreen()->GetPrimaryDisplay(); | 1298 display = display::Screen::GetScreen()->GetPrimaryDisplay(); |
| 1299 EXPECT_EQ(0, display.GetWorkAreaInsets().left()); | 1299 EXPECT_EQ(0, display.GetWorkAreaInsets().left()); |
| 1300 EXPECT_EQ(0, display.work_area().x()); | 1300 EXPECT_EQ(0, display.work_area().x()); |
| 1301 | 1301 |
| 1302 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); | 1302 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); |
| 1303 shelf->SetAlignment(SHELF_ALIGNMENT_RIGHT); | 1303 shelf->SetAlignment(SHELF_ALIGNMENT_RIGHT); |
| 1304 shelf_bounds = GetShelfWidget()->GetWindowBoundsInScreen(); | 1304 shelf_bounds = GetShelfWidget()->GetWindowBoundsInScreen(); |
| 1305 display = display::Screen::GetScreen()->GetPrimaryDisplay(); | 1305 display = display::Screen::GetScreen()->GetPrimaryDisplay(); |
| 1306 ASSERT_NE(-1, display.id()); | 1306 ASSERT_NE(-1, display.id()); |
| 1307 EXPECT_EQ(layout_manager->GetIdealBounds().width(), | 1307 EXPECT_EQ(layout_manager->GetIdealBounds().width(), |
| 1308 display.GetWorkAreaInsets().right()); | 1308 display.GetWorkAreaInsets().right()); |
| 1309 EXPECT_GE(shelf_bounds.width(), | 1309 EXPECT_GE(shelf_bounds.width(), |
| 1310 GetShelfWidget()->GetContentsView()->GetPreferredSize().width()); | 1310 GetShelfWidget()->GetContentsView()->GetPreferredSize().width()); |
| 1311 EXPECT_EQ(SHELF_ALIGNMENT_RIGHT, GetPrimarySystemTray()->shelf_alignment()); | 1311 EXPECT_EQ(SHELF_ALIGNMENT_RIGHT, |
| 1312 GetPrimarySystemTray()->shelf()->alignment()); |
| 1312 status_bounds = gfx::Rect(status_area_widget->GetWindowBoundsInScreen()); | 1313 status_bounds = gfx::Rect(status_area_widget->GetWindowBoundsInScreen()); |
| 1313 // TODO(estade): Re-enable this check. See crbug.com/660928. | 1314 // TODO(estade): Re-enable this check. See crbug.com/660928. |
| 1314 // EXPECT_GE( | 1315 // EXPECT_GE( |
| 1315 // status_bounds.width(), | 1316 // status_bounds.width(), |
| 1316 // status_area_widget->GetContentsView()->GetPreferredSize().width()); | 1317 // status_area_widget->GetContentsView()->GetPreferredSize().width()); |
| 1317 EXPECT_EQ(layout_manager->GetIdealBounds().width(), | 1318 EXPECT_EQ(layout_manager->GetIdealBounds().width(), |
| 1318 display.GetWorkAreaInsets().right()); | 1319 display.GetWorkAreaInsets().right()); |
| 1319 EXPECT_EQ(0, display.GetWorkAreaInsets().top()); | 1320 EXPECT_EQ(0, display.GetWorkAreaInsets().top()); |
| 1320 EXPECT_EQ(0, display.GetWorkAreaInsets().bottom()); | 1321 EXPECT_EQ(0, display.GetWorkAreaInsets().bottom()); |
| 1321 EXPECT_EQ(0, display.GetWorkAreaInsets().left()); | 1322 EXPECT_EQ(0, display.GetWorkAreaInsets().left()); |
| (...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1835 // Open keyboard in sticky mode. | 1836 // Open keyboard in sticky mode. |
| 1836 kb_controller->ShowKeyboard(true); | 1837 kb_controller->ShowKeyboard(true); |
| 1837 layout_manager->OnKeyboardBoundsChanging(keyboard_bounds()); | 1838 layout_manager->OnKeyboardBoundsChanging(keyboard_bounds()); |
| 1838 | 1839 |
| 1839 // Work area should be changed. | 1840 // Work area should be changed. |
| 1840 EXPECT_NE(orig_work_area, | 1841 EXPECT_NE(orig_work_area, |
| 1841 display::Screen::GetScreen()->GetPrimaryDisplay().work_area()); | 1842 display::Screen::GetScreen()->GetPrimaryDisplay().work_area()); |
| 1842 } | 1843 } |
| 1843 | 1844 |
| 1844 } // namespace ash | 1845 } // namespace ash |
| OLD | NEW |