Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3673)

Unified Diff: athena/wm/split_view_controller_unittest.cc

Issue 863033002: Delete athena/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « athena/wm/split_view_controller.cc ('k') | athena/wm/test/window_manager_impl_test_api.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
deleted file mode 100644
index 9a97f731be677ee02f8a735f1cc92fe004cd3621..0000000000000000000000000000000000000000
--- a/athena/wm/split_view_controller_unittest.cc
+++ /dev/null
@@ -1,333 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "athena/wm/split_view_controller.h"
-
-#include "athena/screen/public/screen_manager.h"
-#include "athena/test/base/athena_test_base.h"
-#include "athena/test/base/test_windows.h"
-#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 {
-
-class SplitViewControllerTest : public test::AthenaTestBase {
- public:
- SplitViewControllerTest() {}
- ~SplitViewControllerTest() override {}
-
- // test::AthenaTestBase:
- void SetUp() override {
- test::AthenaTestBase::SetUp();
- api_.reset(new test::WindowManagerImplTestApi);
- }
-
- void TearDown() override {
- api_.reset();
- test::AthenaTestBase::TearDown();
- }
-
- // Returns the topmost window in z-order.
- const aura::Window* GetTopmostWindow() const {
- return *api_->GetWindowListProvider()->GetWindowList().rbegin();
- }
-
- // Returns the second topmost window in z-order.
- const aura::Window* GetSecondTopmostWindow() const {
- const aura::Window::Windows& list =
- api_->GetWindowListProvider()->GetWindowList();
- return *(list.rbegin() + 1);
- }
-
- // Returns whether only the split view windows are visible.
- bool OnlySplitViewWindowsVisible() const {
- SplitViewController* controller = api_->GetSplitViewController();
- DCHECK(controller->IsSplitViewModeActive());
- aura::Window::Windows list =
- api_->GetWindowListProvider()->GetWindowList();
- for (aura::Window::Windows::const_iterator it = list.begin();
- it != list.end(); ++it) {
- bool in_split_view = (*it == controller->left_window() ||
- *it == controller->right_window());
- if (in_split_view != (*it)->IsVisible())
- return false;
- }
- return true;
- }
-
- bool IsSplitViewAllowed() const {
- return api_->GetSplitViewController()->CanActivateSplitViewMode();
- }
-
- test::WindowManagerImplTestApi* api() {
- return api_.get();
- }
-
- void HandleScrollBegin(float delta) {
- api_->GetSplitViewController()->HandleScrollBegin(delta);
- }
-
- void HandleScrollUpdate(float delta) {
- api_->GetSplitViewController()->HandleScrollUpdate(delta);
- }
-
- void HandleScrollEnd(float velocity) {
- api_->GetSplitViewController()->HandleScrollEnd(velocity);
- }
-
- float GetMaxDistanceFromMiddleForTest() {
- return api_->GetSplitViewController()->GetMaxDistanceFromMiddleForTest();
- }
-
- float GetMinFlingVelocityForTest() {
- return api_->GetSplitViewController()->GetMinFlingVelocityForTest();
- }
-
- private:
- scoped_ptr<test::WindowManagerImplTestApi> api_;
-
- DISALLOW_COPY_AND_ASSIGN(SplitViewControllerTest);
-};
-
-// 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 =
- test::CreateNormalWindow(nullptr, nullptr);
- windows.push_back(window.release());
- windows[i]->Hide();
- }
-
- windows[kNumWindows - 1]->Show();
- wm::ActivateWindow(windows[kNumWindows - 1]);
-
- SplitViewController* controller = api()->GetSplitViewController();
- ASSERT_FALSE(controller->IsSplitViewModeActive());
-
- controller->ActivateSplitMode(nullptr, nullptr, nullptr);
- ASSERT_TRUE(controller->IsSplitViewModeActive());
- // The last two windows should be on the left and right, respectively.
- EXPECT_EQ(windows[kNumWindows - 1], controller->left_window());
- EXPECT_EQ(windows[kNumWindows - 2], controller->right_window());
- EXPECT_EQ(windows[kNumWindows - 1], GetTopmostWindow());
- EXPECT_EQ(windows[kNumWindows - 2], GetSecondTopmostWindow());
- EXPECT_TRUE(OnlySplitViewWindowsVisible());
-
- // Select the window that is currently on the left for the right panel. The
- // windows should switch.
- controller->ActivateSplitMode(
- nullptr, windows[kNumWindows - 1], windows[kNumWindows - 1]);
- EXPECT_EQ(windows[kNumWindows - 2], controller->left_window());
- EXPECT_EQ(windows[kNumWindows - 1], controller->right_window());
- EXPECT_EQ(windows[kNumWindows - 1], GetTopmostWindow());
- EXPECT_EQ(windows[kNumWindows - 2], GetSecondTopmostWindow());
- EXPECT_TRUE(OnlySplitViewWindowsVisible());
-
- controller->ActivateSplitMode(
- windows[kNumWindows - 1], nullptr, windows[kNumWindows - 1]);
- EXPECT_EQ(windows[kNumWindows - 1], controller->left_window());
- EXPECT_EQ(windows[kNumWindows - 2], controller->right_window());
- EXPECT_EQ(windows[kNumWindows - 1], GetTopmostWindow());
- EXPECT_EQ(windows[kNumWindows - 2], GetSecondTopmostWindow());
- EXPECT_TRUE(OnlySplitViewWindowsVisible());
-
- // Select the same windows, but pass in a different window to activate.
- controller->ActivateSplitMode(windows[kNumWindows - 1],
- windows[kNumWindows - 2],
- windows[kNumWindows - 2]);
- EXPECT_EQ(windows[kNumWindows - 1], controller->left_window());
- EXPECT_EQ(windows[kNumWindows - 2], controller->right_window());
- EXPECT_EQ(windows[kNumWindows - 2], GetTopmostWindow());
- EXPECT_EQ(windows[kNumWindows - 1], GetSecondTopmostWindow());
- EXPECT_TRUE(OnlySplitViewWindowsVisible());
-
- // Select one of the windows behind the stacks for the right panel. The window
- // on the left should remain unchanged.
- controller->ActivateSplitMode(nullptr, windows[0], windows[0]);
- EXPECT_EQ(windows[kNumWindows - 1], controller->left_window());
- EXPECT_EQ(windows[0], controller->right_window());
- EXPECT_EQ(windows[0], GetTopmostWindow());
- EXPECT_EQ(windows[kNumWindows - 1], GetSecondTopmostWindow());
- EXPECT_TRUE(OnlySplitViewWindowsVisible());
-
- controller->ActivateSplitMode(windows[1], nullptr, nullptr);
- EXPECT_EQ(windows[1], controller->left_window());
- EXPECT_EQ(windows[0], controller->right_window());
- EXPECT_EQ(windows[0], GetTopmostWindow());
- EXPECT_EQ(windows[1], GetSecondTopmostWindow());
- EXPECT_TRUE(OnlySplitViewWindowsVisible());
-
- controller->ActivateSplitMode(windows[4], windows[5], windows[5]);
- EXPECT_EQ(windows[4], controller->left_window());
- EXPECT_EQ(windows[5], controller->right_window());
- EXPECT_EQ(windows[5], GetTopmostWindow());
- EXPECT_EQ(windows[4], GetSecondTopmostWindow());
- EXPECT_TRUE(OnlySplitViewWindowsVisible());
-
- controller->ActivateSplitMode(windows[0], nullptr, windows[0]);
- EXPECT_EQ(windows[0], controller->left_window());
- EXPECT_EQ(windows[5], controller->right_window());
- EXPECT_EQ(windows[0], GetTopmostWindow());
- EXPECT_EQ(windows[5], GetSecondTopmostWindow());
- EXPECT_TRUE(OnlySplitViewWindowsVisible());
-}
-
-// Helper function used to return the x-translation value of the layer
-// containing |window|.
-float XTranslationForWindow(aura::Window* window) {
- return window->layer()->transform().To2dTranslation().x();
-}
-
-// Tests that calls to the methods of DragHandleScrollDelegate will disengage
-// split view mode under the correct circumstances.
-TEST_F(SplitViewControllerTest, ScrollDragHandle) {
- 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 =
- test::CreateNormalWindow(nullptr, nullptr);
- windows.push_back(window.release());
- windows[i]->Hide();
- }
-
- SplitViewController* controller = api()->GetSplitViewController();
- ASSERT_FALSE(controller->IsSplitViewModeActive());
-
- aura::Window* left_window = windows[0];
- aura::Window* right_window = windows[1];
- left_window->Show();
- wm::ActivateWindow(left_window);
-
- // Activate split view.
- controller->ActivateSplitMode(left_window, right_window, left_window);
- ASSERT_TRUE(controller->IsSplitViewModeActive());
- EXPECT_TRUE(OnlySplitViewWindowsVisible());
- EXPECT_EQ(left_window, controller->left_window());
- EXPECT_EQ(right_window, controller->right_window());
-
- const float small_distance = GetMaxDistanceFromMiddleForTest() - 1.0f;
- const float large_distance = GetMaxDistanceFromMiddleForTest() + 1.0f;
- const float slow_velocity = GetMinFlingVelocityForTest() - 1.0f;
- const float fast_velocity = GetMinFlingVelocityForTest() + 1.0f;
-
- // Only scroll a small distance to the right, but not enough to be able to
- // disengage split view.
- EXPECT_EQ(0.0f, XTranslationForWindow(right_window));
- HandleScrollBegin(small_distance - 1.0f);
- EXPECT_EQ(small_distance - 1.0f, XTranslationForWindow(right_window));
- HandleScrollUpdate(small_distance);
- EXPECT_EQ(small_distance, XTranslationForWindow(right_window));
- HandleScrollEnd(0.0f);
- EXPECT_EQ(0.0f, XTranslationForWindow(right_window));
- ASSERT_TRUE(controller->IsSplitViewModeActive());
- EXPECT_EQ(left_window, controller->left_window());
- EXPECT_EQ(right_window, controller->right_window());
-
- // Scroll far enough to the right to be able to disengage split view. Split
- // view should be disengaged with the left window active.
- HandleScrollBegin(small_distance);
- HandleScrollUpdate(large_distance);
- HandleScrollEnd(0.0f);
- ASSERT_FALSE(controller->IsSplitViewModeActive());
- EXPECT_EQ(nullptr, controller->left_window());
- EXPECT_EQ(nullptr, controller->right_window());
- EXPECT_EQ(left_window, GetTopmostWindow());
-
- // Re-activate split view mode.
- controller->ActivateSplitMode(left_window, right_window, left_window);
-
- // Start scrolling a small distance and then fling, but not fast enough to
- // disengage split view (see kMinFlingVelocity). Split view mode should
- // remain engaged. Also verify that |right_window| is translated correctly.
- EXPECT_EQ(0.0f, XTranslationForWindow(right_window));
- HandleScrollBegin(-small_distance + 1.0f);
- EXPECT_EQ(-small_distance + 1.0f, XTranslationForWindow(right_window));
- HandleScrollUpdate(-small_distance);
- EXPECT_EQ(-small_distance, XTranslationForWindow(right_window));
- HandleScrollEnd(slow_velocity);
- EXPECT_EQ(0.0f, XTranslationForWindow(right_window));
- ASSERT_TRUE(controller->IsSplitViewModeActive());
- EXPECT_EQ(left_window, controller->left_window());
- EXPECT_EQ(right_window, controller->right_window());
-
- // Scroll far enough to the left to be able to disengage split view, then
- // fling to the right (but not faster than kMinFlingVelocity). Split view
- // should be disengaged with the right window active.
- HandleScrollBegin(-small_distance);
- HandleScrollUpdate(-large_distance);
- HandleScrollEnd(slow_velocity);
- ASSERT_FALSE(controller->IsSplitViewModeActive());
- EXPECT_EQ(nullptr, controller->left_window());
- EXPECT_EQ(nullptr, controller->right_window());
- EXPECT_EQ(right_window, GetTopmostWindow());
-
- // Re-activate split view mode.
- controller->ActivateSplitMode(left_window, right_window, left_window);
-
- // Scroll far enough to the left to be able to disengage split view, then
- // fling to the right, this time faster than kMinFlingVelocity). Split view
- // should be disengaged with the left window active.
- HandleScrollBegin(-small_distance);
- HandleScrollUpdate(-large_distance);
- HandleScrollEnd(fast_velocity);
- ASSERT_FALSE(controller->IsSplitViewModeActive());
- EXPECT_EQ(nullptr, controller->left_window());
- EXPECT_EQ(nullptr, controller->right_window());
- EXPECT_EQ(left_window, 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 =
- test::CreateNormalWindow(nullptr, nullptr);
- window->Hide();
- windows.push_back(window.release());
- }
- windows[kNumWindows - 1]->Show();
- wm::ActivateWindow(windows[kNumWindows - 1]);
-
- ASSERT_EQ(gfx::Display::ROTATE_0,
- gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().rotation());
-
- SplitViewController* controller = api()->GetSplitViewController();
- ASSERT_TRUE(IsSplitViewAllowed());
- ASSERT_FALSE(controller->IsSplitViewModeActive());
-
- controller->ActivateSplitMode(nullptr, nullptr, nullptr);
- ASSERT_TRUE(controller->IsSplitViewModeActive());
-
- // Screen rotation should be locked while in splitview.
- ScreenManager::Get()->SetRotation(gfx::Display::ROTATE_90);
- EXPECT_EQ(gfx::Display::ROTATE_0,
- gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().rotation());
-
- // Screen is rotated on exiting splitview.
- controller->DeactivateSplitMode();
- ASSERT_EQ(gfx::Display::ROTATE_90,
- gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().rotation());
-
- // Entering splitview should now be disabled now that the screen is in a
- // portrait orientation.
- EXPECT_FALSE(IsSplitViewAllowed());
-
- // Rotating back to 0 allows splitview again.
- ScreenManager::Get()->SetRotation(gfx::Display::ROTATE_0);
- EXPECT_TRUE(IsSplitViewAllowed());
-}
-
-} // namespace athena
« no previous file with comments | « athena/wm/split_view_controller.cc ('k') | athena/wm/test/window_manager_impl_test_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698