blob: 89c796f5f9a7a73f8ab8d3a686b38448b574d224 [file] [log] [blame]
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef HEADLESS_LIB_BROWSER_POLICY_HEADLESS_MODE_POLICY_H_
#define HEADLESS_LIB_BROWSER_POLICY_HEADLESS_MODE_POLICY_H_
#include "components/policy/core/browser/configuration_policy_handler.h"
#include "headless/public/headless_export.h"
class PrefService;
class PrefRegistrySimple;
namespace prefs {
extern const char kHeadlessMode[];
}
namespace policy {
// Headless mode policy helpers.
class HEADLESS_EXPORT HeadlessModePolicy {
public:
// Headless mode as set by policy. The values must match the
// HeadlessMode policy template in
// components/policy/resources/policy_templates.json
enum class HeadlessMode {
// Headless mode is enabled.
kEnabled = 1,
// Headless mode is disabled.
kDisabled = 2,
// Default value to ensure consistency.
kDefaultValue = kEnabled,
// Min and max values for range checking.
kMinValue = kEnabled,
kMaxValue = kDisabled
};
// Registers headless mode policy prefs in |registry|.
static void RegisterLocalPrefs(PrefRegistrySimple* registry);
// Returns the current HeadlessMode policy according to the values in
// |pref_service|. If no HeadlessMode policy is set, the default will be
// |HeadlessMode::kEnabled|.
static HeadlessMode GetPolicy(const PrefService* pref_service);
// Returns positive if current HeadlessMode policy in |pref_service| is set to
// |HeadlessMode::kEnabled| or is unset.
static bool IsHeadlessDisabled(const PrefService* pref_service);
};
// Handles the HeadlessMode policy. Controls the managed values of the
// |kHeadlessMode| pref.
class HeadlessModePolicyHandler : public IntRangePolicyHandler {
public:
HeadlessModePolicyHandler();
~HeadlessModePolicyHandler() override;
HeadlessModePolicyHandler(const HeadlessModePolicyHandler&) = delete;
HeadlessModePolicyHandler& operator=(const HeadlessModePolicyHandler&) =
delete;
};
} // namespace policy
#endif // HEADLESS_LIB_BROWSER_POLICY_HEADLESS_MODE_POLICY_H_