Index: chrome/browser/extensions/updater/extension_updater.cc |
diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/browser/extensions/updater/extension_updater.cc |
index e4843d134026f8c8ba4f02579eb10fdef84232c1..1c64bc9bb74f59401e14b8aa2fbe7837b7224da2 100644 |
--- a/chrome/browser/extensions/updater/extension_updater.cc |
+++ b/chrome/browser/extensions/updater/extension_updater.cc |
@@ -20,7 +20,6 @@ |
#include "chrome/browser/extensions/crx_installer.h" |
#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/browser/extensions/pending_extension_manager.h" |
-#include "chrome/browser/extensions/updater/extension_downloader.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/common/pref_names.h" |
#include "content/public/browser/browser_thread.h" |
@@ -136,10 +135,11 @@ ExtensionUpdater::ExtensionUpdater( |
Profile* profile, |
int frequency_seconds, |
ExtensionCache* cache, |
- scoped_ptr<IdentityProvider> webstore_identity_provider) |
+ const ExtensionDownloader::Factory& downloader_factory) |
: alive_(false), |
weak_ptr_factory_(this), |
service_(service), |
+ downloader_factory_(downloader_factory), |
frequency_seconds_(frequency_seconds), |
will_check_soon_(false), |
extension_prefs_(extension_prefs), |
@@ -148,8 +148,7 @@ ExtensionUpdater::ExtensionUpdater( |
next_request_id_(0), |
extension_registry_observer_(this), |
crx_install_is_running_(false), |
- extension_cache_(cache), |
- webstore_identity_provider_(webstore_identity_provider.release()) { |
+ extension_cache_(cache) { |
DCHECK_GE(frequency_seconds_, 5); |
DCHECK_LE(frequency_seconds_, kMaxUpdateFrequencySeconds); |
#if defined(NDEBUG) |
@@ -165,6 +164,12 @@ ExtensionUpdater::~ExtensionUpdater() { |
Stop(); |
} |
+void ExtensionUpdater::EnsureDownloaderCreated() { |
+ if (!downloader_.get()) { |
+ downloader_ = downloader_factory_.Run(this); |
+ } |
+} |
+ |
// The overall goal here is to balance keeping clients up to date while |
// avoiding a thundering herd against update servers. |
TimeDelta ExtensionUpdater::DetermineFirstCheckDelay() { |
@@ -342,12 +347,7 @@ void ExtensionUpdater::CheckNow(const CheckParams& params) { |
request.callback = params.callback; |
request.install_immediately = params.install_immediately; |
- if (!downloader_.get()) { |
- downloader_.reset( |
- new ExtensionDownloader(this, |
- profile_->GetRequestContext(), |
- webstore_identity_provider_.get())); |
- } |
+ EnsureDownloaderCreated(); |
// Add fetch records for extensions that should be fetched by an update URL. |
// These extensions are not yet installed. They come from group policy |