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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/settings_private/prefs_util.h" 5 #include "chrome/browser/extensions/api/settings_private/prefs_util.h"
6 6
7 #include "build/build_config.h" 7 #include "build/build_config.h"
8 #include "chrome/browser/browser_process.h" 8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/extensions/chrome_extension_function.h" 9 #include "chrome/browser/extensions/chrome_extension_function.h"
10 #include "chrome/browser/extensions/settings_api_helpers.h"
10 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/common/pref_names.h" 12 #include "chrome/common/pref_names.h"
12 #include "components/autofill/core/common/autofill_pref_names.h" 13 #include "components/autofill/core/common/autofill_pref_names.h"
13 #include "components/bookmarks/common/bookmark_pref_names.h" 14 #include "components/bookmarks/common/bookmark_pref_names.h"
14 #include "components/browsing_data/core/pref_names.h" 15 #include "components/browsing_data/core/pref_names.h"
15 #include "components/content_settings/core/common/pref_names.h" 16 #include "components/content_settings/core/common/pref_names.h"
16 #include "components/drive/drive_pref_names.h" 17 #include "components/drive/drive_pref_names.h"
17 #include "components/password_manager/core/common/password_manager_pref_names.h" 18 #include "components/password_manager/core/common/password_manager_pref_names.h"
18 #include "components/prefs/pref_service.h" 19 #include "components/prefs/pref_service.h"
19 #include "components/proxy_config/proxy_config_pref_names.h" 20 #include "components/proxy_config/proxy_config_pref_names.h"
20 #include "components/proxy_config/proxy_config_pref_names.h" 21 #include "components/proxy_config/proxy_config_pref_names.h"
21 #include "components/safe_browsing_db/safe_browsing_prefs.h" 22 #include "components/safe_browsing_db/safe_browsing_prefs.h"
23 #include "components/search_engines/search_engines_pref_names.h"
22 #include "components/spellcheck/browser/pref_names.h" 24 #include "components/spellcheck/browser/pref_names.h"
23 #include "components/translate/core/browser/translate_prefs.h" 25 #include "components/translate/core/browser/translate_prefs.h"
24 #include "components/translate/core/common/translate_pref_names.h" 26 #include "components/translate/core/common/translate_pref_names.h"
25 #include "components/url_formatter/url_fixer.h" 27 #include "components/url_formatter/url_fixer.h"
26 #include "extensions/browser/extension_pref_value_map.h" 28 #include "extensions/browser/extension_pref_value_map.h"
27 #include "extensions/browser/extension_pref_value_map_factory.h" 29 #include "extensions/browser/extension_pref_value_map_factory.h"
28 #include "extensions/browser/extension_registry.h" 30 #include "extensions/browser/extension_registry.h"
29 #include "extensions/common/extension.h" 31 #include "extensions/common/extension.h"
32 #include "extensions/common/manifest.h"
30 33
31 #if defined(OS_CHROMEOS) 34 #if defined(OS_CHROMEOS)
32 #include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h" 35 #include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h"
33 #include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos_fact ory.h" 36 #include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos_fact ory.h"
34 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" 37 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
35 #include "chrome/browser/chromeos/profiles/profile_helper.h" 38 #include "chrome/browser/chromeos/profiles/profile_helper.h"
36 #include "chrome/browser/chromeos/settings/cros_settings.h" 39 #include "chrome/browser/chromeos/settings/cros_settings.h"
37 #include "chromeos/settings/cros_settings_names.h" 40 #include "chromeos/settings/cros_settings_names.h"
38 #endif 41 #endif
39 42
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 pref_object->policy_source = 452 pref_object->policy_source =
450 settings_private::PolicySource::POLICY_SOURCE_OWNER; 453 settings_private::PolicySource::POLICY_SOURCE_OWNER;
451 pref_object->policy_enforcement = 454 pref_object->policy_enforcement =
452 settings_private::PolicyEnforcement::POLICY_ENFORCEMENT_ENFORCED; 455 settings_private::PolicyEnforcement::POLICY_ENFORCEMENT_ENFORCED;
453 pref_object->policy_source_name.reset(new std::string( 456 pref_object->policy_source_name.reset(new std::string(
454 user_manager::UserManager::Get()->GetOwnerAccountId().GetUserEmail())); 457 user_manager::UserManager::Get()->GetOwnerAccountId().GetUserEmail()));
455 return pref_object; 458 return pref_object;
456 } 459 }
457 #endif 460 #endif
458 461
459 if (pref && pref->IsExtensionControlled()) { 462 const Extension* extension = GetExtensionControllingPref(name);
460 std::string extension_id = 463 if (extension) {
461 ExtensionPrefValueMapFactory::GetForBrowserContext(profile_) 464 bool force_installed = Manifest::IsPolicyLocation(extension->location());
462 ->GetExtensionControllingPref(pref->name()); 465 pref_object->read_only.reset(new bool(force_installed));
463 const Extension* extension = ExtensionRegistry::Get(profile_)-> 466 pref_object->policy_source =
464 GetExtensionById(extension_id, ExtensionRegistry::ENABLED); 467 settings_private::PolicySource::POLICY_SOURCE_EXTENSION;
465 if (extension) { 468 pref_object->policy_enforcement =
466 pref_object->policy_source = 469 settings_private::PolicyEnforcement::POLICY_ENFORCEMENT_ENFORCED;
467 settings_private::PolicySource::POLICY_SOURCE_EXTENSION; 470 pref_object->extension_id.reset(new std::string(extension->id()));
468 pref_object->policy_enforcement = 471 pref_object->policy_source_name.reset(new std::string(extension->name()));
469 settings_private::PolicyEnforcement::POLICY_ENFORCEMENT_ENFORCED; 472 return pref_object;
470 pref_object->extension_id.reset(new std::string(extension_id));
471 pref_object->policy_source_name.reset(new std::string(extension->name()));
472 return pref_object;
473 }
474 } 473 }
474
475 if (pref && (!pref->IsUserModifiable() || IsPrefSupervisorControlled(name))) { 475 if (pref && (!pref->IsUserModifiable() || IsPrefSupervisorControlled(name))) {
476 // TODO(stevenjb): Investigate whether either of these should be badged. 476 // TODO(stevenjb): Investigate whether either of these should be badged.
477 // TODO(dbeam): where is this ever used?
477 pref_object->read_only.reset(new bool(true)); 478 pref_object->read_only.reset(new bool(true));
478 return pref_object; 479 return pref_object;
479 } 480 }
480 481
481 return pref_object; 482 return pref_object;
482 } 483 }
483 484
484 PrefsUtil::SetPrefResult PrefsUtil::SetPref(const std::string& pref_name, 485 PrefsUtil::SetPrefResult PrefsUtil::SetPref(const std::string& pref_name,
485 const base::Value* value) { 486 const base::Value* value) {
486 if (IsCrosSetting(pref_name)) 487 if (IsCrosSetting(pref_name))
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 } 693 }
693 694
694 bool PrefsUtil::IsCrosSetting(const std::string& pref_name) { 695 bool PrefsUtil::IsCrosSetting(const std::string& pref_name) {
695 #if defined(OS_CHROMEOS) 696 #if defined(OS_CHROMEOS)
696 return CrosSettings::Get()->IsCrosSettings(pref_name); 697 return CrosSettings::Get()->IsCrosSettings(pref_name);
697 #else 698 #else
698 return false; 699 return false;
699 #endif 700 #endif
700 } 701 }
701 702
703 const Extension* PrefsUtil::GetExtensionControllingPref(
704 const std::string& pref_name) {
705 if (pref_name == ::prefs::kHomePage)
706 return GetExtensionOverridingHomepage(profile_);
707 if (pref_name == ::prefs::kRestoreOnStartup)
708 return GetExtensionOverridingStartupPages(profile_);
709 // TODO(dbeam): add kDefaultSearchProviderEnabled to whitelist soon.
710 if (pref_name == ::prefs::kDefaultSearchProviderEnabled)
711 return GetExtensionOverridingSearchEngine(profile_);
712 if (pref_name == proxy_config::prefs::kProxy)
713 return GetExtensionOverridingProxy(profile_);
714 return nullptr;
715 }
716
702 } // namespace extensions 717 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698