Index: components/update_client/update_checker.cc |
diff --git a/components/update_client/update_checker.cc b/components/update_client/update_checker.cc |
index 9ae0ada2115df07da8bcda3073df1fadd32a8df6..4995f7500bc1778e45893d958bf24367e38b7d1c 100644 |
--- a/components/update_client/update_checker.cc |
+++ b/components/update_client/update_checker.cc |
@@ -22,6 +22,7 @@ |
#include "components/update_client/component.h" |
#include "components/update_client/configurator.h" |
#include "components/update_client/persisted_data.h" |
+#include "components/update_client/protocol_builder.h" |
#include "components/update_client/protocol_parser.h" |
#include "components/update_client/request_sender.h" |
#include "components/update_client/update_client.h" |
@@ -33,22 +34,6 @@ namespace update_client { |
namespace { |
-// Returns a sanitized version of the brand or an empty string otherwise. |
-std::string SanitizeBrand(const std::string& brand) { |
- return IsValidBrand(brand) ? brand : std::string(""); |
-} |
- |
-// Filters invalid attributes from |installer_attributes|. |
-update_client::InstallerAttributes SanitizeInstallerAttributes( |
- const update_client::InstallerAttributes& installer_attributes) { |
- update_client::InstallerAttributes sanitized_attrs; |
- for (const auto& attr : installer_attributes) { |
- if (IsValidInstallerAttribute(attr)) |
- sanitized_attrs.insert(attr); |
- } |
- return sanitized_attrs; |
-} |
- |
// Returns true if at least one item requires network encryption. |
bool IsEncryptionRequired(const IdToComponentPtrMap& components) { |
for (const auto& item : components) { |
@@ -59,90 +44,6 @@ bool IsEncryptionRequired(const IdToComponentPtrMap& components) { |
return false; |
} |
-// Builds an update check request for |components|. |additional_attributes| is |
-// serialized as part of the <request> element of the request to customize it |
-// with data that is not platform or component specific. For each |item|, a |
-// corresponding <app> element is created and inserted as a child node of |
-// the <request>. |
-// |
-// An app element looks like this: |
-// <app appid="hnimpnehoodheedghdeeijklkeaacbdc" |
-// version="0.1.2.3" installsource="ondemand"> |
-// <updatecheck/> |
-// <packages> |
-// <package fp="abcd"/> |
-// </packages> |
-// </app> |
-std::string BuildUpdateCheckRequest( |
- const Configurator& config, |
- const std::vector<std::string>& ids_checked, |
- const IdToComponentPtrMap& components, |
- PersistedData* metadata, |
- const std::string& additional_attributes, |
- bool enabled_component_updates, |
- const std::unique_ptr<UpdaterState::Attributes>& updater_state_attributes) { |
- const std::string brand(SanitizeBrand(config.GetBrand())); |
- std::string app_elements; |
- for (const auto& id : ids_checked) { |
- DCHECK_EQ(1u, components.count(id)); |
- const Component& component = *components.at(id); |
- |
- const update_client::InstallerAttributes installer_attributes( |
- SanitizeInstallerAttributes( |
- component.crx_component().installer_attributes)); |
- std::string app("<app "); |
- base::StringAppendF(&app, "appid=\"%s\" version=\"%s\"", |
- component.id().c_str(), |
- component.crx_component().version.GetString().c_str()); |
- if (!brand.empty()) |
- base::StringAppendF(&app, " brand=\"%s\"", brand.c_str()); |
- if (component.on_demand()) |
- base::StringAppendF(&app, " installsource=\"ondemand\""); |
- for (const auto& attr : installer_attributes) { |
- base::StringAppendF(&app, " %s=\"%s\"", attr.first.c_str(), |
- attr.second.c_str()); |
- } |
- const std::string cohort = metadata->GetCohort(component.id()); |
- const std::string cohort_name = metadata->GetCohortName(component.id()); |
- const std::string cohort_hint = metadata->GetCohortHint(component.id()); |
- if (!cohort.empty()) |
- base::StringAppendF(&app, " cohort=\"%s\"", cohort.c_str()); |
- if (!cohort_name.empty()) |
- base::StringAppendF(&app, " cohortname=\"%s\"", cohort_name.c_str()); |
- if (!cohort_hint.empty()) |
- base::StringAppendF(&app, " cohorthint=\"%s\"", cohort_hint.c_str()); |
- base::StringAppendF(&app, ">"); |
- |
- base::StringAppendF(&app, "<updatecheck"); |
- if (component.crx_component() |
- .supports_group_policy_enable_component_updates && |
- !enabled_component_updates) { |
- base::StringAppendF(&app, " updatedisabled=\"true\""); |
- } |
- base::StringAppendF(&app, "/>"); |
- |
- base::StringAppendF(&app, "<ping rd=\"%d\" ping_freshness=\"%s\"/>", |
- metadata->GetDateLastRollCall(component.id()), |
- metadata->GetPingFreshness(component.id()).c_str()); |
- if (!component.crx_component().fingerprint.empty()) { |
- base::StringAppendF(&app, |
- "<packages>" |
- "<package fp=\"%s\"/>" |
- "</packages>", |
- component.crx_component().fingerprint.c_str()); |
- } |
- base::StringAppendF(&app, "</app>"); |
- app_elements.append(app); |
- VLOG(1) << "Appending to update request: " << app; |
- } |
- |
- // Include the updater state in the update check request. |
- return BuildProtocolRequest( |
- config.GetProdId(), config.GetBrowserVersion().GetString(), |
- config.GetChannel(), config.GetLang(), config.GetOSLongName(), |
- config.GetDownloadPreference(), app_elements, additional_attributes, |
- updater_state_attributes); |
-} |
class UpdateCheckerImpl : public UpdateChecker { |
public: |