123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- // Copyright 2013 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/accelerators/accelerator_commands.h"
- #include <memory>
- #include "ash/test/ash_test_base.h"
- #include "ash/wm/window_state.h"
- #include "ash/wm/window_util.h"
- #include "ui/aura/window.h"
- #include "ui/display/manager/display_manager.h"
- #include "ui/display/screen.h"
- #include "ui/display/test/display_manager_test_api.h"
- namespace ash {
- namespace accelerators {
- using AcceleratorCommandsTest = AshTestBase;
- TEST_F(AcceleratorCommandsTest, ToggleMinimized) {
- std::unique_ptr<aura::Window> window1(
- CreateTestWindowInShellWithBounds(gfx::Rect(5, 5, 20, 20)));
- std::unique_ptr<aura::Window> window2(
- CreateTestWindowInShellWithBounds(gfx::Rect(5, 5, 20, 20)));
- WindowState* window_state1 = WindowState::Get(window1.get());
- WindowState* window_state2 = WindowState::Get(window2.get());
- window_state1->Activate();
- window_state2->Activate();
- ToggleMinimized();
- EXPECT_TRUE(window_state2->IsMinimized());
- EXPECT_FALSE(window_state2->IsNormalStateType());
- EXPECT_TRUE(window_state1->IsActive());
- ToggleMinimized();
- EXPECT_TRUE(window_state1->IsMinimized());
- EXPECT_FALSE(window_state1->IsNormalStateType());
- EXPECT_FALSE(window_state1->IsActive());
- // Toggling minimize when there are no active windows should unminimize and
- // activate the last active window.
- ToggleMinimized();
- EXPECT_FALSE(window_state1->IsMinimized());
- EXPECT_TRUE(window_state1->IsNormalStateType());
- EXPECT_TRUE(window_state1->IsActive());
- }
- TEST_F(AcceleratorCommandsTest, ToggleMaximized) {
- std::unique_ptr<aura::Window> window(
- CreateTestWindowInShellWithBounds(gfx::Rect(5, 5, 20, 20)));
- WindowState* window_state = WindowState::Get(window.get());
- window_state->Activate();
- // When not in fullscreen, accelerators::ToggleMaximized toggles Maximized.
- EXPECT_FALSE(window_state->IsMaximized());
- ToggleMaximized();
- EXPECT_TRUE(window_state->IsMaximized());
- ToggleMaximized();
- EXPECT_FALSE(window_state->IsMaximized());
- // When in fullscreen accelerators::ToggleMaximized gets out of fullscreen.
- EXPECT_FALSE(window_state->IsFullscreen());
- ToggleFullscreen();
- EXPECT_TRUE(window_state->IsFullscreen());
- ToggleMaximized();
- EXPECT_FALSE(window_state->IsFullscreen());
- EXPECT_FALSE(window_state->IsMaximized());
- ToggleMaximized();
- EXPECT_FALSE(window_state->IsFullscreen());
- EXPECT_TRUE(window_state->IsMaximized());
- }
- TEST_F(AcceleratorCommandsTest, Unpin) {
- std::unique_ptr<aura::Window> window1(
- CreateTestWindowInShellWithBounds(gfx::Rect(5, 5, 20, 20)));
- WindowState* window_state1 = WindowState::Get(window1.get());
- window_state1->Activate();
- window_util::PinWindow(window1.get(), /* trusted */ false);
- EXPECT_TRUE(window_state1->IsPinned());
- UnpinWindow();
- EXPECT_FALSE(window_state1->IsPinned());
- }
- TEST_F(AcceleratorCommandsTest, CycleSwapPrimaryDisplay) {
- display::test::DisplayManagerTestApi(display_manager())
- .SetFirstDisplayAsInternalDisplay();
- UpdateDisplay("800x600,800x600,800x600");
- display::DisplayIdList id_list =
- display_manager()->GetConnectedDisplayIdList();
- ShiftPrimaryDisplay();
- int64_t primary_id = display::Screen::GetScreen()->GetPrimaryDisplay().id();
- EXPECT_EQ(id_list[1], primary_id);
- ShiftPrimaryDisplay();
- primary_id = display::Screen::GetScreen()->GetPrimaryDisplay().id();
- EXPECT_EQ(id_list[2], primary_id);
- ShiftPrimaryDisplay();
- primary_id = display::Screen::GetScreen()->GetPrimaryDisplay().id();
- EXPECT_EQ(id_list[0], primary_id);
- }
- TEST_F(AcceleratorCommandsTest, CycleMixedMirrorModeSwapPrimaryDisplay) {
- UpdateDisplay("300x400,400x500,500x600");
- display::DisplayIdList id_list =
- display_manager()->GetConnectedDisplayIdList();
- // Turn on mixed mirror mode. (Mirror from the first display to the second
- // display)
- display::DisplayIdList dst_ids;
- dst_ids.emplace_back(id_list[1]);
- absl::optional<display::MixedMirrorModeParams> mixed_params(
- absl::in_place, id_list[0], dst_ids);
- display_manager()->SetMirrorMode(display::MirrorMode::kMixed, mixed_params);
- EXPECT_TRUE(display_manager()->IsInSoftwareMirrorMode());
- EXPECT_EQ(id_list[0], display_manager()->mirroring_source_id());
- EXPECT_TRUE(display_manager()->mixed_mirror_mode_params());
- EXPECT_EQ(2U, display_manager()->GetNumDisplays());
- ShiftPrimaryDisplay();
- int64_t primary_id = display::Screen::GetScreen()->GetPrimaryDisplay().id();
- EXPECT_EQ(id_list[2], primary_id);
- ShiftPrimaryDisplay();
- primary_id = display::Screen::GetScreen()->GetPrimaryDisplay().id();
- EXPECT_EQ(id_list[0], primary_id);
- ShiftPrimaryDisplay();
- primary_id = display::Screen::GetScreen()->GetPrimaryDisplay().id();
- EXPECT_EQ(id_list[2], primary_id);
- }
- } // namespace accelerators
- } // namespace ash
|