OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // | 4 // |
5 // Each download is represented by a DownloadItem, and all DownloadItems | 5 // Each download is represented by a DownloadItem, and all DownloadItems |
6 // are owned by the DownloadManager which maintains a global list of all | 6 // are owned by the DownloadManager which maintains a global list of all |
7 // downloads. DownloadItems are created when a user initiates a download, | 7 // downloads. DownloadItems are created when a user initiates a download, |
8 // and exist for the duration of the browser life time. | 8 // and exist for the duration of the browser life time. |
9 // | 9 // |
10 // Download observers: | 10 // Download observers: |
(...skipping 21 matching lines...) Expand all Loading... |
32 | 32 |
33 // One DownloadItem per download. This is the model class that stores all the | 33 // One DownloadItem per download. This is the model class that stores all the |
34 // state for a download. Multiple views, such as a tab's download shelf and the | 34 // state for a download. Multiple views, such as a tab's download shelf and the |
35 // Destination tab's download view, may refer to a given DownloadItem. | 35 // Destination tab's download view, may refer to a given DownloadItem. |
36 class DownloadItem { | 36 class DownloadItem { |
37 public: | 37 public: |
38 enum DownloadState { | 38 enum DownloadState { |
39 IN_PROGRESS, | 39 IN_PROGRESS, |
40 COMPLETE, | 40 COMPLETE, |
41 CANCELLED, | 41 CANCELLED, |
42 REMOVING | 42 REMOVING, |
| 43 INTERRUPTED |
43 }; | 44 }; |
44 | 45 |
45 enum SafetyState { | 46 enum SafetyState { |
46 SAFE = 0, | 47 SAFE = 0, |
47 DANGEROUS, | 48 DANGEROUS, |
48 DANGEROUS_BUT_VALIDATED // Dangerous but the user confirmed the download. | 49 DANGEROUS_BUT_VALIDATED // Dangerous but the user confirmed the download. |
49 }; | 50 }; |
50 | 51 |
51 // Interface that observers of a particular download must implement in order | 52 // Interface that observers of a particular download must implement in order |
52 // to receive updates to the download's status. | 53 // to receive updates to the download's status. |
53 class Observer { | 54 class Observer { |
54 public: | 55 public: |
55 virtual void OnDownloadUpdated(DownloadItem* download) = 0; | 56 virtual void OnDownloadUpdated(DownloadItem* download) = 0; |
56 | 57 |
57 // Called when a downloaded file has been completed. | 58 // Called when a downloaded file has been completed. |
58 virtual void OnDownloadFileCompleted(DownloadItem* download) = 0; | 59 virtual void OnDownloadFileCompleted(DownloadItem* download) = 0; |
59 | 60 |
60 // Called when a downloaded file has been opened. | 61 // Called when a downloaded file has been opened. |
61 virtual void OnDownloadOpened(DownloadItem* download) = 0; | 62 virtual void OnDownloadOpened(DownloadItem* download) = 0; |
62 | 63 |
| 64 // Called when a downloaded file has been interrupted (had an error). |
| 65 virtual void OnDownloadInterrupted(DownloadItem* download) = 0; |
| 66 |
63 protected: | 67 protected: |
64 virtual ~Observer() {} | 68 virtual ~Observer() {} |
65 }; | 69 }; |
66 | 70 |
67 // Constructing from persistent store: | 71 // Constructing from persistent store: |
68 DownloadItem(DownloadManager* download_manager, | 72 DownloadItem(DownloadManager* download_manager, |
69 const DownloadCreateInfo& info); | 73 const DownloadCreateInfo& info); |
70 | 74 |
71 // Constructing for a regular download: | 75 // Constructing for a regular download: |
72 DownloadItem(DownloadManager* download_manager, | 76 DownloadItem(DownloadManager* download_manager, |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 // when resuming a download (assuming the server supports byte ranges). | 129 // when resuming a download (assuming the server supports byte ranges). |
126 void Cancel(bool update_history); | 130 void Cancel(bool update_history); |
127 | 131 |
128 // Called when all data has been saved. | 132 // Called when all data has been saved. |
129 void OnAllDataSaved(int64 size); | 133 void OnAllDataSaved(int64 size); |
130 | 134 |
131 // Called when the entire download operation (including renaming etc) | 135 // Called when the entire download operation (including renaming etc) |
132 // is finished. | 136 // is finished. |
133 void Finished(); | 137 void Finished(); |
134 | 138 |
| 139 // Download operation had an error. |
| 140 // |size| is the amount of data received so far, and |os_error| is the error |
| 141 // code that the operation received. |
| 142 void Interrupted(int64 size, int os_error); |
| 143 |
| 144 // User has resumed a download after an interruption. |
| 145 // |new_request_id| is the new request ID associated with the download. |
| 146 void Resumed(int new_request_id); |
| 147 |
135 // The user wants to remove the download from the views and history. If | 148 // The user wants to remove the download from the views and history. If |
136 // |delete_file| is true, the file is deleted on the disk. | 149 // |delete_file| is true, the file is deleted on the disk. |
137 void Remove(bool delete_file); | 150 void Remove(bool delete_file); |
138 | 151 |
139 // Simple calculation of the amount of time remaining to completion. Fills | 152 // Simple calculation of the amount of time remaining to completion. Fills |
140 // |*remaining| with the amount of time remaining if successful. Fails and | 153 // |*remaining| with the amount of time remaining if successful. Fails and |
141 // returns false if we do not have the number of bytes or the speed so can | 154 // returns false if we do not have the number of bytes or the speed so can |
142 // not estimate. | 155 // not estimate. |
143 bool TimeRemaining(base::TimeDelta* remaining) const; | 156 bool TimeRemaining(base::TimeDelta* remaining) const; |
144 | 157 |
(...skipping 10 matching lines...) Expand all Loading... |
155 | 168 |
156 // Allow the user to temporarily pause a download or resume a paused download. | 169 // Allow the user to temporarily pause a download or resume a paused download. |
157 void TogglePause(); | 170 void TogglePause(); |
158 | 171 |
159 // Called when the name of the download is finalized. | 172 // Called when the name of the download is finalized. |
160 void OnNameFinalized(); | 173 void OnNameFinalized(); |
161 | 174 |
162 // Returns true if this item matches |query|. |query| must be lower-cased. | 175 // Returns true if this item matches |query|. |query| must be lower-cased. |
163 bool MatchesQuery(const string16& query) const; | 176 bool MatchesQuery(const string16& query) const; |
164 | 177 |
| 178 bool IsPartialDownload() const; |
| 179 bool IsInterruptedDownload() const; |
| 180 |
165 // Accessors | 181 // Accessors |
166 DownloadState state() const { return state_; } | 182 DownloadState state() const { return state_; } |
167 FilePath full_path() const { return full_path_; } | 183 FilePath full_path() const { return full_path_; } |
168 void set_path_uniquifier(int uniquifier) { path_uniquifier_ = uniquifier; } | 184 void set_path_uniquifier(int uniquifier) { path_uniquifier_ = uniquifier; } |
169 GURL url() const { return url_; } | 185 GURL url() const { return url_; } |
170 GURL referrer_url() const { return referrer_url_; } | 186 GURL referrer_url() const { return referrer_url_; } |
171 std::string mime_type() const { return mime_type_; } | 187 std::string mime_type() const { return mime_type_; } |
172 std::string original_mime_type() const { return original_mime_type_; } | 188 std::string original_mime_type() const { return original_mime_type_; } |
173 int64 total_bytes() const { return total_bytes_; } | 189 int64 total_bytes() const { return total_bytes_; } |
174 void set_total_bytes(int64 total_bytes) { total_bytes_ = total_bytes; } | 190 void set_total_bytes(int64 total_bytes) { total_bytes_ = total_bytes; } |
175 int64 received_bytes() const { return received_bytes_; } | 191 int64 received_bytes() const { return received_bytes_; } |
| 192 int last_os_error() const { return last_os_error_; } |
176 int32 id() const { return id_; } | 193 int32 id() const { return id_; } |
177 base::Time start_time() const { return start_time_; } | 194 base::Time start_time() const { return start_time_; } |
178 void set_db_handle(int64 handle) { db_handle_ = handle; } | 195 void set_db_handle(int64 handle) { db_handle_ = handle; } |
179 int64 db_handle() const { return db_handle_; } | 196 int64 db_handle() const { return db_handle_; } |
180 bool is_paused() const { return is_paused_; } | 197 bool is_paused() const { return is_paused_; } |
181 bool open_when_complete() const { return open_when_complete_; } | 198 bool open_when_complete() const { return open_when_complete_; } |
182 void set_open_when_complete(bool open) { open_when_complete_ = open; } | 199 void set_open_when_complete(bool open) { open_when_complete_ = open; } |
183 int render_process_id() const { return render_process_id_; } | 200 int render_process_id() const { return render_process_id_; } |
184 int request_id() const { return request_id_; } | 201 int request_id() const { return request_id_; } |
185 SafetyState safety_state() const { return safety_state_; } | 202 SafetyState safety_state() const { return safety_state_; } |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 // The value of the content type header received when downloading | 257 // The value of the content type header received when downloading |
241 // this item. |mime_type_| may be different because of type sniffing. | 258 // this item. |mime_type_| may be different because of type sniffing. |
242 std::string original_mime_type_; | 259 std::string original_mime_type_; |
243 | 260 |
244 // Total bytes expected | 261 // Total bytes expected |
245 int64 total_bytes_; | 262 int64 total_bytes_; |
246 | 263 |
247 // Current received bytes | 264 // Current received bytes |
248 int64 received_bytes_; | 265 int64 received_bytes_; |
249 | 266 |
| 267 // Last error. |
| 268 int last_os_error_; |
| 269 |
250 // Start time for calculating remaining time | 270 // Start time for calculating remaining time |
251 base::TimeTicks start_tick_; | 271 base::TimeTicks start_tick_; |
252 | 272 |
253 // The current state of this download | 273 // The current state of this download |
254 DownloadState state_; | 274 DownloadState state_; |
255 | 275 |
256 // The views of this item in the download shelf and download tab | 276 // The views of this item in the download shelf and download tab |
257 ObserverList<Observer> observers_; | 277 ObserverList<Observer> observers_; |
258 | 278 |
259 // Time the download was started | 279 // Time the download was started |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
312 // Did the user open the item either directly or indirectly (such as by | 332 // Did the user open the item either directly or indirectly (such as by |
313 // setting always open files of this type)? The shelf also sets this field | 333 // setting always open files of this type)? The shelf also sets this field |
314 // when the user closes the shelf before the item has been opened but should | 334 // when the user closes the shelf before the item has been opened but should |
315 // be treated as though the user opened it. | 335 // be treated as though the user opened it. |
316 bool opened_; | 336 bool opened_; |
317 | 337 |
318 DISALLOW_COPY_AND_ASSIGN(DownloadItem); | 338 DISALLOW_COPY_AND_ASSIGN(DownloadItem); |
319 }; | 339 }; |
320 | 340 |
321 #endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_H_ | 341 #endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_H_ |
OLD | NEW |