| Index: chrome/browser/component_updater/component_updater_utils.cc
|
| diff --git a/chrome/browser/component_updater/component_updater_utils.cc b/chrome/browser/component_updater/component_updater_utils.cc
|
| index e86f72c8a998807080881fc2d0254850bad66545..7f57f5bf0bc314fc2000bd0db4cd201c8a47a165 100644
|
| --- a/chrome/browser/component_updater/component_updater_utils.cc
|
| +++ b/chrome/browser/component_updater/component_updater_utils.cc
|
| @@ -16,34 +16,49 @@
|
|
|
| namespace component_updater {
|
|
|
| -std::string BuildProtocolRequest(const std::string& request_body) {
|
| - const char request_format[] =
|
| - "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
| - "<request protocol=\"3.0\" version=\"%s-%s\" prodversion=\"%s\" "
|
| - "requestid=\"{%s}\" updaterchannel=\"%s\" arch=\"%s\" nacl_arch=\"%s\">"
|
| - "<os platform=\"%s\" version=\"%s\" arch=\"%s\"/>"
|
| - "%s"
|
| - "</request>";
|
| -
|
| +std::string BuildProtocolRequest(const std::string& request_body,
|
| + const std::string& additional_attributes) {
|
| const std::string prod_id(chrome::OmahaQueryParams::GetProdIdString(
|
| chrome::OmahaQueryParams::CHROME));
|
| const std::string chrome_version(chrome::VersionInfo().Version().c_str());
|
|
|
| - const std::string request(base::StringPrintf(request_format,
|
| - // Chrome version and platform information.
|
| + std::string request(
|
| + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
| + "<request protocol=\"3.0\" ");
|
| +
|
| + if (!additional_attributes.empty())
|
| + base::StringAppendF(&request, "%s ", additional_attributes.c_str());
|
| +
|
| + // Chrome version and platform information.
|
| + base::StringAppendF(
|
| + &request,
|
| + "version=\"%s-%s\" prodversion=\"%s\" "
|
| + "requestid=\"{%s}\" updaterchannel=\"%s\" arch=\"%s\" nacl_arch=\"%s\"",
|
| prod_id.c_str(), chrome_version.c_str(), // "version"
|
| chrome_version.c_str(), // "prodversion"
|
| base::GenerateGUID().c_str(), // "requestid"
|
| chrome::OmahaQueryParams::GetChannelString(), // "updaterchannel"
|
| chrome::OmahaQueryParams::getArch(), // "arch"
|
| - chrome::OmahaQueryParams::getNaclArch(), // "nacl_arch"
|
| -
|
| - // OS version and platform information.
|
| + chrome::OmahaQueryParams::getNaclArch()); // "nacl_arch"
|
| +#if defined(OS_WIN)
|
| + const bool is_wow64(
|
| + base::win::OSInfo::GetInstance()->wow64_status() ==
|
| + base::win::OSInfo::WOW64_ENABLED);
|
| + if (is_wow64)
|
| + base::StringAppendF(&request, " wow64=\"1\"");
|
| +#endif
|
| + base::StringAppendF(&request, ">");
|
| +
|
| + // OS version and platform information.
|
| + base::StringAppendF(
|
| + &request,
|
| + "<os platform=\"%s\" version=\"%s\" arch=\"%s\"/>",
|
| chrome::VersionInfo().OSType().c_str(), // "platform"
|
| base::SysInfo().OperatingSystemVersion().c_str(), // "version"
|
| - base::SysInfo().OperatingSystemArchitecture().c_str(), // "arch"
|
| + base::SysInfo().OperatingSystemArchitecture().c_str()); // "arch"
|
|
|
| - request_body.c_str())); // The actual payload of the request.
|
| + // The actual payload of the request.
|
| + base::StringAppendF(&request, "%s</request>", request_body.c_str());
|
|
|
| return request;
|
| }
|
|
|