summaryrefslogtreecommitdiffstats
path: root/chrome/browser/download
diff options
context:
space:
mode:
authortommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-07 02:35:04 +0000
committertommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-07 02:35:04 +0000
commitfc6fb7fbf9aca6b58f8c99a08a6c376b95bbc1a3 (patch)
treeca9186ed7ddbeb19604b495430d9c9814df57471 /chrome/browser/download
parentcfc076ec466fc48e91c309448c4e5be3467b42c7 (diff)
downloadchromium_src-fc6fb7fbf9aca6b58f8c99a08a6c376b95bbc1a3.zip
chromium_src-fc6fb7fbf9aca6b58f8c99a08a6c376b95bbc1a3.tar.gz
chromium_src-fc6fb7fbf9aca6b58f8c99a08a6c376b95bbc1a3.tar.bz2
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
Diffstat (limited to 'chrome/browser/download')
-rw-r--r--chrome/browser/download/download_request_manager.cc8
-rw-r--r--chrome/browser/download/download_request_manager.h1
-rw-r--r--chrome/browser/download/download_request_manager_unittest.cc4
3 files changed, 13 insertions, 0 deletions
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);