Index: components/update_client/ping_manager.cc |
diff --git a/components/update_client/ping_manager.cc b/components/update_client/ping_manager.cc |
index 838e98b5880585ed13ccf26b50788c2eeb0ab1ca..97ca49f9b0f73d05343efdcad2d73bf4935d2ea3 100644 |
--- a/components/update_client/ping_manager.cc |
+++ b/components/update_client/ping_manager.cc |
@@ -16,13 +16,13 @@ |
#include "base/location.h" |
#include "base/logging.h" |
#include "base/macros.h" |
+#include "base/memory/ptr_util.h" |
#include "base/sequenced_task_runner.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/strings/string_util.h" |
#include "base/strings/stringprintf.h" |
-#include "base/threading/thread_checker.h" |
+#include "components/update_client/component.h" |
#include "components/update_client/configurator.h" |
-#include "components/update_client/crx_update_item.h" |
#include "components/update_client/request_sender.h" |
#include "components/update_client/updater_state.h" |
#include "components/update_client/utils.h" |
@@ -47,11 +47,10 @@ const char* DownloaderToString(CrxDownloader::DownloadMetrics::Downloader d) { |
// Returns a string representing a sequence of download complete events |
// corresponding to each download metrics in |item|. |
-std::string BuildDownloadCompleteEventElements(const CrxUpdateItem* item) { |
+std::string BuildDownloadCompleteEventElements(const Component& component) { |
using base::StringAppendF; |
std::string download_events; |
- for (size_t i = 0; i != item->download_metrics.size(); ++i) { |
- const CrxDownloader::DownloadMetrics& metrics = item->download_metrics[i]; |
+ for (const auto& metrics : component.download_metrics()) { |
std::string event("<event eventtype=\"14\""); |
StringAppendF(&event, " eventresult=\"%d\"", metrics.error == 0); |
StringAppendF(&event, " downloader=\"%s\"", |
@@ -82,59 +81,62 @@ std::string BuildDownloadCompleteEventElements(const CrxUpdateItem* item) { |
return download_events; |
} |
-// Returns a string representing one ping event for the update of an item. |
+// Returns a string representing one ping event for the update of a component. |
// The event type for this ping event is 3. |
-std::string BuildUpdateCompleteEventElement(const CrxUpdateItem* item) { |
- DCHECK(item->state == CrxUpdateItem::State::kNoUpdate || |
- item->state == CrxUpdateItem::State::kUpdated); |
+std::string BuildUpdateCompleteEventElement(const Component& component) { |
+ DCHECK(component.state() == ComponentState::kUpdateError || |
+ component.state() == ComponentState::kUpdated); |
using base::StringAppendF; |
std::string ping_event("<event eventtype=\"3\""); |
- const int event_result = item->state == CrxUpdateItem::State::kUpdated; |
+ const int event_result = component.state() == ComponentState::kUpdated; |
StringAppendF(&ping_event, " eventresult=\"%d\"", event_result); |
- if (item->error_category) |
- StringAppendF(&ping_event, " errorcat=\"%d\"", item->error_category); |
- if (item->error_code) |
- StringAppendF(&ping_event, " errorcode=\"%d\"", item->error_code); |
- if (item->extra_code1) |
- StringAppendF(&ping_event, " extracode1=\"%d\"", item->extra_code1); |
- if (HasDiffUpdate(item)) |
- StringAppendF(&ping_event, " diffresult=\"%d\"", !item->diff_update_failed); |
- if (item->diff_error_category) { |
+ if (component.error_category()) |
+ StringAppendF(&ping_event, " errorcat=\"%d\"", component.error_category()); |
+ if (component.error_code()) |
+ StringAppendF(&ping_event, " errorcode=\"%d\"", component.error_code()); |
+ if (component.extra_code1()) |
+ StringAppendF(&ping_event, " extracode1=\"%d\"", component.extra_code1()); |
+ if (HasDiffUpdate(component)) |
+ StringAppendF(&ping_event, " diffresult=\"%d\"", |
+ !component.diff_update_failed()); |
+ if (component.diff_error_category()) { |
StringAppendF(&ping_event, " differrorcat=\"%d\"", |
- item->diff_error_category); |
+ component.diff_error_category()); |
} |
- if (item->diff_error_code) |
- StringAppendF(&ping_event, " differrorcode=\"%d\"", item->diff_error_code); |
- if (item->diff_extra_code1) { |
+ if (component.diff_error_code()) |
+ StringAppendF(&ping_event, " differrorcode=\"%d\"", |
+ component.diff_error_code()); |
+ if (component.diff_extra_code1()) { |
StringAppendF(&ping_event, " diffextracode1=\"%d\"", |
- item->diff_extra_code1); |
+ component.diff_extra_code1()); |
} |
- if (!item->previous_fp.empty()) |
- StringAppendF(&ping_event, " previousfp=\"%s\"", item->previous_fp.c_str()); |
- if (!item->next_fp.empty()) |
- StringAppendF(&ping_event, " nextfp=\"%s\"", item->next_fp.c_str()); |
+ if (!component.previous_fp().empty()) |
+ StringAppendF(&ping_event, " previousfp=\"%s\"", |
+ component.previous_fp().c_str()); |
+ if (!component.next_fp().empty()) |
+ StringAppendF(&ping_event, " nextfp=\"%s\"", component.next_fp().c_str()); |
StringAppendF(&ping_event, "/>"); |
return ping_event; |
} |
-// Returns a string representing one ping event for the uninstall of an item. |
-// The event type for this ping event is 4. |
-std::string BuildUninstalledEventElement(const CrxUpdateItem* item) { |
- DCHECK(item->state == CrxUpdateItem::State::kUninstalled); |
+// Returns a string representing one ping event for the uninstall of a |
+// component. The event type for this ping event is 4. |
+std::string BuildUninstalledEventElement(const Component& component) { |
+ DCHECK(component.state() == ComponentState::kUninstalled); |
using base::StringAppendF; |
std::string ping_event("<event eventtype=\"4\" eventresult=\"1\""); |
- if (item->extra_code1) |
- StringAppendF(&ping_event, " extracode1=\"%d\"", item->extra_code1); |
+ if (component.extra_code1()) |
+ StringAppendF(&ping_event, " extracode1=\"%d\"", component.extra_code1()); |
StringAppendF(&ping_event, "/>"); |
return ping_event; |
} |
-// Builds a ping message for the specified update item. |
-std::string BuildPing(const Configurator& config, const CrxUpdateItem* item) { |
+// Builds a ping message for the specified component. |
+std::string BuildPing(const Configurator& config, const Component& component) { |
const char app_element_format[] = |
"<app appid=\"%s\" version=\"%s\" nextversion=\"%s\">" |
"%s" |
@@ -142,13 +144,13 @@ std::string BuildPing(const Configurator& config, const CrxUpdateItem* item) { |
"</app>"; |
std::string ping_event; |
- switch (item->state) { |
- case CrxUpdateItem::State::kNoUpdate: // Fall through. |
- case CrxUpdateItem::State::kUpdated: |
- ping_event = BuildUpdateCompleteEventElement(item); |
+ switch (component.state()) { |
+ case ComponentState::kUpdateError: // Fall through. |
+ case ComponentState::kUpdated: |
+ ping_event = BuildUpdateCompleteEventElement(component); |
break; |
- case CrxUpdateItem::State::kUninstalled: |
- ping_event = BuildUninstalledEventElement(item); |
+ case ComponentState::kUninstalled: |
+ ping_event = BuildUninstalledEventElement(component); |
break; |
default: |
NOTREACHED(); |
@@ -157,11 +159,12 @@ std::string BuildPing(const Configurator& config, const CrxUpdateItem* item) { |
const std::string app_element(base::StringPrintf( |
app_element_format, |
- item->id.c_str(), // "appid" |
- item->previous_version.GetString().c_str(), // "version" |
- item->next_version.GetString().c_str(), // "nextversion" |
- ping_event.c_str(), // ping event |
- BuildDownloadCompleteEventElements(item).c_str())); // download events |
+ component.id().c_str(), // "appid" |
+ component.previous_version().GetString().c_str(), // "version" |
+ component.next_version().GetString().c_str(), // "nextversion" |
+ ping_event.c_str(), // ping event |
+ BuildDownloadCompleteEventElements(component) |
+ .c_str())); // download events |
// The ping request does not include any updater state. |
return BuildProtocolRequest( |
@@ -178,7 +181,7 @@ class PingSender { |
explicit PingSender(const scoped_refptr<Configurator>& config); |
~PingSender(); |
- bool SendPing(const CrxUpdateItem* item); |
+ bool SendPing(const Component& component); |
private: |
void OnRequestSenderComplete(int error, |
@@ -206,12 +209,11 @@ void PingSender::OnRequestSenderComplete(int error, |
delete this; |
} |
-bool PingSender::SendPing(const CrxUpdateItem* item) { |
- DCHECK(item); |
+bool PingSender::SendPing(const Component& component) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
auto urls(config_->PingUrl()); |
- if (item->component.requires_network_encryption) |
+ if (component.crx_component().requires_network_encryption) |
RemoveUnsecureUrls(&urls); |
if (urls.empty()) |
@@ -219,7 +221,7 @@ bool PingSender::SendPing(const CrxUpdateItem* item) { |
request_sender_.reset(new RequestSender(config_)); |
request_sender_->Send( |
- false, BuildPing(*config_, item), urls, |
+ false, BuildPing(*config_, component), urls, |
base::Bind(&PingSender::OnRequestSenderComplete, base::Unretained(this))); |
return true; |
} |
@@ -230,11 +232,14 @@ PingManager::PingManager(const scoped_refptr<Configurator>& config) |
: config_(config) {} |
PingManager::~PingManager() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
} |
-bool PingManager::SendPing(const CrxUpdateItem* item) { |
- std::unique_ptr<PingSender> ping_sender(new PingSender(config_)); |
- if (!ping_sender->SendPing(item)) |
+bool PingManager::SendPing(const Component& component) { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ |
+ auto ping_sender = base::MakeUnique<PingSender>(config_); |
+ if (!ping_sender->SendPing(component)) |
return false; |
// The ping sender object self-deletes after sending the ping asynchrously. |