Index: content/browser/download/save_package.cc |
diff --git a/content/browser/download/save_package.cc b/content/browser/download/save_package.cc |
index f38f9cdb1e4f7a074f10b251024d58e9ab8a6b69..0b937a00b718ec3f2e0649213a01d1d5c6dc88fc 100644 |
--- a/content/browser/download/save_package.cc |
+++ b/content/browser/download/save_package.cc |
@@ -18,6 +18,7 @@ |
#include "base/strings/sys_string_conversions.h" |
#include "base/strings/utf_string_conversions.h" |
#include "base/threading/thread.h" |
+#include "content/browser/download/download_create_info.h" |
#include "content/browser/download/download_item_impl.h" |
#include "content/browser/download/download_manager_impl.h" |
#include "content/browser/download/download_stats.h" |
@@ -33,6 +34,7 @@ |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/content_browser_client.h" |
#include "content/public/browser/download_manager_delegate.h" |
+#include "content/public/browser/download_save_info.h" |
#include "content/public/browser/navigation_entry.h" |
#include "content/public/browser/notification_service.h" |
#include "content/public/browser/notification_types.h" |
@@ -105,31 +107,6 @@ bool CanSaveAsComplete(const std::string& contents_mime_type) { |
contents_mime_type == "application/xhtml+xml"; |
} |
-// Request handle for SavePackage downloads. Currently doesn't support |
-// pause/resume/cancel, but returns a WebContents. |
-class SavePackageRequestHandle : public DownloadRequestHandleInterface { |
- public: |
- SavePackageRequestHandle(base::WeakPtr<SavePackage> save_package) |
- : save_package_(save_package) {} |
- |
- // DownloadRequestHandleInterface |
- virtual WebContents* GetWebContents() const OVERRIDE { |
- return save_package_.get() ? save_package_->web_contents() : NULL; |
- } |
- virtual DownloadManager* GetDownloadManager() const OVERRIDE { |
- return NULL; |
- } |
- virtual void PauseRequest() const OVERRIDE {} |
- virtual void ResumeRequest() const OVERRIDE {} |
- virtual void CancelRequest() const OVERRIDE {} |
- virtual std::string DebugString() const OVERRIDE { |
- return "SavePackage DownloadRequestHandle"; |
- } |
- |
- private: |
- base::WeakPtr<SavePackage> save_package_; |
-}; |
- |
} // namespace |
const base::FilePath::CharType SavePackage::kDefaultHtmlExtension[] = |
@@ -311,16 +288,24 @@ bool SavePackage::Init( |
return false; |
} |
- scoped_ptr<DownloadRequestHandleInterface> request_handle( |
- new SavePackageRequestHandle(AsWeakPtr())); |
- // The download manager keeps ownership but adds us as an observer. |
+ scoped_ptr<DownloadSaveInfo> save_info(new DownloadSaveInfo); |
+ save_info->file_path = saved_main_file_path_; |
+ scoped_ptr<DownloadCreateInfo> create_info(new DownloadCreateInfo); |
+ create_info->save_info.swap(save_info); |
+ create_info->url_chain.push_back(page_url_); |
+ create_info->mime_type = (save_type_ == SAVE_PAGE_TYPE_AS_MHTML) |
+ ? "multipart/related" |
+ : "text/html"; |
+ create_info->original_mime_type = create_info->mime_type; |
+ create_info->route_id = |
+ GlobalRoutingID(web_contents()->GetRenderProcessHost()->GetID(), |
+ web_contents()->GetRoutingID()); |
+ |
+ // The download manager keeps ownership. |
download_manager_->CreateSavePackageDownloadItem( |
- saved_main_file_path_, |
- page_url_, |
- ((save_type_ == SAVE_PAGE_TYPE_AS_MHTML) ? |
- "multipart/related" : "text/html"), |
- request_handle.Pass(), |
- base::Bind(&SavePackage::InitWithDownloadItem, AsWeakPtr(), |
+ create_info.Pass(), |
+ base::Bind(&SavePackage::InitWithDownloadItem, |
+ AsWeakPtr(), |
download_created_callback)); |
return true; |
} |