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