16e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
26e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
36e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// found in the LICENSE file.
46e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "athena/wm/split_view_controller.h"
66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "athena/screen/public/screen_manager.h"
86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "athena/test/athena_test_base.h"
903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "athena/wm/public/window_list_provider.h"
1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "athena/wm/test/window_manager_impl_test_api.h"
116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "base/memory/scoped_vector.h"
126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "ui/aura/test/test_window_delegate.h"
136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "ui/aura/window.h"
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/gfx/display.h"
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/gfx/screen.h"
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/wm/core/window_util.h"
176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace athena {
196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass SplitViewControllerTest : public test::AthenaTestBase {
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public:
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  SplitViewControllerTest() {}
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual ~SplitViewControllerTest() {}
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // test::AthenaTestBase:
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void SetUp() OVERRIDE {
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    test::AthenaTestBase::SetUp();
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    api_.reset(new test::WindowManagerImplTestApi);
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void TearDown() OVERRIDE {
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    api_.reset();
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    test::AthenaTestBase::TearDown();
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Returns the topmost window in z-order.
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  const aura::Window* GetTopmostWindow() const {
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return *api_->GetWindowListProvider()->GetWindowList().rbegin();
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Returns the second topmost window in z-order.
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  const aura::Window* GetSecondTopmostWindow() const {
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const aura::Window::Windows& list =
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        api_->GetWindowListProvider()->GetWindowList();
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return *(list.rbegin() + 1);
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Returns whether only the split view windows are visible.
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  bool OnlySplitViewWindowsVisible() const {
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SplitViewController* controller = api_->GetSplitViewController();
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    DCHECK(controller->IsSplitViewModeActive());
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    aura::Window::Windows list =
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        api_->GetWindowListProvider()->GetWindowList();
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    for (aura::Window::Windows::const_iterator it = list.begin();
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci         it != list.end(); ++it) {
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      bool in_split_view = (*it == controller->left_window() ||
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                            *it == controller->right_window());
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      if (in_split_view != (*it)->IsVisible())
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        return false;
601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    }
611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return true;
621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  bool IsSplitViewAllowed() const {
651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return api_->GetSplitViewController()->CanActivateSplitViewMode();
661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  test::WindowManagerImplTestApi* api() {
691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return api_.get();
701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private:
731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<test::WindowManagerImplTestApi> api_;
741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  DISALLOW_COPY_AND_ASSIGN(SplitViewControllerTest);
761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Tests that when split mode is activated, the windows on the left and right
796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// are selected correctly.
806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST_F(SplitViewControllerTest, SplitModeActivation) {
816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  aura::test::TestWindowDelegate delegate;
826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  ScopedVector<aura::Window> windows;
836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  const int kNumWindows = 6;
846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  for (size_t i = 0; i < kNumWindows; ++i) {
8503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    scoped_ptr<aura::Window> window = CreateTestWindow(NULL, gfx::Rect());
8603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    windows.push_back(window.release());
871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    windows[i]->Hide();
886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  }
896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  windows[kNumWindows - 1]->Show();
911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  wm::ActivateWindow(windows[kNumWindows - 1]);
921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  SplitViewController* controller = api()->GetSplitViewController();
9403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  ASSERT_FALSE(controller->IsSplitViewModeActive());
956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  controller->ActivateSplitMode(NULL, NULL, NULL);
9703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  ASSERT_TRUE(controller->IsSplitViewModeActive());
986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  // The last two windows should be on the left and right, respectively.
9903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  EXPECT_EQ(windows[kNumWindows - 1], controller->left_window());
10003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  EXPECT_EQ(windows[kNumWindows - 2], controller->right_window());
1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[kNumWindows - 1], GetTopmostWindow());
1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[kNumWindows - 2], GetSecondTopmostWindow());
1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_TRUE(OnlySplitViewWindowsVisible());
1046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  // Select the window that is currently on the left for the right panel. The
1066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  // windows should switch.
1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  controller->ActivateSplitMode(
1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      NULL, windows[kNumWindows - 1], windows[kNumWindows - 1]);
10903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  EXPECT_EQ(windows[kNumWindows - 2], controller->left_window());
11003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  EXPECT_EQ(windows[kNumWindows - 1], controller->right_window());
1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[kNumWindows - 1], GetTopmostWindow());
1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[kNumWindows - 2], GetSecondTopmostWindow());
1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_TRUE(OnlySplitViewWindowsVisible());
1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  controller->ActivateSplitMode(
1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      windows[kNumWindows - 1], NULL, windows[kNumWindows - 1]);
1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[kNumWindows - 1], controller->left_window());
1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[kNumWindows - 2], controller->right_window());
1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[kNumWindows - 1], GetTopmostWindow());
1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[kNumWindows - 2], GetSecondTopmostWindow());
1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_TRUE(OnlySplitViewWindowsVisible());
1226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Select the same windows, but pass in a different window to activate.
1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  controller->ActivateSplitMode(windows[kNumWindows - 1],
1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                windows[kNumWindows - 2],
1261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                windows[kNumWindows - 2]);
12703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  EXPECT_EQ(windows[kNumWindows - 1], controller->left_window());
12803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  EXPECT_EQ(windows[kNumWindows - 2], controller->right_window());
1291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[kNumWindows - 2], GetTopmostWindow());
1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[kNumWindows - 1], GetSecondTopmostWindow());
1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_TRUE(OnlySplitViewWindowsVisible());
1326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  // Select one of the windows behind the stacks for the right panel. The window
1346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  // on the left should remain unchanged.
1351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  controller->ActivateSplitMode(NULL, windows[0], windows[0]);
13603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  EXPECT_EQ(windows[kNumWindows - 1], controller->left_window());
13703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  EXPECT_EQ(windows[0], controller->right_window());
1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[0], GetTopmostWindow());
1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[kNumWindows - 1], GetSecondTopmostWindow());
1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_TRUE(OnlySplitViewWindowsVisible());
1416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  controller->ActivateSplitMode(windows[1], NULL, NULL);
14303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  EXPECT_EQ(windows[1], controller->left_window());
14403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  EXPECT_EQ(windows[0], controller->right_window());
1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[0], GetTopmostWindow());
1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[1], GetSecondTopmostWindow());
1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_TRUE(OnlySplitViewWindowsVisible());
1486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  controller->ActivateSplitMode(windows[4], windows[5], windows[5]);
15003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  EXPECT_EQ(windows[4], controller->left_window());
15103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  EXPECT_EQ(windows[5], controller->right_window());
1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[5], GetTopmostWindow());
1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[4], GetSecondTopmostWindow());
1541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_TRUE(OnlySplitViewWindowsVisible());
1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  controller->ActivateSplitMode(windows[0], NULL, windows[0]);
1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[0], controller->left_window());
1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[5], controller->right_window());
1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[0], GetTopmostWindow());
1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(windows[5], GetSecondTopmostWindow());
1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_TRUE(OnlySplitViewWindowsVisible());
1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(SplitViewControllerTest, LandscapeOnly) {
1651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  aura::test::TestWindowDelegate delegate;
1661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ScopedVector<aura::Window> windows;
1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  const int kNumWindows = 2;
1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  for (size_t i = 0; i < kNumWindows; ++i) {
1691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    scoped_ptr<aura::Window> window = CreateTestWindow(NULL, gfx::Rect());
1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    window->Hide();
1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    windows.push_back(window.release());
1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  windows[kNumWindows - 1]->Show();
1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  wm::ActivateWindow(windows[kNumWindows - 1]);
1751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ASSERT_EQ(gfx::Display::ROTATE_0,
1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().rotation());
1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  SplitViewController* controller = api()->GetSplitViewController();
1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ASSERT_TRUE(IsSplitViewAllowed());
1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ASSERT_FALSE(controller->IsSplitViewModeActive());
1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  controller->ActivateSplitMode(NULL, NULL, NULL);
1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ASSERT_TRUE(controller->IsSplitViewModeActive());
1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Screen rotation should be locked while in splitview.
1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ScreenManager::Get()->SetRotation(gfx::Display::ROTATE_90);
1881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(gfx::Display::ROTATE_0,
1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().rotation());
1901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Screen is rotated on exiting splitview.
1921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  controller->DeactivateSplitMode();
1931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ASSERT_EQ(gfx::Display::ROTATE_90,
1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().rotation());
1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Entering splitview should now be disabled now that the screen is in a
1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // portrait orientation.
1981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_FALSE(IsSplitViewAllowed());
1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Rotating back to 0 allows splitview again.
2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ScreenManager::Get()->SetRotation(gfx::Display::ROTATE_0);
2021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_TRUE(IsSplitViewAllowed());
2036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}
2046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
2056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}  // namespace athena
206