Chromium Code Reviews| Index: content/browser/tab_contents/tab_contents.cc |
| diff --git a/content/browser/tab_contents/tab_contents.cc b/content/browser/tab_contents/tab_contents.cc |
| index 1fc4bfafe34850528a930836d3c77b2f160f64f0..7db873d8de4757e4547cf2ec40e8c6ecc7c9522f 100644 |
| --- a/content/browser/tab_contents/tab_contents.cc |
| +++ b/content/browser/tab_contents/tab_contents.cc |
| @@ -934,21 +934,10 @@ bool TabContents::IsSavable() { |
| void TabContents::OnSavePage() { |
| // If we can not save the page, try to download it. |
| if (!IsSavable()) { |
| - DownloadManager* dlm = GetBrowserContext()->GetDownloadManager(); |
| - const GURL& current_page_url = GetURL(); |
| - if (dlm && current_page_url.is_valid()) { |
| - DownloadSaveInfo save_info; |
| - save_info.prompt_for_save_location = true; |
| - dlm->DownloadUrl(current_page_url, |
| - GURL(), |
| - "", |
| - true, // prefer_cache |
| - save_info, |
| - this); |
| - download_stats::RecordDownloadCount( |
| - download_stats::INITIATED_BY_SAVE_PACKAGE_FAILURE_COUNT); |
| - return; |
| - } |
| + SaveURL(GetURL(), GURL()); |
| + download_stats::RecordDownloadCount( |
| + download_stats::INITIATED_BY_SAVE_PACKAGE_FAILURE_COUNT); |
| + return; |
| } |
| Stop(); |
| @@ -1425,10 +1414,7 @@ void TabContents::OnUpdateZoomLimits(int minimum_percent, |
| } |
| void TabContents::OnSaveURL(const GURL& url) { |
| - DownloadManager* dlm = GetBrowserContext()->GetDownloadManager(); |
| - DownloadSaveInfo save_info; |
| - save_info.prompt_for_save_location = true; |
| - dlm->DownloadUrl(url, GetURL(), "", true, save_info, this); |
| + SaveURL(url, GetURL()); |
| } |
| void TabContents::OnEnumerateDirectory(int request_id, |
| @@ -2288,6 +2274,30 @@ void TabContents::SetEncoding(const std::string& encoding) { |
| GetCanonicalEncodingNameByAliasName(encoding); |
| } |
| +void TabContents::SaveURL(const GURL& url, const GURL& referrer) { |
| + DownloadManager* dlm = GetBrowserContext()->GetDownloadManager(); |
| + if (!dlm) |
| + return; |
| + int64 post_id = -1; |
| + // Check if the URL to save matches the URL of the page itself. One |
| + // circumstance where this may not happen is when an embedded instance of the |
| + // PDF viewer plugin has the save button clicked. |
|
jam
2012/02/03 20:52:42
we avoid talking about chrome features in content
cbentzel
2012/02/04 14:59:08
Done.
|
| + if (url == GetURL()) { |
| + const NavigationEntry* entry = controller_.GetActiveEntry(); |
| + if (entry) |
| + post_id = entry->GetPostID(); |
| + } |
| + DownloadSaveInfo save_info; |
| + save_info.prompt_for_save_location = true; |
| + dlm->DownloadUrl(url, |
| + referrer, |
| + "", |
| + true, // prefer_cache |
| + post_id, |
| + save_info, |
| + this); |
| +} |
| + |
| void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { |
| RenderWidgetHostView* rwh_view = GetView()->CreateViewForWidget(rvh); |
| // Can be NULL during tests. |