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

Side by Side Diff: content/browser/download/download_item_impl.h

Issue 14955002: [Resumption 6/11] Add a RESUMING_INTERNAL state to DownloadItem. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #ifndef CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_IMPL_H_ 5 #ifndef CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_IMPL_H_
6 #define CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_IMPL_H_ 6 #define CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_IMPL_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 // should be considered complete. 209 // should be considered complete.
210 virtual void MarkAsComplete(); 210 virtual void MarkAsComplete();
211 211
212 private: 212 private:
213 // Fine grained states of a download. 213 // Fine grained states of a download.
214 enum DownloadInternalState { 214 enum DownloadInternalState {
215 // Unless otherwise specified, state transitions are linear forward 215 // Unless otherwise specified, state transitions are linear forward
216 // in this list. 216 // in this list.
217 217
218 // Includes both before and after file name determination. 218 // Includes both before and after file name determination.
219 // TODO(rdsmith): Put in state variable for file name determination. 219 // TODO(rdsmith): Put in state variable for file name determination.
Randy Smith (Not in Mondays) 2013/05/09 01:00:57 Add a note that RESUMING_INTERNAL can transition i
asanka 2013/05/09 16:54:33 Done.
220 IN_PROGRESS_INTERNAL, 220 IN_PROGRESS_INTERNAL,
221 221
222 // Between commit point (dispatch of download file release) and completed. 222 // Between commit point (dispatch of download file release) and completed.
223 // Embedder may be opening the file in this state. Note that the 223 // Embedder may be opening the file in this state. Note that the
224 // DownloadItem may be deleted (by shutdown) or interrupted (e.g. due to a 224 // DownloadItem may be deleted (by shutdown) or interrupted (e.g. due to a
225 // failure during AnnotateWithSourceInformation()) in this state. 225 // failure during AnnotateWithSourceInformation()) in this state.
226 COMPLETING_INTERNAL, 226 COMPLETING_INTERNAL,
227 227
228 // After embedder has had a chance to auto-open. User may now open 228 // After embedder has had a chance to auto-open. User may now open
229 // or auto-open based on extension. 229 // or auto-open based on extension.
230 COMPLETE_INTERNAL, 230 COMPLETE_INTERNAL,
231 231
232 // User has cancelled the download. 232 // User has cancelled the download.
233 // Only incoming transition IN_PROGRESS-> 233 // Only incoming transition IN_PROGRESS->
Randy Smith (Not in Mondays) 2013/05/09 01:00:57 This is wrong; we can cancel interrupted downloads
asanka 2013/05/09 16:54:33 Done.
234 CANCELLED_INTERNAL, 234 CANCELLED_INTERNAL,
235 235
236 // An error has interrupted the download. 236 // An error has interrupted the download.
237 // Only incoming transition IN_PROGRESS-> 237 // Only incoming transitions IN_PROGRESS-> and RESUMING_INTERNAL.
Randy Smith (Not in Mondays) 2013/05/09 01:00:57 I don't actually remember how I was thinking of th
asanka 2013/05/09 16:54:33 I added notes listing all the transitions. Let me
238 INTERRUPTED_INTERNAL, 238 INTERRUPTED_INTERNAL,
239 239
240 // A request to resume this interrupted download is in progress.
241 // Only incoming transition INTERRUPTED_INTERNAL.
242 RESUMING_INTERNAL,
243
240 MAX_DOWNLOAD_INTERNAL_STATE, 244 MAX_DOWNLOAD_INTERNAL_STATE,
241 }; 245 };
242 246
243 // DownloadDestinationObserver 247 // DownloadDestinationObserver
244 virtual void DestinationUpdate(int64 bytes_so_far, 248 virtual void DestinationUpdate(int64 bytes_so_far,
245 int64 bytes_per_sec, 249 int64 bytes_per_sec,
246 const std::string& hash_state) OVERRIDE; 250 const std::string& hash_state) OVERRIDE;
247 virtual void DestinationError(DownloadInterruptReason reason) OVERRIDE; 251 virtual void DestinationError(DownloadInterruptReason reason) OVERRIDE;
248 virtual void DestinationCompleted(const std::string& final_hash) OVERRIDE; 252 virtual void DestinationCompleted(const std::string& final_hash) OVERRIDE;
249 253
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 const base::FilePath& full_path); 294 const base::FilePath& full_path);
291 295
292 // Called if the embedder took over opening a download, to indicate that 296 // Called if the embedder took over opening a download, to indicate that
293 // the download has been opened. 297 // the download has been opened.
294 void DelayedDownloadOpened(bool auto_opened); 298 void DelayedDownloadOpened(bool auto_opened);
295 299
296 // Called when the entire download operation (including renaming etc) 300 // Called when the entire download operation (including renaming etc)
297 // is completed. 301 // is completed.
298 void Completed(); 302 void Completed();
299 303
304 // Callback invoked when the URLRequest for a download resumption has started.
305 void OnResumeRequestStarted(DownloadItem* item, net::Error error);
306
300 // Helper routines ----------------------------------------------------------- 307 // Helper routines -----------------------------------------------------------
301 308
302 // Indicate that an error has occurred on the download. 309 // Indicate that an error has occurred on the download.
303 void Interrupt(DownloadInterruptReason reason); 310 void Interrupt(DownloadInterruptReason reason);
304 311
305 // Destroy the DownloadFile object. If |destroy_file| is true, the file is 312 // Destroy the DownloadFile object. If |destroy_file| is true, the file is
306 // destroyed with it. Otherwise, DownloadFile::Detach() is called before 313 // destroyed with it. Otherwise, DownloadFile::Detach() is called before
307 // object destruction to prevent file destruction. Destroying the file also 314 // object destruction to prevent file destruction. Destroying the file also
308 // resets |current_path_|. 315 // resets |current_path_|.
309 void ReleaseDownloadFile(bool destroy_file); 316 void ReleaseDownloadFile(bool destroy_file);
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 const net::BoundNetLog bound_net_log_; 502 const net::BoundNetLog bound_net_log_;
496 503
497 base::WeakPtrFactory<DownloadItemImpl> weak_ptr_factory_; 504 base::WeakPtrFactory<DownloadItemImpl> weak_ptr_factory_;
498 505
499 DISALLOW_COPY_AND_ASSIGN(DownloadItemImpl); 506 DISALLOW_COPY_AND_ASSIGN(DownloadItemImpl);
500 }; 507 };
501 508
502 } // namespace content 509 } // namespace content
503 510
504 #endif // CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_IMPL_H_ 511 #endif // CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_IMPL_H_
OLDNEW
« no previous file with comments | « no previous file | content/browser/download/download_item_impl.cc » ('j') | content/browser/download/download_item_impl.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698