Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(720)

Unified Diff: components/policy/core/browser/configuration_policy_handler_list.cc

Issue 2414663002: Fix log spew for "_comment..." policies. (Closed)
Patch Set: Rename EraseGeneric() to FilterErase(). Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/policy/core/browser/configuration_policy_handler_list.cc
diff --git a/components/policy/core/browser/configuration_policy_handler_list.cc b/components/policy/core/browser/configuration_policy_handler_list.cc
index 9cdfc2aa897fbef1cd53f97489786ad6347eed67..1e9937372d1c46d25de6dfdfa6ae92fc4f685471 100644
--- a/components/policy/core/browser/configuration_policy_handler_list.cc
+++ b/components/policy/core/browser/configuration_policy_handler_list.cc
@@ -4,15 +4,23 @@
#include "components/policy/core/browser/configuration_policy_handler_list.h"
+#include "base/bind.h"
#include "base/stl_util.h"
#include "components/policy/core/browser/configuration_policy_handler.h"
#include "components/policy/core/browser/configuration_policy_handler_parameters.h"
#include "components/policy/core/browser/policy_error_map.h"
-#include "components/policy/core/common/policy_map.h"
#include "components/prefs/pref_value_map.h"
#include "grit/components_strings.h"
namespace policy {
+
+namespace {
+
+// Don't show errors for policies starting with that prefix.
+const char kPolicyCommentPrefix[] = "_comment";
+
+} // namespace
+
ConfigurationPolicyHandlerList::ConfigurationPolicyHandlerList(
const PopulatePolicyHandlerParametersCallback& parameters_callback,
const GetChromePolicyDetailsCallback& details_callback)
@@ -35,37 +43,64 @@ void ConfigurationPolicyHandlerList::ApplyPolicySettings(
// This function is used both to apply the policy settings, and to check them
// and list errors. As such it must get all the errors even if it isn't
// applying the policies.
- // TODO (aberent) split into two functions.
+ // TODO(aberent): split into two functions.
+ std::unique_ptr<PolicyMap> filtered_policies = policies.DeepCopy();
+ filtered_policies->EraseMatching(
+ base::Bind(&ConfigurationPolicyHandlerList::IsPlatformDevicePolicy,
+ base::Unretained(this)));
+
PolicyErrorMap scoped_errors;
if (!errors)
errors = &scoped_errors;
- policy::PolicyHandlerParameters parameters;
+ PolicyHandlerParameters parameters;
parameters_callback_.Run(&parameters);
- std::vector<ConfigurationPolicyHandler*>::const_iterator handler;
- for (handler = handlers_.begin(); handler != handlers_.end(); ++handler) {
- if ((*handler)->CheckPolicySettings(policies, errors) && prefs) {
- (*handler)
- ->ApplyPolicySettingsWithParameters(policies, parameters, prefs);
+ for (auto handler : handlers_) {
+ if (handler->CheckPolicySettings(*filtered_policies, errors) && prefs) {
+ handler->ApplyPolicySettingsWithParameters(
+ *filtered_policies, parameters, prefs);
}
}
- for (PolicyMap::const_iterator it = policies.begin();
- it != policies.end();
- ++it) {
- const PolicyDetails* details =
- details_callback_.is_null() ? NULL : details_callback_.Run(it->first);
- if (details && details->is_deprecated)
- errors->AddError(it->first, IDS_POLICY_DEPRECATED);
+ if (details_callback_) {
+ for (PolicyMap::const_iterator it = filtered_policies->begin();
+ it != filtered_policies->end();
+ ++it) {
+ const PolicyDetails* details = details_callback_.Run(it->first);
+ if (details && details->is_deprecated)
+ errors->AddError(it->first, IDS_POLICY_DEPRECATED);
+ }
}
}
void ConfigurationPolicyHandlerList::PrepareForDisplaying(
PolicyMap* policies) const {
- std::vector<ConfigurationPolicyHandler*>::const_iterator handler;
- for (handler = handlers_.begin(); handler != handlers_.end(); ++handler)
- (*handler)->PrepareForDisplaying(policies);
+ for (auto handler : handlers_)
+ handler->PrepareForDisplaying(policies);
+}
+
+bool ConfigurationPolicyHandlerList::IsPlatformDevicePolicy(
+ const PolicyMap::const_iterator iter) const {
+ // Callback might be missing in tests.
+ if (!details_callback_) {
+ return false;
+ }
+ const PolicyDetails* policy_details = details_callback_.Run(iter->first);
+ if (!policy_details) {
+ const std::string prefix(kPolicyCommentPrefix);
+ if (iter->first.compare(0, prefix.length(), prefix) != 0) {
+ LOG(ERROR) << "Unknown policy: " << iter->first;
+ }
+ return false;
+ }
+ if (iter->second.source == POLICY_SOURCE_PLATFORM &&
+ policy_details->is_device_policy) {
+ // Device Policy is only implemented as Cloud Policy (not Platform Policy).
+ LOG(WARNING) << "Ignoring device platform policy: " << iter->first;
+ return true;
+ }
+ return false;
}
} // namespace policy

Powered by Google App Engine
This is Rietveld 408576698