Index: ash/wm/app_list_controller_unittest.cc |
diff --git a/ash/wm/app_list_controller_unittest.cc b/ash/wm/app_list_controller_unittest.cc |
index 7b467dfabfe39fe960a74b4e92e60a2b2a29d556..90df0a8c1dca3a0378da382a67b86812d3f14b0a 100644 |
--- a/ash/wm/app_list_controller_unittest.cc |
+++ b/ash/wm/app_list_controller_unittest.cc |
@@ -10,12 +10,19 @@ |
#include "base/command_line.h" |
#include "base/memory/scoped_ptr.h" |
#include "ui/app_list/app_list_switches.h" |
+#include "ui/app_list/views/app_list_view.h" |
#include "ui/aura/test/event_generator.h" |
#include "ui/aura/test/test_windows.h" |
#include "ui/aura/window.h" |
namespace ash { |
+namespace { |
+ |
+const int kMinimalCenteredAppListMargin = 10; |
+ |
+} |
+ |
// The parameter is true to test the centered app list, false for normal. |
// (The test name ends in "/0" for normal, "/1" for centered.) |
class AppListControllerTest : public test::AshTestBase, |
@@ -137,6 +144,33 @@ TEST_P(AppListControllerTest, NonPrimaryDisplay) { |
EXPECT_FALSE(Shell::GetInstance()->GetAppListTargetVisibility()); |
} |
+// Tests opening the app launcher on a tiny display that is too small to contain |
+// it. |
+TEST_P(AppListControllerTest, TinyDisplay) { |
Matt Giuca
2014/05/12 06:34:23
Note: This test fails without CL 283443003 because
varkha
2014/05/13 03:25:31
(Should this test and maybe other tests be disable
Matt Giuca
2014/05/13 04:02:12
Why? This test doesn't use window resizing, it jus
varkha
2014/05/13 04:40:11
Unfortunately this call is a NOP on platforms that
Matt Giuca
2014/05/13 05:31:58
Fair enough. Done.
|
+ // Don't test this for the non-centered app list case; it isn't designed for |
+ // small displays. The most common case of a small display --- when the |
+ // virtual keyboard is open --- switches into the centered app list mode, so |
+ // we just want to run this test in that case. |
+ if (!GetParam()) |
varkha
2014/05/13 03:25:31
Can we wrap this in a self-descriptive method (boo
Matt Giuca
2014/05/13 04:02:12
Done.
|
+ return; |
+ |
+ // Set up a screen with a tiny display (height smaller than the app list). |
+ UpdateDisplay("400x300"); |
+ |
+ Shell::GetInstance()->ToggleAppList(NULL); |
+ EXPECT_TRUE(Shell::GetInstance()->GetAppListTargetVisibility()); |
+ |
+ // The top of the app list should be on-screen (even if the bottom is not). |
+ // We need to manually calculate the Y coordinate of the top of the app list |
+ // from the anchor (center) and height. There isn't a bounds rect that gives |
+ // the actual app list position (the widget bounds include the bubble border |
+ // which is much bigger than the actual app list size). |
+ app_list::AppListView* app_list = Shell::GetInstance()->GetAppListView(); |
+ int app_list_view_top = |
+ app_list->anchor_rect().y() - app_list->bounds().height() / 2; |
+ EXPECT_GE(app_list_view_top, kMinimalCenteredAppListMargin); |
+} |
+ |
INSTANTIATE_TEST_CASE_P(AppListControllerTestInstance, |
AppListControllerTest, |
::testing::Bool()); |