Index: ash/wm/overview/window_selector_unittest.cc |
diff --git a/ash/wm/overview/window_selector_unittest.cc b/ash/wm/overview/window_selector_unittest.cc |
index 1b65eff9263a0190f1aa1a970e2aceae451b58fc..37f0578b4f218a575df432462c1e1f5fd8645079 100644 |
--- a/ash/wm/overview/window_selector_unittest.cc |
+++ b/ash/wm/overview/window_selector_unittest.cc |
@@ -16,6 +16,7 @@ |
#include "ash/test/shell_test_api.h" |
#include "ash/test/test_shelf_delegate.h" |
#include "ash/wm/mru_window_tracker.h" |
+#include "ash/wm/overview/window_grid.h" |
#include "ash/wm/overview/window_selector.h" |
#include "ash/wm/overview/window_selector_controller.h" |
#include "ash/wm/overview/window_selector_item.h" |
@@ -154,6 +155,12 @@ class WindowSelectorTest : public test::AshTestBase { |
event_generator.ClickLeftButton(); |
} |
+ void SendKey(ui::KeyboardCode key) { |
+ aura::test::EventGenerator event_generator(Shell::GetPrimaryRootWindow()); |
+ event_generator.PressKey(key, 0); |
+ event_generator.ReleaseKey(key, 0); |
+ } |
+ |
bool IsSelecting() { |
return ash::Shell::GetInstance()->window_selector_controller()-> |
IsSelecting(); |
@@ -164,11 +171,18 @@ class WindowSelectorTest : public test::AshTestBase { |
Shell::GetPrimaryRootWindow())->GetFocusedWindow(); |
} |
- ScopedVector<WindowSelectorItem>* GetWindowItems() { |
- return &(ash::Shell::GetInstance()->window_selector_controller()-> |
- window_selector_->windows_); |
+ const std::vector<WindowSelectorItem*>& GetWindowItemsForRoot(int index) { |
+ return ash::Shell::GetInstance()->window_selector_controller()-> |
+ window_selector_->grid_list_[index]->window_list(); |
} |
+ const aura::Window* GetSelectedWindow() { |
+ WindowSelector* ws = ash::Shell::GetInstance()-> |
+ window_selector_controller()->window_selector_.get(); |
+ return ws->grid_list_[ws->selected_grid_index_]-> |
+ SelectedWindow()->SelectionWindow(); |
+ } |
+ |
views::Widget* GetLabelWidget(ash::WindowSelectorItem* window) { |
return window->window_label_.get(); |
} |
@@ -699,7 +713,7 @@ TEST_F(WindowSelectorTest, CreateLabelUnderWindow) { |
base::string16 window_title = base::UTF8ToUTF16("My window"); |
window->set_title(window_title); |
ToggleOverview(); |
- WindowSelectorItem* window_item = GetWindowItems()->back(); |
+ WindowSelectorItem* window_item = GetWindowItemsForRoot(0).back(); |
views::Widget* widget = GetLabelWidget(window_item); |
// Has the label widget been created? |
ASSERT_TRUE(widget); |
@@ -728,7 +742,7 @@ TEST_F(WindowSelectorTest, CreateLabelUnderPanel) { |
panel2->set_title(panel2_title); |
wm::ActivateWindow(panel1.get()); |
ToggleOverview(); |
- WindowSelectorItem* window_item = GetWindowItems()->back(); |
+ WindowSelectorItem* window_item = GetWindowItemsForRoot(0).back(); |
views::Widget* widget = GetLabelWidget(window_item); |
// Has the label widget been created? |
ASSERT_TRUE(widget); |
@@ -770,4 +784,31 @@ TEST_F(WindowSelectorTest, DisplayOrientationChanged) { |
} |
} |
+// Tests traversing some windows in overview mode with the arrow keys. |
+TEST_F(WindowSelectorTest, BasicArrowKeyNavigation) { |
flackr
2014/06/04 22:25:06
Should probably have a test which tries complete c
Nina
2014/06/05 18:04:36
Check the new test out, I'm sure you're gonna like
flackr
2014/06/05 20:16:32
I do!
|
+ gfx::Rect bounds(0, 0, 100, 100); |
+ scoped_ptr<aura::Window> window4(CreateWindow(bounds)); |
+ scoped_ptr<aura::Window> window3(CreateWindow(bounds)); |
+ scoped_ptr<aura::Window> window2(CreateWindow(bounds)); |
+ scoped_ptr<aura::Window> window1(CreateWindow(bounds)); |
+ ToggleOverview(); |
+ SendKey(ui::VKEY_DOWN); |
+ EXPECT_EQ(GetSelectedWindow(), window1.get()); |
+ SendKey(ui::VKEY_RIGHT); |
+ EXPECT_EQ(GetSelectedWindow(), window2.get()); |
+ SendKey(ui::VKEY_RIGHT); |
+ EXPECT_EQ(GetSelectedWindow(), window3.get()); |
+ SendKey(ui::VKEY_LEFT); |
+ EXPECT_EQ(GetSelectedWindow(), window2.get()); |
+ // Wrap the selection. |
+ SendKey(ui::VKEY_RIGHT); |
+ SendKey(ui::VKEY_RIGHT); |
+ SendKey(ui::VKEY_RIGHT); |
+ EXPECT_EQ(GetSelectedWindow(), window1.get()); |
+ ToggleOverview(); |
+ ToggleOverview(); |
+ SendKey(ui::VKEY_LEFT); |
+ EXPECT_EQ(GetSelectedWindow(), window4.get()); |
+} |
+ |
} // namespace ash |