| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/download/download_request_limiter.h" | 5 #include "chrome/browser/download/download_request_limiter.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
| 9 #include "chrome/browser/content_settings/host_content_settings_map.h" | 9 #include "chrome/browser/content_settings/host_content_settings_map.h" |
| 10 #include "chrome/browser/content_settings/tab_specific_content_settings.h" | 10 #include "chrome/browser/content_settings/tab_specific_content_settings.h" |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 // DOWNLOADS_NOT_ALLOWED is functionally equivalent to PROMPT_BEFORE_DOWNLOAD. | 103 // DOWNLOADS_NOT_ALLOWED is functionally equivalent to PROMPT_BEFORE_DOWNLOAD. |
| 104 if ((status_ != DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS) && | 104 if ((status_ != DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS) && |
| 105 (!promptable || | 105 (!promptable || |
| 106 (status_ != DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED))) { | 106 (status_ != DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED))) { |
| 107 // Revert to default status. | 107 // Revert to default status. |
| 108 host_->Remove(this, web_contents()); | 108 host_->Remove(this, web_contents()); |
| 109 // WARNING: We've been deleted. | 109 // WARNING: We've been deleted. |
| 110 } | 110 } |
| 111 } | 111 } |
| 112 | 112 |
| 113 void DownloadRequestLimiter::TabDownloadState::WebContentsDestroyed( | 113 void DownloadRequestLimiter::TabDownloadState::WebContentsDestroyed() { |
| 114 content::WebContents* web_contents) { | |
| 115 // Tab closed, no need to handle closing the dialog as it's owned by the | 114 // Tab closed, no need to handle closing the dialog as it's owned by the |
| 116 // WebContents. | 115 // WebContents. |
| 117 | 116 |
| 118 NotifyCallbacks(false); | 117 NotifyCallbacks(false); |
| 119 // Note that web_contents() is NULL at this point. | 118 host_->Remove(this, web_contents()); |
| 120 host_->Remove(this, web_contents); | |
| 121 // WARNING: We've been deleted. | 119 // WARNING: We've been deleted. |
| 122 } | 120 } |
| 123 | 121 |
| 124 void DownloadRequestLimiter::TabDownloadState::PromptUserForDownload( | 122 void DownloadRequestLimiter::TabDownloadState::PromptUserForDownload( |
| 125 const DownloadRequestLimiter::Callback& callback) { | 123 const DownloadRequestLimiter::Callback& callback) { |
| 126 callbacks_.push_back(callback); | 124 callbacks_.push_back(callback); |
| 127 DCHECK(web_contents_); | 125 DCHECK(web_contents_); |
| 128 if (is_showing_prompt()) | 126 if (is_showing_prompt()) |
| 129 return; | 127 return; |
| 130 | 128 |
| (...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 462 BrowserThread::PostTask( | 460 BrowserThread::PostTask( |
| 463 BrowserThread::IO, FROM_HERE, base::Bind(callback, allow)); | 461 BrowserThread::IO, FROM_HERE, base::Bind(callback, allow)); |
| 464 } | 462 } |
| 465 | 463 |
| 466 void DownloadRequestLimiter::Remove(TabDownloadState* state, | 464 void DownloadRequestLimiter::Remove(TabDownloadState* state, |
| 467 content::WebContents* contents) { | 465 content::WebContents* contents) { |
| 468 DCHECK(ContainsKey(state_map_, contents)); | 466 DCHECK(ContainsKey(state_map_, contents)); |
| 469 state_map_.erase(contents); | 467 state_map_.erase(contents); |
| 470 delete state; | 468 delete state; |
| 471 } | 469 } |
| OLD | NEW |