| 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/common/shelf/shelf_view.h" | 5 #include "ash/common/shelf/shelf_view.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 438 EXPECT_GE(item_bounds.y(), 0); | 438 EXPECT_GE(item_bounds.y(), 0); |
| 439 EXPECT_LE(item_bounds.right(), shelf_view_bounds.width()); | 439 EXPECT_LE(item_bounds.right(), shelf_view_bounds.width()); |
| 440 EXPECT_LE(item_bounds.bottom(), shelf_view_bounds.height()); | 440 EXPECT_LE(item_bounds.bottom(), shelf_view_bounds.height()); |
| 441 } | 441 } |
| 442 } | 442 } |
| 443 } | 443 } |
| 444 | 444 |
| 445 // Simulate a mouse press event on the shelf's view at |view_index|. | 445 // Simulate a mouse press event on the shelf's view at |view_index|. |
| 446 views::View* SimulateViewPressed(ShelfView::Pointer pointer, int view_index) { | 446 views::View* SimulateViewPressed(ShelfView::Pointer pointer, int view_index) { |
| 447 views::View* view = test_api_->GetViewAt(view_index); | 447 views::View* view = test_api_->GetViewAt(view_index); |
| 448 ui::MouseEvent pressed_event(ui::ET_MOUSE_PRESSED, gfx::Point(), | 448 ui::MouseEvent pressed_event( |
| 449 view->GetBoundsInScreen().origin(), | 449 ui::ET_MOUSE_PRESSED, gfx::Point(), view->GetBoundsInScreen().origin(), |
| 450 ui::EventTimeForNow(), 0, 0); | 450 ui::EventTimeForNow(), 0, 0, |
| 451 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 451 shelf_view_->PointerPressedOnButton(view, pointer, pressed_event); | 452 shelf_view_->PointerPressedOnButton(view, pointer, pressed_event); |
| 452 return view; | 453 return view; |
| 453 } | 454 } |
| 454 | 455 |
| 455 // Similar to SimulateViewPressed, but the index must not be for the app list, | 456 // Similar to SimulateViewPressed, but the index must not be for the app list, |
| 456 // since the app list button is not a ShelfButton. | 457 // since the app list button is not a ShelfButton. |
| 457 ShelfButton* SimulateButtonPressed(ShelfView::Pointer pointer, | 458 ShelfButton* SimulateButtonPressed(ShelfView::Pointer pointer, |
| 458 int button_index) { | 459 int button_index) { |
| 459 EXPECT_NE(TYPE_APP_LIST, model_->items()[button_index].type); | 460 EXPECT_NE(TYPE_APP_LIST, model_->items()[button_index].type); |
| 460 ShelfButton* button = test_api_->GetButton(button_index); | 461 ShelfButton* button = test_api_->GetButton(button_index); |
| 461 EXPECT_EQ(button, SimulateViewPressed(pointer, button_index)); | 462 EXPECT_EQ(button, SimulateViewPressed(pointer, button_index)); |
| 462 return button; | 463 return button; |
| 463 } | 464 } |
| 464 | 465 |
| 465 // Simulates a single mouse click. | 466 // Simulates a single mouse click. |
| 466 void SimulateClick(int button_index) { | 467 void SimulateClick(int button_index) { |
| 467 ShelfButton* button = SimulateButtonPressed(ShelfView::MOUSE, button_index); | 468 ShelfButton* button = SimulateButtonPressed(ShelfView::MOUSE, button_index); |
| 468 ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, gfx::Point(), | 469 ui::MouseEvent release_event( |
| 469 button->GetBoundsInScreen().origin(), | 470 ui::ET_MOUSE_RELEASED, gfx::Point(), |
| 470 ui::EventTimeForNow(), 0, 0); | 471 button->GetBoundsInScreen().origin(), ui::EventTimeForNow(), 0, 0, |
| 472 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 471 test_api_->ButtonPressed( | 473 test_api_->ButtonPressed( |
| 472 button, release_event, | 474 button, release_event, |
| 473 views::test::InkDropHostViewTestApi(button).GetInkDrop()); | 475 views::test::InkDropHostViewTestApi(button).GetInkDrop()); |
| 474 shelf_view_->PointerReleasedOnButton(button, ShelfView::MOUSE, false); | 476 shelf_view_->PointerReleasedOnButton(button, ShelfView::MOUSE, false); |
| 475 } | 477 } |
| 476 | 478 |
| 477 // Simulates the second click of a double click. | 479 // Simulates the second click of a double click. |
| 478 void SimulateDoubleClick(int button_index) { | 480 void SimulateDoubleClick(int button_index) { |
| 479 ShelfButton* button = SimulateButtonPressed(ShelfView::MOUSE, button_index); | 481 ShelfButton* button = SimulateButtonPressed(ShelfView::MOUSE, button_index); |
| 480 ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, gfx::Point(), | 482 ui::MouseEvent release_event( |
| 481 button->GetBoundsInScreen().origin(), | 483 ui::ET_MOUSE_RELEASED, gfx::Point(), |
| 482 ui::EventTimeForNow(), ui::EF_IS_DOUBLE_CLICK, | 484 button->GetBoundsInScreen().origin(), ui::EventTimeForNow(), |
| 483 0); | 485 ui::EF_IS_DOUBLE_CLICK, 0, |
| 486 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 484 test_api_->ButtonPressed( | 487 test_api_->ButtonPressed( |
| 485 button, release_event, | 488 button, release_event, |
| 486 views::test::InkDropHostViewTestApi(button).GetInkDrop()); | 489 views::test::InkDropHostViewTestApi(button).GetInkDrop()); |
| 487 shelf_view_->PointerReleasedOnButton(button, ShelfView::MOUSE, false); | 490 shelf_view_->PointerReleasedOnButton(button, ShelfView::MOUSE, false); |
| 488 } | 491 } |
| 489 | 492 |
| 490 void DoDrag(int dist_x, | 493 void DoDrag(int dist_x, |
| 491 int dist_y, | 494 int dist_y, |
| 492 views::View* button, | 495 views::View* button, |
| 493 ShelfView::Pointer pointer, | 496 ShelfView::Pointer pointer, |
| 494 views::View* to) { | 497 views::View* to) { |
| 495 ui::MouseEvent drag_event(ui::ET_MOUSE_DRAGGED, gfx::Point(dist_x, dist_y), | 498 ui::MouseEvent drag_event( |
| 496 to->GetBoundsInScreen().origin(), | 499 ui::ET_MOUSE_DRAGGED, gfx::Point(dist_x, dist_y), |
| 497 ui::EventTimeForNow(), 0, 0); | 500 to->GetBoundsInScreen().origin(), ui::EventTimeForNow(), 0, 0, |
| 501 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 498 shelf_view_->PointerDraggedOnButton(button, pointer, drag_event); | 502 shelf_view_->PointerDraggedOnButton(button, pointer, drag_event); |
| 499 } | 503 } |
| 500 | 504 |
| 501 /* | 505 /* |
| 502 * Trigger ContinueDrag of the shelf | 506 * Trigger ContinueDrag of the shelf |
| 503 * The argument progressively means whether to simulate the drag progress (a | 507 * The argument progressively means whether to simulate the drag progress (a |
| 504 * series of changes of the posistion of dragged item), like the normal user | 508 * series of changes of the posistion of dragged item), like the normal user |
| 505 * drag behavior. | 509 * drag behavior. |
| 506 */ | 510 */ |
| 507 void ContinueDrag(views::View* button, | 511 void ContinueDrag(views::View* button, |
| (...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1249 // the shelf item gets selected. | 1253 // the shelf item gets selected. |
| 1250 ShelfItemSelectionTracker* selection_tracker = new ShelfItemSelectionTracker; | 1254 ShelfItemSelectionTracker* selection_tracker = new ShelfItemSelectionTracker; |
| 1251 model_->SetShelfItemDelegate( | 1255 model_->SetShelfItemDelegate( |
| 1252 shelf_id, base::WrapUnique<ShelfItemSelectionTracker>(selection_tracker)); | 1256 shelf_id, base::WrapUnique<ShelfItemSelectionTracker>(selection_tracker)); |
| 1253 | 1257 |
| 1254 gfx::Vector2d press_offset(5, 30); | 1258 gfx::Vector2d press_offset(5, 30); |
| 1255 gfx::Point press_location = gfx::Point() + press_offset; | 1259 gfx::Point press_location = gfx::Point() + press_offset; |
| 1256 gfx::Point press_location_in_screen = | 1260 gfx::Point press_location_in_screen = |
| 1257 button->GetBoundsInScreen().origin() + press_offset; | 1261 button->GetBoundsInScreen().origin() + press_offset; |
| 1258 | 1262 |
| 1259 ui::MouseEvent click_event(ui::ET_MOUSE_PRESSED, press_location, | 1263 ui::MouseEvent click_event( |
| 1260 press_location_in_screen, ui::EventTimeForNow(), | 1264 ui::ET_MOUSE_PRESSED, press_location, press_location_in_screen, |
| 1261 ui::EF_LEFT_MOUSE_BUTTON, 0); | 1265 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 1266 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 1262 button->OnMousePressed(click_event); | 1267 button->OnMousePressed(click_event); |
| 1263 | 1268 |
| 1264 ui::MouseEvent drag_event1( | 1269 ui::MouseEvent drag_event1( |
| 1265 ui::ET_MOUSE_DRAGGED, press_location + gfx::Vector2d(0, 1), | 1270 ui::ET_MOUSE_DRAGGED, press_location + gfx::Vector2d(0, 1), |
| 1266 press_location_in_screen + gfx::Vector2d(0, 1), ui::EventTimeForNow(), | 1271 press_location_in_screen + gfx::Vector2d(0, 1), ui::EventTimeForNow(), |
| 1267 ui::EF_LEFT_MOUSE_BUTTON, 0); | 1272 ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 1273 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 1268 button->OnMouseDragged(drag_event1); | 1274 button->OnMouseDragged(drag_event1); |
| 1269 | 1275 |
| 1270 ui::MouseEvent drag_event2( | 1276 ui::MouseEvent drag_event2( |
| 1271 ui::ET_MOUSE_DRAGGED, press_location + gfx::Vector2d(-1, 0), | 1277 ui::ET_MOUSE_DRAGGED, press_location + gfx::Vector2d(-1, 0), |
| 1272 press_location_in_screen + gfx::Vector2d(-1, 0), ui::EventTimeForNow(), | 1278 press_location_in_screen + gfx::Vector2d(-1, 0), ui::EventTimeForNow(), |
| 1273 ui::EF_LEFT_MOUSE_BUTTON, 0); | 1279 ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 1280 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 1274 button->OnMouseDragged(drag_event2); | 1281 button->OnMouseDragged(drag_event2); |
| 1275 | 1282 |
| 1276 ui::MouseEvent release_event( | 1283 ui::MouseEvent release_event( |
| 1277 ui::ET_MOUSE_RELEASED, press_location + gfx::Vector2d(-1, 0), | 1284 ui::ET_MOUSE_RELEASED, press_location + gfx::Vector2d(-1, 0), |
| 1278 press_location_in_screen + gfx::Vector2d(-1, 0), ui::EventTimeForNow(), | 1285 press_location_in_screen + gfx::Vector2d(-1, 0), ui::EventTimeForNow(), |
| 1279 ui::EF_LEFT_MOUSE_BUTTON, 0); | 1286 ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 1287 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 1280 button->OnMouseReleased(release_event); | 1288 button->OnMouseReleased(release_event); |
| 1281 | 1289 |
| 1282 EXPECT_TRUE(selection_tracker->WasSelected()); | 1290 EXPECT_TRUE(selection_tracker->WasSelected()); |
| 1283 } | 1291 } |
| 1284 | 1292 |
| 1285 // Confirm that item status changes are reflected in the buttons. | 1293 // Confirm that item status changes are reflected in the buttons. |
| 1286 TEST_F(ShelfViewTest, ShelfItemStatus) { | 1294 TEST_F(ShelfViewTest, ShelfItemStatus) { |
| 1287 // All buttons should be visible. | 1295 // All buttons should be visible. |
| 1288 ASSERT_EQ(test_api_->GetButtonCount(), test_api_->GetLastVisibleIndex() + 1); | 1296 ASSERT_EQ(test_api_->GetButtonCount(), test_api_->GetLastVisibleIndex() + 1); |
| 1289 | 1297 |
| (...skipping 997 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2287 } | 2295 } |
| 2288 | 2296 |
| 2289 // Tests that clicking on a shelf item that does not show a menu transitions ink | 2297 // Tests that clicking on a shelf item that does not show a menu transitions ink |
| 2290 // drop states correctly. | 2298 // drop states correctly. |
| 2291 TEST_F(ShelfViewInkDropTest, ShelfButtonWithoutMenuPressRelease) { | 2299 TEST_F(ShelfViewInkDropTest, ShelfButtonWithoutMenuPressRelease) { |
| 2292 InitBrowserButtonInkDrop(); | 2300 InitBrowserButtonInkDrop(); |
| 2293 | 2301 |
| 2294 views::CustomButton* button = browser_button_; | 2302 views::CustomButton* button = browser_button_; |
| 2295 gfx::Point mouse_location = button->GetLocalBounds().CenterPoint(); | 2303 gfx::Point mouse_location = button->GetLocalBounds().CenterPoint(); |
| 2296 | 2304 |
| 2297 ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, mouse_location, | 2305 ui::MouseEvent press_event( |
| 2298 mouse_location, ui::EventTimeForNow(), | 2306 ui::ET_MOUSE_PRESSED, mouse_location, mouse_location, |
| 2299 ui::EF_LEFT_MOUSE_BUTTON, 0); | 2307 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 2308 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2300 button->OnMousePressed(press_event); | 2309 button->OnMousePressed(press_event); |
| 2301 EXPECT_EQ(views::InkDropState::ACTION_PENDING, | 2310 EXPECT_EQ(views::InkDropState::ACTION_PENDING, |
| 2302 browser_button_ink_drop_->GetTargetInkDropState()); | 2311 browser_button_ink_drop_->GetTargetInkDropState()); |
| 2303 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), | 2312 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), |
| 2304 ElementsAre(views::InkDropState::ACTION_PENDING)); | 2313 ElementsAre(views::InkDropState::ACTION_PENDING)); |
| 2305 | 2314 |
| 2306 ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, mouse_location, | 2315 ui::MouseEvent release_event( |
| 2307 mouse_location, ui::EventTimeForNow(), | 2316 ui::ET_MOUSE_RELEASED, mouse_location, mouse_location, |
| 2308 ui::EF_LEFT_MOUSE_BUTTON, 0); | 2317 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 2318 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2309 button->OnMouseReleased(release_event); | 2319 button->OnMouseReleased(release_event); |
| 2310 EXPECT_EQ(views::InkDropState::HIDDEN, | 2320 EXPECT_EQ(views::InkDropState::HIDDEN, |
| 2311 browser_button_ink_drop_->GetTargetInkDropState()); | 2321 browser_button_ink_drop_->GetTargetInkDropState()); |
| 2312 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), | 2322 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), |
| 2313 ElementsAre(views::InkDropState::ACTION_TRIGGERED)); | 2323 ElementsAre(views::InkDropState::ACTION_TRIGGERED)); |
| 2314 } | 2324 } |
| 2315 | 2325 |
| 2316 // Tests that dragging outside of a shelf item transitions ink drop states | 2326 // Tests that dragging outside of a shelf item transitions ink drop states |
| 2317 // correctly. | 2327 // correctly. |
| 2318 TEST_F(ShelfViewInkDropTest, ShelfButtonWithoutMenuPressDragReleaseOutside) { | 2328 TEST_F(ShelfViewInkDropTest, ShelfButtonWithoutMenuPressDragReleaseOutside) { |
| 2319 InitBrowserButtonInkDrop(); | 2329 InitBrowserButtonInkDrop(); |
| 2320 | 2330 |
| 2321 views::CustomButton* button = browser_button_; | 2331 views::CustomButton* button = browser_button_; |
| 2322 gfx::Point mouse_location = button->GetLocalBounds().CenterPoint(); | 2332 gfx::Point mouse_location = button->GetLocalBounds().CenterPoint(); |
| 2323 | 2333 |
| 2324 ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, mouse_location, | 2334 ui::MouseEvent press_event( |
| 2325 mouse_location, ui::EventTimeForNow(), | 2335 ui::ET_MOUSE_PRESSED, mouse_location, mouse_location, |
| 2326 ui::EF_LEFT_MOUSE_BUTTON, 0); | 2336 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 2337 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2327 button->OnMousePressed(press_event); | 2338 button->OnMousePressed(press_event); |
| 2328 EXPECT_EQ(views::InkDropState::ACTION_PENDING, | 2339 EXPECT_EQ(views::InkDropState::ACTION_PENDING, |
| 2329 browser_button_ink_drop_->GetTargetInkDropState()); | 2340 browser_button_ink_drop_->GetTargetInkDropState()); |
| 2330 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), | 2341 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), |
| 2331 ElementsAre(views::InkDropState::ACTION_PENDING)); | 2342 ElementsAre(views::InkDropState::ACTION_PENDING)); |
| 2332 | 2343 |
| 2333 mouse_location.Offset(test_api_->GetMinimumDragDistance() / 2, 0); | 2344 mouse_location.Offset(test_api_->GetMinimumDragDistance() / 2, 0); |
| 2334 ui::MouseEvent drag_event_small(ui::ET_MOUSE_DRAGGED, mouse_location, | 2345 ui::MouseEvent drag_event_small( |
| 2335 mouse_location, ui::EventTimeForNow(), | 2346 ui::ET_MOUSE_DRAGGED, mouse_location, mouse_location, |
| 2336 ui::EF_LEFT_MOUSE_BUTTON, 0); | 2347 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 2348 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2337 button->OnMouseDragged(drag_event_small); | 2349 button->OnMouseDragged(drag_event_small); |
| 2338 EXPECT_EQ(views::InkDropState::ACTION_PENDING, | 2350 EXPECT_EQ(views::InkDropState::ACTION_PENDING, |
| 2339 browser_button_ink_drop_->GetTargetInkDropState()); | 2351 browser_button_ink_drop_->GetTargetInkDropState()); |
| 2340 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), | 2352 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), |
| 2341 IsEmpty()); | 2353 IsEmpty()); |
| 2342 | 2354 |
| 2343 mouse_location.Offset(test_api_->GetMinimumDragDistance(), 0); | 2355 mouse_location.Offset(test_api_->GetMinimumDragDistance(), 0); |
| 2344 ui::MouseEvent drag_event_large(ui::ET_MOUSE_DRAGGED, mouse_location, | 2356 ui::MouseEvent drag_event_large( |
| 2345 mouse_location, ui::EventTimeForNow(), | 2357 ui::ET_MOUSE_DRAGGED, mouse_location, mouse_location, |
| 2346 ui::EF_LEFT_MOUSE_BUTTON, 0); | 2358 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 2359 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2347 button->OnMouseDragged(drag_event_large); | 2360 button->OnMouseDragged(drag_event_large); |
| 2348 EXPECT_EQ(views::InkDropState::HIDDEN, | 2361 EXPECT_EQ(views::InkDropState::HIDDEN, |
| 2349 browser_button_ink_drop_->GetTargetInkDropState()); | 2362 browser_button_ink_drop_->GetTargetInkDropState()); |
| 2350 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), | 2363 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), |
| 2351 ElementsAre(views::InkDropState::HIDDEN)); | 2364 ElementsAre(views::InkDropState::HIDDEN)); |
| 2352 | 2365 |
| 2353 ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, mouse_location, | 2366 ui::MouseEvent release_event( |
| 2354 mouse_location, ui::EventTimeForNow(), | 2367 ui::ET_MOUSE_RELEASED, mouse_location, mouse_location, |
| 2355 ui::EF_LEFT_MOUSE_BUTTON, 0); | 2368 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 2369 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2356 button->OnMouseReleased(release_event); | 2370 button->OnMouseReleased(release_event); |
| 2357 EXPECT_EQ(views::InkDropState::HIDDEN, | 2371 EXPECT_EQ(views::InkDropState::HIDDEN, |
| 2358 browser_button_ink_drop_->GetTargetInkDropState()); | 2372 browser_button_ink_drop_->GetTargetInkDropState()); |
| 2359 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), | 2373 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), |
| 2360 IsEmpty()); | 2374 IsEmpty()); |
| 2361 } | 2375 } |
| 2362 | 2376 |
| 2363 // Tests that dragging outside of a shelf item and back transitions ink drop | 2377 // Tests that dragging outside of a shelf item and back transitions ink drop |
| 2364 // states correctly. | 2378 // states correctly. |
| 2365 TEST_F(ShelfViewInkDropTest, ShelfButtonWithoutMenuPressDragReleaseInside) { | 2379 TEST_F(ShelfViewInkDropTest, ShelfButtonWithoutMenuPressDragReleaseInside) { |
| 2366 InitBrowserButtonInkDrop(); | 2380 InitBrowserButtonInkDrop(); |
| 2367 | 2381 |
| 2368 views::CustomButton* button = browser_button_; | 2382 views::CustomButton* button = browser_button_; |
| 2369 gfx::Point mouse_location = button->GetLocalBounds().CenterPoint(); | 2383 gfx::Point mouse_location = button->GetLocalBounds().CenterPoint(); |
| 2370 | 2384 |
| 2371 ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, mouse_location, | 2385 ui::MouseEvent press_event( |
| 2372 mouse_location, ui::EventTimeForNow(), | 2386 ui::ET_MOUSE_PRESSED, mouse_location, mouse_location, |
| 2373 ui::EF_LEFT_MOUSE_BUTTON, 0); | 2387 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 2388 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2374 button->OnMousePressed(press_event); | 2389 button->OnMousePressed(press_event); |
| 2375 EXPECT_EQ(views::InkDropState::ACTION_PENDING, | 2390 EXPECT_EQ(views::InkDropState::ACTION_PENDING, |
| 2376 browser_button_ink_drop_->GetTargetInkDropState()); | 2391 browser_button_ink_drop_->GetTargetInkDropState()); |
| 2377 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), | 2392 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), |
| 2378 ElementsAre(views::InkDropState::ACTION_PENDING)); | 2393 ElementsAre(views::InkDropState::ACTION_PENDING)); |
| 2379 | 2394 |
| 2380 mouse_location.Offset(test_api_->GetMinimumDragDistance() * 2, 0); | 2395 mouse_location.Offset(test_api_->GetMinimumDragDistance() * 2, 0); |
| 2381 ui::MouseEvent drag_event_outside(ui::ET_MOUSE_DRAGGED, mouse_location, | 2396 ui::MouseEvent drag_event_outside( |
| 2382 mouse_location, ui::EventTimeForNow(), | 2397 ui::ET_MOUSE_DRAGGED, mouse_location, mouse_location, |
| 2383 ui::EF_LEFT_MOUSE_BUTTON, 0); | 2398 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 2399 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2384 button->OnMouseDragged(drag_event_outside); | 2400 button->OnMouseDragged(drag_event_outside); |
| 2385 EXPECT_EQ(views::InkDropState::HIDDEN, | 2401 EXPECT_EQ(views::InkDropState::HIDDEN, |
| 2386 browser_button_ink_drop_->GetTargetInkDropState()); | 2402 browser_button_ink_drop_->GetTargetInkDropState()); |
| 2387 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), | 2403 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), |
| 2388 ElementsAre(views::InkDropState::HIDDEN)); | 2404 ElementsAre(views::InkDropState::HIDDEN)); |
| 2389 | 2405 |
| 2390 mouse_location.Offset(-test_api_->GetMinimumDragDistance() * 2, 0); | 2406 mouse_location.Offset(-test_api_->GetMinimumDragDistance() * 2, 0); |
| 2391 ui::MouseEvent drag_event_inside(ui::ET_MOUSE_DRAGGED, mouse_location, | 2407 ui::MouseEvent drag_event_inside( |
| 2392 mouse_location, ui::EventTimeForNow(), | 2408 ui::ET_MOUSE_DRAGGED, mouse_location, mouse_location, |
| 2393 ui::EF_LEFT_MOUSE_BUTTON, 0); | 2409 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 2410 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2394 button->OnMouseDragged(drag_event_inside); | 2411 button->OnMouseDragged(drag_event_inside); |
| 2395 EXPECT_EQ(views::InkDropState::HIDDEN, | 2412 EXPECT_EQ(views::InkDropState::HIDDEN, |
| 2396 browser_button_ink_drop_->GetTargetInkDropState()); | 2413 browser_button_ink_drop_->GetTargetInkDropState()); |
| 2397 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), | 2414 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), |
| 2398 IsEmpty()); | 2415 IsEmpty()); |
| 2399 | 2416 |
| 2400 ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, mouse_location, | 2417 ui::MouseEvent release_event( |
| 2401 mouse_location, ui::EventTimeForNow(), | 2418 ui::ET_MOUSE_RELEASED, mouse_location, mouse_location, |
| 2402 ui::EF_LEFT_MOUSE_BUTTON, 0); | 2419 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 2420 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2403 button->OnMouseReleased(release_event); | 2421 button->OnMouseReleased(release_event); |
| 2404 EXPECT_EQ(views::InkDropState::HIDDEN, | 2422 EXPECT_EQ(views::InkDropState::HIDDEN, |
| 2405 browser_button_ink_drop_->GetTargetInkDropState()); | 2423 browser_button_ink_drop_->GetTargetInkDropState()); |
| 2406 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), | 2424 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), |
| 2407 IsEmpty()); | 2425 IsEmpty()); |
| 2408 } | 2426 } |
| 2409 | 2427 |
| 2410 // Tests that clicking on a shelf item that shows an app list menu transitions | 2428 // Tests that clicking on a shelf item that shows an app list menu transitions |
| 2411 // ink drop state correctly. | 2429 // ink drop state correctly. |
| 2412 TEST_F(ShelfViewInkDropTest, ShelfButtonWithMenuPressRelease) { | 2430 TEST_F(ShelfViewInkDropTest, ShelfButtonWithMenuPressRelease) { |
| 2413 InitBrowserButtonInkDrop(); | 2431 InitBrowserButtonInkDrop(); |
| 2414 | 2432 |
| 2415 // Set a delegate for the shelf item that returns an app list menu. | 2433 // Set a delegate for the shelf item that returns an app list menu. |
| 2416 ShelfID browser_shelf_id = model_->items()[browser_index_].id; | 2434 ShelfID browser_shelf_id = model_->items()[browser_index_].id; |
| 2417 model_->SetShelfItemDelegate(browser_shelf_id, | 2435 model_->SetShelfItemDelegate(browser_shelf_id, |
| 2418 base::MakeUnique<ListMenuShelfItemDelegate>()); | 2436 base::MakeUnique<ListMenuShelfItemDelegate>()); |
| 2419 | 2437 |
| 2420 views::CustomButton* button = browser_button_; | 2438 views::CustomButton* button = browser_button_; |
| 2421 gfx::Point mouse_location = button->GetLocalBounds().CenterPoint(); | 2439 gfx::Point mouse_location = button->GetLocalBounds().CenterPoint(); |
| 2422 | 2440 |
| 2423 ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, mouse_location, | 2441 ui::MouseEvent press_event( |
| 2424 mouse_location, ui::EventTimeForNow(), | 2442 ui::ET_MOUSE_PRESSED, mouse_location, mouse_location, |
| 2425 ui::EF_LEFT_MOUSE_BUTTON, 0); | 2443 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 2444 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2426 button->OnMousePressed(press_event); | 2445 button->OnMousePressed(press_event); |
| 2427 EXPECT_EQ(views::InkDropState::ACTION_PENDING, | 2446 EXPECT_EQ(views::InkDropState::ACTION_PENDING, |
| 2428 browser_button_ink_drop_->GetTargetInkDropState()); | 2447 browser_button_ink_drop_->GetTargetInkDropState()); |
| 2429 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), | 2448 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), |
| 2430 ElementsAre(views::InkDropState::ACTION_PENDING)); | 2449 ElementsAre(views::InkDropState::ACTION_PENDING)); |
| 2431 | 2450 |
| 2432 // Mouse release will spawn a menu which we will then close. | 2451 // Mouse release will spawn a menu which we will then close. |
| 2433 ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, mouse_location, | 2452 ui::MouseEvent release_event( |
| 2434 mouse_location, ui::EventTimeForNow(), | 2453 ui::ET_MOUSE_RELEASED, mouse_location, mouse_location, |
| 2435 ui::EF_LEFT_MOUSE_BUTTON, 0); | 2454 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, 0, |
| 2455 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2436 button->OnMouseReleased(release_event); | 2456 button->OnMouseReleased(release_event); |
| 2437 test_api_->CloseMenu(); | 2457 test_api_->CloseMenu(); |
| 2438 EXPECT_EQ(views::InkDropState::HIDDEN, | 2458 EXPECT_EQ(views::InkDropState::HIDDEN, |
| 2439 browser_button_ink_drop_->GetTargetInkDropState()); | 2459 browser_button_ink_drop_->GetTargetInkDropState()); |
| 2440 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), | 2460 EXPECT_THAT(browser_button_ink_drop_->GetAndResetRequestedStates(), |
| 2441 ElementsAre(views::InkDropState::ACTIVATED, | 2461 ElementsAre(views::InkDropState::ACTIVATED, |
| 2442 views::InkDropState::DEACTIVATED)); | 2462 views::InkDropState::DEACTIVATED)); |
| 2443 } | 2463 } |
| 2444 | 2464 |
| 2445 namespace { | 2465 namespace { |
| (...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2989 EXPECT_EQ(views::InkDropState::ACTIVATED, | 3009 EXPECT_EQ(views::InkDropState::ACTIVATED, |
| 2990 overflow_button_ink_drop_->GetTargetInkDropState()); | 3010 overflow_button_ink_drop_->GetTargetInkDropState()); |
| 2991 EXPECT_THAT(overflow_button_ink_drop_->GetAndResetRequestedStates(), | 3011 EXPECT_THAT(overflow_button_ink_drop_->GetAndResetRequestedStates(), |
| 2992 IsEmpty()); | 3012 IsEmpty()); |
| 2993 | 3013 |
| 2994 ASSERT_TRUE(test_api_->IsShowingOverflowBubble()); | 3014 ASSERT_TRUE(test_api_->IsShowingOverflowBubble()); |
| 2995 } | 3015 } |
| 2996 | 3016 |
| 2997 } // namespace test | 3017 } // namespace test |
| 2998 } // namespace ash | 3018 } // namespace ash |
| OLD | NEW |