blob: 3ab93abe51da2660d725fb9520d45b1aaa6bb42b [file] [log] [blame]
// 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/policy/core/common/policy_utils.h"
#include "components/policy/core/common/policy_pref_names.h"
#include "components/policy/core/common/schema.h"
#include "components/prefs/pref_service.h"
namespace policy::utils {
bool IsPolicyTestingEnabled(PrefService* pref_service,
version_info::Channel channel) {
if (pref_service &&
!pref_service->GetBoolean(policy_prefs::kPolicyTestPageEnabled)) {
return false;
}
if (channel == version_info::Channel::CANARY ||
channel == version_info::Channel::DEV ||
channel == version_info::Channel::DEFAULT) {
return true;
}
// Enable on iOS Beta because Canary and Dev are not easily accessible.
#if BUILDFLAG(IS_IOS)
if (channel == version_info::Channel::BETA) {
return true;
}
#endif
#if !defined(NDEBUG)
// The page should be available in debug builds.
return true;
#else
return false;
#endif
}
base::Value::Dict GetPolicyNameToTypeMapping(
const base::Value::List& policy_names,
const policy::Schema& schema) {
base::Value::Dict result;
for (auto& policy_name : policy_names) {
base::Value::Type policy_type =
schema.GetKnownProperty(policy_name.GetString()).type();
switch (policy_type) {
case base::Value::Type::BOOLEAN:
result.Set(policy_name.GetString(), "boolean");
break;
case base::Value::Type::DICT:
result.Set(policy_name.GetString(), "dictionary");
break;
case base::Value::Type::INTEGER:
result.Set(policy_name.GetString(), "integer");
break;
case base::Value::Type::DOUBLE:
result.Set(policy_name.GetString(), "number");
break;
case base::Value::Type::LIST:
result.Set(policy_name.GetString(), "list");
break;
case base::Value::Type::STRING:
result.Set(policy_name.GetString(), "string");
break;
default:
NOTREACHED() << "Unrecognized policy type " << (int)policy_type << " ("
<< policy_name << ")";
}
}
return result;
}
} // namespace policy::utils