| 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.
|
|
|