| Index: extensions/browser/updater/update_service.cc
|
| diff --git a/extensions/browser/updater/update_service.cc b/extensions/browser/updater/update_service.cc
|
| index 0cb055cf6f5e8b48df83923299170aa46fa6f9ec..ad40abd57acd77d04d520073e3671bb39b5de931 100644
|
| --- a/extensions/browser/updater/update_service.cc
|
| +++ b/extensions/browser/updater/update_service.cc
|
| @@ -4,79 +4,61 @@
|
|
|
| #include "extensions/browser/updater/update_service.h"
|
|
|
| -#include <set>
|
| -
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "components/update_client/update_query_params.h"
|
| +#include "base/bind.h"
|
| +#include "base/files/file_util.h"
|
| +#include "components/update_client/update_client.h"
|
| #include "content/public/browser/browser_context.h"
|
| -#include "extensions/browser/updater/extension_downloader.h"
|
| +#include "extensions/browser/extension_system.h"
|
| +#include "extensions/browser/extensions_browser_client.h"
|
| +#include "extensions/browser/updater/update_data_provider.h"
|
| #include "extensions/browser/updater/update_service_factory.h"
|
| -#include "extensions/common/extension_urls.h"
|
|
|
| -using update_client::UpdateQueryParams;
|
| +namespace {
|
|
|
| -namespace extensions {
|
| +void UpdateCheckCompleteCallback(int error) {}
|
|
|
| -// static
|
| -UpdateService* UpdateService::Get(content::BrowserContext* context) {
|
| - return UpdateServiceFactory::GetForBrowserContext(context);
|
| +void InstallUpdateCallback(content::BrowserContext* context,
|
| + const std::string& extension_id,
|
| + const base::FilePath& temp_dir) {
|
| + extensions::ExtensionSystem::Get(context)
|
| + ->InstallUpdate(extension_id, temp_dir);
|
| }
|
|
|
| -void UpdateService::DownloadAndInstall(
|
| - const std::string& id,
|
| - const base::Callback<void(bool)>& callback) {
|
| - DCHECK(download_callback_.is_null());
|
| - download_callback_ = callback;
|
| - downloader_->AddPendingExtension(id, extension_urls::GetWebstoreUpdateUrl(),
|
| - 0);
|
| - downloader_->StartAllPending(nullptr);
|
| -}
|
| +} // namespace
|
|
|
| -UpdateService::UpdateService(content::BrowserContext* context)
|
| - : browser_context_(context),
|
| - downloader_(new ExtensionDownloader(this, context->GetRequestContext())) {
|
| - downloader_->set_manifest_query_params(
|
| - UpdateQueryParams::Get(UpdateQueryParams::CRX));
|
| -}
|
| +namespace extensions {
|
|
|
| -UpdateService::~UpdateService() {
|
| +// static
|
| +UpdateService* UpdateService::Get(content::BrowserContext* context) {
|
| + return UpdateServiceFactory::GetForBrowserContext(context);
|
| }
|
|
|
| -void UpdateService::OnExtensionDownloadFailed(
|
| - const std::string& id,
|
| - Error error,
|
| - const PingResult& ping,
|
| - const std::set<int>& request_ids) {
|
| - auto callback = download_callback_;
|
| - download_callback_.Reset();
|
| - callback.Run(false);
|
| +void UpdateService::Shutdown() {
|
| + if (update_data_provider_) {
|
| + update_data_provider_->Shutdown();
|
| + update_data_provider_ = nullptr;
|
| + }
|
| + update_client_ = nullptr;
|
| + context_ = nullptr;
|
| }
|
|
|
| -void UpdateService::OnExtensionDownloadFinished(
|
| - const CRXFileInfo& file,
|
| - bool file_ownership_passed,
|
| - const GURL& download_url,
|
| - const std::string& version,
|
| - const PingResult& ping,
|
| - const std::set<int>& request_id,
|
| - const InstallCallback& install_callback) {
|
| - // TODO(rockot): Actually unpack and install the CRX.
|
| - auto callback = download_callback_;
|
| - download_callback_.Reset();
|
| - callback.Run(true);
|
| - if (!install_callback.is_null())
|
| - install_callback.Run(true);
|
| +void UpdateService::StartUpdateCheck(std::vector<std::string> extension_ids) {
|
| + if (!update_client_)
|
| + return;
|
| + update_client_->Update(extension_ids, base::Bind(&UpdateDataProvider::GetData,
|
| + update_data_provider_),
|
| + base::Bind(&UpdateCheckCompleteCallback));
|
| }
|
|
|
| -bool UpdateService::IsExtensionPending(const std::string& id) {
|
| - // TODO(rockot): Implement this. For now all IDs are "pending".
|
| - return true;
|
| +UpdateService::UpdateService(
|
| + content::BrowserContext* context,
|
| + scoped_refptr<update_client::UpdateClient> update_client)
|
| + : context_(context), update_client_(update_client) {
|
| + CHECK(update_client_);
|
| + update_data_provider_ =
|
| + new UpdateDataProvider(context_, base::Bind(&InstallUpdateCallback));
|
| }
|
|
|
| -bool UpdateService::GetExtensionExistingVersion(const std::string& id,
|
| - std::string* version) {
|
| - // TODO(rockot): Implement this.
|
| - return false;
|
| -}
|
| +UpdateService::~UpdateService() {}
|
|
|
| } // namespace extensions
|
|
|