| Index: ash/wm/workspace/workspace_manager_unittest.cc
|
| diff --git a/ash/wm/workspace/workspace_manager_unittest.cc b/ash/wm/workspace/workspace_manager_unittest.cc
|
| deleted file mode 100644
|
| index 2b4f08abf0900428f0acceb93b811033c22fee70..0000000000000000000000000000000000000000
|
| --- a/ash/wm/workspace/workspace_manager_unittest.cc
|
| +++ /dev/null
|
| @@ -1,741 +0,0 @@
|
| -// Copyright (c) 2012 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 "ash/wm/workspace/workspace_manager.h"
|
| -
|
| -#include "ash/ash_switches.h"
|
| -#include "ash/screen_ash.h"
|
| -#include "ash/shell.h"
|
| -#include "ash/shell_window_ids.h"
|
| -#include "ash/test/ash_test_base.h"
|
| -#include "ash/wm/activation_controller.h"
|
| -#include "ash/wm/property_util.h"
|
| -#include "ash/wm/shelf_layout_manager.h"
|
| -#include "ash/wm/window_util.h"
|
| -#include "ash/wm/workspace/workspace.h"
|
| -#include "ash/wm/workspace/workspace_layout_manager.h"
|
| -#include "ash/wm/workspace_controller_test_helper.h"
|
| -#include "base/command_line.h"
|
| -#include "ui/aura/client/aura_constants.h"
|
| -#include "ui/aura/root_window.h"
|
| -#include "ui/aura/test/event_generator.h"
|
| -#include "ui/aura/window.h"
|
| -#include "ui/base/ui_base_types.h"
|
| -#include "ui/compositor/layer.h"
|
| -#include "ui/gfx/screen.h"
|
| -
|
| -using aura::Window;
|
| -
|
| -namespace ash {
|
| -namespace internal {
|
| -
|
| -namespace {
|
| -
|
| -bool GetWindowOverlapsShelf() {
|
| - return Shell::GetInstance()->shelf()->window_overlaps_shelf();
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -class WorkspaceManagerTest : public test::AshTestBase {
|
| - public:
|
| - WorkspaceManagerTest() : manager_(NULL) {}
|
| - virtual ~WorkspaceManagerTest() {}
|
| -
|
| - aura::Window* CreateTestWindowUnparented() {
|
| - aura::Window* window = new aura::Window(NULL);
|
| - window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
|
| - window->SetType(aura::client::WINDOW_TYPE_NORMAL);
|
| - window->Init(ui::LAYER_TEXTURED);
|
| - return window;
|
| - }
|
| -
|
| - aura::Window* CreateTestWindow() {
|
| - aura::Window* window = new aura::Window(NULL);
|
| - window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
|
| - window->SetType(aura::client::WINDOW_TYPE_NORMAL);
|
| - window->Init(ui::LAYER_TEXTURED);
|
| - window->SetParent(GetViewport());
|
| - return window;
|
| - }
|
| -
|
| - aura::Window* GetViewport() {
|
| - return Shell::GetContainer(
|
| - Shell::GetPrimaryRootWindow(),
|
| - kShellWindowId_DefaultContainer);
|
| - }
|
| -
|
| - const std::vector<Workspace*>& workspaces() const {
|
| - return manager_->workspaces_;
|
| - }
|
| -
|
| - gfx::Rect GetFullscreenBounds(aura::Window* window) {
|
| - return Shell::GetScreen()->GetDisplayNearestWindow(window).bounds();
|
| - }
|
| -
|
| - Workspace* active_workspace() {
|
| - return manager_->active_workspace_;
|
| - }
|
| -
|
| - Workspace* FindBy(aura::Window* window) const {
|
| - return manager_->FindBy(window);
|
| - }
|
| -
|
| - // Overridden from AshTestBase:
|
| - virtual void SetUp() OVERRIDE {
|
| - CommandLine::ForCurrentProcess()->AppendSwitch(
|
| - switches::kAshDisableWorkspace2);
|
| - test::AshTestBase::SetUp();
|
| - WorkspaceControllerTestHelper workspace_helper(
|
| - Shell::TestApi(Shell::GetInstance()).workspace_controller());
|
| - manager_ = workspace_helper.workspace_manager();
|
| - }
|
| - virtual void TearDown() OVERRIDE {
|
| - manager_ = NULL;
|
| - test::AshTestBase::TearDown();
|
| - }
|
| -
|
| - protected:
|
| - WorkspaceManager* manager_;
|
| -
|
| - private:
|
| - scoped_ptr<ActivationController> activation_controller_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WorkspaceManagerTest);
|
| -};
|
| -
|
| -// Assertions around adding a normal window.
|
| -TEST_F(WorkspaceManagerTest, AddNormalWindowWhenEmpty) {
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - w1->SetBounds(gfx::Rect(0, 0, 250, 251));
|
| -
|
| - ASSERT_TRUE(manager_->ShouldManageWindow(w1.get()));
|
| - EXPECT_FALSE(FindBy(w1.get()));
|
| -
|
| - EXPECT_TRUE(GetRestoreBoundsInScreen(w1.get()) == NULL);
|
| -
|
| - w1->Show();
|
| -
|
| - EXPECT_TRUE(GetRestoreBoundsInScreen(w1.get()) == NULL);
|
| -
|
| - ASSERT_TRUE(w1->layer() != NULL);
|
| - EXPECT_TRUE(w1->layer()->visible());
|
| -
|
| - EXPECT_EQ(250, w1->bounds().width());
|
| - EXPECT_EQ(251, w1->bounds().height());
|
| -
|
| - // Should be 1 workspace, TYPE_NORNMAL with w1.
|
| - ASSERT_EQ(1u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MANAGED, workspaces()[0]->type());
|
| - ASSERT_EQ(1u, workspaces()[0]->windows().size());
|
| - EXPECT_EQ(w1.get(), workspaces()[0]->windows()[0]);
|
| -}
|
| -
|
| -// Assertions around maximizing/unmaximizing.
|
| -TEST_F(WorkspaceManagerTest, SingleMaximizeWindow) {
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - w1->SetBounds(gfx::Rect(0, 0, 250, 251));
|
| -
|
| - ASSERT_TRUE(manager_->ShouldManageWindow(w1.get()));
|
| -
|
| - w1->Show();
|
| -
|
| - ASSERT_TRUE(w1->layer() != NULL);
|
| - EXPECT_TRUE(w1->layer()->visible());
|
| -
|
| - EXPECT_EQ(250, w1->bounds().width());
|
| - EXPECT_EQ(251, w1->bounds().height());
|
| -
|
| - // Maximize the window.
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| -
|
| - // Should be 2 workspaces, the second TYPE_MAXIMIZED with w1.
|
| - ASSERT_EQ(2u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MAXIMIZED, workspaces()[1]->type());
|
| - ASSERT_EQ(1u, workspaces()[1]->windows().size());
|
| - EXPECT_EQ(w1.get(), workspaces()[1]->windows()[0]);
|
| - EXPECT_EQ(ScreenAsh::GetMaximizedWindowBoundsInParent(w1.get()).width(),
|
| - w1->bounds().width());
|
| - EXPECT_EQ(ScreenAsh::GetMaximizedWindowBoundsInParent(w1.get()).height(),
|
| - w1->bounds().height());
|
| -
|
| - // Restore the window.
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
|
| -
|
| - // Should be 1 workspace, TYPE_MANAGED with w1.
|
| - ASSERT_EQ(1u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MANAGED, workspaces()[0]->type());
|
| - ASSERT_EQ(1u, workspaces()[0]->windows().size());
|
| - EXPECT_EQ(w1.get(), workspaces()[0]->windows()[0]);
|
| - EXPECT_EQ(250, w1->bounds().width());
|
| - EXPECT_EQ(251, w1->bounds().height());
|
| -}
|
| -
|
| -// Assertions around closing the last window in a workspace.
|
| -TEST_F(WorkspaceManagerTest, CloseLastWindowInWorkspace) {
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - scoped_ptr<Window> w2(CreateTestWindow());
|
| - w1->SetBounds(gfx::Rect(0, 0, 250, 251));
|
| - w1->Show();
|
| - w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| - w2->Show();
|
| -
|
| - // Should be 2 workspaces, TYPE_NORMAL with w1, and TYPE_MAXIMIZED with w2.
|
| - ASSERT_EQ(2u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MANAGED, workspaces()[0]->type());
|
| - ASSERT_EQ(1u, workspaces()[0]->windows().size());
|
| - EXPECT_EQ(w1.get(), workspaces()[0]->windows()[0]);
|
| - EXPECT_EQ(Workspace::TYPE_MAXIMIZED, workspaces()[1]->type());
|
| - ASSERT_EQ(1u, workspaces()[1]->windows().size());
|
| - EXPECT_EQ(w2.get(), workspaces()[1]->windows()[0]);
|
| - EXPECT_FALSE(w1->layer()->visible());
|
| - EXPECT_TRUE(w2->layer()->visible());
|
| - // TYPE_MAXIMIZED workspace should be active.
|
| - EXPECT_EQ(workspaces()[1], active_workspace());
|
| -
|
| - // Close w2.
|
| - w2.reset();
|
| -
|
| - // Should have one workspace, TYPE_NORMAL with w1.
|
| - ASSERT_EQ(1u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MANAGED, workspaces()[0]->type());
|
| - ASSERT_EQ(1u, workspaces()[0]->windows().size());
|
| - EXPECT_EQ(w1.get(), workspaces()[0]->windows()[0]);
|
| - EXPECT_TRUE(w1->layer()->visible());
|
| - EXPECT_EQ(workspaces()[0], active_workspace());
|
| -}
|
| -
|
| -// Assertions around adding a maximized window when empty.
|
| -TEST_F(WorkspaceManagerTest, AddMaximizedWindowWhenEmpty) {
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - w1->SetBounds(gfx::Rect(0, 0, 250, 251));
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| - w1->Show();
|
| -
|
| - ASSERT_TRUE(w1->layer() != NULL);
|
| - EXPECT_TRUE(w1->layer()->visible());
|
| - gfx::Rect work_area(
|
| - ScreenAsh::GetMaximizedWindowBoundsInParent(w1.get()));
|
| - EXPECT_EQ(work_area.width(), w1->bounds().width());
|
| - EXPECT_EQ(work_area.height(), w1->bounds().height());
|
| -
|
| - // Should be 1 workspace, TYPE_NORNMAL with w1.
|
| - ASSERT_EQ(1u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MAXIMIZED, workspaces()[0]->type());
|
| - ASSERT_EQ(1u, workspaces()[0]->windows().size());
|
| - EXPECT_EQ(w1.get(), workspaces()[0]->windows()[0]);
|
| -}
|
| -
|
| -// Assertions around two windows and toggling one to be maximized.
|
| -TEST_F(WorkspaceManagerTest, MaximizeWithNormalWindow) {
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - scoped_ptr<Window> w2(CreateTestWindow());
|
| - w1->SetBounds(gfx::Rect(0, 0, 250, 251));
|
| - w1->Show();
|
| -
|
| - ASSERT_TRUE(w1->layer() != NULL);
|
| - EXPECT_TRUE(w1->layer()->visible());
|
| -
|
| - w2->SetBounds(gfx::Rect(0, 0, 50, 51));
|
| - w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| - w2->Show();
|
| -
|
| - // Should now be two workspaces.
|
| - ASSERT_EQ(2u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MANAGED, workspaces()[0]->type());
|
| - ASSERT_EQ(1u, workspaces()[0]->windows().size());
|
| - EXPECT_EQ(w1.get(), workspaces()[0]->windows()[0]);
|
| - EXPECT_EQ(Workspace::TYPE_MAXIMIZED, workspaces()[1]->type());
|
| - ASSERT_EQ(1u, workspaces()[1]->windows().size());
|
| - EXPECT_EQ(w2.get(), workspaces()[1]->windows()[0]);
|
| - ASSERT_TRUE(w1->layer() != NULL);
|
| - EXPECT_FALSE(w1->layer()->visible());
|
| - ASSERT_TRUE(w2->layer() != NULL);
|
| - EXPECT_TRUE(w2->layer()->visible());
|
| -
|
| - gfx::Rect work_area(ScreenAsh::GetMaximizedWindowBoundsInParent(w1.get()));
|
| - EXPECT_EQ(work_area.width(), w2->bounds().width());
|
| - EXPECT_EQ(work_area.height(), w2->bounds().height());
|
| -
|
| - // Restore w2, which should then go back to one workspace.
|
| - w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
|
| - ASSERT_EQ(1u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MANAGED, workspaces()[0]->type());
|
| - ASSERT_EQ(2u, workspaces()[0]->windows().size());
|
| - EXPECT_EQ(w1.get(), workspaces()[0]->windows()[0]);
|
| - EXPECT_EQ(w2.get(), workspaces()[0]->windows()[1]);
|
| - EXPECT_EQ(50, w2->bounds().width());
|
| - EXPECT_EQ(51, w2->bounds().height());
|
| - ASSERT_TRUE(w1->layer() != NULL);
|
| - EXPECT_TRUE(w1->layer()->visible());
|
| - ASSERT_TRUE(w2->layer() != NULL);
|
| - EXPECT_TRUE(w2->layer()->visible());
|
| -}
|
| -
|
| -// Assertions around two maximized windows.
|
| -TEST_F(WorkspaceManagerTest, TwoMaximized) {
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - scoped_ptr<Window> w2(CreateTestWindow());
|
| - w1->SetBounds(gfx::Rect(0, 0, 250, 251));
|
| - w1->Show();
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| -
|
| - w2->SetBounds(gfx::Rect(0, 0, 50, 51));
|
| - w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| - w2->Show();
|
| -
|
| - // Should now be three workspaces.
|
| - ASSERT_EQ(3u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MAXIMIZED, workspaces()[1]->type());
|
| - ASSERT_EQ(1u, workspaces()[1]->windows().size());
|
| - EXPECT_EQ(w1.get(), workspaces()[1]->windows()[0]);
|
| - EXPECT_EQ(Workspace::TYPE_MAXIMIZED, workspaces()[2]->type());
|
| - ASSERT_EQ(1u, workspaces()[2]->windows().size());
|
| - EXPECT_EQ(w2.get(), workspaces()[2]->windows()[0]);
|
| - ASSERT_TRUE(w1->layer() != NULL);
|
| - EXPECT_FALSE(w1->layer()->visible());
|
| - ASSERT_TRUE(w2->layer() != NULL);
|
| - EXPECT_TRUE(w2->layer()->visible());
|
| -}
|
| -
|
| -// Makes sure requests to change the bounds of a normal window go through.
|
| -TEST_F(WorkspaceManagerTest, ChangeBoundsOfNormalWindow) {
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - w1->Show();
|
| -
|
| - EXPECT_TRUE(manager_->ShouldManageWindow(w1.get()));
|
| - // Setting the bounds should go through since the window is in the normal
|
| - // workspace.
|
| - w1->SetBounds(gfx::Rect(0, 0, 200, 500));
|
| - EXPECT_EQ(200, w1->bounds().width());
|
| - EXPECT_EQ(500, w1->bounds().height());
|
| -}
|
| -
|
| -// Assertions around grid size.
|
| -TEST_F(WorkspaceManagerTest, SnapToGrid) {
|
| - // Verify snap to grid when bounds are set before parented.
|
| - scoped_ptr<Window> w1(CreateTestWindowUnparented());
|
| - w1->SetBounds(gfx::Rect(1, 6, 25, 30));
|
| - w1->SetParent(GetViewport());
|
| - // We are not aligning this anymore this way. When the window gets shown
|
| - // the window is expected to be handled differently, but this cannot be
|
| - // tested with this test. So the result of this test should be that the
|
| - // bounds are exactly as passed in.
|
| - EXPECT_EQ(gfx::Rect(1, 6, 25, 30), w1->bounds());
|
| -}
|
| -
|
| -// Assertions around a fullscreen window.
|
| -TEST_F(WorkspaceManagerTest, SingleFullscreenWindow) {
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - w1->SetBounds(gfx::Rect(0, 0, 250, 251));
|
| - // Make the window fullscreen.
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN);
|
| - w1->Show();
|
| -
|
| - // Should be 1 workspace, TYPE_MAXIMIZED with w1.
|
| - ASSERT_EQ(1u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MAXIMIZED, workspaces()[0]->type());
|
| - ASSERT_EQ(1u, workspaces()[0]->windows().size());
|
| - EXPECT_EQ(w1.get(), workspaces()[0]->windows()[0]);
|
| - EXPECT_EQ(GetFullscreenBounds(w1.get()).width(), w1->bounds().width());
|
| - EXPECT_EQ(GetFullscreenBounds(w1.get()).height(), w1->bounds().height());
|
| -
|
| - // Restore the window. Use SHOW_STATE_DEFAULT as that is what we'll end up
|
| - // with when using views::Widget.
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_DEFAULT);
|
| - EXPECT_EQ("0,0 250x251", w1->bounds().ToString());
|
| -
|
| - // Should be 1 workspace, TYPE_MANAGED with w1.
|
| - ASSERT_EQ(1u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MANAGED, workspaces()[0]->type());
|
| - ASSERT_EQ(1u, workspaces()[0]->windows().size());
|
| - EXPECT_EQ(w1.get(), workspaces()[0]->windows()[0]);
|
| - EXPECT_EQ(250, w1->bounds().width());
|
| - EXPECT_EQ(251, w1->bounds().height());
|
| -
|
| - // Back to fullscreen.
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN);
|
| - ASSERT_EQ(2u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MAXIMIZED, workspaces()[1]->type());
|
| - ASSERT_EQ(1u, workspaces()[1]->windows().size());
|
| - EXPECT_EQ(w1.get(), workspaces()[1]->windows()[0]);
|
| - EXPECT_EQ(GetFullscreenBounds(w1.get()).width(), w1->bounds().width());
|
| - EXPECT_EQ(GetFullscreenBounds(w1.get()).height(), w1->bounds().height());
|
| - ASSERT_TRUE(GetRestoreBoundsInScreen(w1.get()));
|
| - EXPECT_EQ(gfx::Rect(0, 0, 250, 251), *GetRestoreBoundsInScreen(w1.get()));
|
| -}
|
| -
|
| -// Makes sure switching workspaces doesn't show transient windows.
|
| -TEST_F(WorkspaceManagerTest, DontShowTransientsOnSwitch) {
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - scoped_ptr<Window> w2(CreateTestWindow());
|
| -
|
| - w1->SetBounds(gfx::Rect(0, 0, 250, 251));
|
| - w2->SetBounds(gfx::Rect(0, 0, 250, 251));
|
| - w1->AddTransientChild(w2.get());
|
| -
|
| - w1->Show();
|
| -
|
| - scoped_ptr<Window> w3(CreateTestWindow());
|
| - w3->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| - w3->Show();
|
| -
|
| - EXPECT_FALSE(w1->layer()->IsDrawn());
|
| - EXPECT_FALSE(w2->layer()->IsDrawn());
|
| - EXPECT_TRUE(w3->layer()->IsDrawn());
|
| -
|
| - w1->Show();
|
| - EXPECT_TRUE(w1->layer()->IsDrawn());
|
| - EXPECT_FALSE(w2->layer()->IsDrawn());
|
| - EXPECT_FALSE(w3->layer()->IsDrawn());
|
| -}
|
| -
|
| -// Assertions around minimizing a single window.
|
| -TEST_F(WorkspaceManagerTest, MinimizeSingleWindow) {
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| -
|
| - w1->Show();
|
| - ASSERT_EQ(1u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MANAGED, workspaces()[0]->type());
|
| -
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED);
|
| - ASSERT_EQ(1u, workspaces().size());
|
| - EXPECT_FALSE(w1->layer()->IsDrawn());
|
| -
|
| - // Show the window.
|
| - w1->Show();
|
| - EXPECT_TRUE(wm::IsWindowNormal(w1.get()));
|
| - ASSERT_EQ(1u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MANAGED, workspaces()[0]->type());
|
| - EXPECT_TRUE(w1->layer()->IsDrawn());
|
| -}
|
| -
|
| -// Assertions around minimizing a maximized window.
|
| -TEST_F(WorkspaceManagerTest, MinimizeMaximizedWindow) {
|
| - // Two windows, w1 normal, w2 maximized.
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - scoped_ptr<Window> w2(CreateTestWindow());
|
| - w1->Show();
|
| - w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| - w2->Show();
|
| - ASSERT_EQ(2u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MANAGED, workspaces()[0]->type());
|
| - EXPECT_EQ(Workspace::TYPE_MAXIMIZED, workspaces()[1]->type());
|
| -
|
| - // Minimize w2.
|
| - w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED);
|
| - ASSERT_EQ(1u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MANAGED, workspaces()[0]->type());
|
| - EXPECT_TRUE(w1->layer()->IsDrawn());
|
| - EXPECT_FALSE(w2->layer()->IsDrawn());
|
| -
|
| - // Show the window, which should trigger unminimizing.
|
| - w2->Show();
|
| - EXPECT_TRUE(wm::IsWindowMaximized(w2.get()));
|
| - ASSERT_EQ(2u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MANAGED, workspaces()[0]->type());
|
| - EXPECT_EQ(Workspace::TYPE_MAXIMIZED, workspaces()[1]->type());
|
| - EXPECT_FALSE(w1->layer()->IsDrawn());
|
| - EXPECT_TRUE(w2->layer()->IsDrawn());
|
| -
|
| - // Make it active and minimize the window, which should hide the window and
|
| - // activate another.
|
| - wm::ActivateWindow(w2.get());
|
| - EXPECT_TRUE(wm::IsActiveWindow(w2.get()));
|
| - w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED);
|
| - EXPECT_FALSE(wm::IsActiveWindow(w2.get()));
|
| - EXPECT_FALSE(w2->layer()->IsDrawn());
|
| - EXPECT_TRUE(wm::IsActiveWindow(w1.get()));
|
| -
|
| - // Make the window normal.
|
| - w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
|
| - ASSERT_EQ(1u, workspaces().size());
|
| - EXPECT_EQ(Workspace::TYPE_MANAGED, workspaces()[0]->type());
|
| - ASSERT_EQ(2u, workspaces()[0]->windows().size());
|
| - EXPECT_EQ(w1.get(), workspaces()[0]->windows()[0]);
|
| - EXPECT_EQ(w2.get(), workspaces()[0]->windows()[1]);
|
| - EXPECT_TRUE(w2->layer()->IsDrawn());
|
| -}
|
| -
|
| -// Verifies ShelfLayoutManager's visibility/auto-hide state is correctly
|
| -// updated.
|
| -TEST_F(WorkspaceManagerTest, ShelfStateUpdated) {
|
| - // Since ShelfLayoutManager queries for mouse location, move the mouse so
|
| - // it isn't over the shelf.
|
| - aura::test::EventGenerator generator(
|
| - Shell::GetPrimaryRootWindow(), gfx::Point());
|
| - generator.MoveMouseTo(0, 0);
|
| -
|
| - // Two windows, w1 normal, w2 maximized.
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - const gfx::Rect w1_bounds(0, 1, 101, 102);
|
| - ShelfLayoutManager* shelf = Shell::GetInstance()->shelf();
|
| - shelf->SetAutoHideBehavior(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
|
| - const gfx::Rect touches_shelf_bounds(
|
| - 0, shelf->GetIdealBounds().y() - 10, 101, 102);
|
| - // Move |w1| to overlap the shelf.
|
| - w1->SetBounds(touches_shelf_bounds);
|
| - EXPECT_FALSE(GetWindowOverlapsShelf());
|
| -
|
| - // A visible ignored window should not trigger the overlap.
|
| - scoped_ptr<Window> w_ignored(CreateTestWindow());
|
| - w_ignored->SetBounds(touches_shelf_bounds);
|
| - SetIgnoredByShelf(&(*w_ignored), true);
|
| - w_ignored->Show();
|
| - EXPECT_FALSE(GetWindowOverlapsShelf());
|
| -
|
| - // Make it visible, since visible shelf overlaps should be true.
|
| - w1->Show();
|
| - EXPECT_TRUE(GetWindowOverlapsShelf());
|
| -
|
| - wm::ActivateWindow(w1.get());
|
| - w1->SetBounds(w1_bounds);
|
| - w1->Show();
|
| - wm::ActivateWindow(w1.get());
|
| -
|
| - EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE, shelf->visibility_state());
|
| -
|
| - // Maximize the window.
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| - EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE, shelf->visibility_state());
|
| - EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE_HIDDEN, shelf->auto_hide_state());
|
| -
|
| - // Restore.
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
|
| - EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE, shelf->visibility_state());
|
| - EXPECT_EQ("0,1 101x102", w1->bounds().ToString());
|
| -
|
| - // Fullscreen.
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN);
|
| - EXPECT_EQ(ShelfLayoutManager::HIDDEN, shelf->visibility_state());
|
| -
|
| - // Normal.
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
|
| - EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE, shelf->visibility_state());
|
| - EXPECT_EQ("0,1 101x102", w1->bounds().ToString());
|
| -
|
| - // Maximize again.
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| - EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE, shelf->visibility_state());
|
| - EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE_HIDDEN, shelf->auto_hide_state());
|
| -
|
| - // Minimize.
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED);
|
| - EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE, shelf->visibility_state());
|
| -
|
| - // Restore.
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
|
| - EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE, shelf->visibility_state());
|
| - EXPECT_EQ("0,1 101x102", w1->bounds().ToString());
|
| -
|
| - // Create another window, maximized.
|
| - scoped_ptr<Window> w2(CreateTestWindow());
|
| - w2->SetBounds(gfx::Rect(10, 11, 250, 251));
|
| - w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| - w2->Show();
|
| - EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE, shelf->visibility_state());
|
| - EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE_HIDDEN, shelf->auto_hide_state());
|
| - EXPECT_EQ("0,1 101x102", w1->bounds().ToString());
|
| -
|
| - // Switch to w1.
|
| - w1->Show();
|
| - EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE, shelf->visibility_state());
|
| - EXPECT_EQ("0,1 101x102", w1->bounds().ToString());
|
| - EXPECT_EQ(ScreenAsh::GetMaximizedWindowBoundsInParent(w2.get()).ToString(),
|
| - w2->bounds().ToString());
|
| -
|
| - // Switch to w2.
|
| - w2->Show();
|
| - EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE, shelf->visibility_state());
|
| - EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE_HIDDEN, shelf->auto_hide_state());
|
| - EXPECT_EQ("0,1 101x102", w1->bounds().ToString());
|
| - EXPECT_EQ(ScreenAsh::GetMaximizedWindowBoundsInParent(w2.get()).ToString(),
|
| - w2->bounds().ToString());
|
| -}
|
| -
|
| -// Verifies persist across all workspaces.
|
| -TEST_F(WorkspaceManagerTest, PersistAcrossAllWorkspaces) {
|
| - // Create a maximized window.
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - w1->Show();
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| - EXPECT_TRUE(w1->layer()->IsDrawn());
|
| - EXPECT_EQ(Workspace::TYPE_MAXIMIZED, active_workspace()->type());
|
| -
|
| - // Create a window that persists across all workspaces, it should be visible
|
| - // even while in a maximized workspace.
|
| - scoped_ptr<Window> w2(CreateTestWindow());
|
| - SetPersistsAcrossAllWorkspaces(
|
| - w2.get(),
|
| - WINDOW_PERSISTS_ACROSS_ALL_WORKSPACES_VALUE_YES);
|
| - w2->Show();
|
| - wm::ActivateWindow(w2.get());
|
| - EXPECT_EQ(Workspace::TYPE_MAXIMIZED, active_workspace()->type());
|
| - EXPECT_TRUE(std::find(active_workspace()->windows().begin(),
|
| - active_workspace()->windows().end(), w2.get()) ==
|
| - active_workspace()->windows().end());
|
| - EXPECT_TRUE(w1->layer()->IsDrawn());
|
| - EXPECT_TRUE(w2->layer()->IsDrawn());
|
| -
|
| - // Activate the maximized window, w1, ensure w2 is still visible.
|
| - wm::ActivateWindow(w1.get());
|
| - EXPECT_EQ(Workspace::TYPE_MAXIMIZED, active_workspace()->type());
|
| - EXPECT_TRUE(w1->layer()->IsDrawn());
|
| - EXPECT_TRUE(w2->layer()->IsDrawn());
|
| -
|
| - // Create another window (normal) and show/activate it. w1 (maximized window)
|
| - // should hide, but w2 should still be visible since it persists across all
|
| - // windows.
|
| - scoped_ptr<Window> w3(CreateTestWindow());
|
| - w3->Show();
|
| - wm::ActivateWindow(w3.get());
|
| - EXPECT_EQ(Workspace::TYPE_MANAGED, active_workspace()->type());
|
| - EXPECT_FALSE(w1->layer()->IsDrawn());
|
| - EXPECT_TRUE(w2->layer()->IsDrawn());
|
| - EXPECT_TRUE(w3->layer()->IsDrawn());
|
| -
|
| - // Activate w2 again, shouldn't switch workspaces.
|
| - wm::ActivateWindow(w2.get());
|
| - EXPECT_EQ(Workspace::TYPE_MANAGED, active_workspace()->type());
|
| - EXPECT_FALSE(w1->layer()->IsDrawn());
|
| - EXPECT_TRUE(w2->layer()->IsDrawn());
|
| - EXPECT_TRUE(w3->layer()->IsDrawn());
|
| -}
|
| -
|
| -// Verifies Show()ing a minimized window that persists across all workspaces
|
| -// unminimizes the window.
|
| -TEST_F(WorkspaceManagerTest, ShowMinimizedPersistWindow) {
|
| - // Create a window that persists across all workspaces.
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - SetPersistsAcrossAllWorkspaces(
|
| - w1.get(),
|
| - WINDOW_PERSISTS_ACROSS_ALL_WORKSPACES_VALUE_YES);
|
| - w1->Show();
|
| - wm::ActivateWindow(w1.get());
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED);
|
| - EXPECT_FALSE(w1->IsVisible());
|
| - w1->Show();
|
| - EXPECT_TRUE(w1->IsVisible());
|
| -}
|
| -
|
| -// Test that we report we're in the fullscreen state even if the fullscreen
|
| -// window isn't being managed by us (http://crbug.com/123931).
|
| -TEST_F(WorkspaceManagerTest, GetWindowStateWithUnmanagedFullscreenWindow) {
|
| - ShelfLayoutManager* shelf = Shell::GetInstance()->shelf();
|
| -
|
| - // We need to create a regular window first so there's an active workspace.
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - w1->Show();
|
| -
|
| - scoped_ptr<Window> w2(CreateTestWindow());
|
| - w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN);
|
| - SetPersistsAcrossAllWorkspaces(
|
| - w2.get(),
|
| - WINDOW_PERSISTS_ACROSS_ALL_WORKSPACES_VALUE_YES);
|
| - w2->Show();
|
| -
|
| - EXPECT_EQ(ShelfLayoutManager::HIDDEN, shelf->visibility_state());
|
| - ASSERT_FALSE(manager_->ShouldManageWindow(w2.get()));
|
| - EXPECT_EQ(WORKSPACE_WINDOW_STATE_FULL_SCREEN,
|
| - manager_->GetWindowState());
|
| -
|
| - w2->Hide();
|
| - EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state());
|
| -
|
| - w2->Show();
|
| - EXPECT_EQ(ShelfLayoutManager::HIDDEN, shelf->visibility_state());
|
| -
|
| - w2.reset();
|
| - EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state());
|
| -}
|
| -
|
| -// Variant of GetWindowStateWithUnmanagedFullscreenWindow that uses a maximized
|
| -// window rather than a normal window.
|
| -TEST_F(WorkspaceManagerTest,
|
| - GetWindowStateWithUnmanagedFullscreenWindowWithMaximized) {
|
| - ShelfLayoutManager* shelf = Shell::GetInstance()->shelf();
|
| - shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
|
| -
|
| - // Make the first window maximized.
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| - w1->Show();
|
| -
|
| - scoped_ptr<Window> w2(CreateTestWindow());
|
| - w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN);
|
| - SetPersistsAcrossAllWorkspaces(
|
| - w2.get(),
|
| - WINDOW_PERSISTS_ACROSS_ALL_WORKSPACES_VALUE_YES);
|
| - w2->Show();
|
| -
|
| - // Even though auto-hide behavior is NEVER full-screen windows cause the shelf
|
| - // to hide.
|
| - EXPECT_EQ(ShelfLayoutManager::HIDDEN, shelf->visibility_state());
|
| - ASSERT_FALSE(manager_->ShouldManageWindow(w2.get()));
|
| - EXPECT_EQ(WORKSPACE_WINDOW_STATE_FULL_SCREEN,
|
| - manager_->GetWindowState());
|
| -
|
| - w2->Hide();
|
| - EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state());
|
| -
|
| - w2->Show();
|
| - EXPECT_EQ(ShelfLayoutManager::HIDDEN, shelf->visibility_state());
|
| - EXPECT_EQ(WORKSPACE_WINDOW_STATE_FULL_SCREEN,
|
| - manager_->GetWindowState());
|
| -
|
| - w2.reset();
|
| - EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state());
|
| -}
|
| -
|
| -// Makes sure that if animations are disabled on a window they don't get reset
|
| -// when switching workspaces.
|
| -TEST_F(WorkspaceManagerTest, DontResetAnimation) {
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - scoped_ptr<Window> w2(CreateTestWindow());
|
| -
|
| - w1->Show();
|
| - w1->SetProperty(aura::client::kAnimationsDisabledKey, true);
|
| -
|
| - w2->Show();
|
| - w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| - EXPECT_TRUE(w1->GetProperty(aura::client::kAnimationsDisabledKey));
|
| -}
|
| -
|
| -// Verifies a window marked as persisting across all workspaces ends up in its
|
| -// own workspace when maximized.
|
| -TEST_F(WorkspaceManagerTest, MaximizeDontPersistEndsUpInOwnWorkspace) {
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| -
|
| - SetPersistsAcrossAllWorkspaces(
|
| - w1.get(),
|
| - WINDOW_PERSISTS_ACROSS_ALL_WORKSPACES_VALUE_YES);
|
| - w1->Show();
|
| -
|
| - // Shouldn't contain the window initially.
|
| - EXPECT_FALSE(manager_->Contains(w1.get()));
|
| -
|
| - // Maximize should trigger containing the window.
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| - EXPECT_TRUE(manager_->Contains(w1.get()));
|
| -
|
| - // And resetting to normal should remove it.
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
|
| - EXPECT_FALSE(manager_->Contains(w1.get()));
|
| -}
|
| -
|
| -// Verifies going from maximized to minimized sets the right state for painting
|
| -// the background of the launcher.
|
| -TEST_F(WorkspaceManagerTest, MinimizeResetsVisibility) {
|
| - scoped_ptr<Window> w1(CreateTestWindow());
|
| - w1->Show();
|
| - wm::ActivateWindow(w1.get());
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
|
| - w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED);
|
| - EXPECT_EQ(ShelfLayoutManager::VISIBLE,
|
| - Shell::GetInstance()->shelf()->visibility_state());
|
| - EXPECT_FALSE(Shell::GetInstance()->launcher()->paints_background());
|
| -}
|
| -
|
| -} // namespace internal
|
| -} // namespace ash
|
|
|