Index: athena/wm/window_list_provider_impl_unittest.cc |
diff --git a/athena/wm/window_list_provider_impl_unittest.cc b/athena/wm/window_list_provider_impl_unittest.cc |
index eba6b7a9ca58fd446860e4ff0261850d429f44ca..dcbf45f2d7f4d7b9c89e59eeb22d2b23cd5accbd 100644 |
--- a/athena/wm/window_list_provider_impl_unittest.cc |
+++ b/athena/wm/window_list_provider_impl_unittest.cc |
@@ -28,6 +28,26 @@ scoped_ptr<aura::Window> CreateWindow(aura::WindowDelegate* delegate, |
return window.Pass(); |
} |
+// Return a string which defines the order of windows in |now| using the indices |
+// of |original|. The string will then have the lowest/oldest window on the left |
+// and the highest / newest on the right. |
+std::string GetWindowOrder(const aura::Window::Windows& original, |
+ const aura::Window::Windows& now) { |
+ if (original.size() != now.size()) |
+ return "size has changed."; |
+ std::string output; |
+ for (aura::Window::Windows::const_iterator it = now.begin(); |
+ it != now.end(); ++it) { |
+ for (size_t i = 0; i < original.size(); i++) { |
+ if ((*it) == original[i]) { |
+ output += (output.size() ? " " : "") + std::to_string(i + 1); |
+ break; |
+ } |
+ } |
+ } |
+ return output; |
+} |
+ |
} // namespace |
typedef test::AthenaTestBase WindowListProviderImplTest; |
@@ -50,14 +70,15 @@ TEST_F(WindowListProviderImplTest, StackingOrder) { |
scoped_ptr<WindowListProvider> list_provider( |
new WindowListProviderImpl(container.get())); |
EXPECT_TRUE(AreWindowListsEqual(container->children(), |
- list_provider->GetWindowList())); |
+ list_provider->GetCurrentWindowList())); |
container->StackChildAtTop(first.get()); |
EXPECT_TRUE(AreWindowListsEqual(container->children(), |
- list_provider->GetWindowList())); |
+ list_provider->GetCurrentWindowList())); |
EXPECT_EQ(first.get(), container->children().back()); |
} |
+// Tests that only normal windows of the associated container will be listed. |
TEST_F(WindowListProviderImplTest, ListContainsOnlyNormalWindows) { |
aura::test::TestWindowDelegate delegate; |
scoped_ptr<aura::Window> container(new aura::Window(&delegate)); |
@@ -76,11 +97,94 @@ TEST_F(WindowListProviderImplTest, ListContainsOnlyNormalWindows) { |
scoped_ptr<WindowListProvider> list_provider( |
new WindowListProviderImpl(container.get())); |
- const aura::Window::Windows list = list_provider->GetWindowList(); |
+ |
+ const aura::Window::Windows list = list_provider->GetCurrentWindowList(); |
EXPECT_EQ(list.end(), std::find(list.begin(), list.end(), second.get())); |
EXPECT_EQ(list.end(), std::find(list.begin(), list.end(), fourth.get())); |
EXPECT_NE(list.end(), std::find(list.begin(), list.end(), first.get())); |
EXPECT_NE(list.end(), std::find(list.begin(), list.end(), third.get())); |
} |
+// Testing that IsValidWidow, IsWindowInList and AddWindow work as expected. |
+TEST_F(WindowListProviderImplTest, SimpleChecks) { |
+ aura::test::TestWindowDelegate delegate; |
+ scoped_ptr<aura::Window> container(new aura::Window(&delegate)); |
+ |
+ scoped_ptr<aura::Window> normal_window = |
+ CreateWindow(&delegate, ui::wm::WINDOW_TYPE_NORMAL); |
+ scoped_ptr<aura::Window> popup_window = |
+ CreateWindow(&delegate, ui::wm::WINDOW_TYPE_POPUP); |
+ scoped_ptr<aura::Window> menu_window = |
+ CreateWindow(&delegate, ui::wm::WINDOW_TYPE_MENU); |
+ |
+ scoped_ptr<WindowListProvider> list_provider( |
+ new WindowListProviderImpl(container.get())); |
+ |
+ // Check which windows are valid and which are not. |
+ EXPECT_TRUE(list_provider->IsValidWindow(normal_window.get())); |
+ EXPECT_FALSE(list_provider->IsValidWindow(popup_window.get())); |
+ EXPECT_FALSE(list_provider->IsValidWindow(menu_window.get())); |
+ |
+ // Check that no window is currently in the list. |
+ EXPECT_FALSE(list_provider->IsWindowInList(normal_window.get())); |
+ EXPECT_FALSE(list_provider->IsWindowInList(popup_window.get())); |
+ EXPECT_FALSE(list_provider->IsWindowInList(menu_window.get())); |
+ |
+ // Check that adding the window will add it to the list. |
+ list_provider->AddWindow(normal_window.get()); |
+ EXPECT_TRUE(list_provider->IsWindowInList(normal_window.get())); |
+} |
+ |
+// Testing that window ordering functions work as expected. |
+TEST_F(WindowListProviderImplTest, TestWindowOrderingFunctions) { |
+ aura::test::TestWindowDelegate delegate; |
+ scoped_ptr<aura::Window> container(new aura::Window(&delegate)); |
+ |
+ scoped_ptr<aura::Window> window1 = |
+ CreateWindow(&delegate, ui::wm::WINDOW_TYPE_NORMAL); |
+ scoped_ptr<aura::Window> window2 = |
+ CreateWindow(&delegate, ui::wm::WINDOW_TYPE_NORMAL); |
+ scoped_ptr<aura::Window> window3 = |
+ CreateWindow(&delegate, ui::wm::WINDOW_TYPE_NORMAL); |
+ |
+ scoped_ptr<WindowListProvider> list_provider( |
+ new WindowListProviderImpl(container.get())); |
+ |
+ EXPECT_FALSE(list_provider->IsWindowInList(window1.get())); |
+ EXPECT_FALSE(list_provider->IsWindowInList(window2.get())); |
+ EXPECT_FALSE(list_provider->IsWindowInList(window3.get())); |
+ |
+ // Add the windows. |
+ list_provider->AddWindow(window1.get()); |
+ list_provider->AddWindow(window2.get()); |
+ list_provider->AddWindow(window3.get()); |
+ aura::Window::Windows original_order = list_provider->GetCurrentWindowList(); |
+ ASSERT_EQ(3U, original_order.size()); |
+ EXPECT_EQ(original_order[0], window1.get()); |
+ EXPECT_EQ(original_order[1], window2.get()); |
+ EXPECT_EQ(original_order[2], window3.get()); |
+ |
+ // Move 2 to the front. |
+ list_provider->MoveToFront(window2.get()); |
+ EXPECT_EQ("1 3 2", GetWindowOrder(original_order, |
+ list_provider->GetCurrentWindowList())); |
+ |
+ // Move 2 to the front again. Should not change anything. |
+ list_provider->MoveToFront(window2.get()); |
+ EXPECT_EQ("1 3 2", GetWindowOrder(original_order, |
+ list_provider->GetCurrentWindowList())); |
+ |
+ // Move 1 (from the back) in front of 2. |
+ list_provider->MoveWindowInFrontOfReferenceWindow(window1.get(), |
+ window3.get()); |
+ EXPECT_EQ("3 1 2", GetWindowOrder(original_order, |
+ list_provider->GetCurrentWindowList())); |
+ |
+ // Move 2 (from the front) in front of 3. |
+ list_provider->MoveWindowInFrontOfReferenceWindow(window2.get(), |
+ window3.get()); |
+ EXPECT_EQ("3 2 1", GetWindowOrder(original_order, |
+ list_provider->GetCurrentWindowList())); |
+} |
+ |
} // namespace athena |