Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(771)

Unified Diff: components/update_client/update_checker.cc

Issue 1861383004: Add module for counting date-last-roll-call and persisting those counts (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/update_client/update_checker.cc
diff --git a/components/update_client/update_checker.cc b/components/update_client/update_checker.cc
index 234ef225d5c44f7552b0f834f77e51bd0ac97e95..09b22d7ce165b745303186383a7152bf71561eda 100644
--- a/components/update_client/update_checker.cc
+++ b/components/update_client/update_checker.cc
@@ -18,6 +18,7 @@
#include "base/strings/stringprintf.h"
#include "base/thread_task_runner_handle.h"
#include "base/threading/thread_checker.h"
+#include "components/update_client/component_metadata.h"
#include "components/update_client/configurator.h"
#include "components/update_client/crx_update_item.h"
#include "components/update_client/request_sender.h"
@@ -58,6 +59,7 @@ bool IsEncryptionRequired(const std::vector<CrxUpdateItem*>& items) {
// </app>
std::string BuildUpdateCheckRequest(const Configurator& config,
const std::vector<CrxUpdateItem*>& items,
+ const ComponentMetadata& metadata,
const std::string& additional_attributes) {
const std::string brand(SanitizeBrand(config.GetBrand()));
std::string app_elements;
@@ -72,6 +74,8 @@ std::string BuildUpdateCheckRequest(const Configurator& config,
base::StringAppendF(&app, " installsource=\"ondemand\"");
base::StringAppendF(&app, ">");
base::StringAppendF(&app, "<updatecheck />");
+ base::StringAppendF(
+ &app, "<ping rd=\"%d\" />", metadata.DateLastRollCall(item->id));
if (!item->component.fingerprint.empty()) {
base::StringAppendF(&app,
"<packages>"
@@ -92,7 +96,9 @@ std::string BuildUpdateCheckRequest(const Configurator& config,
class UpdateCheckerImpl : public UpdateChecker {
public:
- explicit UpdateCheckerImpl(const scoped_refptr<Configurator>& config);
+ explicit UpdateCheckerImpl(
Sorin Jianu 2016/04/07 04:03:19 explicit not needed.
waffles 2016/04/07 17:04:44 Done.
+ const scoped_refptr<Configurator>& config,
+ const scoped_refptr<ComponentMetadata>& metadata);
~UpdateCheckerImpl() override;
// Overrides for UpdateChecker.
@@ -102,20 +108,24 @@ class UpdateCheckerImpl : public UpdateChecker {
const UpdateCheckCallback& update_check_callback) override;
private:
- void OnRequestSenderComplete(int error,
+ void OnRequestSenderComplete(scoped_ptr<std::vector<std::string>> ids_checked,
+ int error,
const std::string& response,
int retry_after_sec);
base::ThreadChecker thread_checker_;
const scoped_refptr<Configurator> config_;
+ const scoped_refptr<ComponentMetadata>& metadata_;
UpdateCheckCallback update_check_callback_;
scoped_ptr<RequestSender> request_sender_;
DISALLOW_COPY_AND_ASSIGN(UpdateCheckerImpl);
};
-UpdateCheckerImpl::UpdateCheckerImpl(const scoped_refptr<Configurator>& config)
- : config_(config) {}
+UpdateCheckerImpl::UpdateCheckerImpl(
+ const scoped_refptr<Configurator>& config,
+ const scoped_refptr<ComponentMetadata>& metadata)
+ : config_(config), metadata_(metadata) {}
UpdateCheckerImpl::~UpdateCheckerImpl() {
DCHECK(thread_checker_.CalledOnValidThread());
@@ -138,23 +148,35 @@ bool UpdateCheckerImpl::CheckForUpdates(
if (IsEncryptionRequired(items_to_check))
RemoveUnsecureUrls(&urls);
+ scoped_ptr<std::vector<std::string>> ids_checked(
+ new std::vector<std::string>());
+ for (auto crx : items_to_check) {
+ ids_checked->push_back(crx->id);
+ }
request_sender_.reset(new RequestSender(config_));
request_sender_->Send(
config_->UseCupSigning(),
- BuildUpdateCheckRequest(*config_, items_to_check, additional_attributes),
+ BuildUpdateCheckRequest(*config_, items_to_check, *metadata_,
+ additional_attributes),
urls, base::Bind(&UpdateCheckerImpl::OnRequestSenderComplete,
- base::Unretained(this)));
+ base::Unretained(this), base::Passed(&ids_checked)));
return true;
}
-void UpdateCheckerImpl::OnRequestSenderComplete(int error,
- const std::string& response,
- int retry_after_sec) {
+void UpdateCheckerImpl::OnRequestSenderComplete(
+ scoped_ptr<std::vector<std::string>> ids_checked,
+ int error,
+ const std::string& response,
+ int retry_after_sec) {
DCHECK(thread_checker_.CalledOnValidThread());
if (!error) {
UpdateResponse update_response;
if (update_response.Parse(response)) {
+ int daynum = update_response.results().daystart_elapsed_days;
+ if (daynum != UpdateResponse::kNoDaystart) {
+ metadata_->SetDateLastRollCall(*ids_checked, daynum);
+ }
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::Bind(update_check_callback_, error,
update_response.results(), retry_after_sec));
@@ -173,8 +195,9 @@ void UpdateCheckerImpl::OnRequestSenderComplete(int error,
} // namespace
scoped_ptr<UpdateChecker> UpdateChecker::Create(
- const scoped_refptr<Configurator>& config) {
- return scoped_ptr<UpdateChecker>(new UpdateCheckerImpl(config));
+ const scoped_refptr<Configurator>& config,
+ const scoped_refptr<ComponentMetadata>& metadata) {
+ return scoped_ptr<UpdateChecker>(new UpdateCheckerImpl(config, metadata));
}
} // namespace update_client

Powered by Google App Engine
This is Rietveld 408576698