Index: content/browser/download/download_request_core.h |
diff --git a/content/browser/download/download_resource_handler.h b/content/browser/download/download_request_core.h |
similarity index 52% |
copy from content/browser/download/download_resource_handler.h |
copy to content/browser/download/download_request_core.h |
index 9c8f53dd8d2853d8fbc19edbc2c1a2be79e64761..c01fa98b8d2b7a6bedd09a3c854783e0ffcc6586 100644 |
--- a/content/browser/download/download_resource_handler.h |
+++ b/content/browser/download/download_request_core.h |
@@ -2,16 +2,17 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_RESOURCE_HANDLER_H_ |
-#define CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_RESOURCE_HANDLER_H_ |
+#ifndef CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_REQUEST_CORE_H_ |
+#define CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_REQUEST_CORE_H_ |
#include <string> |
#include "base/callback.h" |
+#include "base/macros.h" |
#include "base/memory/scoped_ptr.h" |
+#include "base/memory/weak_ptr.h" |
#include "content/browser/loader/resource_handler.h" |
#include "content/public/browser/download_interrupt_reasons.h" |
-#include "content/public/browser/download_manager.h" |
#include "content/public/browser/download_save_info.h" |
#include "content/public/browser/download_url_parameters.h" |
@@ -20,95 +21,74 @@ class URLRequest; |
} // namespace net |
namespace content { |
+class DownloadManagerImpl; |
class ByteStreamReader; |
class ByteStreamWriter; |
-class DownloadRequestHandle; |
class PowerSaveBlocker; |
+class UrlDownloader; |
struct DownloadCreateInfo; |
// Forwards data to the download thread. |
-class CONTENT_EXPORT DownloadResourceHandler |
- : public ResourceHandler, |
- public base::SupportsWeakPtr<DownloadResourceHandler> { |
+class CONTENT_EXPORT DownloadRequestCore |
+ : public base::SupportsWeakPtr<DownloadRequestCore> { |
public: |
- struct DownloadTabInfo; |
- |
- // Size of the buffer used between the DownloadResourceHandler and the |
+ // Size of the buffer used between the DownloadRequestCore and the |
// downstream receiver of its output. |
static const int kDownloadByteStreamSize; |
// started_cb will be called exactly once on the UI thread. |
// |id| should be invalid if the id should be automatically assigned. |
- DownloadResourceHandler( |
+ DownloadRequestCore( |
uint32 id, |
net::URLRequest* request, |
const DownloadUrlParameters::OnStartedCallback& started_cb, |
- scoped_ptr<DownloadSaveInfo> save_info); |
- |
- bool OnRequestRedirected(const net::RedirectInfo& redirect_info, |
- ResourceResponse* response, |
- bool* defer) override; |
+ scoped_ptr<DownloadSaveInfo> save_info, |
+ base::WeakPtr<DownloadManagerImpl> download_manager); |
+ ~DownloadRequestCore(); |
// Send the download creation information to the download thread. |
- bool OnResponseStarted(ResourceResponse* response, bool* defer) override; |
- |
- // Pass-through implementation. |
- bool OnWillStart(const GURL& url, bool* defer) override; |
- |
- // Pass-through implementation. |
- bool OnBeforeNetworkStart(const GURL& url, bool* defer) override; |
+ bool OnResponseStarted(); |
// Create a new buffer, which will be handed to the download thread for file |
// writing and deletion. |
bool OnWillRead(scoped_refptr<net::IOBuffer>* buf, |
int* buf_size, |
- int min_size) override; |
+ int min_size); |
- bool OnReadCompleted(int bytes_read, bool* defer) override; |
+ bool OnReadCompleted(int bytes_read, bool* defer); |
- void OnResponseCompleted(const net::URLRequestStatus& status, |
- const std::string& security_info, |
- bool* defer) override; |
- |
- // N/A to this flavor of DownloadHandler. |
- void OnDataDownloaded(int bytes_downloaded) override; |
+ void OnResponseCompleted(const net::URLRequestStatus& status); |
void PauseRequest(); |
void ResumeRequest(); |
- // May result in this object being deleted by its owner. |
- void CancelRequest(); |
- |
std::string DebugString() const; |
- private: |
- ~DownloadResourceHandler() override; |
+ void set_downloader(UrlDownloader* downloader) { downloader_ = downloader; } |
+ protected: |
+ net::URLRequest* request() const { return request_; } |
+ |
+ private: |
// Arrange for started_cb_ to be called on the UI thread with the |
// below values, nulling out started_cb_. Should only be called |
// on the IO thread. |
void CallStartedCB(DownloadItem* item, |
DownloadInterruptReason interrupt_reason); |
+ net::URLRequest* request_; |
uint32 download_id_; |
+ |
// This is read only on the IO thread, but may only |
// be called on the UI thread. |
DownloadUrlParameters::OnStartedCallback started_cb_; |
scoped_ptr<DownloadSaveInfo> save_info_; |
- // Stores information about the download that must be acquired on the UI |
- // thread before StartOnUIThread is called. |
- // Created on IO thread, but only accessed on UI thread. |tab_info_| holds |
- // the pointer until we pass it off to StartOnUIThread or DeleteSoon. |
- // Marked as a scoped_ptr<> to indicate ownership of the structure, but |
- // deletion must occur on the IO thread. |
- scoped_ptr<DownloadTabInfo> tab_info_; |
- |
// Data flow |
- scoped_refptr<net::IOBuffer> read_buffer_; // From URLRequest. |
- scoped_ptr<ByteStreamWriter> stream_writer_; // To rest of system. |
+ scoped_refptr<net::IOBuffer> read_buffer_; // From URLRequest. |
+ scoped_ptr<ByteStreamWriter> stream_writer_; // To rest of system. |
- // Keeps the system from sleeping while this ResourceHandler is alive. If the |
+ // Keeps the system from sleeping while this is alive. If the |
// system enters power saving mode while a request is alive, it can cause the |
// request to fail and the associated download will be interrupted. |
scoped_ptr<PowerSaveBlocker> power_save_blocker_; |
@@ -127,12 +107,17 @@ class CONTENT_EXPORT DownloadResourceHandler |
// For DCHECKing |
bool on_response_started_called_; |
- static const int kReadBufSize = 32768; // bytes |
+ UrlDownloader* downloader_; |
+ |
+ // DownloadManager passed in by the owner of DownloadRequestCore. |
+ base::WeakPtr<DownloadManagerImpl> download_manager_; |
+ |
+ static const int kReadBufSize = 32768; // bytes |
static const int kThrottleTimeMs = 200; // milliseconds |
- DISALLOW_COPY_AND_ASSIGN(DownloadResourceHandler); |
+ DISALLOW_COPY_AND_ASSIGN(DownloadRequestCore); |
}; |
} // namespace content |
-#endif // CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_RESOURCE_HANDLER_H_ |
+#endif // CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_REQUEST_CORE_H_ |