Index: components/update_client/action.cc |
diff --git a/components/update_client/action.cc b/components/update_client/action.cc |
deleted file mode 100644 |
index 7fab8a8d8edb880fe149dbc99e63a0bc5ce26e81..0000000000000000000000000000000000000000 |
--- a/components/update_client/action.cc |
+++ /dev/null |
@@ -1,191 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "components/update_client/action.h" |
- |
-#include <algorithm> |
-#include <memory> |
- |
-#include "base/bind.h" |
-#include "base/bind_helpers.h" |
-#include "base/callback.h" |
-#include "base/location.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/single_thread_task_runner.h" |
-#include "base/threading/thread_task_runner_handle.h" |
-#include "components/update_client/action_update.h" |
-#include "components/update_client/action_wait.h" |
-#include "components/update_client/configurator.h" |
-#include "components/update_client/update_client_errors.h" |
-#include "components/update_client/update_engine.h" |
-#include "components/update_client/utils.h" |
- |
-namespace update_client { |
- |
-using Events = UpdateClient::Observer::Events; |
- |
-namespace { |
- |
-// Returns true if a differential update is available, it has not failed yet, |
-// and the configuration allows this update. |
-bool CanTryDiffUpdate(const CrxUpdateItem* update_item, |
- const scoped_refptr<Configurator>& config) { |
- return HasDiffUpdate(update_item) && !update_item->diff_update_failed && |
- config->EnabledDeltas(); |
-} |
- |
-} // namespace |
- |
-ActionImpl::ActionImpl() : update_context_(nullptr) { |
-} |
- |
-ActionImpl::~ActionImpl() { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
-} |
- |
-void ActionImpl::Run(UpdateContext* update_context, Callback callback) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- |
- update_context_ = update_context; |
- callback_ = callback; |
-} |
- |
-CrxUpdateItem* ActionImpl::FindUpdateItemById(const std::string& id) const { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- |
- const auto it = update_context_->update_items.find(id); |
- |
- return it != update_context_->update_items.end() ? it->second.get() : nullptr; |
-} |
- |
-void ActionImpl::ChangeItemState(CrxUpdateItem* item, CrxUpdateItem::State to) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- |
- item->state = to; |
- |
- using Events = UpdateClient::Observer::Events; |
- |
- const std::string& id(item->id); |
- switch (to) { |
- case CrxUpdateItem::State::kChecking: |
- NotifyObservers(Events::COMPONENT_CHECKING_FOR_UPDATES, id); |
- break; |
- case CrxUpdateItem::State::kCanUpdate: |
- NotifyObservers(Events::COMPONENT_UPDATE_FOUND, id); |
- break; |
- case CrxUpdateItem::State::kUpdatingDiff: |
- case CrxUpdateItem::State::kUpdating: |
- NotifyObservers(Events::COMPONENT_UPDATE_READY, id); |
- break; |
- case CrxUpdateItem::State::kUpdated: |
- NotifyObservers(Events::COMPONENT_UPDATED, id); |
- break; |
- case CrxUpdateItem::State::kUpToDate: |
- case CrxUpdateItem::State::kNoUpdate: |
- NotifyObservers(Events::COMPONENT_NOT_UPDATED, id); |
- break; |
- case CrxUpdateItem::State::kNew: |
- case CrxUpdateItem::State::kDownloading: |
- case CrxUpdateItem::State::kDownloadingDiff: |
- case CrxUpdateItem::State::kDownloaded: |
- case CrxUpdateItem::State::kUninstalled: |
- case CrxUpdateItem::State::kLastStatus: |
- // No notification for these states. |
- break; |
- } |
-} |
- |
-size_t ActionImpl::ChangeAllItemsState(CrxUpdateItem::State from, |
- CrxUpdateItem::State to) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- size_t count = 0; |
- for (const auto& item : update_context_->update_items) { |
- if (item.second->state == from) { |
- ChangeItemState(item.second.get(), to); |
- ++count; |
- } |
- } |
- return count; |
-} |
- |
-void ActionImpl::NotifyObservers(UpdateClient::Observer::Events event, |
- const std::string& id) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- update_context_->notify_observers_callback.Run(event, id); |
-} |
- |
-void ActionImpl::UpdateCrx() { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- DCHECK(!update_context_->queue.empty()); |
- |
- const std::string& id = update_context_->queue.front(); |
- CrxUpdateItem* item = FindUpdateItemById(id); |
- DCHECK(item); |
- |
- item->update_begin = base::TimeTicks::Now(); |
- |
- if (item->component.supports_group_policy_enable_component_updates && |
- !update_context_->enabled_component_updates) { |
- item->error_category = static_cast<int>(ErrorCategory::kServiceError); |
- item->error_code = static_cast<int>(ServiceError::UPDATE_DISABLED); |
- item->extra_code1 = 0; |
- ChangeItemState(item, CrxUpdateItem::State::kNoUpdate); |
- |
- UpdateCrxComplete(item); |
- return; |
- } |
- |
- std::unique_ptr<Action> update_action( |
- CanTryDiffUpdate(item, update_context_->config) |
- ? ActionUpdateDiff::Create() |
- : ActionUpdateFull::Create()); |
- |
- base::ThreadTaskRunnerHandle::Get()->PostTask( |
- FROM_HERE, base::Bind(&Action::Run, base::Unretained(update_action.get()), |
- update_context_, callback_)); |
- |
- update_context_->current_action = std::move(update_action); |
-} |
- |
-void ActionImpl::UpdateCrxComplete(CrxUpdateItem* item) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- DCHECK(item); |
- |
- update_context_->ping_manager->SendPing(item); |
- |
- update_context_->queue.pop(); |
- |
- if (update_context_->queue.empty()) { |
- UpdateComplete(Error::NONE); |
- } else { |
- DCHECK(!item->update_begin.is_null()); |
- |
- // Assume that the cost of applying the update is proportional with how |
- // long it took to apply it. Then delay the next update by the same time |
- // interval or the value provided by the configurator, whichever is less. |
- const base::TimeDelta max_update_delay = |
- base::TimeDelta::FromSeconds(update_context_->config->UpdateDelay()); |
- const base::TimeDelta update_cost(base::TimeTicks::Now() - |
- item->update_begin); |
- DCHECK(update_cost >= base::TimeDelta()); |
- |
- std::unique_ptr<ActionWait> action_wait( |
- new ActionWait(std::min(update_cost, max_update_delay))); |
- |
- base::ThreadTaskRunnerHandle::Get()->PostTask( |
- FROM_HERE, base::Bind(&Action::Run, base::Unretained(action_wait.get()), |
- update_context_, callback_)); |
- |
- update_context_->current_action = std::move(action_wait); |
- } |
-} |
- |
-void ActionImpl::UpdateComplete(Error error) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- |
- base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, |
- base::Bind(callback_, error)); |
-} |
- |
-} // namespace update_client |