blob: 333d76e0a521e9a27b2042a3949e0c6d682505fc [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.
#include "headless/lib/browser/policy/headless_mode_policy.h"
#include "components/policy/policy_constants.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
namespace prefs {
const char kHeadlessMode[] = "headless.mode";
}
namespace policy {
// static
void HeadlessModePolicy::RegisterLocalPrefs(PrefRegistrySimple* registry) {
registry->RegisterIntegerPref(prefs::kHeadlessMode,
static_cast<int>(HeadlessMode::kDefaultValue));
}
// static
HeadlessModePolicy::HeadlessMode HeadlessModePolicy::GetPolicy(
const PrefService* pref_service) {
// If preferences are not available (happens in tests), assume the default
// value.
if (!pref_service)
return HeadlessMode::kDefaultValue;
int value = pref_service->GetInteger(prefs::kHeadlessMode);
if (value < static_cast<int>(HeadlessMode::kMinValue) ||
value > static_cast<int>(HeadlessMode::kMaxValue)) {
// This should never happen, because the |kHeadlessMode| pref is
// only set by HeadlessModePolicy which validates the value range.
// If it is not set, it will have its default value which is also valid,
// see |RegisterProfilePrefs|.
NOTREACHED();
return HeadlessMode::kDefaultValue;
}
return static_cast<HeadlessMode>(value);
}
// static
bool HeadlessModePolicy::IsHeadlessDisabled(const PrefService* pref_service) {
return GetPolicy(pref_service) != HeadlessMode::kEnabled;
}
HeadlessModePolicyHandler::HeadlessModePolicyHandler()
: IntRangePolicyHandler(
key::kHeadlessMode,
prefs::kHeadlessMode,
static_cast<int>(HeadlessModePolicy::HeadlessMode::kMinValue),
static_cast<int>(HeadlessModePolicy::HeadlessMode::kMaxValue),
false) {}
HeadlessModePolicyHandler::~HeadlessModePolicyHandler() = default;
} // namespace policy