sorin | 9797aba | 2015-04-17 17:15:03 | [diff] [blame] | 1 | // 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 Jianu | a8ef73d | 2017-11-02 16:55:17 | [diff] [blame] | 6 | #include <utility> |
| 7 | |
sorin | 9797aba | 2015-04-17 17:15:03 | [diff] [blame] | 8 | #include "base/bind.h" |
sorin | 9797aba | 2015-04-17 17:15:03 | [diff] [blame] | 9 | #include "base/location.h" |
gab | 7966d31 | 2016-05-11 20:35:01 | [diff] [blame] | 10 | #include "base/threading/thread_task_runner_handle.h" |
sorin | ecaad3e | 2015-11-13 19:15:52 | [diff] [blame] | 11 | #include "components/update_client/update_client.h" |
sorin | 9797aba | 2015-04-17 17:15:03 | [diff] [blame] | 12 | #include "components/update_client/update_engine.h" |
| 13 | |
| 14 | namespace update_client { |
| 15 | |
Sorin Jianu | dfb12a4 | 2020-03-10 04:12:03 | [diff] [blame] | 16 | TaskUpdate::TaskUpdate( |
| 17 | scoped_refptr<UpdateEngine> update_engine, |
| 18 | bool is_foreground, |
| 19 | const std::vector<std::string>& ids, |
| 20 | UpdateClient::CrxDataCallback crx_data_callback, |
| 21 | UpdateClient::CrxStateChangeCallback crx_state_change_callback, |
| 22 | Callback callback) |
sorin | 9797aba | 2015-04-17 17:15:03 | [diff] [blame] | 23 | : update_engine_(update_engine), |
sorin | 7c71762 | 2015-05-26 19:59:09 | [diff] [blame] | 24 | is_foreground_(is_foreground), |
sorin | 9797aba | 2015-04-17 17:15:03 | [diff] [blame] | 25 | ids_(ids), |
Sorin Jianu | a8ef73d | 2017-11-02 16:55:17 | [diff] [blame] | 26 | crx_data_callback_(std::move(crx_data_callback)), |
Sorin Jianu | dfb12a4 | 2020-03-10 04:12:03 | [diff] [blame] | 27 | crx_state_change_callback_(crx_state_change_callback), |
Vladislav Kuzkokov | 12eca79 | 2017-10-20 12:45:38 | [diff] [blame] | 28 | callback_(std::move(callback)) {} |
sorin | 9797aba | 2015-04-17 17:15:03 | [diff] [blame] | 29 | |
| 30 | TaskUpdate::~TaskUpdate() { |
| 31 | DCHECK(thread_checker_.CalledOnValidThread()); |
| 32 | } |
| 33 | |
sorin | 7c71762 | 2015-05-26 19:59:09 | [diff] [blame] | 34 | void TaskUpdate::Run() { |
sorin | 9797aba | 2015-04-17 17:15:03 | [diff] [blame] | 35 | DCHECK(thread_checker_.CalledOnValidThread()); |
| 36 | |
asargent | e90363b | 2015-09-09 22:40:07 | [diff] [blame] | 37 | if (ids_.empty()) { |
sorin | 7b865052 | 2016-11-02 18:23:41 | [diff] [blame] | 38 | TaskComplete(Error::INVALID_ARGUMENT); |
asargent | e90363b | 2015-09-09 22:40:07 | [diff] [blame] | 39 | return; |
| 40 | } |
sorin | 9797aba | 2015-04-17 17:15:03 | [diff] [blame] | 41 | |
Sorin Jianu | f7e35650 | 2018-03-07 20:54:34 | [diff] [blame] | 42 | update_engine_->Update(is_foreground_, ids_, std::move(crx_data_callback_), |
Sorin Jianu | dfb12a4 | 2020-03-10 04:12:03 | [diff] [blame] | 43 | std::move(crx_state_change_callback_), |
Sorin Jianu | f7e35650 | 2018-03-07 20:54:34 | [diff] [blame] | 44 | base::BindOnce(&TaskUpdate::TaskComplete, this)); |
sorin | ecaad3e | 2015-11-13 19:15:52 | [diff] [blame] | 45 | } |
| 46 | |
| 47 | void TaskUpdate::Cancel() { |
| 48 | DCHECK(thread_checker_.CalledOnValidThread()); |
| 49 | |
sorin | 7b865052 | 2016-11-02 18:23:41 | [diff] [blame] | 50 | TaskComplete(Error::UPDATE_CANCELED); |
sorin | 9797aba | 2015-04-17 17:15:03 | [diff] [blame] | 51 | } |
| 52 | |
sorin | 08d153c | 2015-10-30 00:04:20 | [diff] [blame] | 53 | std::vector<std::string> TaskUpdate::GetIds() const { |
| 54 | return ids_; |
| 55 | } |
| 56 | |
sorin | 7b865052 | 2016-11-02 18:23:41 | [diff] [blame] | 57 | void TaskUpdate::TaskComplete(Error error) { |
sorin | 9797aba | 2015-04-17 17:15:03 | [diff] [blame] | 58 | DCHECK(thread_checker_.CalledOnValidThread()); |
| 59 | |
sorin | ecaad3e | 2015-11-13 19:15:52 | [diff] [blame] | 60 | base::ThreadTaskRunnerHandle::Get()->PostTask( |
Sorin Jianu | dfb12a4 | 2020-03-10 04:12:03 | [diff] [blame] | 61 | FROM_HERE, |
| 62 | base::BindOnce(std::move(callback_), base::WrapRefCounted(this), error)); |
sorin | 9797aba | 2015-04-17 17:15:03 | [diff] [blame] | 63 | } |
| 64 | |
| 65 | } // namespace update_client |