 Chromium Code Reviews
 Chromium Code Reviews Issue 14955002:
  [Resumption 6/11] Add a RESUMING_INTERNAL state to DownloadItem.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src
    
  
    Issue 14955002:
  [Resumption 6/11] Add a RESUMING_INTERNAL state to DownloadItem.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src| OLD | NEW | 
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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_ | 
| OLD | NEW |