Index: chrome/browser/extensions/extension_webstore_private_api.cc |
diff --git a/chrome/browser/extensions/extension_webstore_private_api.cc b/chrome/browser/extensions/extension_webstore_private_api.cc |
index 52d2d9a9363a61a2269f693d899e53a6e35147e9..3e9a605cfaa4274808788940b089f9da654d5eee 100644 |
--- a/chrome/browser/extensions/extension_webstore_private_api.cc |
+++ b/chrome/browser/extensions/extension_webstore_private_api.cc |
@@ -15,6 +15,7 @@ |
#include "chrome/browser/extensions/extension_install_dialog.h" |
#include "chrome/browser/extensions/extension_prefs.h" |
#include "chrome/browser/extensions/extension_service.h" |
+#include "chrome/browser/extensions/webstore_installer.h" |
#include "chrome/browser/net/gaia/token_service.h" |
#include "chrome/browser/profiles/profile_manager.h" |
#include "chrome/browser/sync/profile_sync_service.h" |
@@ -166,7 +167,7 @@ bool BeginInstallWithManifestFunction::RunImpl() { |
context_getter = profile()->GetRequestContext(); |
scoped_refptr<WebstoreInstallHelper> helper = new WebstoreInstallHelper( |
- this, manifest_, icon_data_, icon_url, context_getter); |
+ this, id_, manifest_, icon_data_, icon_url, context_getter); |
// The helper will call us back via OnWebstoreParseSuccess or |
// OnWebstoreParseFailure. |
@@ -213,7 +214,10 @@ void BeginInstallWithManifestFunction::SetResult(ResultCode code) { |
} |
void BeginInstallWithManifestFunction::OnWebstoreParseSuccess( |
- const SkBitmap& icon, DictionaryValue* parsed_manifest) { |
+ const std::string& id, |
+ const SkBitmap& icon, |
+ DictionaryValue* parsed_manifest) { |
+ CHECK_EQ(id_, id); |
CHECK(parsed_manifest); |
icon_ = icon; |
parsed_manifest_.reset(parsed_manifest); |
@@ -230,7 +234,7 @@ void BeginInstallWithManifestFunction::OnWebstoreParseSuccess( |
&icon_, |
prompt, |
&dummy_extension_)) { |
- OnWebstoreParseFailure(WebstoreInstallHelper::Delegate::MANIFEST_ERROR, |
+ OnWebstoreParseFailure(id_, WebstoreInstallHelper::Delegate::MANIFEST_ERROR, |
kInvalidManifestError); |
return; |
} |
@@ -239,8 +243,11 @@ void BeginInstallWithManifestFunction::OnWebstoreParseSuccess( |
} |
void BeginInstallWithManifestFunction::OnWebstoreParseFailure( |
+ const std::string& id, |
WebstoreInstallHelper::Delegate::InstallHelperResultCode result_code, |
const std::string& error_message) { |
+ CHECK_EQ(id_, id); |
+ |
// Map from WebstoreInstallHelper's result codes to ours. |
switch (result_code) { |
case WebstoreInstallHelper::Delegate::UNKNOWN_ERROR: |
@@ -291,7 +298,7 @@ void BeginInstallWithManifestFunction::InstallUIAbort(bool user_initiated) { |
// The web store install histograms are a subset of the install histograms. |
// We need to record both histograms here since CrxInstaller::InstallUIAbort |
- // is never called for web store install cancellations |
+ // is never called for web store install cancellations. |
std::string histogram_name = user_initiated ? |
"Extensions.Permissions_WebStoreInstallCancel" : |
"Extensions.Permissions_WebStoreInstallAbort"; |
@@ -329,10 +336,11 @@ bool CompleteInstallFunction::RunImpl() { |
// The extension will install through the normal extension install flow, but |
// the above call to SetWhitelistedInstallId will bypass the normal |
// permissions install dialog. |
- WebstoreInstaller* installer = |
- profile()->GetExtensionService()->webstore_installer(); |
- installer->InstallExtension( |
- id, test_webstore_installer_delegate, WebstoreInstaller::FLAG_NONE); |
+ scoped_refptr<WebstoreInstaller> installer = new WebstoreInstaller( |
+ profile(), test_webstore_installer_delegate, |
+ &(dispatcher()->delegate()->GetAssociatedTabContents()->controller()), |
+ id, WebstoreInstaller::FLAG_NONE); |
+ installer->Start(); |
return true; |
} |