Index: components/component_updater/update_checker.cc |
diff --git a/components/component_updater/update_checker.cc b/components/component_updater/update_checker.cc |
deleted file mode 100644 |
index f14263c2e946452b3ad4be1c1d94bac796e2545d..0000000000000000000000000000000000000000 |
--- a/components/component_updater/update_checker.cc |
+++ /dev/null |
@@ -1,167 +0,0 @@ |
-// Copyright 2014 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/component_updater/update_checker.h" |
- |
-#include <string> |
-#include <vector> |
- |
-#include "base/bind.h" |
-#include "base/bind_helpers.h" |
-#include "base/compiler_specific.h" |
-#include "base/location.h" |
-#include "base/logging.h" |
-#include "base/macros.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/strings/stringprintf.h" |
-#include "base/threading/thread_checker.h" |
-#include "components/component_updater/component_updater_configurator.h" |
-#include "components/component_updater/component_updater_utils.h" |
-#include "components/component_updater/crx_update_item.h" |
-#include "components/component_updater/request_sender.h" |
-#include "net/url_request/url_fetcher.h" |
-#include "url/gurl.h" |
- |
-namespace component_updater { |
- |
-namespace { |
- |
-// Builds an update check request for |components|. |additional_attributes| is |
-// serialized as part of the <request> element of the request to customize it |
-// with data that is not platform or component specific. For each |item|, a |
-// corresponding <app> element is created and inserted as a child node of |
-// the <request>. |
-// |
-// An app element looks like this: |
-// <app appid="hnimpnehoodheedghdeeijklkeaacbdc" |
-// version="0.1.2.3" installsource="ondemand"> |
-// <updatecheck /> |
-// <packages> |
-// <package fp="abcd" /> |
-// </packages> |
-// </app> |
-std::string BuildUpdateCheckRequest(const Configurator& config, |
- const std::vector<CrxUpdateItem*>& items, |
- const std::string& additional_attributes) { |
- std::string app_elements; |
- for (size_t i = 0; i != items.size(); ++i) { |
- const CrxUpdateItem* item = items[i]; |
- std::string app("<app "); |
- base::StringAppendF(&app, |
- "appid=\"%s\" version=\"%s\"", |
- item->id.c_str(), |
- item->component.version.GetString().c_str()); |
- if (item->on_demand) |
- base::StringAppendF(&app, " installsource=\"ondemand\""); |
- base::StringAppendF(&app, ">"); |
- base::StringAppendF(&app, "<updatecheck />"); |
- if (!item->component.fingerprint.empty()) { |
- base::StringAppendF(&app, |
- "<packages>" |
- "<package fp=\"%s\"/>" |
- "</packages>", |
- item->component.fingerprint.c_str()); |
- } |
- base::StringAppendF(&app, "</app>"); |
- app_elements.append(app); |
- VLOG(1) << "Appending to update request: " << app; |
- } |
- |
- return BuildProtocolRequest(config.GetBrowserVersion().GetString(), |
- config.GetChannel(), |
- config.GetLang(), |
- config.GetOSLongName(), |
- app_elements, |
- additional_attributes); |
-} |
- |
-class UpdateCheckerImpl : public UpdateChecker { |
- public: |
- explicit UpdateCheckerImpl(const Configurator& config); |
- ~UpdateCheckerImpl() override; |
- |
- // Overrides for UpdateChecker. |
- bool CheckForUpdates( |
- const std::vector<CrxUpdateItem*>& items_to_check, |
- const std::string& additional_attributes, |
- const UpdateCheckCallback& update_check_callback) override; |
- |
- private: |
- void OnRequestSenderComplete(const net::URLFetcher* source); |
- |
- const Configurator& config_; |
- UpdateCheckCallback update_check_callback_; |
- scoped_ptr<RequestSender> request_sender_; |
- |
- base::ThreadChecker thread_checker_; |
- |
- DISALLOW_COPY_AND_ASSIGN(UpdateCheckerImpl); |
-}; |
- |
-UpdateCheckerImpl::UpdateCheckerImpl(const Configurator& config) |
- : config_(config) { |
-} |
- |
-UpdateCheckerImpl::~UpdateCheckerImpl() { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
-} |
- |
-bool UpdateCheckerImpl::CheckForUpdates( |
- const std::vector<CrxUpdateItem*>& items_to_check, |
- const std::string& additional_attributes, |
- const UpdateCheckCallback& update_check_callback) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- |
- if (request_sender_.get()) { |
- NOTREACHED(); |
- return false; // Another update check is in progress. |
- } |
- |
- update_check_callback_ = update_check_callback; |
- |
- request_sender_.reset(new RequestSender(config_)); |
- request_sender_->Send( |
- BuildUpdateCheckRequest(config_, items_to_check, additional_attributes), |
- config_.UpdateUrl(), |
- base::Bind(&UpdateCheckerImpl::OnRequestSenderComplete, |
- base::Unretained(this))); |
- return true; |
-} |
- |
-void UpdateCheckerImpl::OnRequestSenderComplete(const net::URLFetcher* source) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- |
- const GURL original_url(source->GetOriginalURL()); |
- VLOG(1) << "Update check request went to: " << original_url.spec(); |
- |
- int error = 0; |
- std::string error_message; |
- UpdateResponse update_response; |
- |
- if (FetchSuccess(*source)) { |
- std::string xml; |
- source->GetResponseAsString(&xml); |
- if (!update_response.Parse(xml)) { |
- error = -1; |
- error_message = update_response.errors(); |
- VLOG(1) << "Update request failed: " << error_message; |
- } |
- } else { |
- error = GetFetchError(*source); |
- error_message.assign("network error"); |
- VLOG(1) << "Update request failed: network error"; |
- } |
- |
- request_sender_.reset(); |
- update_check_callback_.Run( |
- original_url, error, error_message, update_response.results()); |
-} |
- |
-} // namespace |
- |
-scoped_ptr<UpdateChecker> UpdateChecker::Create(const Configurator& config) { |
- return scoped_ptr<UpdateChecker>(new UpdateCheckerImpl(config)); |
-} |
- |
-} // namespace component_updater |