Index: chrome/common/extensions/update_manifest.cc |
diff --git a/chrome/common/extensions/update_manifest.cc b/chrome/common/extensions/update_manifest.cc |
index feb6f7096444f1efd53514a98d23c338872533d5..0ed653ff76a8e32288b96c9bef31027a41ad2324 100644 |
--- a/chrome/common/extensions/update_manifest.cc |
+++ b/chrome/common/extensions/update_manifest.cc |
@@ -19,7 +19,9 @@ static const char* kExpectedGupdateProtocol = "2.0"; |
static const char* kExpectedGupdateXmlns = |
"http://www.google.com/update2/response"; |
-UpdateManifest::Result::Result() {} |
+UpdateManifest::Result::Result() |
+ : size(0), |
+ diff_size(0) {} |
UpdateManifest::Result::~Result() {} |
@@ -154,7 +156,7 @@ static bool ParseSingleAppTag(xmlNode* app_node, xmlNs* xml_namespace, |
result->crx_url = GURL(GetAttribute(updatecheck, "codebase")); |
if (!result->crx_url.is_valid()) { |
*error_detail = "Invalid codebase url: '"; |
- *error_detail += GetAttribute(updatecheck, "codebase"); |
+ *error_detail += result->crx_url.possibly_invalid_spec(); |
*error_detail += "'."; |
return false; |
} |
@@ -189,6 +191,23 @@ static bool ParseSingleAppTag(xmlNode* app_node, xmlNs* xml_namespace, |
// sha256 hash of the package in hex format. |
result->package_hash = GetAttribute(updatecheck, "hash"); |
+ int size = 0; |
+ if (base::StringToInt(GetAttribute(updatecheck, "size"), &size)) { |
+ result->size = size; |
+ } |
+ |
+ // package_fingerprint is optional. It identifies the package, preferably |
+ // with a modified sha256 hash of the package in hex format. |
+ result->package_fingerprint = GetAttribute(updatecheck, "fp"); |
asargent_no_longer_on_chrome
2013/06/18 00:08:01
Consider mentioning this attribute in the comment
waffles
2013/06/18 00:36:25
Done.
|
+ |
+ // Differential update information is optional. |
+ result->diff_crx_url = GURL(GetAttribute(updatecheck, "codebasediff")); |
+ result->diff_package_hash = GetAttribute(updatecheck, "hashdiff"); |
+ int sizediff = 0; |
+ if (base::StringToInt(GetAttribute(updatecheck, "sizediff"), &sizediff)) { |
+ result->diff_size = sizediff; |
+ } |
+ |
return true; |
} |