summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_prefs.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions/extension_prefs.cc')
-rw-r--r--chrome/browser/extensions/extension_prefs.cc14
1 files changed, 11 insertions, 3 deletions
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc
index 3aeda24..388172d 100644
--- a/chrome/browser/extensions/extension_prefs.cc
+++ b/chrome/browser/extensions/extension_prefs.cc
@@ -538,15 +538,23 @@ ExtensionPrefs::ExtensionsInfo* ExtensionPrefs::CollectExtensionsInfo(
NOTREACHED();
continue;
}
+
+ // Only internal and external extensions can be installed permanently in the
+ // preferences.
+ Extension::Location location =
+ static_cast<Extension::Location>(location_value);
+ if (location != Extension::INTERNAL &&
+ !Extension::IsExternalLocation(location)) {
+ NOTREACHED();
+ continue;
+ }
+
DictionaryValue* manifest = NULL;
if (!ext->GetDictionary(kPrefManifest, &manifest)) {
LOG(WARNING) << "Missing manifest for extension " << *extension_id;
// Just a warning for now.
}
- Extension::Location location =
- static_cast<Extension::Location>(location_value);
-
extensions_info->push_back(linked_ptr<ExtensionInfo>(new ExtensionInfo(
manifest, WideToASCII(*extension_id), FilePath(path), location)));
}