summaryrefslogtreecommitdiffstats
path: root/ash/wm/overview/window_selector_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ash/wm/overview/window_selector_unittest.cc')
-rw-r--r--ash/wm/overview/window_selector_unittest.cc67
1 files changed, 67 insertions, 0 deletions
diff --git a/ash/wm/overview/window_selector_unittest.cc b/ash/wm/overview/window_selector_unittest.cc
index a2bd8ea..888f2a2 100644
--- a/ash/wm/overview/window_selector_unittest.cc
+++ b/ash/wm/overview/window_selector_unittest.cc
@@ -47,6 +47,20 @@ class NonActivatableActivationDelegate
}
};
+bool IsWindowAbove(aura::Window* w1, aura::Window* w2) {
+ aura::Window* parent = w1->parent();
+ DCHECK_EQ(parent, w2->parent());
+ for (aura::Window::Windows::const_iterator iter = parent->children().begin();
+ iter != parent->children().end(); ++iter) {
+ if (*iter == w1)
+ return false;
+ if (*iter == w2)
+ return true;
+ }
+ NOTREACHED();
+ return false;
+}
+
} // namespace
class WindowSelectorTest : public test::AshTestBase {
@@ -309,6 +323,59 @@ TEST_F(WindowSelectorTest, BasicCycle) {
EXPECT_TRUE(wm::IsActiveWindow(window3.get()));
}
+// Tests that cycling through windows preserves the window stacking order.
+TEST_F(WindowSelectorTest, CyclePreservesStackingOrder) {
+ gfx::Rect bounds(0, 0, 400, 400);
+ scoped_ptr<aura::Window> window1(CreateWindow(bounds));
+ scoped_ptr<aura::Window> window2(CreateWindow(bounds));
+ scoped_ptr<aura::Window> window3(CreateWindow(bounds));
+ wm::ActivateWindow(window3.get());
+ wm::ActivateWindow(window2.get());
+ wm::ActivateWindow(window1.get());
+ // Window order from top to bottom is 1, 2, 3.
+ EXPECT_TRUE(IsWindowAbove(window1.get(), window2.get()));
+ EXPECT_TRUE(IsWindowAbove(window2.get(), window3.get()));
+
+ // On window 2.
+ Cycle(WindowSelector::FORWARD);
+ EXPECT_TRUE(IsWindowAbove(window2.get(), window1.get()));
+ EXPECT_TRUE(IsWindowAbove(window1.get(), window3.get()));
+
+ // On window 3.
+ Cycle(WindowSelector::FORWARD);
+ EXPECT_TRUE(IsWindowAbove(window3.get(), window1.get()));
+ EXPECT_TRUE(IsWindowAbove(window1.get(), window2.get()));
+
+ // Back on window 1.
+ Cycle(WindowSelector::FORWARD);
+ EXPECT_TRUE(IsWindowAbove(window1.get(), window2.get()));
+ EXPECT_TRUE(IsWindowAbove(window2.get(), window3.get()));
+ StopCycling();
+}
+
+// Tests that cycling through windows shows and minimizes windows as they
+// are passed.
+TEST_F(WindowSelectorTest, CyclePreservesMinimization) {
+ gfx::Rect bounds(0, 0, 400, 400);
+ scoped_ptr<aura::Window> window1(CreateWindow(bounds));
+ scoped_ptr<aura::Window> window2(CreateWindow(bounds));
+ wm::ActivateWindow(window2.get());
+ wm::GetWindowState(window2.get())->Minimize();
+ wm::ActivateWindow(window1.get());
+ EXPECT_TRUE(wm::IsWindowMinimized(window2.get()));
+
+ // On window 2.
+ Cycle(WindowSelector::FORWARD);
+ EXPECT_FALSE(wm::IsWindowMinimized(window2.get()));
+
+ // Back on window 1.
+ Cycle(WindowSelector::FORWARD);
+ EXPECT_TRUE(wm::IsWindowMinimized(window2.get()));
+
+ StopCycling();
+ EXPECT_TRUE(wm::IsWindowMinimized(window2.get()));
+}
+
// Tests beginning cycling while in overview mode.
TEST_F(WindowSelectorTest, OverviewTransitionToCycle) {
gfx::Rect bounds(0, 0, 400, 400);