From fc6fb7fbf9aca6b58f8c99a08a6c376b95bbc1a3 Mon Sep 17 00:00:00 2001 From: "tommi@chromium.org" Date: Sat, 7 Nov 2009 02:35:04 +0000 Subject: Basic wiring to enable downloads for CF's host browser network stack. A notable change here is that url automation job id's no longer exist and instead a request id is used. There's a 1 to 1 relation between a job and a request so this is more convenient. Review URL: http://codereview.chromium.org/355036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31363 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/download/download_request_manager.cc | 8 ++++++++ chrome/browser/download/download_request_manager.h | 1 + chrome/browser/download/download_request_manager_unittest.cc | 4 ++++ 3 files changed, 13 insertions(+) (limited to 'chrome/browser/download') diff --git a/chrome/browser/download/download_request_manager.cc b/chrome/browser/download/download_request_manager.cc index bcb4214..8cb21c9 100644 --- a/chrome/browser/download/download_request_manager.cc +++ b/chrome/browser/download/download_request_manager.cc @@ -227,6 +227,14 @@ void DownloadRequestManager::CanDownload(int render_process_host_id, void DownloadRequestManager::CanDownloadImpl( TabContents* originating_tab, Callback* callback) { + // FYI: Chrome Frame overrides CanDownload in ExternalTabContainer in order + // to cancel the download operation in chrome and let the host browser + // take care of it. + if (!originating_tab->CanDownload(callback->GetRequestId())) { + ScheduleNotification(callback, false); + return; + } + // If the tab requesting the download is a constrained popup that is not // shown, treat the request as if it came from the parent. TabContents* effective_tab = originating_tab; diff --git a/chrome/browser/download/download_request_manager.h b/chrome/browser/download/download_request_manager.h index 2b03572..c8d4a34 100644 --- a/chrome/browser/download/download_request_manager.h +++ b/chrome/browser/download/download_request_manager.h @@ -56,6 +56,7 @@ class DownloadRequestManager : public: virtual void ContinueDownload() = 0; virtual void CancelDownload() = 0; + virtual int GetRequestId() = 0; }; // TabDownloadState maintains the download state for a particular tab. diff --git a/chrome/browser/download/download_request_manager_unittest.cc b/chrome/browser/download/download_request_manager_unittest.cc index c55bea4..bd52631 100644 --- a/chrome/browser/download/download_request_manager_unittest.cc +++ b/chrome/browser/download/download_request_manager_unittest.cc @@ -39,6 +39,10 @@ class DownloadRequestManagerTest cancel_count_++; } + virtual int GetRequestId() { + return -1; + } + void CanDownload() { download_request_manager_->CanDownloadImpl( controller().tab_contents(), this); -- cgit v1.1