#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
+#include "chrome/browser/component_updater/component_updater_configurator.h"
#include "chrome/browser/component_updater/component_updater_utils.h"
#include "chrome/browser/component_updater/crx_update_item.h"
#include "net/url_request/url_fetcher.h"
#include "net/url_request/url_fetcher_delegate.h"
+#include "url/gurl.h"
namespace component_updater {
public:
PingSender();
- void SendPing(const GURL& ping_url,
+ void SendPing(const Configurator& config,
net::URLRequestContextGetter* url_request_context_getter,
const CrxUpdateItem* item);
// Overrides for URLFetcherDelegate.
virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
- static std::string BuildPing(const CrxUpdateItem* item);
+ static std::string BuildPing(const Configurator& config,
+ const CrxUpdateItem* item);
static std::string BuildDownloadCompleteEventElements(
const CrxUpdateItem* item);
static std::string BuildUpdateCompleteEventElement(const CrxUpdateItem* item);
}
void PingSender::SendPing(
- const GURL& ping_url,
+ const Configurator& config,
net::URLRequestContextGetter* url_request_context_getter,
const CrxUpdateItem* item) {
DCHECK(item);
- if (!ping_url.is_valid())
+ if (!config.PingUrl().is_valid())
return;
- url_fetcher_.reset(SendProtocolRequest(
- ping_url, BuildPing(item), this, url_request_context_getter));
+ url_fetcher_.reset(SendProtocolRequest(config.PingUrl(),
+ BuildPing(config, item),
+ this,
+ url_request_context_getter));
}
// Builds a ping message for the specified update item.
-std::string PingSender::BuildPing(const CrxUpdateItem* item) {
+std::string PingSender::BuildPing(const Configurator& config,
+ const CrxUpdateItem* item) {
const char app_element_format[] =
"<app appid=\"%s\" version=\"%s\" nextversion=\"%s\">"
"%s"
BuildUpdateCompleteEventElement(item).c_str(), // update event
BuildDownloadCompleteEventElements(item).c_str())); // download events
- return BuildProtocolRequest(app_element, "");
+ return BuildProtocolRequest(config.GetBrowserVersion().GetString(),
+ config.GetChannel(),
+ config.GetLang(),
+ config.GetOSLongName(),
+ app_element,
+ "");
}
// Returns a string representing a sequence of download complete events
return ping_event;
}
-PingManager::PingManager(
- const GURL& ping_url,
- net::URLRequestContextGetter* url_request_context_getter)
- : ping_url_(ping_url),
- url_request_context_getter_(url_request_context_getter) {
+PingManager::PingManager(const Configurator& config) : config_(config) {
}
PingManager::~PingManager() {
// sender object self-deletes after sending the ping.
void PingManager::OnUpdateComplete(const CrxUpdateItem* item) {
PingSender* ping_sender(new PingSender);
- ping_sender->SendPing(ping_url_, url_request_context_getter_, item);
+ ping_sender->SendPing(config_, config_.RequestContext(), item);
}
} // namespace component_updater