Chromium Code Reviews| 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 30 matching lines...) Expand all Loading... | |
| 41 #include "base/macros.h" | 41 #include "base/macros.h" |
| 42 #include "base/memory/ptr_util.h" | 42 #include "base/memory/ptr_util.h" |
| 43 #include "base/run_loop.h" | 43 #include "base/run_loop.h" |
| 44 #include "base/strings/string_number_conversions.h" | 44 #include "base/strings/string_number_conversions.h" |
| 45 #include "base/strings/utf_string_conversions.h" | 45 #include "base/strings/utf_string_conversions.h" |
| 46 #include "base/test/histogram_tester.h" | 46 #include "base/test/histogram_tester.h" |
| 47 #include "base/test/scoped_mock_time_message_loop_task_runner.h" | 47 #include "base/test/scoped_mock_time_message_loop_task_runner.h" |
| 48 #include "base/test/user_action_tester.h" | 48 #include "base/test/user_action_tester.h" |
| 49 #include "base/time/time.h" | 49 #include "base/time/time.h" |
| 50 #include "testing/gmock/include/gmock/gmock.h" | 50 #include "testing/gmock/include/gmock/gmock.h" |
| 51 #include "ui/app_list/presenter/app_list_presenter.h" | 51 #include "ui/app_list/presenter/app_list.h" |
| 52 #include "ui/aura/test/aura_test_base.h" | 52 #include "ui/aura/test/aura_test_base.h" |
| 53 #include "ui/aura/window.h" | 53 #include "ui/aura/window.h" |
| 54 #include "ui/aura/window_event_dispatcher.h" | 54 #include "ui/aura/window_event_dispatcher.h" |
| 55 #include "ui/compositor/layer.h" | 55 #include "ui/compositor/layer.h" |
| 56 #include "ui/events/event.h" | 56 #include "ui/events/event.h" |
| 57 #include "ui/events/event_constants.h" | 57 #include "ui/events/event_constants.h" |
| 58 #include "ui/events/event_utils.h" | 58 #include "ui/events/event_utils.h" |
| 59 #include "ui/events/test/event_generator.h" | 59 #include "ui/events/test/event_generator.h" |
| 60 #include "ui/gfx/geometry/point.h" | 60 #include "ui/gfx/geometry/point.h" |
| 61 #include "ui/views/animation/ink_drop_impl.h" | 61 #include "ui/views/animation/ink_drop_impl.h" |
| (...skipping 1401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1463 gfx::Point(all_area.right(), all_area.y()))); | 1463 gfx::Point(all_area.right(), all_area.y()))); |
| 1464 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( | 1464 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( |
| 1465 gfx::Point(all_area.x() - 1, all_area.y()))); | 1465 gfx::Point(all_area.x() - 1, all_area.y()))); |
| 1466 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( | 1466 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( |
| 1467 gfx::Point(all_area.x(), all_area.y() - 1))); | 1467 gfx::Point(all_area.x(), all_area.y() - 1))); |
| 1468 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( | 1468 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( |
| 1469 gfx::Point(all_area.x(), all_area.bottom()))); | 1469 gfx::Point(all_area.x(), all_area.bottom()))); |
| 1470 } | 1470 } |
| 1471 | 1471 |
| 1472 TEST_F(ShelfViewTest, ShouldHideTooltipWithAppListWindowTest) { | 1472 TEST_F(ShelfViewTest, ShouldHideTooltipWithAppListWindowTest) { |
| 1473 WmShell::Get()->ShowAppList(); | 1473 // Trigger mock notifications that the app list was shown. |
| 1474 ASSERT_TRUE(WmShell::Get()->GetAppListTargetVisibility()); | 1474 WmShell::Get()->app_list()->OnTargetVisibilityChanged(true); |
| 1475 WmShell::Get()->app_list()->OnVisibilityChanged(true); | |
| 1476 AppListButton* app_list_button = shelf_view_->GetAppListButton(); | |
| 1477 app_list_button->OnAppListShown(); | |
|
mfomitchev
2016/12/22 18:27:11
I am not sure if we actually have any tests that v
msw
2016/12/23 03:59:34
I added an integration interactive ui test to chec
mfomitchev
2016/12/23 16:49:27
Sorry, I don't think this actually tests that OnAp
msw
2016/12/23 17:34:27
Done. (in the new AppListTest.PressAppListButtonTo
| |
| 1475 | 1478 |
| 1476 // The tooltip shouldn't hide if the mouse is on normal buttons. | 1479 // The tooltip shouldn't hide if the mouse is on normal buttons. |
| 1477 for (int i = 1; i < test_api_->GetButtonCount(); i++) { | 1480 for (int i = 1; i < test_api_->GetButtonCount(); i++) { |
| 1478 ShelfButton* button = test_api_->GetButton(i); | 1481 ShelfButton* button = test_api_->GetButton(i); |
| 1479 if (!button) | 1482 if (!button) |
| 1480 continue; | 1483 continue; |
| 1481 | 1484 |
| 1482 EXPECT_FALSE(shelf_view_->ShouldHideTooltip( | 1485 EXPECT_FALSE(shelf_view_->ShouldHideTooltip( |
| 1483 button->GetMirroredBounds().CenterPoint())) | 1486 button->GetMirroredBounds().CenterPoint())) |
| 1484 << "ShelfView tries to hide on button " << i; | 1487 << "ShelfView tries to hide on button " << i; |
| 1485 } | 1488 } |
| 1486 | 1489 |
| 1487 // The tooltip should hide on the app-list button. | 1490 // The tooltip should hide on the app list button if the app list is visible. |
| 1488 AppListButton* app_list_button = shelf_view_->GetAppListButton(); | |
| 1489 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( | 1491 EXPECT_TRUE(shelf_view_->ShouldHideTooltip( |
| 1490 app_list_button->GetMirroredBounds().CenterPoint())); | 1492 app_list_button->GetMirroredBounds().CenterPoint())); |
| 1491 } | 1493 } |
| 1492 | 1494 |
| 1493 // Test that by moving the mouse cursor off the button onto the bubble it closes | 1495 // Test that by moving the mouse cursor off the button onto the bubble it closes |
| 1494 // the bubble. | 1496 // the bubble. |
| 1495 TEST_F(ShelfViewTest, ShouldHideTooltipWhenHoveringOnTooltip) { | 1497 TEST_F(ShelfViewTest, ShouldHideTooltipWhenHoveringOnTooltip) { |
| 1496 ShelfTooltipManager* tooltip_manager = test_api_->tooltip_manager(); | 1498 ShelfTooltipManager* tooltip_manager = test_api_->tooltip_manager(); |
| 1497 tooltip_manager->set_timer_delay_for_test(0); | 1499 tooltip_manager->set_timer_delay_for_test(0); |
| 1498 ui::test::EventGenerator& generator = GetEventGenerator(); | 1500 ui::test::EventGenerator& generator = GetEventGenerator(); |
| (...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2045 | 2047 |
| 2046 private: | 2048 private: |
| 2047 // TestShelfItemDelegate: | 2049 // TestShelfItemDelegate: |
| 2048 ShelfMenuModel* CreateApplicationMenu(int event_flags) override { | 2050 ShelfMenuModel* CreateApplicationMenu(int event_flags) override { |
| 2049 return new TestShelfMenuModel; | 2051 return new TestShelfMenuModel; |
| 2050 } | 2052 } |
| 2051 | 2053 |
| 2052 DISALLOW_COPY_AND_ASSIGN(ListMenuShelfItemDelegate); | 2054 DISALLOW_COPY_AND_ASSIGN(ListMenuShelfItemDelegate); |
| 2053 }; | 2055 }; |
| 2054 | 2056 |
| 2055 // A test implementation for AppListPresenter that does not change visibility | |
| 2056 // state immediately to simulate an in-flight animation. Calling | |
| 2057 // FinishVisibilityChange() will change the visibility to the requested one, | |
| 2058 // simulating end of the animation. Similar to the actual AppListPresenter, this | |
| 2059 // class toggles app list visibility based on the actual visibility rather than | |
| 2060 // the target visibility (which might be different due to in-flight animation). | |
| 2061 class TestAppListPresenter : public app_list::AppListPresenter { | |
| 2062 public: | |
| 2063 TestAppListPresenter() {} | |
| 2064 ~TestAppListPresenter() override {} | |
| 2065 | |
| 2066 void FinishVisibilityChange() { is_visible_ = target_visibility_; } | |
| 2067 | |
| 2068 // app_list::AppListPresenter: | |
| 2069 void Show(int64_t display_id) override { target_visibility_ = true; } | |
| 2070 void Dismiss() override { target_visibility_ = false; } | |
| 2071 void ToggleAppList(int64_t display_id) override { | |
| 2072 if (is_visible_) | |
| 2073 Dismiss(); | |
| 2074 else | |
| 2075 Show(display_id); | |
| 2076 } | |
| 2077 bool IsVisible() const override { return is_visible_; } | |
| 2078 bool GetTargetVisibility() const override { return target_visibility_; } | |
| 2079 | |
| 2080 private: | |
| 2081 bool is_visible_ = false; | |
| 2082 bool target_visibility_ = false; | |
| 2083 | |
| 2084 DISALLOW_COPY_AND_ASSIGN(TestAppListPresenter); | |
| 2085 }; | |
| 2086 | |
| 2087 // A test ShellDelegate implementation that returns a TestAppListPresenter as | |
| 2088 // the app list presenter. | |
| 2089 class TestAppListShellDelegate : public TestShellDelegate { | |
| 2090 public: | |
| 2091 TestAppListShellDelegate() | |
| 2092 : app_list_presenter_(new TestAppListPresenter()) {} | |
| 2093 ~TestAppListShellDelegate() override {} | |
| 2094 | |
| 2095 TestAppListPresenter* app_list_presenter() const { | |
| 2096 return app_list_presenter_.get(); | |
| 2097 } | |
| 2098 | |
| 2099 // TestShellDelegate: | |
| 2100 app_list::AppListPresenter* GetAppListPresenter() override { | |
| 2101 return app_list_presenter(); | |
| 2102 } | |
| 2103 | |
| 2104 private: | |
| 2105 std::unique_ptr<TestAppListPresenter> app_list_presenter_; | |
| 2106 | |
| 2107 DISALLOW_COPY_AND_ASSIGN(TestAppListShellDelegate); | |
| 2108 }; | |
| 2109 | |
| 2110 } // namespace | 2057 } // namespace |
| 2111 | 2058 |
| 2112 // Test fixture that forces material design mode in order to test ink drop | 2059 // Test fixture that forces material design mode in order to test ink drop |
| 2113 // ripples on shelf. | 2060 // ripples on shelf. |
| 2114 class ShelfViewInkDropTest : public ShelfViewTest { | 2061 class ShelfViewInkDropTest : public ShelfViewTest { |
| 2115 public: | 2062 public: |
| 2116 ShelfViewInkDropTest() {} | 2063 ShelfViewInkDropTest() {} |
| 2117 ~ShelfViewInkDropTest() override {} | 2064 ~ShelfViewInkDropTest() override {} |
| 2118 | 2065 |
| 2119 void SetUp() override { | 2066 void SetUp() override { |
| 2120 ash_test_helper()->set_test_shell_delegate(CreateTestShellDelegate()); | 2067 ash_test_helper()->set_test_shell_delegate(CreateTestShellDelegate()); |
| 2121 | 2068 |
| 2122 set_material_mode(ash::MaterialDesignController::MATERIAL_EXPERIMENTAL); | 2069 set_material_mode(ash::MaterialDesignController::MATERIAL_EXPERIMENTAL); |
| 2123 | 2070 |
| 2124 ShelfViewTest::SetUp(); | 2071 ShelfViewTest::SetUp(); |
| 2125 } | 2072 } |
| 2126 | 2073 |
| 2127 protected: | 2074 protected: |
| 2128 // Gives subclasses a chance to return a custom test shell delegate to install | 2075 // Gives subclasses a chance to return a custom test shell delegate to install |
| 2129 // before calling base class's SetUp(). Shell will take ownership of the | 2076 // before calling base class's SetUp(). Shell will take ownership of the |
| 2130 // returned object. | 2077 // returned object. |
| 2131 virtual TestShellDelegate* CreateTestShellDelegate() { | 2078 virtual TestShellDelegate* CreateTestShellDelegate() { |
| 2132 shell_delegate_ = new TestAppListShellDelegate; | 2079 return new TestShellDelegate; |
| 2133 return shell_delegate_; | |
| 2134 } | 2080 } |
| 2135 | 2081 |
| 2136 void InitAppListButtonInkDrop() { | 2082 void InitAppListButtonInkDrop() { |
| 2137 app_list_button_ = shelf_view_->GetAppListButton(); | 2083 app_list_button_ = shelf_view_->GetAppListButton(); |
| 2138 | 2084 |
| 2139 auto app_list_button_ink_drop = | 2085 auto app_list_button_ink_drop = |
| 2140 base::MakeUnique<InkDropSpy>(base::MakeUnique<views::InkDropImpl>( | 2086 base::MakeUnique<InkDropSpy>(base::MakeUnique<views::InkDropImpl>( |
| 2141 app_list_button_, app_list_button_->size())); | 2087 app_list_button_, app_list_button_->size())); |
| 2142 app_list_button_ink_drop_ = app_list_button_ink_drop.get(); | 2088 app_list_button_ink_drop_ = app_list_button_ink_drop.get(); |
| 2143 views::test::InkDropHostViewTestApi(app_list_button_) | 2089 views::test::InkDropHostViewTestApi(app_list_button_) |
| 2144 .SetInkDrop(std::move(app_list_button_ink_drop), false); | 2090 .SetInkDrop(std::move(app_list_button_ink_drop), false); |
| 2145 } | 2091 } |
| 2146 | 2092 |
| 2147 void InitBrowserButtonInkDrop() { | 2093 void InitBrowserButtonInkDrop() { |
| 2148 browser_button_ = test_api_->GetButton(browser_index_); | 2094 browser_button_ = test_api_->GetButton(browser_index_); |
| 2149 | 2095 |
| 2150 auto browser_button_ink_drop = | 2096 auto browser_button_ink_drop = |
| 2151 base::MakeUnique<InkDropSpy>(base::MakeUnique<views::InkDropImpl>( | 2097 base::MakeUnique<InkDropSpy>(base::MakeUnique<views::InkDropImpl>( |
| 2152 browser_button_, browser_button_->size())); | 2098 browser_button_, browser_button_->size())); |
| 2153 browser_button_ink_drop_ = browser_button_ink_drop.get(); | 2099 browser_button_ink_drop_ = browser_button_ink_drop.get(); |
| 2154 views::test::InkDropHostViewTestApi(browser_button_) | 2100 views::test::InkDropHostViewTestApi(browser_button_) |
| 2155 .SetInkDrop(std::move(browser_button_ink_drop)); | 2101 .SetInkDrop(std::move(browser_button_ink_drop)); |
| 2156 } | 2102 } |
| 2157 | 2103 |
| 2158 void ShowAppList() { | 2104 void ShowAppList() { |
| 2159 DCHECK(shelf_delegate_); | 2105 // Trigger a mock notification that the app list was shown. |
| 2160 shell_delegate_->app_list_presenter()->Show(0); | 2106 WmShell::Get()->app_list()->OnTargetVisibilityChanged(true); |
| 2161 // Similar to real AppListPresenter, notify button that the app list is | |
| 2162 // shown. | |
| 2163 app_list_button_->OnAppListShown(); | 2107 app_list_button_->OnAppListShown(); |
| 2164 } | 2108 } |
| 2165 | 2109 |
| 2166 void DismissAppList() { | 2110 void DismissAppList() { |
| 2167 DCHECK(shelf_delegate_); | 2111 // Trigger a mock notification that the app list was dismissed. |
| 2168 shell_delegate_->app_list_presenter()->Dismiss(); | 2112 WmShell::Get()->app_list()->OnTargetVisibilityChanged(false); |
| 2169 // Similar to real AppListPresenter, notify button that the app list is | |
| 2170 // dismissed. | |
| 2171 app_list_button_->OnAppListDismissed(); | 2113 app_list_button_->OnAppListDismissed(); |
| 2172 } | 2114 } |
| 2173 | 2115 |
| 2174 void FinishAppListVisibilityChange() { | 2116 void FinishAppListVisibilityChange() { |
| 2175 DCHECK(shelf_delegate_); | 2117 // Trigger a mock notification that the app list finished animating. |
| 2176 shell_delegate_->app_list_presenter()->FinishVisibilityChange(); | 2118 app_list::AppList* app_list = WmShell::Get()->app_list(); |
| 2119 app_list->OnVisibilityChanged(app_list->GetTargetVisibility()); | |
| 2177 } | 2120 } |
| 2178 | 2121 |
| 2179 TestAppListShellDelegate* shell_delegate_ = nullptr; // Owned by Shell. | |
| 2180 | |
| 2181 AppListButton* app_list_button_ = nullptr; | 2122 AppListButton* app_list_button_ = nullptr; |
| 2182 InkDropSpy* app_list_button_ink_drop_ = nullptr; | 2123 InkDropSpy* app_list_button_ink_drop_ = nullptr; |
| 2183 ShelfButton* browser_button_ = nullptr; | 2124 ShelfButton* browser_button_ = nullptr; |
| 2184 InkDropSpy* browser_button_ink_drop_ = nullptr; | 2125 InkDropSpy* browser_button_ink_drop_ = nullptr; |
| 2185 | 2126 |
| 2186 private: | 2127 private: |
| 2187 DISALLOW_COPY_AND_ASSIGN(ShelfViewInkDropTest); | 2128 DISALLOW_COPY_AND_ASSIGN(ShelfViewInkDropTest); |
| 2188 }; | 2129 }; |
| 2189 | 2130 |
| 2190 // Tests that changing visibility of the app list transitions app list button's | 2131 // Tests that changing visibility of the app list transitions app list button's |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 2212 // that mouse drag and mouse release does not affect the ink drop state. | 2153 // that mouse drag and mouse release does not affect the ink drop state. |
| 2213 TEST_F(ShelfViewInkDropTest, AppListButtonMouseEventsWhenHidden) { | 2154 TEST_F(ShelfViewInkDropTest, AppListButtonMouseEventsWhenHidden) { |
| 2214 InitAppListButtonInkDrop(); | 2155 InitAppListButtonInkDrop(); |
| 2215 | 2156 |
| 2216 ui::test::EventGenerator& generator = GetEventGenerator(); | 2157 ui::test::EventGenerator& generator = GetEventGenerator(); |
| 2217 generator.MoveMouseTo(app_list_button_->GetBoundsInScreen().CenterPoint()); | 2158 generator.MoveMouseTo(app_list_button_->GetBoundsInScreen().CenterPoint()); |
| 2218 | 2159 |
| 2219 // Mouse press on the button, which shows the app list, should end up in the | 2160 // Mouse press on the button, which shows the app list, should end up in the |
| 2220 // activated state. | 2161 // activated state. |
| 2221 generator.PressLeftButton(); | 2162 generator.PressLeftButton(); |
| 2222 // Similar to real AppListPresenter, notify button that the app list is shown. | 2163 // Trigger a mock button notification that the app list was shown. |
| 2223 app_list_button_->OnAppListShown(); | 2164 app_list_button_->OnAppListShown(); |
| 2224 FinishAppListVisibilityChange(); | 2165 FinishAppListVisibilityChange(); |
| 2225 EXPECT_EQ(views::InkDropState::ACTIVATED, | 2166 EXPECT_EQ(views::InkDropState::ACTIVATED, |
| 2226 app_list_button_ink_drop_->GetTargetInkDropState()); | 2167 app_list_button_ink_drop_->GetTargetInkDropState()); |
| 2227 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), | 2168 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), |
| 2228 ElementsAre(views::InkDropState::ACTION_PENDING, | 2169 ElementsAre(views::InkDropState::ACTION_PENDING, |
| 2229 views::InkDropState::ACTIVATED)); | 2170 views::InkDropState::ACTIVATED)); |
| 2230 | 2171 |
| 2231 // Dragging mouse out and back and releasing the button should not change the | 2172 // Dragging mouse out and back and releasing the button should not change the |
| 2232 // ink drop state. | 2173 // ink drop state. |
| 2233 generator.MoveMouseBy(app_list_button_->width(), 0); | 2174 generator.MoveMouseBy(app_list_button_->width(), 0); |
| 2234 generator.MoveMouseBy(-app_list_button_->width(), 0); | 2175 generator.MoveMouseBy(-app_list_button_->width(), 0); |
| 2235 generator.ReleaseLeftButton(); | 2176 generator.ReleaseLeftButton(); |
| 2236 EXPECT_EQ(views::InkDropState::ACTIVATED, | 2177 EXPECT_EQ(views::InkDropState::ACTIVATED, |
| 2237 app_list_button_ink_drop_->GetTargetInkDropState()); | 2178 app_list_button_ink_drop_->GetTargetInkDropState()); |
| 2238 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), | 2179 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), |
| 2239 IsEmpty()); | 2180 IsEmpty()); |
| 2240 } | 2181 } |
| 2241 | 2182 |
| 2242 // Tests that when the app list is visible, mouse press on the app list button, | 2183 // Tests that when the app list is visible, mouse press on the app list button, |
| 2243 // which dismisses the app list, transitions ink drop states correctly. Also, | 2184 // which dismisses the app list, transitions ink drop states correctly. Also, |
| 2244 // tests that mouse drag and mouse release does not affect the ink drop state. | 2185 // tests that mouse drag and mouse release does not affect the ink drop state. |
| 2245 TEST_F(ShelfViewInkDropTest, AppListButtonMouseEventsWhenVisible) { | 2186 TEST_F(ShelfViewInkDropTest, AppListButtonMouseEventsWhenVisible) { |
| 2246 InitAppListButtonInkDrop(); | 2187 InitAppListButtonInkDrop(); |
| 2247 | 2188 |
| 2248 // Show the app list. | |
| 2249 ShowAppList(); | 2189 ShowAppList(); |
| 2250 FinishAppListVisibilityChange(); | 2190 FinishAppListVisibilityChange(); |
| 2251 EXPECT_EQ(views::InkDropState::ACTIVATED, | 2191 EXPECT_EQ(views::InkDropState::ACTIVATED, |
| 2252 app_list_button_ink_drop_->GetTargetInkDropState()); | 2192 app_list_button_ink_drop_->GetTargetInkDropState()); |
| 2253 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), | 2193 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), |
| 2254 ElementsAre(views::InkDropState::ACTIVATED)); | 2194 ElementsAre(views::InkDropState::ACTIVATED)); |
| 2255 | 2195 |
| 2256 ui::test::EventGenerator& generator = GetEventGenerator(); | 2196 ui::test::EventGenerator& generator = GetEventGenerator(); |
| 2257 generator.MoveMouseTo(app_list_button_->GetBoundsInScreen().CenterPoint()); | 2197 generator.MoveMouseTo(app_list_button_->GetBoundsInScreen().CenterPoint()); |
| 2258 | 2198 |
| 2259 // Mouse press on the button, which dismisses the app list, should end up in | 2199 // Mouse press on the button, which dismisses the app list, should end up in |
| 2260 // the hidden state. | 2200 // the hidden state. |
| 2261 // Dismiss app list similar to pre-target handler in real AppListPresenter. | |
| 2262 DismissAppList(); | 2201 DismissAppList(); |
| 2263 generator.PressLeftButton(); | 2202 generator.PressLeftButton(); |
| 2264 FinishAppListVisibilityChange(); | 2203 FinishAppListVisibilityChange(); |
| 2265 EXPECT_EQ(views::InkDropState::HIDDEN, | 2204 EXPECT_EQ(views::InkDropState::HIDDEN, |
| 2266 app_list_button_ink_drop_->GetTargetInkDropState()); | 2205 app_list_button_ink_drop_->GetTargetInkDropState()); |
| 2267 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), | 2206 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), |
| 2268 ElementsAre(views::InkDropState::DEACTIVATED)); | 2207 ElementsAre(views::InkDropState::DEACTIVATED)); |
| 2269 | 2208 |
| 2270 // Dragging mouse out and back and releasing the button should not change the | 2209 // Dragging mouse out and back and releasing the button should not change the |
| 2271 // ink drop state. | 2210 // ink drop state. |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 2291 // Touch press on the button should end up in the pending state. | 2230 // Touch press on the button should end up in the pending state. |
| 2292 generator.PressTouch(); | 2231 generator.PressTouch(); |
| 2293 EXPECT_EQ(views::InkDropState::ACTION_PENDING, | 2232 EXPECT_EQ(views::InkDropState::ACTION_PENDING, |
| 2294 app_list_button_ink_drop_->GetTargetInkDropState()); | 2233 app_list_button_ink_drop_->GetTargetInkDropState()); |
| 2295 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), | 2234 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), |
| 2296 ElementsAre(views::InkDropState::ACTION_PENDING)); | 2235 ElementsAre(views::InkDropState::ACTION_PENDING)); |
| 2297 | 2236 |
| 2298 // Touch release on the button, which shows the app list, should end up in the | 2237 // Touch release on the button, which shows the app list, should end up in the |
| 2299 // activated state. | 2238 // activated state. |
| 2300 generator.ReleaseTouch(); | 2239 generator.ReleaseTouch(); |
| 2301 // Similar to real AppListPresenter, notify button that the app list is shown. | 2240 // Trigger a mock button notification that the app list was shown. |
| 2302 app_list_button_->OnAppListShown(); | 2241 app_list_button_->OnAppListShown(); |
| 2303 FinishAppListVisibilityChange(); | 2242 FinishAppListVisibilityChange(); |
| 2304 EXPECT_EQ(views::InkDropState::ACTIVATED, | 2243 EXPECT_EQ(views::InkDropState::ACTIVATED, |
| 2305 app_list_button_ink_drop_->GetTargetInkDropState()); | 2244 app_list_button_ink_drop_->GetTargetInkDropState()); |
| 2306 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), | 2245 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), |
| 2307 ElementsAre(views::InkDropState::ACTIVATED)); | 2246 ElementsAre(views::InkDropState::ACTIVATED)); |
| 2308 } | 2247 } |
| 2309 | 2248 |
| 2310 // Tests that when the app list is visible, tapping on the app list button | 2249 // Tests that when the app list is visible, tapping on the app list button |
| 2311 // transitions ink drop states correctly. | 2250 // transitions ink drop states correctly. |
| 2312 TEST_F(ShelfViewInkDropTest, AppListButtonGestureTapWhenVisible) { | 2251 TEST_F(ShelfViewInkDropTest, AppListButtonGestureTapWhenVisible) { |
| 2313 InitAppListButtonInkDrop(); | 2252 InitAppListButtonInkDrop(); |
| 2314 | 2253 |
| 2315 // Show the app list. | |
| 2316 ShowAppList(); | 2254 ShowAppList(); |
| 2317 FinishAppListVisibilityChange(); | 2255 FinishAppListVisibilityChange(); |
| 2318 EXPECT_EQ(views::InkDropState::ACTIVATED, | 2256 EXPECT_EQ(views::InkDropState::ACTIVATED, |
| 2319 app_list_button_ink_drop_->GetTargetInkDropState()); | 2257 app_list_button_ink_drop_->GetTargetInkDropState()); |
| 2320 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), | 2258 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), |
| 2321 ElementsAre(views::InkDropState::ACTIVATED)); | 2259 ElementsAre(views::InkDropState::ACTIVATED)); |
| 2322 | 2260 |
| 2323 ui::test::EventGenerator& generator = GetEventGenerator(); | 2261 ui::test::EventGenerator& generator = GetEventGenerator(); |
| 2324 generator.MoveMouseTo(app_list_button_->GetBoundsInScreen().CenterPoint()); | 2262 generator.MoveMouseTo(app_list_button_->GetBoundsInScreen().CenterPoint()); |
| 2325 | 2263 |
| 2326 // Touch press on the button, which dismisses the app list, should end up in | 2264 // Touch press on the button, which dismisses the app list, should end up in |
| 2327 // the hidden state. | 2265 // the hidden state. |
| 2328 // Dismiss app list similar to pre-target handler in real AppListPresenter. | |
| 2329 DismissAppList(); | 2266 DismissAppList(); |
| 2330 generator.PressTouch(); | 2267 generator.PressTouch(); |
| 2331 EXPECT_EQ(views::InkDropState::HIDDEN, | 2268 EXPECT_EQ(views::InkDropState::HIDDEN, |
| 2332 app_list_button_ink_drop_->GetTargetInkDropState()); | 2269 app_list_button_ink_drop_->GetTargetInkDropState()); |
| 2333 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), | 2270 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), |
| 2334 ElementsAre(views::InkDropState::DEACTIVATED)); | 2271 ElementsAre(views::InkDropState::DEACTIVATED)); |
| 2335 | 2272 |
| 2336 // Touch release on the button should not change the ink drop state. | 2273 // Touch release on the button should not change the ink drop state. |
| 2337 generator.ReleaseTouch(); | 2274 generator.ReleaseTouch(); |
| 2338 FinishAppListVisibilityChange(); | 2275 FinishAppListVisibilityChange(); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2373 app_list_button_ink_drop_->GetTargetInkDropState()); | 2310 app_list_button_ink_drop_->GetTargetInkDropState()); |
| 2374 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), | 2311 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), |
| 2375 IsEmpty()); | 2312 IsEmpty()); |
| 2376 } | 2313 } |
| 2377 | 2314 |
| 2378 // Tests that when the app list is visible, tapping down on the app list button | 2315 // Tests that when the app list is visible, tapping down on the app list button |
| 2379 // and dragging the touch point transitions ink drop states correctly. | 2316 // and dragging the touch point transitions ink drop states correctly. |
| 2380 TEST_F(ShelfViewInkDropTest, AppListButtonGestureTapDragWhenVisible) { | 2317 TEST_F(ShelfViewInkDropTest, AppListButtonGestureTapDragWhenVisible) { |
| 2381 InitAppListButtonInkDrop(); | 2318 InitAppListButtonInkDrop(); |
| 2382 | 2319 |
| 2383 // Show the app list. | |
| 2384 ShowAppList(); | 2320 ShowAppList(); |
| 2385 FinishAppListVisibilityChange(); | 2321 FinishAppListVisibilityChange(); |
| 2386 EXPECT_EQ(views::InkDropState::ACTIVATED, | 2322 EXPECT_EQ(views::InkDropState::ACTIVATED, |
| 2387 app_list_button_ink_drop_->GetTargetInkDropState()); | 2323 app_list_button_ink_drop_->GetTargetInkDropState()); |
| 2388 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), | 2324 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), |
| 2389 ElementsAre(views::InkDropState::ACTIVATED)); | 2325 ElementsAre(views::InkDropState::ACTIVATED)); |
| 2390 | 2326 |
| 2391 ui::test::EventGenerator& generator = GetEventGenerator(); | 2327 ui::test::EventGenerator& generator = GetEventGenerator(); |
| 2392 gfx::Point touch_location = | 2328 gfx::Point touch_location = |
| 2393 app_list_button_->GetBoundsInScreen().CenterPoint(); | 2329 app_list_button_->GetBoundsInScreen().CenterPoint(); |
| 2394 generator.MoveMouseTo(touch_location); | 2330 generator.MoveMouseTo(touch_location); |
| 2395 | 2331 |
| 2396 // Touch press on the button, which dismisses the app list, should end up in | 2332 // Touch press on the button, which dismisses the app list, should end up in |
| 2397 // the hidden state. | 2333 // the hidden state. |
| 2398 // Dismiss app list similar to pre-target handler in real AppListPresenter. | |
| 2399 DismissAppList(); | 2334 DismissAppList(); |
| 2400 generator.PressTouch(); | 2335 generator.PressTouch(); |
| 2401 EXPECT_EQ(views::InkDropState::HIDDEN, | 2336 EXPECT_EQ(views::InkDropState::HIDDEN, |
| 2402 app_list_button_ink_drop_->GetTargetInkDropState()); | 2337 app_list_button_ink_drop_->GetTargetInkDropState()); |
| 2403 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), | 2338 EXPECT_THAT(app_list_button_ink_drop_->GetAndResetRequestedStates(), |
| 2404 ElementsAre(views::InkDropState::DEACTIVATED)); | 2339 ElementsAre(views::InkDropState::DEACTIVATED)); |
| 2405 | 2340 |
| 2406 // Dragging the touch point and releasing should not change the ink drop | 2341 // Dragging the touch point and releasing should not change the ink drop |
| 2407 // state. | 2342 // state. |
| 2408 touch_location.Offset(app_list_button_->width(), 0); | 2343 touch_location.Offset(app_list_button_->width(), 0); |
| (...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3128 EXPECT_THAT(overflow_button_ink_drop_->GetAndResetRequestedStates(), | 3063 EXPECT_THAT(overflow_button_ink_drop_->GetAndResetRequestedStates(), |
| 3129 IsEmpty()); | 3064 IsEmpty()); |
| 3130 | 3065 |
| 3131 ASSERT_TRUE(test_api_->IsShowingOverflowBubble()); | 3066 ASSERT_TRUE(test_api_->IsShowingOverflowBubble()); |
| 3132 } | 3067 } |
| 3133 | 3068 |
| 3134 #endif // !defined(OS_WIN) | 3069 #endif // !defined(OS_WIN) |
| 3135 | 3070 |
| 3136 } // namespace test | 3071 } // namespace test |
| 3137 } // namespace ash | 3072 } // namespace ash |
| OLD | NEW |