In external extension json file, integer for version number fails with a poor warning message.
Now, an external_version with a non-string value will print out a better error message, disambiguating from the case that the key is missing altogether.
BUG=134182
TEST=manual
Review URL: https://chromiumcodereview.appspot.com/10701021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@145356 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/external_extension_provider_impl.cc b/chrome/browser/extensions/external_extension_provider_impl.cc
index ea245c3..09e34ea 100644
--- a/chrome/browser/extensions/external_extension_provider_impl.cc
+++ b/chrome/browser/extensions/external_extension_provider_impl.cc
@@ -113,12 +113,25 @@
}
FilePath::StringType external_crx;
+ Value* external_version_value;
std::string external_version;
std::string external_update_url;
bool has_external_crx = extension->GetString(kExternalCrx, &external_crx);
- bool has_external_version = extension->GetString(kExternalVersion,
- &external_version);
+
+ bool has_external_version = false;
+ if (extension->Get(kExternalVersion, &external_version_value)) {
+ if (external_version_value->IsType(Value::TYPE_STRING)) {
+ external_version_value->GetAsString(&external_version);
+ has_external_version = true;
+ } else {
+ LOG(WARNING) << "Malformed extension dictionary for extension: "
+ << extension_id.c_str() << ". " << kExternalVersion
+ << " value must be a string.";
+ continue;
+ }
+ }
+
bool has_external_update_url = extension->GetString(kExternalUpdateUrl,
&external_update_url);
if (has_external_crx != has_external_version) {