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 671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
682 } | 682 } |
683 | 683 |
684 void ReplaceShelfDelegate() { | 684 void ReplaceShelfDelegate() { |
685 // Clear the value first to avoid TestShelfDelegate's singleton check. | 685 // Clear the value first to avoid TestShelfDelegate's singleton check. |
686 test::ShellTestApi().SetShelfDelegate(nullptr); | 686 test::ShellTestApi().SetShelfDelegate(nullptr); |
687 shelf_delegate_ = new TestShelfDelegateForShelfView(); | 687 shelf_delegate_ = new TestShelfDelegateForShelfView(); |
688 test_api_->SetShelfDelegate(shelf_delegate_); | 688 test_api_->SetShelfDelegate(shelf_delegate_); |
689 test::ShellTestApi().SetShelfDelegate(base::WrapUnique(shelf_delegate_)); | 689 test::ShellTestApi().SetShelfDelegate(base::WrapUnique(shelf_delegate_)); |
690 } | 690 } |
691 | 691 |
692 // Returns the center coordinates for a button. Helper function for an event | |
693 // generator. | |
694 gfx::Point GetButtonCenter(ShelfID button_id) { | |
695 return GetButtonCenter( | |
696 test_api_->GetButton(model_->ItemIndexByID(button_id))); | |
697 } | |
698 | |
699 gfx::Point GetButtonCenter(ShelfButton* button) { | |
700 return button->GetBoundsInScreen().CenterPoint(); | |
701 } | |
702 | |
692 ShelfModel* model_; | 703 ShelfModel* model_; |
693 ShelfView* shelf_view_; | 704 ShelfView* shelf_view_; |
694 int browser_index_; | 705 int browser_index_; |
695 | 706 |
696 // Owned by ash::WmShell. | 707 // Owned by ash::WmShell. |
697 TestShelfDelegateForShelfView* shelf_delegate_; | 708 TestShelfDelegateForShelfView* shelf_delegate_; |
698 | 709 |
699 std::unique_ptr<ShelfViewTestAPI> test_api_; | 710 std::unique_ptr<ShelfViewTestAPI> test_api_; |
700 | 711 |
701 private: | 712 private: |
(...skipping 1123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1825 selection_tracker->set_item_selected_action(SHELF_ACTION_WINDOW_MINIMIZED); | 1836 selection_tracker->set_item_selected_action(SHELF_ACTION_WINDOW_MINIMIZED); |
1826 SimulateClick(browser_index_); | 1837 SimulateClick(browser_index_); |
1827 | 1838 |
1828 selection_tracker->set_item_selected_action(SHELF_ACTION_WINDOW_ACTIVATED); | 1839 selection_tracker->set_item_selected_action(SHELF_ACTION_WINDOW_ACTIVATED); |
1829 SimulateClick(browser_index_); | 1840 SimulateClick(browser_index_); |
1830 | 1841 |
1831 histogram_tester.ExpectTotalCount( | 1842 histogram_tester.ExpectTotalCount( |
1832 kTimeBetweenWindowMinimizedAndActivatedActionsHistogramName, 1); | 1843 kTimeBetweenWindowMinimizedAndActivatedActionsHistogramName, 1); |
1833 } | 1844 } |
1834 | 1845 |
1846 TEST_F(ShelfViewTest, TestHideOverflow) { | |
1847 // Use an event generator instead of SimulateClick because the overflow bubble | |
1848 // is a PointerWatcher and gets the events directly. | |
1849 ui::test::EventGenerator& generator = GetEventGenerator(); | |
1850 | |
1851 // Add one app (which is on the main shelf) and then add buttons until | |
1852 // overflow. Add two more apps (which are on the overflow shelf). | |
1853 ShelfID first_app_id = AddAppShortcut(); | |
1854 AddButtonsUntilOverflow(); | |
1855 ShelfID overflow_app_id1 = AddAppShortcut(); | |
1856 ShelfID overflow_app_id2 = AddAppShortcut(); | |
1857 | |
1858 // Verify that by clicking anywhere outside the shelf and overflow bubble, the | |
1859 // overflow bubble will close if it were open. | |
1860 EXPECT_FALSE(test_api_->IsShowingOverflowBubble()); | |
1861 test_api_->ShowOverflowBubble(); | |
1862 const gfx::Point kPointNotOnShelfOrOverflow = gfx::Point(0, 0); | |
msw
2017/04/06 21:57:50
Remove this constant and skip set_current_location
sammiequon
2017/04/06 23:03:11
Done.
| |
1863 | |
1864 // Make sure the point we chose is not on the shelf or its overflow bubble. | |
1865 ASSERT_FALSE(test_api_->shelf_view()->GetBoundsInScreen().Contains( | |
1866 kPointNotOnShelfOrOverflow)); | |
1867 ASSERT_FALSE( | |
1868 test_api_->overflow_bubble()->shelf_view()->GetBoundsInScreen().Contains( | |
1869 kPointNotOnShelfOrOverflow)); | |
1870 generator.set_current_location(kPointNotOnShelfOrOverflow); | |
1871 generator.ClickLeftButton(); | |
1872 EXPECT_FALSE(test_api_->IsShowingOverflowBubble()); | |
1873 | |
1874 // Verify that by clicking a app which is on the main shelf while the overflow | |
1875 // bubble is opened, the overflow bubble will close. | |
1876 EXPECT_FALSE(test_api_->IsShowingOverflowBubble()); | |
1877 test_api_->ShowOverflowBubble(); | |
1878 generator.set_current_location(GetButtonCenter(first_app_id)); | |
1879 generator.ClickLeftButton(); | |
1880 EXPECT_FALSE(test_api_->IsShowingOverflowBubble()); | |
1881 | |
1882 // Verify that by clicking a app which is on the overflow shelf, the overflow | |
1883 // bubble will close. | |
1884 EXPECT_FALSE(test_api_->IsShowingOverflowBubble()); | |
1885 test_api_->ShowOverflowBubble(); | |
1886 ShelfViewTestAPI test_api_for_overflow( | |
1887 test_api_->overflow_bubble()->shelf_view()); | |
1888 ShelfButton* button_on_overflow_shelf = | |
1889 test_api_for_overflow.GetButton(model_->ItemIndexByID(overflow_app_id2)); | |
1890 generator.set_current_location(GetButtonCenter(button_on_overflow_shelf)); | |
1891 generator.ClickLeftButton(); | |
1892 EXPECT_FALSE(test_api_->IsShowingOverflowBubble()); | |
1893 | |
1894 // Verify dragging apps on the overflow shelf does not close the overflow | |
1895 // bubble. | |
1896 EXPECT_FALSE(test_api_->IsShowingOverflowBubble()); | |
1897 test_api_->ShowOverflowBubble(); | |
1898 ShelfViewTestAPI test_api_for_overflow2( | |
msw
2017/04/06 21:57:50
optional nit: |test_api_for_overflow1|
sammiequon
2017/04/06 23:03:11
Done.
| |
1899 test_api_->overflow_bubble()->shelf_view()); | |
1900 ShelfButton* button_on_overflow_shelf1 = | |
1901 test_api_for_overflow2.GetButton(model_->ItemIndexByID(overflow_app_id1)); | |
1902 ShelfButton* button_on_overflow_shelf2 = | |
1903 test_api_for_overflow2.GetButton(model_->ItemIndexByID(overflow_app_id2)); | |
1904 generator.set_current_location(GetButtonCenter(button_on_overflow_shelf1)); | |
1905 generator.DragMouseTo(GetButtonCenter(button_on_overflow_shelf2)); | |
1906 EXPECT_TRUE(test_api_->IsShowingOverflowBubble()); | |
1907 } | |
1908 | |
1835 class ShelfViewVisibleBoundsTest : public ShelfViewTest, | 1909 class ShelfViewVisibleBoundsTest : public ShelfViewTest, |
1836 public testing::WithParamInterface<bool> { | 1910 public testing::WithParamInterface<bool> { |
1837 public: | 1911 public: |
1838 ShelfViewVisibleBoundsTest() : text_direction_change_(GetParam()) {} | 1912 ShelfViewVisibleBoundsTest() : text_direction_change_(GetParam()) {} |
1839 | 1913 |
1840 void CheckAllItemsAreInBounds() { | 1914 void CheckAllItemsAreInBounds() { |
1841 gfx::Rect visible_bounds = shelf_view_->GetVisibleItemsBoundsInScreen(); | 1915 gfx::Rect visible_bounds = shelf_view_->GetVisibleItemsBoundsInScreen(); |
1842 gfx::Rect shelf_bounds = shelf_view_->GetBoundsInScreen(); | 1916 gfx::Rect shelf_bounds = shelf_view_->GetBoundsInScreen(); |
1843 EXPECT_TRUE(shelf_bounds.Contains(visible_bounds)); | 1917 EXPECT_TRUE(shelf_bounds.Contains(visible_bounds)); |
1844 for (int i = 0; i < test_api_->GetButtonCount(); ++i) | 1918 for (int i = 0; i < test_api_->GetButtonCount(); ++i) |
(...skipping 1202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3047 EXPECT_EQ(views::InkDropState::ACTIVATED, | 3121 EXPECT_EQ(views::InkDropState::ACTIVATED, |
3048 overflow_button_ink_drop_->GetTargetInkDropState()); | 3122 overflow_button_ink_drop_->GetTargetInkDropState()); |
3049 EXPECT_THAT(overflow_button_ink_drop_->GetAndResetRequestedStates(), | 3123 EXPECT_THAT(overflow_button_ink_drop_->GetAndResetRequestedStates(), |
3050 IsEmpty()); | 3124 IsEmpty()); |
3051 | 3125 |
3052 ASSERT_TRUE(test_api_->IsShowingOverflowBubble()); | 3126 ASSERT_TRUE(test_api_->IsShowingOverflowBubble()); |
3053 } | 3127 } |
3054 | 3128 |
3055 } // namespace test | 3129 } // namespace test |
3056 } // namespace ash | 3130 } // namespace ash |
OLD | NEW |