| 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;
|
| }
|
|
|