blob: 7ddccdbf4066447513ba27c4d9deeadadaad975d [file] [log] [blame]
// 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/window_dimmer.h"
#include "ash/test/ash_test_base.h"
#include "ash/test/ash_test_helper.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/aura/test/aura_test_base.h"
#include "ui/aura/test/test_windows.h"
#include "ui/wm/core/window_util.h"
namespace ash {
using WindowDimmerTest = ash::AshTestBase;
// Verify that a window underneath the window dimmer is not occluded.
TEST_F(WindowDimmerTest, Occlusion) {
aura::Window* root_window = GetContext();
aura::Window* bottom_window =
aura::test::CreateTestWindow({.parent = root_window,
.bounds = root_window->bounds(),
.window_id = 1},
SK_ColorWHITE)
.release();
bottom_window->TrackOcclusionState();
WindowDimmer dimmer(root_window);
EXPECT_EQ(aura::Window::OcclusionState::VISIBLE,
bottom_window->GetOcclusionState());
// Sanity check: An opaque window on top of |bottom_window| occludes it.
auto occluding_window = aura::test::CreateTestWindow(
{.parent = root_window, .bounds = root_window->bounds(), .window_id = 2},
SK_ColorWHITE);
EXPECT_EQ(aura::Window::OcclusionState::OCCLUDED,
bottom_window->GetOcclusionState());
// The dimming window should never be activate-able even when it's visible.
dimmer.window()->Show();
EXPECT_FALSE(wm::CanActivateWindow(dimmer.window()));
}
} // namespace ash