blob: 292d23395dce91d5f8de5cc227768e093484b70b [file] [log] [blame]
Peter Kvitek6e5bfc222021-11-12 23:33:291// Copyright 2021 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/headless/headless_mode_util.h"
6
7#include <memory>
8#include <string>
9
10#include "base/command_line.h"
11#include "build/build_config.h"
12#include "chrome/browser/ui/browser.h"
13#include "chrome/browser/ui/browser_window.h"
14#include "chrome/test/base/in_process_browser_test.h"
15#include "content/public/test/browser_test.h"
16#include "content/public/test/browser_test_utils.h"
17#include "testing/gmock/include/gmock/gmock.h"
18#include "ui/gfx/switches.h"
19
20namespace {
21const char kChrome[] = "chrome";
22} // namespace
23
24class HeadlessModeBrowserTest : public InProcessBrowserTest {
25 public:
26 HeadlessModeBrowserTest() = default;
27
28 HeadlessModeBrowserTest(const HeadlessModeBrowserTest&) = delete;
29 HeadlessModeBrowserTest& operator=(const HeadlessModeBrowserTest&) = delete;
30
31 ~HeadlessModeBrowserTest() override = default;
32
33 void SetUpCommandLine(base::CommandLine* command_line) override {
34 InProcessBrowserTest::SetUpCommandLine(command_line);
35
36 command_line->AppendSwitchASCII(switches::kHeadless, kChrome);
37 headless::SetUpCommandLine(command_line);
38 }
39
40 void SetUpOnMainThread() override {
41 InProcessBrowserTest::SetUpOnMainThread();
42
43 ASSERT_TRUE(headless::IsChromeNativeHeadless());
44 }
45
46 private:
47};
48
49#if defined(OS_WIN)
50IN_PROC_BROWSER_TEST_F(HeadlessModeBrowserTest, BrowserDesktopWindowHidden) {
51 // On Windows, the Native Headless Chrome browser window exists but is hidden.
52 EXPECT_FALSE(browser()->window()->IsVisible());
53}
54#endif // defined(OS_WIN)