// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "components/headless/policy/headless_mode_policy.h"

#include "components/headless/policy/headless_mode_prefs.h"
#include "components/policy/policy_constants.h"
#include "components/prefs/pref_service.h"

namespace headless {

// static
HeadlessModePolicy::HeadlessMode HeadlessModePolicy::GetPolicy(
    const PrefService* pref_service) {
  if (!pref_service) {
    return HeadlessMode::kDefaultValue;
  }

  int value = pref_service->GetInteger(headless::prefs::kHeadlessMode);
  if (value < static_cast<int>(HeadlessMode::kMinValue) ||
      value > static_cast<int>(HeadlessMode::kMaxValue)) {
    NOTREACHED();
  }

  return static_cast<HeadlessMode>(value);
}

// static
bool HeadlessModePolicy::IsHeadlessModeDisabled(
    const PrefService* pref_service) {
  return GetPolicy(pref_service) == HeadlessMode::kDisabled;
}

}  // namespace headless
