Chromium Code Reviews| Index: content/browser/download/download_job.h |
| diff --git a/content/browser/download/download_job.h b/content/browser/download/download_job.h |
| index 2192d410c96d123fe93160aa69c24c9f1da55947..6268f4aff273d8cbdb2662e6bb39b1b9588e8757 100644 |
| --- a/content/browser/download/download_job.h |
| +++ b/content/browser/download/download_job.h |
| @@ -12,82 +12,26 @@ |
| #include "content/public/browser/download_interrupt_reasons.h" |
| namespace content { |
| -class WebContents; |
| - |
| -// Unknown download progress. |
| -extern const int kDownloadProgressUnknown; |
| -// Unknown download speed. |
| -extern const int kDownloadSpeedUnknown; |
| +class DownloadItemImpl; |
| +class WebContents; |
| -// DownloadJob contains internal download logic. |
| -// The owner of DownloadJob(e.g DownloadItemImpl) should implement |
| -// DownloadJob::Manager to be informed with important changes from |
| -// DownloadJob and modify its states accordingly. |
| +// DownloadJob lives on UI thread and subclasses implement actual download logic |
| +// and interact with DownloadItemImpl. |
| +// The base class is a friend class of DownloadItemImpl. |
| class CONTENT_EXPORT DownloadJob { |
| public: |
| - // The interface used to interact with the owner of the download job. |
| - class CONTENT_EXPORT Manager { |
| - public: |
| - // Called when |download_job| becomes actively download data. |
| - virtual void OnSavingStarted(DownloadJob* download_job) = 0; |
| - |
| - // Called when |download_job| is interrupted. |
| - virtual void OnDownloadInterrupted(DownloadJob* download_job, |
| - DownloadInterruptReason reason) = 0; |
| - |
| - // Called when |download_job| is completed and inform the manager. |
| - virtual void OnDownloadComplete(DownloadJob* download_job) = 0; |
| - |
| - // Sets the download danger type. |
| - virtual void SetDangerType(DownloadDangerType danger_type) = 0; |
| - }; |
| - |
| - DownloadJob(); |
| + DownloadJob(DownloadItemImpl* download_item); |
|
qinmin
2017/02/23 07:26:57
explicit
xingliu
2017/02/24 23:43:13
Done.
|
| virtual ~DownloadJob(); |
| - DownloadJob::Manager* manager() { return manager_; } |
| - |
| - // Called when DownloadJob is attached to DownloadJob::Manager. |
| - // |manager| can be nullptr. |
| - virtual void OnAttached(DownloadJob::Manager* manager); |
| - |
| - // Called before DownloadJob is detached from its manager. |
| - virtual void OnBeforeDetach(); |
| - |
| // Download operations. |
| + virtual void Start() = 0; |
| virtual void Cancel(bool user_cancel) = 0; |
| - virtual void Pause() = 0; |
| - virtual void Resume() = 0; |
| - |
| - // Return if the download file can be opened. |
| - // See |DownloadItem::CanOpenDownload|. |
| - virtual bool CanOpen() const = 0; |
| + virtual void Pause(); |
| + virtual void Resume(); |
| - // Return if the download job can be resumed. |
| - virtual bool CanResume() const = 0; |
| - |
| - // See |DownloadItem::CanShowInFolder|. |
| - virtual bool CanShowInFolder() const = 0; |
| - |
| - // Return if the download job is actively downloading. |
| - virtual bool IsActive() const = 0; |
| - |
| - // Return if the download job is paused. |
| - virtual bool IsPaused() const = 0; |
| - |
| - // Return a number between 0 and 100 to represent the percentage progress of |
| - // the download. Return |kDownloadProgressUnknown| if the progress is |
| - // indeterminate. |
| - virtual int PercentComplete() const = 0; |
| - |
| - // Return the estimated current download speed in bytes per second. |
| - // Or return kDownloadSpeedUnknown if the download speed is not measurable. |
| - virtual int64_t CurrentSpeed() const = 0; |
| - |
| - // Set the estimated remaining time of the download to |remaining| and return |
| - // true if time remaining is available, otherwise return false. |
| - virtual bool TimeRemaining(base::TimeDelta* remaining) const = 0; |
| + bool is_paused() const { return is_paused_; } |
| + void set_is_paused(bool is_paused) { is_paused_ = is_paused; } |
|
qinmin
2017/02/23 07:26:57
this is strange. shouldn't the caller use either
xingliu
2017/02/24 23:43:13
Removed.
|
| // Return the WebContents associated with the download. Usually used to |
| // associate a browser window for any UI that needs to be displayed to the |
| @@ -96,24 +40,15 @@ class CONTENT_EXPORT DownloadJob { |
| // WebContents. |
| virtual WebContents* GetWebContents() const = 0; |
| - // Print the debug string including internal states of the download job. |
| - virtual std::string DebugString(bool verbose) const = 0; |
| - |
| protected: |
| - // Mark the download as being active. |
| - void StartedSavingResponse(); |
| - |
| - // Mark the download as interrupted. |
| - void Interrupt(DownloadInterruptReason reason); |
| + void StartDownloadProgress() const; |
| - // Mark the download job as completed. |
| - void Complete(); |
| - |
| - // Owner of this DownloadJob, Only valid between OnAttached() and |
| - // OnBeforeDetach(), inclusive. Otherwise set to nullptr. |
| - DownloadJob::Manager* manager_; |
| + DownloadItemImpl* download_item_; |
| private: |
| + // If the download progress is paused by the user. |
| + bool is_paused_ = false; |
|
qinmin
2017/02/23 07:26:57
the assignment is already in initializer list
xingliu
2017/02/24 23:43:13
Done.
|
| + |
| DISALLOW_COPY_AND_ASSIGN(DownloadJob); |
| }; |