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

Unified Diff: components/update_client/update_client.cc

Issue 2835803002: Refactor the UpdateEngine and its actions in the component updater. (Closed)
Patch Set: feedback up to #6 Created 3 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
« no previous file with comments | « components/update_client/update_client.h ('k') | components/update_client/update_client_internal.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/update_client/update_client.cc
diff --git a/components/update_client/update_client.cc b/components/update_client/update_client.cc
index e4953920313afe442ef143e8ac76597b850b51c5..2c9f48aa1eb963790bff90d82d72a8b8a5cef8a4 100644
--- a/components/update_client/update_client.cc
+++ b/components/update_client/update_client.cc
@@ -16,6 +16,7 @@
#include "base/location.h"
#include "base/logging.h"
#include "base/macros.h"
+#include "base/memory/ptr_util.h"
#include "base/observer_list.h"
#include "base/sequenced_task_runner.h"
#include "base/single_thread_task_runner.h"
@@ -27,6 +28,7 @@
#include "components/update_client/crx_update_item.h"
#include "components/update_client/persisted_data.h"
#include "components/update_client/ping_manager.h"
+#include "components/update_client/task_send_uninstall_ping.h"
#include "components/update_client/task_update.h"
#include "components/update_client/update_checker.h"
#include "components/update_client/update_client_errors.h"
@@ -38,23 +40,13 @@
namespace update_client {
-CrxUpdateItem::CrxUpdateItem()
- : state(State::kNew),
- on_demand(false),
- diff_update_failed(false),
- error_category(0),
- error_code(0),
- extra_code1(0),
- diff_error_category(0),
- diff_error_code(0),
- diff_extra_code1(0) {
-}
-
-CrxUpdateItem::CrxUpdateItem(const CrxUpdateItem& other) = default;
+CrxUpdateItem::CrxUpdateItem() : state(ComponentState::kNew) {}
CrxUpdateItem::~CrxUpdateItem() {
}
+CrxUpdateItem::CrxUpdateItem(const CrxUpdateItem& other) = default;
+
CrxComponent::CrxComponent()
: allows_background_download(true),
requires_network_encryption(true),
@@ -79,13 +71,13 @@ UpdateClientImpl::UpdateClientImpl(
: is_stopped_(false),
config_(config),
ping_manager_(std::move(ping_manager)),
- update_engine_(
- new UpdateEngine(config,
- update_checker_factory,
- crx_downloader_factory,
- ping_manager_.get(),
- base::Bind(&UpdateClientImpl::NotifyObservers,
- base::Unretained(this)))) {}
+ update_engine_(base::MakeUnique<UpdateEngine>(
+ config,
+ update_checker_factory,
+ crx_downloader_factory,
+ ping_manager_.get(),
+ base::Bind(&UpdateClientImpl::NotifyObservers,
+ base::Unretained(this)))) {}
UpdateClientImpl::~UpdateClientImpl() {
DCHECK(thread_checker_.CalledOnValidThread());
@@ -106,14 +98,13 @@ void UpdateClientImpl::Install(const std::string& id,
return;
}
- std::vector<std::string> ids;
- ids.push_back(id);
+ std::vector<std::string> ids = {id};
// Partially applies |callback| to OnTaskComplete, so this argument is
// available when the task completes, along with the task itself.
- std::unique_ptr<TaskUpdate> task(new TaskUpdate(
+ std::unique_ptr<TaskUpdate> task = base::MakeUnique<TaskUpdate>(
update_engine_.get(), true, ids, crx_data_callback,
- base::Bind(&UpdateClientImpl::OnTaskComplete, this, callback)));
+ base::Bind(&UpdateClientImpl::OnTaskComplete, this, callback));
// Install tasks are run concurrently and never queued up.
RunTask(std::move(task));
@@ -124,9 +115,9 @@ void UpdateClientImpl::Update(const std::vector<std::string>& ids,
const Callback& callback) {
DCHECK(thread_checker_.CalledOnValidThread());
- std::unique_ptr<TaskUpdate> task(new TaskUpdate(
+ std::unique_ptr<TaskUpdate> task = base::MakeUnique<TaskUpdate>(
update_engine_.get(), false, ids, crx_data_callback,
- base::Bind(&UpdateClientImpl::OnTaskComplete, this, callback)));
+ base::Bind(&UpdateClientImpl::OnTaskComplete, this, callback));
// If no other tasks are running at the moment, run this update task.
// Otherwise, queue the task up.
@@ -238,26 +229,19 @@ void UpdateClientImpl::SendUninstallPing(const std::string& id,
const Callback& callback) {
DCHECK(thread_checker_.CalledOnValidThread());
- // The implementation of PingManager::SendPing contains a self-deleting
- // object responsible for sending the ping.
- CrxUpdateItem item;
- item.state = CrxUpdateItem::State::kUninstalled;
- item.id = id;
- item.previous_version = version;
- item.next_version = base::Version("0");
- item.extra_code1 = reason;
-
- ping_manager_->SendPing(&item);
-
- base::ThreadTaskRunnerHandle::Get()->PostTask(
- FROM_HERE, base::Bind(callback, Error::NONE));
+ std::unique_ptr<TaskSendUninstallPing> task =
+ base::MakeUnique<TaskSendUninstallPing>(
+ update_engine_.get(), id, version, reason,
+ base::Bind(&UpdateClientImpl::OnTaskComplete, base::Unretained(this),
+ callback));
+ RunTask(std::move(task));
}
scoped_refptr<UpdateClient> UpdateClientFactory(
const scoped_refptr<Configurator>& config) {
- std::unique_ptr<PingManager> ping_manager(new PingManager(config));
- return new UpdateClientImpl(config, std::move(ping_manager),
- &UpdateChecker::Create, &CrxDownloader::Create);
+ return base::MakeShared<UpdateClientImpl>(
+ config, base::MakeUnique<PingManager>(config), &UpdateChecker::Create,
+ &CrxDownloader::Create);
}
void RegisterPrefs(PrefRegistrySimple* registry) {
« no previous file with comments | « components/update_client/update_client.h ('k') | components/update_client/update_client_internal.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698