blob: ab445b582e65b7de54a301253a7a71fa65e49505 [file] [log] [blame]
sorin9797aba2015-04-17 17:15:031// Copyright 2015 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4#include "components/update_client/task_update.h"
5
Sorin Jianua8ef73d2017-11-02 16:55:176#include <utility>
7
sorin9797aba2015-04-17 17:15:038#include "base/bind.h"
sorin9797aba2015-04-17 17:15:039#include "base/location.h"
gab7966d312016-05-11 20:35:0110#include "base/threading/thread_task_runner_handle.h"
sorinecaad3e2015-11-13 19:15:5211#include "components/update_client/update_client.h"
sorin9797aba2015-04-17 17:15:0312#include "components/update_client/update_engine.h"
13
14namespace update_client {
15
Sorin Jianu8cfa58712018-03-08 00:59:0516TaskUpdate::TaskUpdate(scoped_refptr<UpdateEngine> update_engine,
sorin7c717622015-05-26 19:59:0917 bool is_foreground,
sorin9797aba2015-04-17 17:15:0318 const std::vector<std::string>& ids,
Sorin Jianua8ef73d2017-11-02 16:55:1719 UpdateClient::CrxDataCallback crx_data_callback,
Vladislav Kuzkokov12eca792017-10-20 12:45:3820 Callback callback)
sorin9797aba2015-04-17 17:15:0321 : update_engine_(update_engine),
sorin7c717622015-05-26 19:59:0922 is_foreground_(is_foreground),
sorin9797aba2015-04-17 17:15:0323 ids_(ids),
Sorin Jianua8ef73d2017-11-02 16:55:1724 crx_data_callback_(std::move(crx_data_callback)),
Vladislav Kuzkokov12eca792017-10-20 12:45:3825 callback_(std::move(callback)) {}
sorin9797aba2015-04-17 17:15:0326
27TaskUpdate::~TaskUpdate() {
28 DCHECK(thread_checker_.CalledOnValidThread());
29}
30
sorin7c717622015-05-26 19:59:0931void TaskUpdate::Run() {
sorin9797aba2015-04-17 17:15:0332 DCHECK(thread_checker_.CalledOnValidThread());
33
asargente90363b2015-09-09 22:40:0734 if (ids_.empty()) {
sorin7b8650522016-11-02 18:23:4135 TaskComplete(Error::INVALID_ARGUMENT);
asargente90363b2015-09-09 22:40:0736 return;
37 }
sorin9797aba2015-04-17 17:15:0338
Sorin Jianuf7e356502018-03-07 20:54:3439 update_engine_->Update(is_foreground_, ids_, std::move(crx_data_callback_),
40 base::BindOnce(&TaskUpdate::TaskComplete, this));
sorinecaad3e2015-11-13 19:15:5241}
42
43void TaskUpdate::Cancel() {
44 DCHECK(thread_checker_.CalledOnValidThread());
45
sorin7b8650522016-11-02 18:23:4146 TaskComplete(Error::UPDATE_CANCELED);
sorin9797aba2015-04-17 17:15:0347}
48
sorin08d153c2015-10-30 00:04:2049std::vector<std::string> TaskUpdate::GetIds() const {
50 return ids_;
51}
52
sorin7b8650522016-11-02 18:23:4153void TaskUpdate::TaskComplete(Error error) {
sorin9797aba2015-04-17 17:15:0354 DCHECK(thread_checker_.CalledOnValidThread());
55
sorinecaad3e2015-11-13 19:15:5256 base::ThreadTaskRunnerHandle::Get()->PostTask(
Sorin Jianuf7e356502018-03-07 20:54:3457 FROM_HERE, base::BindOnce(std::move(callback_),
58 scoped_refptr<TaskUpdate>(this), error));
sorin9797aba2015-04-17 17:15:0359}
60
61} // namespace update_client