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

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

Issue 3029025: Download code cleanup: (Closed)
Patch Set: rebase'n'final Created 10 years, 5 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
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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 virtual void OnDownloadFileCompleted(DownloadItem* download) = 0; 58 virtual void OnDownloadFileCompleted(DownloadItem* download) = 0;
59 59
60 // Called when a downloaded file has been opened. 60 // Called when a downloaded file has been opened.
61 virtual void OnDownloadOpened(DownloadItem* download) = 0; 61 virtual void OnDownloadOpened(DownloadItem* download) = 0;
62 62
63 protected: 63 protected:
64 virtual ~Observer() {} 64 virtual ~Observer() {}
65 }; 65 };
66 66
67 // Constructing from persistent store: 67 // Constructing from persistent store:
68 explicit DownloadItem(const DownloadCreateInfo& info); 68 DownloadItem(DownloadManager* download_manager,
69 const DownloadCreateInfo& info);
69 70
70 // Constructing from user action: 71 // Constructing for a regular download:
71 DownloadItem(int32 download_id, 72 DownloadItem(DownloadManager* download_manager,
73 const DownloadCreateInfo& info,
74 bool is_otr);
75
76 // Constructing for the "Save Page As..." feature:
77 DownloadItem(DownloadManager* download_manager,
72 const FilePath& path, 78 const FilePath& path,
73 int path_uniquifier,
74 const GURL& url, 79 const GURL& url,
75 const GURL& referrer_url, 80 bool is_otr);
76 const std::string& mime_type,
77 const std::string& original_mime_type,
78 const FilePath& original_name,
79 const base::Time start_time,
80 int64 download_size,
81 int render_process_id,
82 int request_id,
83 bool is_dangerous,
84 bool save_as,
85 bool is_otr,
86 bool is_extension_install,
87 bool is_temporary);
88 81
89 ~DownloadItem(); 82 ~DownloadItem();
90 83
91 void Init(bool start_timer);
92
93 // Public API
94
95 void AddObserver(Observer* observer); 84 void AddObserver(Observer* observer);
96 void RemoveObserver(Observer* observer); 85 void RemoveObserver(Observer* observer);
97 86
98 // Notifies our observers periodically. 87 // Notifies our observers periodically.
99 void UpdateObservers(); 88 void UpdateObservers();
100 89
101 // Notifies our observers the downloaded file has been completed. 90 // Notifies our observers the downloaded file has been completed.
102 void NotifyObserversDownloadFileCompleted(); 91 void NotifyObserversDownloadFileCompleted();
103 92
104 // Notifies our observers the downloaded file has been opened. 93 // Whether it is OK to open this download.
105 void NotifyObserversDownloadOpened(); 94 bool CanOpenDownload();
95
96 // Tests if a file type should be opened automatically.
97 bool ShouldOpenFileBasedOnExtension();
98
99 // Registers this file extension for automatic opening upon download
100 // completion if 'open' is true, or prevents the extension from automatic
101 // opening if 'open' is false.
102 void OpenFilesBasedOnExtension(bool open);
103
104 // Open the file associated with this download (wait for the download to
105 // complete if it is in progress).
106 void OpenDownload();
107
108 // Show the download via the OS shell.
109 void ShowDownloadInShell();
110
111 // Called when the user has validated the download of a dangerous file.
112 void DangerousDownloadValidated();
106 113
107 // Received a new chunk of data 114 // Received a new chunk of data
108 void Update(int64 bytes_so_far); 115 void Update(int64 bytes_so_far);
109 116
110 // Cancel the download operation. We need to distinguish between cancels at 117 // Cancel the download operation. We need to distinguish between cancels at
111 // exit (DownloadManager destructor) from user interface initiated cancels 118 // exit (DownloadManager destructor) from user interface initiated cancels
112 // because at exit, the history system may not exist, and any updates to it 119 // because at exit, the history system may not exist, and any updates to it
113 // require AddRef'ing the DownloadManager in the destructor which results in 120 // require AddRef'ing the DownloadManager in the destructor which results in
114 // a DCHECK failure. Set 'update_history' to false when canceling from at 121 // a DCHECK failure. Set 'update_history' to false when canceling from at
115 // exit to prevent this crash. This may result in a difference between the 122 // exit to prevent this crash. This may result in a difference between the
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 GURL referrer_url() const { return referrer_url_; } 163 GURL referrer_url() const { return referrer_url_; }
157 std::string mime_type() const { return mime_type_; } 164 std::string mime_type() const { return mime_type_; }
158 std::string original_mime_type() const { return original_mime_type_; } 165 std::string original_mime_type() const { return original_mime_type_; }
159 int64 total_bytes() const { return total_bytes_; } 166 int64 total_bytes() const { return total_bytes_; }
160 void set_total_bytes(int64 total_bytes) { total_bytes_ = total_bytes; } 167 void set_total_bytes(int64 total_bytes) { total_bytes_ = total_bytes; }
161 int64 received_bytes() const { return received_bytes_; } 168 int64 received_bytes() const { return received_bytes_; }
162 int32 id() const { return id_; } 169 int32 id() const { return id_; }
163 base::Time start_time() const { return start_time_; } 170 base::Time start_time() const { return start_time_; }
164 void set_db_handle(int64 handle) { db_handle_ = handle; } 171 void set_db_handle(int64 handle) { db_handle_ = handle; }
165 int64 db_handle() const { return db_handle_; } 172 int64 db_handle() const { return db_handle_; }
166 DownloadManager* manager() const { return manager_; }
167 void set_manager(DownloadManager* manager) { manager_ = manager; }
168 bool is_paused() const { return is_paused_; } 173 bool is_paused() const { return is_paused_; }
169 void set_is_paused(bool pause) { is_paused_ = pause; } 174 void set_is_paused(bool pause) { is_paused_ = pause; }
170 bool open_when_complete() const { return open_when_complete_; } 175 bool open_when_complete() const { return open_when_complete_; }
171 void set_open_when_complete(bool open) { open_when_complete_ = open; } 176 void set_open_when_complete(bool open) { open_when_complete_ = open; }
172 int render_process_id() const { return render_process_id_; } 177 int render_process_id() const { return render_process_id_; }
173 int request_id() const { return request_id_; } 178 int request_id() const { return request_id_; }
174 SafetyState safety_state() const { return safety_state_; } 179 SafetyState safety_state() const { return safety_state_; }
175 void set_safety_state(SafetyState safety_state) { 180 void set_safety_state(SafetyState safety_state) {
176 safety_state_ = safety_state; 181 safety_state_ = safety_state;
177 } 182 }
178 bool auto_opened() { return auto_opened_; } 183 bool auto_opened() { return auto_opened_; }
179 void set_auto_opened(bool auto_opened) { auto_opened_ = auto_opened; } 184 void set_auto_opened(bool auto_opened) { auto_opened_ = auto_opened; }
180 FilePath original_name() const { return original_name_; } 185 FilePath original_name() const { return original_name_; }
181 bool save_as() const { return save_as_; } 186 bool save_as() const { return save_as_; }
182 bool is_otr() const { return is_otr_; } 187 bool is_otr() const { return is_otr_; }
183 bool is_extension_install() const { return is_extension_install_; } 188 bool is_extension_install() const { return is_extension_install_; }
184 bool name_finalized() const { return name_finalized_; } 189 bool name_finalized() const { return name_finalized_; }
185 bool is_temporary() const { return is_temporary_; } 190 bool is_temporary() const { return is_temporary_; }
186 bool need_final_rename() const { return need_final_rename_; } 191 bool need_final_rename() const { return need_final_rename_; }
187 void set_need_final_rename(bool need_final_rename) { 192 void set_need_final_rename(bool need_final_rename) {
188 need_final_rename_ = need_final_rename; 193 need_final_rename_ = need_final_rename;
189 } 194 }
190 195
191 // Returns the file-name that should be reported to the user, which is 196 // Returns the file-name that should be reported to the user, which is
192 // file_name_ for safe downloads and original_name_ for dangerous ones with 197 // file_name_ for safe downloads and original_name_ for dangerous ones with
193 // the uniquifier number. 198 // the uniquifier number.
194 FilePath GetFileName() const; 199 FilePath GetFileName() const;
195 200
196 private: 201 private:
202 void Init(bool start_timer);
203
197 // Internal helper for maintaining consistent received and total sizes. 204 // Internal helper for maintaining consistent received and total sizes.
198 void UpdateSize(int64 size); 205 void UpdateSize(int64 size);
199 206
200 // Start/stop sending periodic updates to our observers 207 // Start/stop sending periodic updates to our observers
201 void StartProgressTimer(); 208 void StartProgressTimer();
202 void StopProgressTimer(); 209 void StopProgressTimer();
203 210
204 // Request ID assigned by the ResourceDispatcherHost. 211 // Request ID assigned by the ResourceDispatcherHost.
205 int32 id_; 212 int32 id_;
206 213
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 // Time the download was started 252 // Time the download was started
246 base::Time start_time_; 253 base::Time start_time_;
247 254
248 // Our persistent store handle 255 // Our persistent store handle
249 int64 db_handle_; 256 int64 db_handle_;
250 257
251 // Timer for regularly updating our observers 258 // Timer for regularly updating our observers
252 base::RepeatingTimer<DownloadItem> update_timer_; 259 base::RepeatingTimer<DownloadItem> update_timer_;
253 260
254 // Our owning object 261 // Our owning object
255 DownloadManager* manager_; 262 DownloadManager* download_manager_;
256 263
257 // In progress downloads may be paused by the user, we note it here 264 // In progress downloads may be paused by the user, we note it here
258 bool is_paused_; 265 bool is_paused_;
259 266
260 // A flag for indicating if the download should be opened at completion. 267 // A flag for indicating if the download should be opened at completion.
261 bool open_when_complete_; 268 bool open_when_complete_;
262 269
263 // Whether the download is considered potentially safe or dangerous 270 // Whether the download is considered potentially safe or dangerous
264 // (executable files are typically considered dangerous). 271 // (executable files are typically considered dangerous).
265 SafetyState safety_state_; 272 SafetyState safety_state_;
(...skipping 26 matching lines...) Expand all
292 // True if the item was downloaded temporarily. 299 // True if the item was downloaded temporarily.
293 bool is_temporary_; 300 bool is_temporary_;
294 301
295 // True if the file needs final rename. 302 // True if the file needs final rename.
296 bool need_final_rename_; 303 bool need_final_rename_;
297 304
298 DISALLOW_COPY_AND_ASSIGN(DownloadItem); 305 DISALLOW_COPY_AND_ASSIGN(DownloadItem);
299 }; 306 };
300 307
301 #endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_H_ 308 #endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_H_
OLDNEW
« no previous file with comments | « chrome/browser/download/download_file_manager.cc ('k') | chrome/browser/download/download_item.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698