| Index: components/policy/core/common/policy_loader_win.cc
|
| diff --git a/components/policy/core/common/policy_loader_win.cc b/components/policy/core/common/policy_loader_win.cc
|
| index c956a74a92913ba65e0614170388debc8c342b16..d816df81d73c6057be5101e3cf0da64e882885f1 100644
|
| --- a/components/policy/core/common/policy_loader_win.cc
|
| +++ b/components/policy/core/common/policy_loader_win.cc
|
| @@ -30,6 +30,7 @@
|
| #include "base/logging.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/metrics/histogram.h"
|
| +#include "base/metrics/sparse_histogram.h"
|
| #include "base/scoped_native_library.h"
|
| #include "base/sequenced_task_runner.h"
|
| #include "base/stl_util.h"
|
| @@ -72,6 +73,16 @@ const char kExpectedWebStoreUrl[] =
|
| // String to be prepended to each blocked entry.
|
| const char kBlockedExtensionPrefix[] = "[BLOCKED]";
|
|
|
| +// List of policies that are considered only if the user is part of a AD domain.
|
| +const char* kInsecurePolicies[] = {
|
| + key::kMetricsReportingEnabled,
|
| + key::kDefaultSearchProviderEnabled,
|
| + key::kHomepageIsNewTabPage,
|
| + key::kHomepageLocation,
|
| + key::kRestoreOnStartup,
|
| + key::kRestoreOnStartupURLs
|
| +};
|
| +
|
| // The GUID of the registry settings group policy extension.
|
| GUID kRegistrySettingsCSEGUID = REGISTRY_EXTENSION_GUID;
|
|
|
| @@ -122,10 +133,10 @@ void FilterUntrustedPolicy(PolicyMap* policy) {
|
| if (base::win::IsEnrolledToDomain())
|
| return;
|
|
|
| + int invalid_policies = 0;
|
| const PolicyMap::Entry* map_entry =
|
| policy->Get(policy::key::kExtensionInstallForcelist);
|
| if (map_entry && map_entry->value) {
|
| - int invalid_policies = 0;
|
| const base::ListValue* policy_list_value = NULL;
|
| if (!map_entry->value->GetAsList(&policy_list_value))
|
| return;
|
| @@ -147,13 +158,33 @@ void FilterUntrustedPolicy(PolicyMap* policy) {
|
|
|
| filtered_values->AppendString(entry);
|
| }
|
| - policy->Set(policy::key::kExtensionInstallForcelist,
|
| - map_entry->level, map_entry->scope,
|
| - filtered_values.release(),
|
| - map_entry->external_data_fetcher);
|
| - UMA_HISTOGRAM_COUNTS("EnterpriseCheck.InvalidPoliciesDetected",
|
| - invalid_policies);
|
| + if (invalid_policies) {
|
| + policy->Set(policy::key::kExtensionInstallForcelist,
|
| + map_entry->level, map_entry->scope,
|
| + filtered_values.release(),
|
| + map_entry->external_data_fetcher);
|
| +
|
| + const PolicyDetails* details = policy::GetChromePolicyDetails(
|
| + policy::key::kExtensionInstallForcelist);
|
| + UMA_HISTOGRAM_SPARSE_SLOWLY("EnterpriseCheck.InvalidPolicies",
|
| + details->id);
|
| + }
|
| }
|
| +
|
| + for (size_t i = 0; i < arraysize(kInsecurePolicies); ++i) {
|
| + if (policy->Get(kInsecurePolicies[i])) {
|
| + // TODO(pastarmovj): Surface this issue in the about:policy page.
|
| + policy->Erase(kInsecurePolicies[i]);
|
| + invalid_policies++;
|
| + const PolicyDetails* details =
|
| + policy::GetChromePolicyDetails(kInsecurePolicies[i]);
|
| + UMA_HISTOGRAM_SPARSE_SLOWLY("EnterpriseCheck.InvalidPolicies",
|
| + details->id);
|
| + }
|
| + }
|
| +
|
| + UMA_HISTOGRAM_COUNTS("EnterpriseCheck.InvalidPoliciesDetected",
|
| + invalid_policies);
|
| }
|
|
|
| // A helper class encapsulating run-time-linked function calls to Wow64 APIs.
|
|
|