| Index: athena/wm/split_view_controller_unittest.cc
|
| diff --git a/athena/wm/split_view_controller_unittest.cc b/athena/wm/split_view_controller_unittest.cc
|
| index 6bde13b5f66817c2df9e98a98cda9e3c5507bfda..981d0fa00affb4b774c41b9a0c5aa271e07ecdf5 100644
|
| --- a/athena/wm/split_view_controller_unittest.cc
|
| +++ b/athena/wm/split_view_controller_unittest.cc
|
| @@ -9,10 +9,10 @@
|
| #include "athena/wm/public/window_list_provider.h"
|
| #include "athena/wm/test/window_manager_impl_test_api.h"
|
| #include "base/memory/scoped_vector.h"
|
| -#include "ui/aura/test/test_window_delegate.h"
|
| #include "ui/aura/window.h"
|
| #include "ui/gfx/display.h"
|
| #include "ui/gfx/screen.h"
|
| +#include "ui/wm/core/window_util.h"
|
|
|
| namespace athena {
|
|
|
| @@ -32,6 +32,24 @@ class SplitViewControllerTest : public test::AthenaTestBase {
|
| test::AthenaTestBase::TearDown();
|
| }
|
|
|
| + // Creates a window and activates it.
|
| + scoped_ptr<aura::Window> CreateAndActivateWindow() {
|
| + scoped_ptr<aura::Window> window = CreateTestWindow(NULL, gfx::Rect());
|
| + window->Show();
|
| + wm::ActivateWindow(window.get());
|
| + return window.Pass();
|
| + }
|
| +
|
| + // Returns the topmost window in z-order.
|
| + aura::Window* GetTopmostWindow() const {
|
| + return *api_->GetWindowListProvider()->GetWindowList().rbegin();
|
| + }
|
| +
|
| + // Returns the window which second from the top in z-order.
|
| + aura::Window* GetSecondTopmostWindow() const {
|
| + return *(api_->GetWindowListProvider()->GetWindowList().rbegin() + 1);
|
| + }
|
| +
|
| bool IsSplitViewAllowed() const {
|
| return api_->GetSplitViewController()->CanScroll();
|
| }
|
| @@ -49,59 +67,71 @@ class SplitViewControllerTest : public test::AthenaTestBase {
|
| // Tests that when split mode is activated, the windows on the left and right
|
| // are selected correctly.
|
| TEST_F(SplitViewControllerTest, SplitModeActivation) {
|
| - aura::test::TestWindowDelegate delegate;
|
| ScopedVector<aura::Window> windows;
|
| const int kNumWindows = 6;
|
| for (size_t i = 0; i < kNumWindows; ++i) {
|
| - scoped_ptr<aura::Window> window = CreateTestWindow(NULL, gfx::Rect());
|
| + scoped_ptr<aura::Window> window = CreateAndActivateWindow();
|
| windows.push_back(window.release());
|
| }
|
|
|
| SplitViewController* controller = api()->GetSplitViewController();
|
| - WindowListProvider* list_provider = api()->GetWindowListProvider();
|
| ASSERT_FALSE(controller->IsSplitViewModeActive());
|
|
|
| - controller->ActivateSplitMode(NULL, NULL);
|
| + EXPECT_EQ(windows[kNumWindows - 1], GetTopmostWindow());
|
| + EXPECT_EQ(windows[kNumWindows - 2], GetSecondTopmostWindow());
|
| +
|
| + controller->ActivateSplitMode(windows[kNumWindows - 1], NULL);
|
| ASSERT_TRUE(controller->IsSplitViewModeActive());
|
| - // The last two windows should be on the left and right, respectively.
|
| + // The topmost windows should have been picked for the left and right
|
| + // window.
|
| EXPECT_EQ(windows[kNumWindows - 1], controller->left_window());
|
| + EXPECT_EQ(windows[kNumWindows - 1], GetTopmostWindow());
|
| EXPECT_EQ(windows[kNumWindows - 2], controller->right_window());
|
| + EXPECT_EQ(windows[kNumWindows - 2], GetSecondTopmostWindow());
|
|
|
| // Select the window that is currently on the left for the right panel. The
|
| // windows should switch.
|
| controller->ActivateSplitMode(NULL, windows[kNumWindows - 1]);
|
| EXPECT_EQ(windows[kNumWindows - 2], controller->left_window());
|
| + EXPECT_EQ(windows[kNumWindows - 2], GetSecondTopmostWindow());
|
| EXPECT_EQ(windows[kNumWindows - 1], controller->right_window());
|
| + EXPECT_EQ(windows[kNumWindows - 1], GetTopmostWindow());
|
|
|
| controller->ActivateSplitMode(windows[kNumWindows - 1], NULL);
|
| EXPECT_EQ(windows[kNumWindows - 1], controller->left_window());
|
| + EXPECT_EQ(windows[kNumWindows - 1], GetTopmostWindow());
|
| EXPECT_EQ(windows[kNumWindows - 2], controller->right_window());
|
| + EXPECT_EQ(windows[kNumWindows - 2], GetSecondTopmostWindow());
|
|
|
| // Select one of the windows behind the stacks for the right panel. The window
|
| // on the left should remain unchanged.
|
| + wm::ActivateWindow(windows[0]);
|
| controller->ActivateSplitMode(NULL, windows[0]);
|
| EXPECT_EQ(windows[kNumWindows - 1], controller->left_window());
|
| + EXPECT_EQ(windows[kNumWindows - 1], GetSecondTopmostWindow());
|
| EXPECT_EQ(windows[0], controller->right_window());
|
| - EXPECT_EQ(windows[0], *list_provider->GetWindowList().rbegin());
|
| + EXPECT_EQ(windows[0], GetTopmostWindow());
|
|
|
| + wm::ActivateWindow(windows[1]);
|
| controller->ActivateSplitMode(windows[1], NULL);
|
| EXPECT_EQ(windows[1], controller->left_window());
|
| + EXPECT_EQ(windows[1], GetTopmostWindow());
|
| EXPECT_EQ(windows[0], controller->right_window());
|
| - EXPECT_EQ(windows[1], *list_provider->GetWindowList().rbegin());
|
| + EXPECT_EQ(windows[0], GetSecondTopmostWindow());
|
|
|
| + wm::ActivateWindow(windows[5]);
|
| controller->ActivateSplitMode(windows[4], windows[5]);
|
| EXPECT_EQ(windows[4], controller->left_window());
|
| + EXPECT_EQ(windows[4], GetSecondTopmostWindow());
|
| EXPECT_EQ(windows[5], controller->right_window());
|
| - EXPECT_EQ(windows[4], *list_provider->GetWindowList().rbegin());
|
| - EXPECT_EQ(windows[5], *(list_provider->GetWindowList().rbegin() + 1));
|
| + EXPECT_EQ(windows[5], GetTopmostWindow());
|
| }
|
|
|
| TEST_F(SplitViewControllerTest, LandscapeOnly) {
|
| - aura::test::TestWindowDelegate delegate;
|
| ScopedVector<aura::Window> windows;
|
| const int kNumWindows = 2;
|
| for (size_t i = 0; i < kNumWindows; ++i) {
|
| - scoped_ptr<aura::Window> window = CreateTestWindow(NULL, gfx::Rect());
|
| + scoped_ptr<aura::Window> window = CreateAndActivateWindow();
|
| windows.push_back(window.release());
|
| }
|
| ASSERT_EQ(gfx::Display::ROTATE_0,
|
| @@ -111,7 +141,7 @@ TEST_F(SplitViewControllerTest, LandscapeOnly) {
|
| ASSERT_TRUE(IsSplitViewAllowed());
|
| ASSERT_FALSE(controller->IsSplitViewModeActive());
|
|
|
| - controller->ActivateSplitMode(NULL, NULL);
|
| + controller->ActivateSplitMode(windows[kNumWindows - 1], NULL);
|
| ASSERT_TRUE(controller->IsSplitViewModeActive());
|
|
|
| // Screen rotation should be locked while in splitview.
|
|
|