blob: c8f86ad8f9e57e2a6abe36a71c0a77363b467efe [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/headless/headless_mode_browsertest.h"
#import <Cocoa/Cocoa.h>
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_window.h"
#include "testing/gtest/include/gtest/gtest.h"
INSTANTIATE_TEST_SUITE_P(HeadlessModeBrowserTestWithStartWindowMode,
HeadlessModeBrowserTestWithStartWindowMode,
testing::Values(kStartWindowNormal,
kStartWindowMaximized,
kStartWindowFullscreen));
IN_PROC_BROWSER_TEST_P(HeadlessModeBrowserTestWithStartWindowMode,
BrowserDesktopWindowVisibility) {
// On Mac, the Native Headless Chrome browser window exists and is
// visible, while the underlying platform window is hidden.
EXPECT_TRUE(browser()->window()->IsVisible());
gfx::NativeWindow native_window = browser()->window()->GetNativeWindow();
NSWindow* ns_window = native_window.GetNativeNSWindow();
EXPECT_FALSE(ns_window.visible);
}
IN_PROC_BROWSER_TEST_F(HeadlessModeBrowserTest,
ToggleFullscreenWindowVisibility) {
gfx::NativeWindow native_window = browser()->window()->GetNativeWindow();
NSWindow* ns_window = native_window.GetNativeNSWindow();
// Verify initial state.
ASSERT_FALSE(browser()->window()->IsFullscreen());
EXPECT_TRUE(browser()->window()->IsVisible());
EXPECT_FALSE(ns_window.visible);
// Verify fullscreen state.
ToggleFullscreenModeSync(browser());
ASSERT_TRUE(browser()->window()->IsFullscreen());
EXPECT_TRUE(browser()->window()->IsVisible());
EXPECT_FALSE(ns_window.visible);
// Verify back to normal state.
ToggleFullscreenModeSync(browser());
ASSERT_FALSE(browser()->window()->IsFullscreen());
EXPECT_TRUE(browser()->window()->IsVisible());
EXPECT_FALSE(ns_window.visible);
}
IN_PROC_BROWSER_TEST_F(HeadlessModeBrowserTest,
MinimizedRestoredWindowVisibility) {
gfx::NativeWindow native_window = browser()->window()->GetNativeWindow();
NSWindow* ns_window = native_window.GetNativeNSWindow();
// Verify initial state.
ASSERT_FALSE(browser()->window()->IsMinimized());
EXPECT_TRUE(browser()->window()->IsVisible());
EXPECT_FALSE(ns_window.visible);
// Verify minimized state.
browser()->window()->Minimize();
ASSERT_TRUE(browser()->window()->IsMinimized());
EXPECT_TRUE(browser()->window()->IsVisible());
EXPECT_FALSE(ns_window.visible);
// Verify restored state.
browser()->window()->Restore();
ASSERT_FALSE(browser()->window()->IsMinimized());
EXPECT_TRUE(browser()->window()->IsVisible());
EXPECT_FALSE(ns_window.visible);
}