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

Unified Diff: chrome/browser/extensions/api/settings_private/prefs_util.cc

Issue 2479973002: MD Settings: clarify "controlled by" logic (Closed)
Patch Set: nits Created 4 years, 1 month 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: chrome/browser/extensions/api/settings_private/prefs_util.cc
diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc
index bda474d01b7c1d8ccbf94ba8feff4ff3a6981724..fd7204e11bfd4b537c455630d05ff0f94c6fe851 100644
--- a/chrome/browser/extensions/api/settings_private/prefs_util.cc
+++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc
@@ -7,6 +7,7 @@
#include "build/build_config.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/extensions/chrome_extension_function.h"
+#include "chrome/browser/extensions/settings_api_helpers.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/pref_names.h"
#include "components/autofill/core/common/autofill_pref_names.h"
@@ -19,6 +20,7 @@
#include "components/proxy_config/proxy_config_pref_names.h"
#include "components/proxy_config/proxy_config_pref_names.h"
#include "components/safe_browsing_db/safe_browsing_prefs.h"
+#include "components/search_engines/search_engines_pref_names.h"
#include "components/spellcheck/browser/pref_names.h"
#include "components/translate/core/browser/translate_prefs.h"
#include "components/translate/core/common/translate_pref_names.h"
@@ -27,6 +29,7 @@
#include "extensions/browser/extension_pref_value_map_factory.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/common/extension.h"
+#include "extensions/common/manifest.h"
#if defined(OS_CHROMEOS)
#include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h"
@@ -456,24 +459,22 @@ std::unique_ptr<settings_private::PrefObject> PrefsUtil::GetPref(
}
#endif
- if (pref && pref->IsExtensionControlled()) {
- std::string extension_id =
- ExtensionPrefValueMapFactory::GetForBrowserContext(profile_)
- ->GetExtensionControllingPref(pref->name());
- const Extension* extension = ExtensionRegistry::Get(profile_)->
- GetExtensionById(extension_id, ExtensionRegistry::ENABLED);
- if (extension) {
- pref_object->policy_source =
- settings_private::PolicySource::POLICY_SOURCE_EXTENSION;
- pref_object->policy_enforcement =
- settings_private::PolicyEnforcement::POLICY_ENFORCEMENT_ENFORCED;
- pref_object->extension_id.reset(new std::string(extension_id));
- pref_object->policy_source_name.reset(new std::string(extension->name()));
- return pref_object;
- }
+ const Extension* extension = GetExtensionControllingPref(name);
+ if (extension) {
+ bool force_installed = Manifest::IsPolicyLocation(extension->location());
+ pref_object->read_only.reset(new bool(force_installed));
+ pref_object->policy_source =
+ settings_private::PolicySource::POLICY_SOURCE_EXTENSION;
+ pref_object->policy_enforcement =
+ settings_private::PolicyEnforcement::POLICY_ENFORCEMENT_ENFORCED;
+ pref_object->extension_id.reset(new std::string(extension->id()));
+ pref_object->policy_source_name.reset(new std::string(extension->name()));
+ return pref_object;
}
+
if (pref && (!pref->IsUserModifiable() || IsPrefSupervisorControlled(name))) {
// TODO(stevenjb): Investigate whether either of these should be badged.
+ // TODO(dbeam): where is this ever used?
pref_object->read_only.reset(new bool(true));
return pref_object;
}
@@ -699,4 +700,18 @@ bool PrefsUtil::IsCrosSetting(const std::string& pref_name) {
#endif
}
+const Extension* PrefsUtil::GetExtensionControllingPref(
+ const std::string& pref_name) {
+ if (pref_name == ::prefs::kHomePage)
+ return GetExtensionOverridingHomepage(profile_);
+ if (pref_name == ::prefs::kRestoreOnStartup)
+ return GetExtensionOverridingStartupPages(profile_);
+ // TODO(dbeam): add kDefaultSearchProviderEnabled to whitelist soon.
+ if (pref_name == ::prefs::kDefaultSearchProviderEnabled)
+ return GetExtensionOverridingSearchEngine(profile_);
+ if (pref_name == proxy_config::prefs::kProxy)
+ return GetExtensionOverridingProxy(profile_);
+ return nullptr;
+}
+
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698