blob: 5c9e079bdd38ef37123fa9e3ac93b0d625236102 [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_HEADLESS_HEADLESS_MODE_UTIL_H_
#define CHROME_BROWSER_HEADLESS_HEADLESS_MODE_UTIL_H_
#include <memory>
#include "base/command_line.h"
#include "base/types/expected.h"
namespace headless {
// Represents opaque headless mode state.
class HeadlessModeHandle {
public:
HeadlessModeHandle() = default;
virtual ~HeadlessModeHandle() = default;
};
// Returns positive if new headless mode is in effect. The new headless mode
// is Chrome browser running without any visible UI.
bool IsHeadlessMode();
// Returns positive if old headless mode is in effect. The old headless mode
// is a minimalistic browser implementation found in //headless which lacks
// most of the full fledged Chrome browser functionality.
bool IsOldHeadlessMode();
// Returns positive if headless mode can access any URL whose scheme is
// chrome://.
bool IsChromeSchemeUrlAllowed();
// Initializes headless mode returning a handle that would clean up the state
// upon destruction or a meaningful error message.
base::expected<std::unique_ptr<HeadlessModeHandle>, std::string>
InitHeadlessMode();
} // namespace headless
#endif // CHROME_BROWSER_HEADLESS_HEADLESS_MODE_UTIL_H_