Index: chrome/browser/extensions/updater/extension_downloader.cc |
diff --git a/chrome/browser/extensions/updater/extension_downloader.cc b/chrome/browser/extensions/updater/extension_downloader.cc |
index 58463804bf8bb59cd53896c90f08f51b61e769b3..390eecdf15d40dbdca5e2d227bf829099237ff7c 100644 |
--- a/chrome/browser/extensions/updater/extension_downloader.cc |
+++ b/chrome/browser/extensions/updater/extension_downloader.cc |
@@ -187,7 +187,8 @@ ExtensionDownloader::ExtensionDownloader( |
extensions_queue_(&kDefaultBackoffPolicy, |
base::Bind(&ExtensionDownloader::CreateExtensionFetcher, |
base::Unretained(this))), |
- extension_cache_(NULL) { |
+ extension_cache_(NULL), |
+ enable_extra_update_metrics_(false) { |
DCHECK(delegate_); |
DCHECK(request_context_); |
} |
@@ -266,8 +267,8 @@ void ExtensionDownloader::StartBlacklistUpdate( |
// url here to avoid DNS hijacking of the blacklist, which is not validated |
// by a public key signature like .crx files are. |
scoped_ptr<ManifestFetchData> blacklist_fetch( |
- new ManifestFetchData(extension_urls::GetWebstoreUpdateUrl(), |
- request_id)); |
+ CreateManifestFetchData(extension_urls::GetWebstoreUpdateUrl(), |
+ request_id)); |
DCHECK(blacklist_fetch->base_url().SchemeIsSecure()); |
blacklist_fetch->AddExtension(kBlacklistAppID, |
version, |
@@ -282,6 +283,22 @@ void ExtensionDownloader::SetWebstoreIdentityProvider( |
identity_provider_.swap(identity_provider); |
} |
+void ExtensionDownloader::SetBrandCode(const std::string& brand_code) { |
+ brand_code_ = brand_code; |
+} |
+ |
+void ExtensionDownloader::SetManifestQueryParams(const std::string& params) { |
+ manifest_query_params_ = params; |
+} |
+ |
+void ExtensionDownloader::EnablePingDataForDomain(const std::string& domain) { |
+ ping_enabled_domain_ = domain; |
+} |
+ |
+void ExtensionDownloader::EnableExtraUpdateMetrics(bool enable) { |
+ enable_extra_update_metrics_ = enable; |
+} |
+ |
bool ExtensionDownloader::AddExtensionData(const std::string& id, |
const Version& version, |
Manifest::Type extension_type, |
@@ -340,10 +357,10 @@ bool ExtensionDownloader::AddExtensionData(const std::string& id, |
std::vector<GURL> update_urls; |
update_urls.push_back(update_url); |
- // If UMA is enabled, also add to ManifestFetchData for the |
+ // If metrics are enabled, also add to ManifestFetchData for the |
// webstore update URL. |
if (!extension_urls::IsWebstoreUpdateUrl(update_url) && |
- ChromeMetricsServiceAccessor::IsMetricsReportingEnabled()) { |
+ enable_extra_update_metrics_) { |
update_urls.push_back(extension_urls::GetWebstoreUpdateUrl()); |
} |
@@ -377,7 +394,7 @@ bool ExtensionDownloader::AddExtensionData(const std::string& id, |
// Otherwise add a new element to the list, if the list doesn't exist or |
// if its last element is already full. |
linked_ptr<ManifestFetchData> fetch( |
- new ManifestFetchData(update_urls[i], request_id)); |
+ CreateManifestFetchData(update_urls[i], request_id)); |
fetches_preparing_[std::make_pair(request_id, update_urls[i])]. |
push_back(fetch); |
added = fetch->AddExtension(id, version.GetString(), |
@@ -928,4 +945,23 @@ void ExtensionDownloader::OnGetTokenFailure( |
extension_fetcher_->Start(); |
} |
+ManifestFetchData* ExtensionDownloader::CreateManifestFetchData( |
+ const GURL& update_url, |
+ int request_id) { |
+ ManifestFetchData::PingMode ping_mode = ManifestFetchData::NO_PING; |
+ if (update_url.DomainIs(ping_enabled_domain_.c_str())) { |
+ if (enable_extra_update_metrics_) { |
+ ping_mode = ManifestFetchData::PING_WITH_METRICS; |
+ } else { |
+ ping_mode = ManifestFetchData::PING; |
+ } |
+ } |
+ return new ManifestFetchData(update_url, |
+ request_id, |
+ brand_code_, |
+ manifest_query_params_, |
+ ping_mode); |
+} |
+ |
+ |
} // namespace extensions |