Index: chrome/browser/extensions/webstore_installer.cc |
diff --git a/chrome/browser/extensions/webstore_installer.cc b/chrome/browser/extensions/webstore_installer.cc |
index 237dadc0cf809fc803f0969a92873a9a71cb5c5f..b5f80009ba232cafc204043b5735566445b45913 100644 |
--- a/chrome/browser/extensions/webstore_installer.cc |
+++ b/chrome/browser/extensions/webstore_installer.cc |
@@ -63,7 +63,8 @@ using content::BrowserContext; |
using content::BrowserThread; |
using content::DownloadItem; |
using content::DownloadManager; |
-using content::NavigationController; |
+using content::WebContents; |
+using content::WebContentsObserver; |
using content::DownloadUrlParameters; |
namespace { |
@@ -244,13 +245,13 @@ const WebstoreInstaller::Approval* WebstoreInstaller::GetAssociatedApproval( |
WebstoreInstaller::WebstoreInstaller(Profile* profile, |
Delegate* delegate, |
- NavigationController* controller, |
+ WebContents* web_contents, |
const std::string& id, |
scoped_ptr<Approval> approval, |
InstallSource source) |
- : profile_(profile), |
+ : WebContentsObserver(web_contents), |
+ profile_(profile), |
delegate_(delegate), |
- controller_(controller), |
id_(id), |
install_source_(source), |
download_item_(NULL), |
@@ -258,7 +259,7 @@ WebstoreInstaller::WebstoreInstaller(Profile* profile, |
total_modules_(0), |
download_started_(false) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(controller_); |
+ DCHECK(web_contents); |
registrar_.Add(this, chrome::NOTIFICATION_CRX_INSTALLER_DONE, |
content::NotificationService::AllSources()); |
@@ -406,7 +407,6 @@ void WebstoreInstaller::SetDownloadDirectoryForTests( |
} |
WebstoreInstaller::~WebstoreInstaller() { |
- controller_ = NULL; |
if (download_item_) { |
download_item_->RemoveObserver(this); |
download_item_ = NULL; |
@@ -558,37 +558,18 @@ void WebstoreInstaller::DownloadCrx( |
void WebstoreInstaller::StartDownload(const base::FilePath& file) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DownloadManager* download_manager = |
- BrowserContext::GetDownloadManager(profile_); |
- if (file.empty()) { |
+ if (!web_contents()) { |
ReportFailure(kDownloadDirectoryError, FAILURE_REASON_OTHER); |
return; |
} |
+ |
+ DownloadManager* download_manager = |
+ BrowserContext::GetDownloadManager(profile_); |
if (!download_manager) { |
ReportFailure(kDownloadDirectoryError, FAILURE_REASON_OTHER); |
return; |
} |
- if (!controller_) { |
- ReportFailure(kDownloadDirectoryError, FAILURE_REASON_OTHER); |
- return; |
- } |
- if (!controller_->GetWebContents()) { |
- ReportFailure(kDownloadDirectoryError, FAILURE_REASON_OTHER); |
- return; |
- } |
- if (!controller_->GetWebContents()->GetRenderProcessHost()) { |
- ReportFailure(kDownloadDirectoryError, FAILURE_REASON_OTHER); |
- return; |
- } |
- if (!controller_->GetWebContents()->GetRenderViewHost()) { |
- ReportFailure(kDownloadDirectoryError, FAILURE_REASON_OTHER); |
- return; |
- } |
- if (!controller_->GetBrowserContext()) { |
- ReportFailure(kDownloadDirectoryError, FAILURE_REASON_OTHER); |
- return; |
- } |
- if (!controller_->GetBrowserContext()->GetResourceContext()) { |
+ if (file.empty()) { |
ReportFailure(kDownloadDirectoryError, FAILURE_REASON_OTHER); |
return; |
} |
@@ -597,21 +578,21 @@ void WebstoreInstaller::StartDownload(const base::FilePath& file) { |
// We will navigate the current tab to this url to start the download. The |
// download system will then pass the crx to the CrxInstaller. |
RecordDownloadSource(DOWNLOAD_INITIATED_BY_WEBSTORE_INSTALLER); |
- int render_process_host_id = |
- controller_->GetWebContents()->GetRenderProcessHost()->GetID(); |
+ int render_process_host_id = web_contents()->GetRenderProcessHost()->GetID(); |
int render_view_host_routing_id = |
- controller_->GetWebContents()->GetRenderViewHost()->GetRoutingID(); |
+ web_contents()->GetRenderViewHost()->GetRoutingID(); |
+ content::NavigationController& controller = web_contents()->GetController(); |
content::ResourceContext* resource_context = |
- controller_->GetBrowserContext()->GetResourceContext(); |
+ controller.GetBrowserContext()->GetResourceContext(); |
scoped_ptr<DownloadUrlParameters> params(new DownloadUrlParameters( |
download_url_, |
render_process_host_id, |
render_view_host_routing_id , |
resource_context)); |
params->set_file_path(file); |
- if (controller_->GetVisibleEntry()) |
+ if (controller.GetVisibleEntry()) |
params->set_referrer( |
- content::Referrer(controller_->GetVisibleEntry()->GetURL(), |
+ content::Referrer(controller.GetVisibleEntry()->GetURL(), |
blink::WebReferrerPolicyDefault)); |
params->set_callback(base::Bind(&WebstoreInstaller::OnDownloadStarted, this)); |
download_manager->DownloadUrl(params.Pass()); |