blob: 7b541ada21464d0a0bc9a047d9ee10030a146517 [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.
#include "chrome/browser/policy/managed_account_policy_handler.h"
#include "chrome/common/pref_names.h"
#include "components/policy/core/browser/policy_error_map.h"
#include "components/policy/core/common/policy_map.h"
#include "components/policy/policy_constants.h"
#include "components/prefs/pref_value_map.h"
#include "components/strings/grit/components_strings.h"
ManagedAccountRestrictionsPolicyHandler::
ManagedAccountRestrictionsPolicyHandler(policy::Schema schema)
: policy::SimpleSchemaValidatingPolicyHandler(
policy::key::kManagedAccountsSigninRestriction,
prefs::kManagedAccountsSigninRestriction,
schema,
policy::SchemaOnErrorStrategy::SCHEMA_ALLOW_UNKNOWN,
SimpleSchemaValidatingPolicyHandler::RECOMMENDED_PROHIBITED,
SimpleSchemaValidatingPolicyHandler::MANDATORY_ALLOWED) {}
ManagedAccountRestrictionsPolicyHandler::
~ManagedAccountRestrictionsPolicyHandler() = default;
void ManagedAccountRestrictionsPolicyHandler::ApplyPolicySettings(
const policy::PolicyMap& policies,
PrefValueMap* prefs) {
SimpleSchemaValidatingPolicyHandler::ApplyPolicySettings(policies, prefs);
const auto* policy = policies.Get(policy_name());
if (policy) {
bool user_cloud_policy = policy->scope == policy::POLICY_SCOPE_USER &&
policy->source == policy::POLICY_SOURCE_CLOUD;
// Only user cloud policies do not target the whole machine.
prefs->SetBoolean(prefs::kManagedAccountsSigninRestrictionScopeMachine,
!user_cloud_policy);
}
}