Index: chrome/browser/extensions/extension_prefs.cc |
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc |
index 9676f74170c8c9cf48b6f36ed0e1bbfb06197aa8..298ec83966c4ee63b6e0b3645a17444cc8bb613b 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 requirements. |
+const char kUnsupportedRequirements[] = "unsupported_requirements"; |
+ |
// Indicates whether the extension was updated while it was disabled. |
const char kPrefDisableReason[] = "disable_reason"; |
@@ -439,6 +442,23 @@ bool ExtensionPrefs::ReadExtensionPrefList( |
return true; |
} |
+bool ExtensionPrefs::ReadExtensionPrefStringList( |
+ const std::string& extension_id, const std::string& pref_key, |
+ std::vector<std::string>* out_value) const { |
+ const ListValue* value_list = NULL; |
+ if (!ReadExtensionPrefList(extension_id, kUnsupportedRequirements, |
+ &value_list)) |
Aaron Boodman
2012/08/06 20:36:07
Needs curlies.
eaugusti
2012/08/17 23:25:01
Done.
|
+ return false; |
+ |
+ for (size_t i = 0; i < value_list->GetSize(); ++i) { |
+ std::string value; |
+ if (value_list->GetString(i, &value)) |
+ out_value->push_back(value); |
+ } |
+ |
+ return true; |
+} |
+ |
bool ExtensionPrefs::ReadExtensionPrefString( |
const std::string& extension_id, const std::string& pref_key, |
std::string* out_value) const { |
@@ -624,7 +644,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)); |
@@ -677,6 +697,34 @@ 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) { |
+ UpdateExtensionPrefList(extension_id, |
+ kUnsupportedRequirements, |
+ requirement_errors); |
+} |
+ |
+std::vector<std::string> ExtensionPrefs::GetUnsupportedRequirements( |
+ const std::string& extension_id) { |
+ std::vector<std::string> errors; |
+ ReadExtensionPrefStringList(extension_id, kUnsupportedRequirements, &errors); |
+ return errors; |
+} |
+ |
Extension::DisableReason ExtensionPrefs::GetDisableReason( |
const std::string& extension_id) { |
int value = -1; |
@@ -1373,6 +1421,16 @@ void ExtensionPrefs::UpdateExtensionPref(const std::string& extension_id, |
update->Remove(key, NULL); |
} |
+void ExtensionPrefs::UpdateExtensionPrefList( |
+ const std::string& extension_id, const std::string& key, |
+ const std::vector<std::string>& data_value) { |
+ ListValue* data_list = new ListValue(); |
+ std::vector<std::string>::const_iterator it; |
+ for (it = data_value.begin(); it != data_value.end(); ++it) |
+ data_list->Append(Value::CreateStringValue(*it)); |
+ UpdateExtensionPref(extension_id, key, data_list); |
+} |
+ |
void ExtensionPrefs::DeleteExtensionPrefs(const std::string& extension_id) { |
extension_pref_value_map_->UnregisterExtension(extension_id); |
content_settings_store_->UnregisterExtension(extension_id); |