Index: chrome/browser/extensions/extension_prefs.cc |
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc |
index dbbbf8d4115408fe03d568fca98e441d763afe32..3a8a7b24fc621df4a0a7d017979652c3448e5222 100644 |
--- a/chrome/browser/extensions/extension_prefs.cc |
+++ b/chrome/browser/extensions/extension_prefs.cc |
@@ -63,6 +63,9 @@ const char kPrefOrphanAcknowledged[] = "ack_orphan"; |
// Indicates whether to show an install warning when the user enables. |
const char kExtensionDidEscalatePermissions[] = "install_warning_on_enable"; |
+// Any errors that arose from unmet unmet requirements. |
+const char kUnsupportedRequirements[] = "unsupported_requirements"; |
+ |
// Indicates whether the extension was updated while it was disabled. |
const char kPrefDisableReason[] = "disable_reason"; |
@@ -624,7 +627,7 @@ bool ExtensionPrefs::IsAppNotificationDisabled( |
} |
void ExtensionPrefs::SetAppNotificationDisabled( |
- const std::string& extension_id, bool value) { |
+ const std::string& extension_id, bool value) { |
DCHECK(Extension::IdIsValid(extension_id)); |
UpdateExtensionPref(extension_id, kPrefAppNotificationDisbaled, |
Value::CreateBooleanValue(value)); |
@@ -641,7 +644,6 @@ std::string ExtensionPrefs::GetDebugPolicyProviderName() const { |
bool ExtensionPrefs::UserMayLoad(const Extension* extension, |
string16* error) const { |
- |
const base::ListValue* blacklist = |
prefs_->GetList(prefs::kExtensionInstallDenyList); |
const base::ListValue* whitelist = |
@@ -677,6 +679,48 @@ void ExtensionPrefs::SetDidExtensionEscalatePermissions( |
Value::CreateBooleanValue(did_escalate)); |
} |
+bool ExtensionPrefs::HasUnsupportedRequirements( |
+ const std::string& extension_id) { |
+ const ListValue* requirement_errors = NULL; |
+ return ReadExtensionPrefList(extension_id, |
+ kUnsupportedRequirements, |
+ &requirement_errors); |
+} |
+ |
+void ExtensionPrefs::ClearUnsupportedRequirements( |
+ const std::string& extension_id) { |
+ UpdateExtensionPref(extension_id, kUnsupportedRequirements, NULL); |
+} |
+ |
+void ExtensionPrefs::SetUnsupportedRequirements( |
+ const std::string& extension_id, |
+ std::vector<std::string> requirement_errors) { |
+ ListValue* errors_list = new ListValue(); |
+ std::vector<std::string>::iterator it; |
+ for (it = requirement_errors.begin(); it != requirement_errors.end(); ++it) |
+ errors_list->Append(Value::CreateStringValue(*it)); |
+ UpdateExtensionPref(extension_id, kUnsupportedRequirements, errors_list); |
+} |
+ |
+std::vector<std::string> ExtensionPrefs::GetUnsupportedRequirements( |
+ const std::string& extension_id) { |
+ std::vector<std::string> requirement_errors; |
+ const DictionaryValue* extension = GetExtensionPref(extension_id); |
+ if (!extension) |
+ return requirement_errors; |
+ |
+ ListValue* value = NULL; |
+ if (!extension->GetList(kUnsupportedRequirements, &value)) |
+ return requirement_errors; |
+ |
+ for (size_t i = 0; i < value->GetSize(); ++i) { |
+ std::string error; |
+ if (value->GetString(i, &error)) |
+ requirement_errors.push_back(error); |
+ } |
+ return requirement_errors; |
+} |
+ |
Extension::DisableReason ExtensionPrefs::GetDisableReason( |
const std::string& extension_id) { |
int value = -1; |
@@ -833,7 +877,6 @@ void ExtensionPrefs::MigratePermissions(const ExtensionIdSet& extension_ids) { |
PermissionsInfo* info = PermissionsInfo::GetInstance(); |
for (ExtensionIdSet::const_iterator ext_id = |
extension_ids.begin(); ext_id != extension_ids.end(); ++ext_id) { |
- |
// An extension's granted permissions need to be migrated if the |
// full_access bit is present. This bit was always present in the previous |
// scheme and is never present now. |