Index: chrome/browser/extensions/extension_service.cc |
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc |
index 7234169ec5e648c56e26a72bd5aac9447a5ce7d1..343d7283560da1892827f54356339f53bf6e02e0 100644 |
--- a/chrome/browser/extensions/extension_service.cc |
+++ b/chrome/browser/extensions/extension_service.cc |
@@ -88,6 +88,7 @@ |
#include "chrome/browser/extensions/crx_installer.h" |
#include "chrome/browser/extensions/permissions_updater.h" |
#include "chrome/browser/extensions/unpacked_installer.h" |
+#include "chrome/browser/extensions/updater/extension_downloader.h" |
#include "chrome/browser/extensions/updater/extension_updater.h" |
#endif |
@@ -96,6 +97,8 @@ using content::BrowserThread; |
using content::DevToolsAgentHost; |
using extensions::CrxInstaller; |
using extensions::Extension; |
+using extensions::ExtensionDownloader; |
+using extensions::ExtensionDownloaderDelegate; |
using extensions::ExtensionIdSet; |
using extensions::ExtensionInfo; |
using extensions::ExtensionRegistry; |
@@ -327,7 +330,8 @@ ExtensionService::ExtensionService(Profile* profile, |
profile, |
update_frequency, |
extensions::ExtensionCache::GetInstance(), |
- CreateWebstoreIdentityProvider(profile_))); |
+ base::Bind(&ExtensionService::CreateExtensionDownloader, |
+ base::Unretained(this)))); |
Yoyo Zhou
2014/08/11 23:19:28
Why not use weak pointers?
Ken Rockot(use gerrit already)
2014/08/11 23:48:24
Not allowed to use weak pointers when binding to m
|
} |
#endif |
@@ -595,6 +599,20 @@ bool ExtensionService::UpdateExtension(const std::string& id, |
#endif |
} |
+scoped_ptr<ExtensionDownloader> ExtensionService::CreateExtensionDownloader( |
+ ExtensionDownloaderDelegate* delegate) { |
+ scoped_ptr<ExtensionDownloader> downloader; |
+#if defined(ENABLE_EXTENSIONS) |
+ scoped_ptr<IdentityProvider> identity_provider = |
+ CreateWebstoreIdentityProvider(profile_); |
+ downloader.reset(new ExtensionDownloader( |
+ delegate, |
+ profile_->GetRequestContext())); |
+ downloader->SetWebstoreIdentityProvider(identity_provider.Pass()); |
+#endif |
+ return downloader.Pass(); |
+} |
+ |
void ExtensionService::ReloadExtensionImpl( |
// "transient" because the process of reloading may cause the reference |
// to become invalid. Instead, use |extension_id|, a copy. |