Index: chrome/browser/policy/configuration_policy_handler_list_factory.cc |
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc |
index 894c04a548d845cb91eff2265a28fc5c701bbb6c..3695f59e3277f6258c0ed8bda1bf527b3e9f8bca 100644 |
--- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc |
+++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc |
@@ -708,6 +708,33 @@ void GetExtensionAllowedTypesMap( |
new base::FundamentalValue(entry.manifest_type)))); |
} |
} |
+ |
+// Piggy-back kDeveloperToolsDisabled set to true to also force-disable |
+// kExtensionsUIDeveloperMode. |
+class DevToolsExtensionsUIPolicyHandler : public TypeCheckingPolicyHandler { |
+ public: |
+ DevToolsExtensionsUIPolicyHandler() |
+ : TypeCheckingPolicyHandler(key::kDeveloperToolsDisabled, |
+ base::Value::TYPE_BOOLEAN) {} |
+ ~DevToolsExtensionsUIPolicyHandler() override {} |
+ |
+ // ConfigurationPolicyHandler implementation: |
+ void ApplyPolicySettings(const PolicyMap& policies, |
+ PrefValueMap* prefs) override { |
+ const base::Value* value = policies.GetValue(policy_name()); |
+ bool developerToolsDisabled; |
+ if (value && |
+ value->GetAsBoolean(&developerToolsDisabled) && |
+ developerToolsDisabled) { |
+ prefs->SetValue( |
+ prefs::kExtensionsUIDeveloperMode, |
+ base::MakeUnique<base::FundamentalValue>(false)); |
+ } |
+ } |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(DevToolsExtensionsUIPolicyHandler); |
+}; |
#endif |
void GetDeprecatedFeaturesMap( |
@@ -793,6 +820,8 @@ std::unique_ptr<ConfigurationPolicyHandlerList> BuildHandlerList( |
handlers->AddHandler( |
base::MakeUnique<extensions::ExtensionSettingsPolicyHandler>( |
chrome_schema)); |
+ handlers->AddHandler( |
+ base::MakeUnique<DevToolsExtensionsUIPolicyHandler>()); |
#endif |
#if !defined(OS_CHROMEOS) && !defined(OS_ANDROID) |