chromium/ash/wm/fullscreen_window_finder_unittest.cc

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ash/wm/fullscreen_window_finder.h"

#include <memory>

#include "ash/test/ash_test_base.h"
#include "ash/wm/window_util.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/window.h"
#include "ui/base/ui_base_types.h"
#include "ui/gfx/geometry/rect.h"

namespace ash {

class FullscreenWindowFinderTest : public AshTestBase {
 public:
  FullscreenWindowFinderTest() = default;

  FullscreenWindowFinderTest(const FullscreenWindowFinderTest&) = delete;
  FullscreenWindowFinderTest& operator=(const FullscreenWindowFinderTest&) =
      delete;

  ~FullscreenWindowFinderTest() override = default;

  void SetUp() override {
    AshTestBase::SetUp();
    gfx::Rect bounds(100, 100, 200, 200);
    test_window_.reset(CreateTestWindowInShellWithBounds(bounds));
  }

  void TearDown() override {
    test_window_.reset();
    AshTestBase::TearDown();
  }

  bool FullscreenWindowExists() const {
    return nullptr != GetWindowForFullscreenModeForContext(test_window_.get());
  }

 protected:
  std::unique_ptr<aura::Window> test_window_;
};

// Test that a non-fullscreen window isn't found by GetWindowForFullscreenMode.
TEST_F(FullscreenWindowFinderTest, NonFullscreen) {
  EXPECT_FALSE(FullscreenWindowExists());
}

// Test that a regular fullscreen window is found by GetWindowForFullscreenMode.
TEST_F(FullscreenWindowFinderTest, RegularFullscreen) {
  test_window_->SetProperty(aura::client::kShowStateKey,
                            ui::SHOW_STATE_FULLSCREEN);
  EXPECT_TRUE(FullscreenWindowExists());
}

// Test that a pinned fullscreen window is found by GetWindowForFullscreenMode.
TEST_F(FullscreenWindowFinderTest, PinnedFullscreen) {
  window_util::PinWindow(test_window_.get(), /*trusted=*/false);
  EXPECT_TRUE(FullscreenWindowExists());
}

// Test that a trusted pinned fullscreen window is found by
// GetWindowForFullscreenMode.
TEST_F(FullscreenWindowFinderTest, TrustedPinnedFullscreen) {
  window_util::PinWindow(test_window_.get(), /*trusted=*/true);
  EXPECT_TRUE(FullscreenWindowExists());
}

}  // namespace ash