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

Side by Side Diff: chrome/browser/download/download_item.h

Issue 6096003: Put history insertion for downloads processing inline. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Split state and data reception changes, got rid of pending_finished_downloads_. Created 9 years, 11 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) 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 22 matching lines...) Expand all
33 33
34 // One DownloadItem per download. This is the model class that stores all the 34 // One DownloadItem per download. This is the model class that stores all the
35 // state for a download. Multiple views, such as a tab's download shelf and the 35 // state for a download. Multiple views, such as a tab's download shelf and the
36 // Destination tab's download view, may refer to a given DownloadItem. 36 // Destination tab's download view, may refer to a given DownloadItem.
37 // 37 //
38 // This is intended to be used only on the UI thread. 38 // This is intended to be used only on the UI thread.
39 class DownloadItem { 39 class DownloadItem {
40 public: 40 public:
41 enum DownloadState { 41 enum DownloadState {
42 IN_PROGRESS, 42 IN_PROGRESS,
43
44 // Note that COMPLETE indicates that the download has gotten all of its
45 // data, has figured out its final destination file, has been entered
46 // into the history store, and has been shown in the UI. The only
47 // operations remaining are acceptance by the user of
48 // a dangerous download (if dangerous), renaming the file
49 // to the final name, and auto-opening it (if it auto-opens).
43 COMPLETE, 50 COMPLETE,
51
44 CANCELLED, 52 CANCELLED,
53
54 // This state indicates that the download item is about to be destroyed,
55 // and observers seeing this state should release all references.
45 REMOVING 56 REMOVING
46 }; 57 };
47 58
48 enum SafetyState { 59 enum SafetyState {
49 SAFE = 0, 60 SAFE = 0,
50 DANGEROUS, 61 DANGEROUS,
51 DANGEROUS_BUT_VALIDATED // Dangerous but the user confirmed the download. 62 DANGEROUS_BUT_VALIDATED // Dangerous but the user confirmed the download.
52 }; 63 };
53 64
54 // Interface that observers of a particular download must implement in order 65 // Interface that observers of a particular download must implement in order
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 // exit (DownloadManager destructor) from user interface initiated cancels 132 // exit (DownloadManager destructor) from user interface initiated cancels
122 // because at exit, the history system may not exist, and any updates to it 133 // because at exit, the history system may not exist, and any updates to it
123 // require AddRef'ing the DownloadManager in the destructor which results in 134 // require AddRef'ing the DownloadManager in the destructor which results in
124 // a DCHECK failure. Set 'update_history' to false when canceling from at 135 // a DCHECK failure. Set 'update_history' to false when canceling from at
125 // exit to prevent this crash. This may result in a difference between the 136 // exit to prevent this crash. This may result in a difference between the
126 // downloaded file's size on disk, and what the history system's last record 137 // downloaded file's size on disk, and what the history system's last record
127 // of it is. At worst, we'll end up re-downloading a small portion of the file 138 // of it is. At worst, we'll end up re-downloading a small portion of the file
128 // when resuming a download (assuming the server supports byte ranges). 139 // when resuming a download (assuming the server supports byte ranges).
129 void Cancel(bool update_history); 140 void Cancel(bool update_history);
130 141
131 // Called when all data has been saved. 142 // Called when all data has been saved. Only has display effects.
132 void OnAllDataSaved(int64 size); 143 void OnAllDataSaved(int64 size);
133 144
145 // Called when ready to consider the data received and move on to the
146 // next stage.
147 void OnDataReceptionAccepted();
148
134 // Called when the entire download operation (including renaming etc) 149 // Called when the entire download operation (including renaming etc)
135 // is finished. 150 // is finished.
136 void Finished(); 151 void Finished();
137 152
138 // The user wants to remove the download from the views and history. If 153 // The user wants to remove the download from the views and history. If
139 // |delete_file| is true, the file is deleted on the disk. 154 // |delete_file| is true, the file is deleted on the disk.
140 void Remove(bool delete_file); 155 void Remove(bool delete_file);
141 156
142 // Simple calculation of the amount of time remaining to completion. Fills 157 // Simple calculation of the amount of time remaining to completion. Fills
143 // |*remaining| with the amount of time remaining if successful. Fails and 158 // |*remaining| with the amount of time remaining if successful. Fails and
144 // returns false if we do not have the number of bytes or the speed so can 159 // returns false if we do not have the number of bytes or the speed so can
145 // not estimate. 160 // not estimate.
146 bool TimeRemaining(base::TimeDelta* remaining) const; 161 bool TimeRemaining(base::TimeDelta* remaining) const;
147 162
148 // Simple speed estimate in bytes/s 163 // Simple speed estimate in bytes/s
149 int64 CurrentSpeed() const; 164 int64 CurrentSpeed() const;
150 165
151 // Rough percent complete, -1 means we don't know (since we didn't receive a 166 // Rough percent complete, -1 means we don't know (since we didn't receive a
152 // total size). 167 // total size).
153 int PercentComplete() const; 168 int PercentComplete() const;
154 169
170 // Whether or not this download has received all of its data.
171 bool AllDataReceived() const;
172
155 // Update the fields that may have changed in DownloadCreateInfo as a 173 // Update the fields that may have changed in DownloadCreateInfo as a
156 // result of analyzing the file and figuring out its type, location, etc. 174 // result of analyzing the file and figuring out its type, location, etc.
157 // May only be called once. 175 // May only be called once.
158 void SetFileCheckResults(const FilePath& path, 176 void SetFileCheckResults(const FilePath& path,
159 bool is_dangerous, 177 bool is_dangerous,
160 int path_uniquifier, 178 int path_uniquifier,
161 bool prompt, 179 bool prompt,
162 bool is_extension_install, 180 bool is_extension_install,
163 const FilePath& original_name); 181 const FilePath& original_name);
164 182
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 346
329 // True if the item was downloaded for an extension installation. 347 // True if the item was downloaded for an extension installation.
330 bool is_extension_install_; 348 bool is_extension_install_;
331 349
332 // True if the filename is finalized. 350 // True if the filename is finalized.
333 bool name_finalized_; 351 bool name_finalized_;
334 352
335 // True if the item was downloaded temporarily. 353 // True if the item was downloaded temporarily.
336 bool is_temporary_; 354 bool is_temporary_;
337 355
356 // True if we've received all the data for the download.
357 bool all_data_received_;
358
338 // Did the user open the item either directly or indirectly (such as by 359 // Did the user open the item either directly or indirectly (such as by
339 // setting always open files of this type)? The shelf also sets this field 360 // setting always open files of this type)? The shelf also sets this field
340 // when the user closes the shelf before the item has been opened but should 361 // when the user closes the shelf before the item has been opened but should
341 // be treated as though the user opened it. 362 // be treated as though the user opened it.
342 bool opened_; 363 bool opened_;
343 364
344 DISALLOW_COPY_AND_ASSIGN(DownloadItem); 365 DISALLOW_COPY_AND_ASSIGN(DownloadItem);
345 }; 366 };
346 367
347 #endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_H_ 368 #endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/download/download_item.cc » ('j') | chrome/browser/download/download_item.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698