Index: chrome/browser/extensions/tab_helper.cc |
diff --git a/chrome/browser/extensions/tab_helper.cc b/chrome/browser/extensions/tab_helper.cc |
index 9eacd19a76fef27e79ccb2b3e4c0b4cb88b23f77..16eed180460110d309c2a45380ad0dca1b717e1a 100644 |
--- a/chrome/browser/extensions/tab_helper.cc |
+++ b/chrome/browser/extensions/tab_helper.cc |
@@ -12,7 +12,9 @@ |
#include "chrome/browser/extensions/activity_log/activity_log.h" |
#include "chrome/browser/extensions/api/declarative/rules_registry_service.h" |
#include "chrome/browser/extensions/api/declarative_content/content_rules_registry.h" |
+#include "chrome/browser/extensions/api/webstore/webstore_api.h" |
#include "chrome/browser/extensions/bookmark_app_helper.h" |
+#include "chrome/browser/extensions/crx_installer.h" |
#include "chrome/browser/extensions/error_console/error_console.h" |
#include "chrome/browser/extensions/extension_action.h" |
#include "chrome/browser/extensions/extension_action_manager.h" |
@@ -362,11 +364,27 @@ void TabHelper::OnDidGetApplicationInfo(int32 page_id, |
#endif |
} |
-void TabHelper::OnInlineWebstoreInstall( |
- int install_id, |
- int return_route_id, |
- const std::string& webstore_item_id, |
- const GURL& requestor_url) { |
+void TabHelper::OnInlineWebstoreInstall(int install_id, |
+ int return_route_id, |
+ const std::string& webstore_item_id, |
+ const GURL& requestor_url, |
+ int listeners_mask) { |
+#if defined(ENABLE_EXTENSIONS) |
+ // Check that the listener is reasonable. We should never get anything other |
+ // than an install stage listener, a download listener, or both. |
+ if ((listeners_mask & ~(api::webstore::INSTALL_STAGE_LISTENER | |
+ api::webstore::DOWNLOAD_PROGRESS_LISTENER)) != 0) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ // Inform the Webstore API that an inline install is happening, in case the |
+ // page requested status updates. |
+ Profile* profile = |
+ Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
+ WebstoreAPI::Get(profile)->OnInlineInstallStart( |
+ return_route_id, this, webstore_item_id, listeners_mask); |
+#endif |
+ |
WebstoreStandaloneInstaller::Callback callback = |
base::Bind(&TabHelper::OnInlineInstallComplete, base::Unretained(this), |
install_id, return_route_id); |