Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(310)

Unified Diff: content/browser/download/save_package.cc

Issue 23496076: WIP - Refactor programmatic downloads Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/download/drag_download_file.cc ('k') | content/browser/download/url_downloader.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
}
« no previous file with comments | « content/browser/download/drag_download_file.cc ('k') | content/browser/download/url_downloader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698