Index: chrome/browser/download/download_request_limiter.cc |
diff --git a/chrome/browser/download/download_request_limiter.cc b/chrome/browser/download/download_request_limiter.cc |
index fb83530036b1a2689245190a69dcf66fa2ebc21c..983d2725943135511671ca6a985e15158d29b9be 100644 |
--- a/chrome/browser/download/download_request_limiter.cc |
+++ b/chrome/browser/download/download_request_limiter.cc |
@@ -247,8 +247,10 @@ void DownloadRequestLimiter::TabDownloadState::NotifyCallbacks(bool allow) { |
change_status = true; |
} |
- for (size_t i = 0; i < callbacks.size(); ++i) |
- host_->ScheduleNotification(callbacks[i], allow); |
+ for (size_t i = 0; i < callbacks.size(); ++i) { |
+ BrowserThread::PostTask( |
asanka
2015/07/20 20:15:24
Why invoke this on the IO thread? The callback is
qinmin
2015/07/20 22:11:02
typo, fixed.
|
+ BrowserThread::IO, FROM_HERE, base::Bind(callbacks[i], allow)); |
+ } |
if (change_status) |
set_download_status(DownloadRequestLimiter::PROMPT_BEFORE_DOWNLOAD); |
@@ -279,22 +281,6 @@ DownloadRequestLimiter::GetDownloadStatus(content::WebContents* web_contents) { |
return state ? state->download_status() : ALLOW_ONE_DOWNLOAD; |
} |
-void DownloadRequestLimiter::CanDownloadOnIOThread( |
- int render_process_host_id, |
- int render_view_id, |
- const GURL& url, |
- const std::string& request_method, |
- const Callback& callback) { |
- // This is invoked on the IO thread. Schedule the task to run on the UI |
- // thread so that we can query UI state. |
- DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- BrowserThread::PostTask( |
- BrowserThread::UI, FROM_HERE, |
- base::Bind(&DownloadRequestLimiter::CanDownload, this, |
- render_process_host_id, render_view_id, url, |
- request_method, callback)); |
-} |
- |
DownloadRequestLimiter::TabDownloadState* |
DownloadRequestLimiter::GetDownloadState( |
content::WebContents* web_contents, |
@@ -325,12 +311,12 @@ void DownloadRequestLimiter::CanDownload(int render_process_host_id, |
tab_util::GetWebContentsByID(render_process_host_id, render_view_id); |
if (!originating_contents) { |
// The WebContents was closed, don't allow the download. |
- ScheduleNotification(callback, false); |
+ callback.Run(false); |
return; |
} |
if (!originating_contents->GetDelegate()) { |
- ScheduleNotification(callback, false); |
+ callback.Run(false); |
return; |
} |
@@ -360,7 +346,7 @@ void DownloadRequestLimiter::OnCanDownloadDecided( |
content::WebContents* originating_contents = |
tab_util::GetWebContentsByID(render_process_host_id, render_view_id); |
if (!originating_contents || !allow) { |
- ScheduleNotification(orig_callback, false); |
+ orig_callback.Run(false); |
return; |
} |
@@ -388,18 +374,18 @@ void DownloadRequestLimiter::CanDownloadImpl( |
if (state->download_count() && !(state->download_count() % |
DownloadRequestLimiter::kMaxDownloadsAtOnce)) |
state->set_download_status(PROMPT_BEFORE_DOWNLOAD); |
- ScheduleNotification(callback, true); |
+ callback.Run(true); |
state->increment_download_count(); |
break; |
case ALLOW_ONE_DOWNLOAD: |
state->set_download_status(PROMPT_BEFORE_DOWNLOAD); |
- ScheduleNotification(callback, true); |
+ callback.Run(true); |
state->increment_download_count(); |
break; |
case DOWNLOADS_NOT_ALLOWED: |
- ScheduleNotification(callback, false); |
+ callback.Run(false); |
break; |
case PROMPT_BEFORE_DOWNLOAD: { |
@@ -419,7 +405,7 @@ void DownloadRequestLimiter::CanDownloadImpl( |
originating_contents); |
if (settings) |
settings->SetDownloadsBlocked(false); |
- ScheduleNotification(callback, true); |
+ callback.Run(true); |
state->increment_download_count(); |
return; |
} |
@@ -429,7 +415,7 @@ void DownloadRequestLimiter::CanDownloadImpl( |
originating_contents); |
if (settings) |
settings->SetDownloadsBlocked(true); |
- ScheduleNotification(callback, false); |
+ callback.Run(false); |
return; |
} |
case CONTENT_SETTING_DEFAULT: |
@@ -451,12 +437,6 @@ void DownloadRequestLimiter::CanDownloadImpl( |
} |
} |
-void DownloadRequestLimiter::ScheduleNotification(const Callback& callback, |
- bool allow) { |
- BrowserThread::PostTask( |
- BrowserThread::IO, FROM_HERE, base::Bind(callback, allow)); |
-} |
- |
void DownloadRequestLimiter::Remove(TabDownloadState* state, |
content::WebContents* contents) { |
DCHECK(ContainsKey(state_map_, contents)); |