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 1f74db782bc96a04e7a8761a07755d76591e5837..ba87a087c82b4ecbac6d3e2eb14aaf99049be176 100644 |
--- a/chrome/browser/extensions/api/settings_private/prefs_util.cc |
+++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc |
@@ -14,6 +14,7 @@ |
#include "extensions/browser/extension_pref_value_map.h" |
#include "extensions/browser/extension_pref_value_map_factory.h" |
#include "extensions/browser/extension_registry.h" |
+#include "extensions/common/extension.h" |
#if defined(OS_CHROMEOS) |
#include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h" |
@@ -216,6 +217,8 @@ scoped_ptr<settings_private::PrefObject> PrefsUtil::GetPref( |
settings_private::PolicySource::POLICY_SOURCE_PRIMARY_USER; |
pref_object->policy_enforcement = |
settings_private::PolicyEnforcement::POLICY_ENFORCEMENT_ENFORCED; |
+ pref_object->policy_source_name.reset(new std::string( |
+ user_manager::UserManager::Get()->GetPrimaryUser()->email())); |
return pref_object.Pass(); |
} |
if (IsPrefEnterpriseManaged(name)) { |
@@ -256,20 +259,27 @@ scoped_ptr<settings_private::PrefObject> PrefsUtil::GetPref( |
settings_private::PolicySource::POLICY_SOURCE_OWNER; |
pref_object->policy_enforcement = |
settings_private::PolicyEnforcement::POLICY_ENFORCEMENT_ENFORCED; |
+ pref_object->policy_source_name.reset( |
+ new std::string(user_manager::UserManager::Get()->GetOwnerEmail())); |
return pref_object.Pass(); |
} |
#endif |
if (pref && pref->IsExtensionControlled()) { |
- pref_object->policy_source = |
- settings_private::PolicySource::POLICY_SOURCE_EXTENSION; |
- pref_object->policy_enforcement = |
- settings_private::PolicyEnforcement::POLICY_ENFORCEMENT_ENFORCED; |
std::string extension_id = |
ExtensionPrefValueMapFactory::GetForBrowserContext(profile_) |
->GetExtensionControllingPref(pref->name()); |
- pref_object->extension_id.reset(new std::string(extension_id)); |
- return pref_object.Pass(); |
+ 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.Pass(); |
+ } |
} |
if (pref && (!pref->IsUserModifiable() || IsPrefSupervisorControlled(name))) { |
// TODO(stevenjb): Investigate whether either of these should be badged. |