[Policy Test UI]: Error check for input type based on selected policy.
Bug: b:289936532
Change-Id: I6c175b096d5e157c0f27ed43d3a09cbc7e47f38f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4666328
Reviewed-by: Yann Dago <[email protected]>
Reviewed-by: Demetrios Papadopoulos <[email protected]>
Commit-Queue: Elena Scobici <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1176626}
diff --git a/chrome/browser/ui/webui/policy/policy_ui.cc b/chrome/browser/ui/webui/policy/policy_ui.cc
index 64673a4..71696bf 100644
--- a/chrome/browser/ui/webui/policy/policy_ui.cc
+++ b/chrome/browser/ui/webui/policy/policy_ui.cc
@@ -22,10 +22,12 @@
#include "components/grit/policy_resources.h"
#include "components/grit/policy_resources_map.h"
#include "components/policy/core/common/features.h"
+#include "components/policy/core/common/management/management_service.h"
#include "components/policy/core/common/policy_loader_common.h"
#include "components/policy/core/common/policy_logger.h"
#include "components/policy/core/common/policy_pref_names.h"
#include "components/policy/core/common/policy_utils.h"
+#include "components/policy/policy_constants.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/strings/grit/components_strings.h"
#include "components/version_info/version_info.h"
@@ -200,7 +202,10 @@
source->AddResourcePath("test/", IDR_POLICY_TEST_POLICY_TEST_HTML);
source->AddResourcePath("test", IDR_POLICY_TEST_POLICY_TEST_HTML);
- // Create a string policy_name_str of comma-separated policy names
+ // Create a string policy_names_to_types_str mapping policy names to their
+ // input types.
+ policy::Schema chrome_schema =
+ policy::Schema::Wrap(policy::GetChromeSchemaData());
ChromePoliciesValueProvider value_provider(profile);
base::Value::List policy_names =
(*value_provider.GetNames().FindDict("chrome"))
@@ -211,12 +216,36 @@
return policy::IsPolicyNameSensitive(policy.GetString());
});
- std::string policy_name_str = "";
+ std::string policy_names_to_types_str = "{";
for (auto& policy_name : policy_names) {
- policy_name_str += policy_name.GetString() + ",";
+ base::Value::Type policy_type =
+ chrome_schema.GetKnownProperty(policy_name.GetString()).type();
+ std::string policy_type_string;
+ switch (policy_type) {
+ case base::Value::Type::BOOLEAN:
+ policy_type_string = "boolean";
+ break;
+ case base::Value::Type::DICT:
+ policy_type_string = "dictionary";
+ break;
+ case base::Value::Type::INTEGER:
+ policy_type_string = "integer";
+ break;
+ case base::Value::Type::LIST:
+ policy_type_string = "list";
+ break;
+ case base::Value::Type::STRING:
+ policy_type_string = "string";
+ break;
+ default:
+ break;
+ }
+ policy_names_to_types_str +=
+ "\"" + policy_name.GetString() + "\":\"" + policy_type_string + "\",";
}
- policy_name_str.pop_back(); // remove last divider
- source->AddString("policyNames", policy_name_str);
+ policy_names_to_types_str.pop_back(); // remove last divider
+ policy_names_to_types_str += "}";
+ source->AddString("policyNamesToTypes", policy_names_to_types_str);
// Strings for policy levels, scopes and sources.
static constexpr webui::LocalizedString kPolicyTestTypes[] = {