Index: components/update_client/action_update_check.cc |
diff --git a/components/update_client/action_update_check.cc b/components/update_client/action_update_check.cc |
deleted file mode 100644 |
index 2215affaa13a5ae4919fb003a33cdad4196e3d9b..0000000000000000000000000000000000000000 |
--- a/components/update_client/action_update_check.cc |
+++ /dev/null |
@@ -1,242 +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_update_check.h" |
- |
-#include <stddef.h> |
-#include <utility> |
- |
-#include "base/bind.h" |
-#include "base/bind_helpers.h" |
-#include "base/callback.h" |
-#include "base/location.h" |
-#include "base/logging.h" |
-#include "base/memory/ptr_util.h" |
-#include "base/single_thread_task_runner.h" |
-#include "base/threading/thread_task_runner_handle.h" |
-#include "base/version.h" |
-#include "components/update_client/action_update.h" |
-#include "components/update_client/configurator.h" |
-#include "components/update_client/update_checker.h" |
-#include "components/update_client/update_client.h" |
-#include "components/update_client/update_client_errors.h" |
-#include "components/update_client/utils.h" |
- |
-using std::string; |
-using std::vector; |
- |
-namespace update_client { |
- |
-namespace { |
- |
-// Returns true if the |proposed| version is newer than |current| version. |
-bool IsVersionNewer(const base::Version& current, const std::string& proposed) { |
- base::Version proposed_ver(proposed); |
- return proposed_ver.IsValid() && current.CompareTo(proposed_ver) < 0; |
-} |
- |
-} // namespace |
- |
-ActionUpdateCheck::ActionUpdateCheck( |
- std::unique_ptr<UpdateChecker> update_checker, |
- const base::Version& browser_version, |
- const std::string& extra_request_parameters) |
- : update_checker_(std::move(update_checker)), |
- browser_version_(browser_version), |
- extra_request_parameters_(extra_request_parameters) {} |
- |
-ActionUpdateCheck::~ActionUpdateCheck() { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
-} |
- |
-void ActionUpdateCheck::Run(UpdateContext* update_context, Callback callback) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- |
- ActionImpl::Run(update_context, callback); |
- |
- // Calls out to get the corresponding CrxComponent data for the CRXs in this |
- // update context. |
- vector<CrxComponent> crx_components; |
- update_context_->crx_data_callback.Run(update_context_->ids, &crx_components); |
- |
- for (size_t i = 0; i != crx_components.size(); ++i) { |
- std::unique_ptr<CrxUpdateItem> item = base::MakeUnique<CrxUpdateItem>(); |
- const CrxComponent& crx_component = crx_components[i]; |
- |
- item->id = GetCrxComponentID(crx_component); |
- item->component = crx_component; |
- item->last_check = base::TimeTicks::Now(); |
- item->crx_urls.clear(); |
- item->crx_diffurls.clear(); |
- item->previous_version = crx_component.version; |
- item->next_version = base::Version(); |
- item->previous_fp = crx_component.fingerprint; |
- item->next_fp.clear(); |
- item->on_demand = update_context->is_foreground; |
- item->diff_update_failed = false; |
- item->error_category = 0; |
- item->error_code = 0; |
- item->extra_code1 = 0; |
- item->diff_error_category = 0; |
- item->diff_error_code = 0; |
- item->diff_extra_code1 = 0; |
- item->download_metrics.clear(); |
- |
- CrxUpdateItem* item_ptr = item.get(); |
- update_context_->update_items[item_ptr->id] = std::move(item); |
- |
- ChangeItemState(item_ptr, CrxUpdateItem::State::kChecking); |
- } |
- |
- update_checker_->CheckForUpdates( |
- update_context_->update_items, extra_request_parameters_, |
- update_context_->enabled_component_updates, |
- base::Bind(&ActionUpdateCheck::UpdateCheckComplete, |
- base::Unretained(this))); |
-} |
- |
-void ActionUpdateCheck::UpdateCheckComplete( |
- int error, |
- const UpdateResponse::Results& results, |
- int retry_after_sec) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- |
- update_context_->retry_after_sec = retry_after_sec; |
- |
- if (!error) |
- OnUpdateCheckSucceeded(results); |
- else |
- OnUpdateCheckFailed(error); |
-} |
- |
-void ActionUpdateCheck::OnUpdateCheckSucceeded( |
- const UpdateResponse::Results& results) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- VLOG(1) << "Update check succeeded."; |
- |
- for (const auto& result : results.list) { |
- CrxUpdateItem* crx = FindUpdateItemById(result.extension_id); |
- if (!crx) { |
- VLOG(1) << "Component not found " << result.extension_id; |
- continue; |
- } |
- |
- DCHECK_EQ(CrxUpdateItem::State::kChecking, crx->state); |
- |
- if (result.status == "ok") |
- HandleUpdateCheckOK(result, crx); |
- else if (result.status == "noupdate") |
- HandleUpdateCheckNoupdate(result, crx); |
- else |
- HandleUpdateCheckError(result, crx); |
- } |
- |
- // All components that are not included in the update response are |
- // considered up to date. |
- ChangeAllItemsState(CrxUpdateItem::State::kChecking, |
- CrxUpdateItem::State::kUpToDate); |
- |
- if (update_context_->queue.empty()) { |
- VLOG(1) << "Update check completed but no action is needed."; |
- UpdateComplete(Error::NONE); |
- return; |
- } |
- |
- // Starts the execution flow of updating the CRXs in this context. |
- UpdateCrx(); |
-} |
- |
-void ActionUpdateCheck::HandleUpdateCheckOK( |
- const UpdateResponse::Result& result, |
- CrxUpdateItem* crx) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- |
- const auto& manifest = result.manifest; |
- |
- if (manifest.version.empty()) { |
- // It can't update without a manifest version. |
- VLOG(1) << "No manifest version available for CRX: " << crx->id; |
- ChangeItemState(crx, CrxUpdateItem::State::kNoUpdate); |
- return; |
- } |
- |
- if (!IsVersionNewer(crx->component.version, manifest.version)) { |
- // The CRX is up to date. |
- VLOG(1) << "Component already up to date: " << crx->id; |
- ChangeItemState(crx, CrxUpdateItem::State::kUpToDate); |
- return; |
- } |
- |
- if (!manifest.browser_min_version.empty()) { |
- if (IsVersionNewer(browser_version_, manifest.browser_min_version)) { |
- // The CRX is not compatible with this Chrome version. |
- VLOG(1) << "Ignoring incompatible CRX: " << crx->id; |
- ChangeItemState(crx, CrxUpdateItem::State::kNoUpdate); |
- return; |
- } |
- } |
- |
- if (manifest.packages.size() != 1) { |
- // Assume one and only one package per CRX. |
- VLOG(1) << "Ignoring multiple packages for CRX: " << crx->id; |
- ChangeItemState(crx, CrxUpdateItem::State::kNoUpdate); |
- return; |
- } |
- |
- // Parse the members of the result and queue an upgrade for this CRX. |
- VLOG(1) << "Update found for CRX: " << crx->id; |
- |
- crx->next_version = base::Version(manifest.version); |
- const auto& package = manifest.packages.front(); |
- crx->next_fp = package.fingerprint; |
- |
- // Resolve the urls by combining the base urls with the package names. |
- for (const auto& crx_url : result.crx_urls) { |
- const GURL url = crx_url.Resolve(package.name); |
- if (url.is_valid()) |
- crx->crx_urls.push_back(url); |
- } |
- for (const auto& crx_diffurl : result.crx_diffurls) { |
- const GURL url = crx_diffurl.Resolve(package.namediff); |
- if (url.is_valid()) |
- crx->crx_diffurls.push_back(url); |
- } |
- |
- crx->hash_sha256 = package.hash_sha256; |
- crx->hashdiff_sha256 = package.hashdiff_sha256; |
- |
- ChangeItemState(crx, CrxUpdateItem::State::kCanUpdate); |
- |
- update_context_->queue.push(crx->id); |
-} |
- |
-void ActionUpdateCheck::HandleUpdateCheckNoupdate( |
- const UpdateResponse::Result& result, |
- CrxUpdateItem* crx) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- VLOG(1) << "No update for CRX: " << crx->id; |
- ChangeItemState(crx, CrxUpdateItem::State::kNoUpdate); |
-} |
- |
-void ActionUpdateCheck::HandleUpdateCheckError( |
- const UpdateResponse::Result& result, |
- CrxUpdateItem* crx) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- VLOG(1) << "Update error for CRX: " << crx->id << ", " << result.status; |
- ChangeItemState(crx, CrxUpdateItem::State::kNoUpdate); |
-} |
- |
-void ActionUpdateCheck::OnUpdateCheckFailed(int error) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- DCHECK(error); |
- |
- VLOG(1) << "Update check failed." << error; |
- |
- ChangeAllItemsState(CrxUpdateItem::State::kChecking, |
- CrxUpdateItem::State::kNoUpdate); |
- |
- UpdateComplete(Error::UPDATE_CHECK_ERROR); |
-} |
- |
-} // namespace update_client |