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 18 matching lines...) Expand all Loading... |
29 class CONTENT_EXPORT DownloadItemImpl : public content::DownloadItem { | 29 class CONTENT_EXPORT DownloadItemImpl : public content::DownloadItem { |
30 public: | 30 public: |
31 // Note that it is the responsibility of the caller to ensure that a | 31 // Note that it is the responsibility of the caller to ensure that a |
32 // DownloadItemImplDelegate passed to a DownloadItemImpl constructor | 32 // DownloadItemImplDelegate passed to a DownloadItemImpl constructor |
33 // outlives the DownloadItemImpl. | 33 // outlives the DownloadItemImpl. |
34 | 34 |
35 // Constructing from persistent store: | 35 // Constructing from persistent store: |
36 // |bound_net_log| is constructed externally for our use. | 36 // |bound_net_log| is constructed externally for our use. |
37 DownloadItemImpl(DownloadItemImplDelegate* delegate, | 37 DownloadItemImpl(DownloadItemImplDelegate* delegate, |
38 content::DownloadId download_id, | 38 content::DownloadId download_id, |
39 const content::DownloadPersistentStoreInfo& info, | 39 const FilePath& path, |
| 40 const GURL& url, |
| 41 const GURL& referrer_url, |
| 42 const base::Time& start_time, |
| 43 const base::Time& end_time, |
| 44 int64 received_bytes, |
| 45 int64 total_bytes, |
| 46 DownloadItem::DownloadState state, |
| 47 bool opened, |
40 const net::BoundNetLog& bound_net_log); | 48 const net::BoundNetLog& bound_net_log); |
41 | 49 |
42 // Constructing for a regular download. | 50 // Constructing for a regular download. |
43 // |bound_net_log| is constructed externally for our use. | 51 // |bound_net_log| is constructed externally for our use. |
44 DownloadItemImpl(DownloadItemImplDelegate* delegate, | 52 DownloadItemImpl(DownloadItemImplDelegate* delegate, |
45 const DownloadCreateInfo& info, | 53 const DownloadCreateInfo& info, |
46 scoped_ptr<DownloadRequestHandleInterface> request_handle, | 54 scoped_ptr<DownloadRequestHandleInterface> request_handle, |
47 const net::BoundNetLog& bound_net_log); | 55 const net::BoundNetLog& bound_net_log); |
48 | 56 |
49 // Constructing for the "Save Page As..." feature: | 57 // Constructing for the "Save Page As..." feature: |
(...skipping 16 matching lines...) Expand all Loading... |
66 // to use to store the download until OnDownloadCompleting() is called. | 74 // to use to store the download until OnDownloadCompleting() is called. |
67 virtual void OnDownloadTargetDetermined( | 75 virtual void OnDownloadTargetDetermined( |
68 const FilePath& target_path, | 76 const FilePath& target_path, |
69 TargetDisposition disposition, | 77 TargetDisposition disposition, |
70 content::DownloadDangerType danger_type, | 78 content::DownloadDangerType danger_type, |
71 const FilePath& intermediate_path); | 79 const FilePath& intermediate_path); |
72 | 80 |
73 // Indicate that an error has occurred on the download. | 81 // Indicate that an error has occurred on the download. |
74 virtual void Interrupt(content::DownloadInterruptReason reason); | 82 virtual void Interrupt(content::DownloadInterruptReason reason); |
75 | 83 |
76 // Mark the item as having been persisted. | |
77 virtual void SetIsPersisted(); | |
78 | |
79 // Set the item's DB handle. | |
80 virtual void SetDbHandle(int64 handle); | |
81 | |
82 // Cancels the off-thread aspects of the download. | 84 // Cancels the off-thread aspects of the download. |
83 // TODO(rdsmith): This should be private and only called from | 85 // TODO(rdsmith): This should be private and only called from |
84 // DownloadItem::Cancel/Interrupt; it isn't now because we can't | 86 // DownloadItem::Cancel/Interrupt; it isn't now because we can't |
85 // call those functions from | 87 // call those functions from |
86 // DownloadManager::FileSelectionCancelled() without doing some | 88 // DownloadManager::FileSelectionCancelled() without doing some |
87 // rewrites of the DownloadManager queues. | 89 // rewrites of the DownloadManager queues. |
88 virtual void OffThreadCancel(); | 90 virtual void OffThreadCancel(); |
89 | 91 |
90 // Called when the downloaded file is removed. | 92 // Called when the downloaded file is removed. |
91 virtual void OnDownloadedFileRemoved(); | 93 virtual void OnDownloadedFileRemoved(); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 virtual std::string GetReferrerCharset() const OVERRIDE; | 160 virtual std::string GetReferrerCharset() const OVERRIDE; |
159 virtual std::string GetRemoteAddress() const OVERRIDE; | 161 virtual std::string GetRemoteAddress() const OVERRIDE; |
160 virtual int64 GetTotalBytes() const OVERRIDE; | 162 virtual int64 GetTotalBytes() const OVERRIDE; |
161 virtual const std::string& GetHash() const OVERRIDE; | 163 virtual const std::string& GetHash() const OVERRIDE; |
162 virtual int64 GetReceivedBytes() const OVERRIDE; | 164 virtual int64 GetReceivedBytes() const OVERRIDE; |
163 virtual const std::string& GetHashState() const OVERRIDE; | 165 virtual const std::string& GetHashState() const OVERRIDE; |
164 virtual int32 GetId() const OVERRIDE; | 166 virtual int32 GetId() const OVERRIDE; |
165 virtual content::DownloadId GetGlobalId() const OVERRIDE; | 167 virtual content::DownloadId GetGlobalId() const OVERRIDE; |
166 virtual base::Time GetStartTime() const OVERRIDE; | 168 virtual base::Time GetStartTime() const OVERRIDE; |
167 virtual base::Time GetEndTime() const OVERRIDE; | 169 virtual base::Time GetEndTime() const OVERRIDE; |
168 virtual bool IsPersisted() const OVERRIDE; | |
169 virtual int64 GetDbHandle() const OVERRIDE; | |
170 virtual bool IsPaused() const OVERRIDE; | 170 virtual bool IsPaused() const OVERRIDE; |
171 virtual bool GetOpenWhenComplete() const OVERRIDE; | 171 virtual bool GetOpenWhenComplete() const OVERRIDE; |
172 virtual void SetOpenWhenComplete(bool open) OVERRIDE; | 172 virtual void SetOpenWhenComplete(bool open) OVERRIDE; |
173 virtual bool GetFileExternallyRemoved() const OVERRIDE; | 173 virtual bool GetFileExternallyRemoved() const OVERRIDE; |
174 virtual SafetyState GetSafetyState() const OVERRIDE; | 174 virtual SafetyState GetSafetyState() const OVERRIDE; |
175 virtual content::DownloadDangerType GetDangerType() const OVERRIDE; | 175 virtual content::DownloadDangerType GetDangerType() const OVERRIDE; |
176 virtual bool IsDangerous() const OVERRIDE; | 176 virtual bool IsDangerous() const OVERRIDE; |
177 virtual bool GetAutoOpened() OVERRIDE; | 177 virtual bool GetAutoOpened() OVERRIDE; |
178 virtual FilePath GetTargetName() const OVERRIDE; | 178 virtual FilePath GetTargetName() const OVERRIDE; |
179 virtual const FilePath& GetForcedFilePath() const OVERRIDE; | 179 virtual const FilePath& GetForcedFilePath() const OVERRIDE; |
180 virtual bool HasUserGesture() const OVERRIDE; | 180 virtual bool HasUserGesture() const OVERRIDE; |
181 virtual content::PageTransition GetTransitionType() const OVERRIDE; | 181 virtual content::PageTransition GetTransitionType() const OVERRIDE; |
182 virtual bool IsTemporary() const OVERRIDE; | 182 virtual bool IsTemporary() const OVERRIDE; |
183 virtual void SetIsTemporary(bool temporary) OVERRIDE; | 183 virtual void SetIsTemporary(bool temporary) OVERRIDE; |
184 virtual void SetOpened(bool opened) OVERRIDE; | 184 virtual void SetOpened(bool opened) OVERRIDE; |
185 virtual bool GetOpened() const OVERRIDE; | 185 virtual bool GetOpened() const OVERRIDE; |
186 virtual const std::string& GetLastModifiedTime() const OVERRIDE; | 186 virtual const std::string& GetLastModifiedTime() const OVERRIDE; |
187 virtual const std::string& GetETag() const OVERRIDE; | 187 virtual const std::string& GetETag() const OVERRIDE; |
188 virtual content::DownloadInterruptReason GetLastReason() const OVERRIDE; | 188 virtual content::DownloadInterruptReason GetLastReason() const OVERRIDE; |
189 virtual content::DownloadPersistentStoreInfo | |
190 GetPersistentStoreInfo() const OVERRIDE; | |
191 virtual content::BrowserContext* GetBrowserContext() const OVERRIDE; | 189 virtual content::BrowserContext* GetBrowserContext() const OVERRIDE; |
192 virtual content::WebContents* GetWebContents() const OVERRIDE; | 190 virtual content::WebContents* GetWebContents() const OVERRIDE; |
193 virtual FilePath GetFileNameToReportUser() const OVERRIDE; | 191 virtual FilePath GetFileNameToReportUser() const OVERRIDE; |
194 virtual void SetDisplayName(const FilePath& name) OVERRIDE; | 192 virtual void SetDisplayName(const FilePath& name) OVERRIDE; |
195 virtual FilePath GetUserVerifiedFilePath() const OVERRIDE; | 193 virtual FilePath GetUserVerifiedFilePath() const OVERRIDE; |
196 virtual std::string DebugString(bool verbose) const OVERRIDE; | 194 virtual std::string DebugString(bool verbose) const OVERRIDE; |
197 virtual void MockDownloadOpenForTesting() OVERRIDE; | 195 virtual void MockDownloadOpenForTesting() OVERRIDE; |
198 | 196 |
199 private: | 197 private: |
200 // Construction common to all constructors. |active| should be true for new | 198 // Construction common to all constructors. |active| should be true for new |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 | 345 |
348 // The views of this item in the download shelf and download contents. | 346 // The views of this item in the download shelf and download contents. |
349 ObserverList<Observer> observers_; | 347 ObserverList<Observer> observers_; |
350 | 348 |
351 // Time the download was started. | 349 // Time the download was started. |
352 base::Time start_time_; | 350 base::Time start_time_; |
353 | 351 |
354 // Time the download completed. | 352 // Time the download completed. |
355 base::Time end_time_; | 353 base::Time end_time_; |
356 | 354 |
357 // Our persistent store handle. | |
358 int64 db_handle_; | |
359 | |
360 // Our delegate. | 355 // Our delegate. |
361 DownloadItemImplDelegate* delegate_; | 356 DownloadItemImplDelegate* delegate_; |
362 | 357 |
363 // In progress downloads may be paused by the user, we note it here. | 358 // In progress downloads may be paused by the user, we note it here. |
364 bool is_paused_; | 359 bool is_paused_; |
365 | 360 |
366 // A flag for indicating if the download should be opened at completion. | 361 // A flag for indicating if the download should be opened at completion. |
367 bool open_when_complete_; | 362 bool open_when_complete_; |
368 | 363 |
369 // A flag for indicating if the downloaded file is externally removed. | 364 // A flag for indicating if the downloaded file is externally removed. |
370 bool file_externally_removed_; | 365 bool file_externally_removed_; |
371 | 366 |
372 // Indicates if the download is considered potentially safe or dangerous | 367 // Indicates if the download is considered potentially safe or dangerous |
373 // (executable files are typically considered dangerous). | 368 // (executable files are typically considered dangerous). |
374 SafetyState safety_state_; | 369 SafetyState safety_state_; |
375 | 370 |
376 // True if the download was auto-opened. We set this rather than using | 371 // True if the download was auto-opened. We set this rather than using |
377 // an observer as it's frequently possible for the download to be auto opened | 372 // an observer as it's frequently possible for the download to be auto opened |
378 // before the observer is added. | 373 // before the observer is added. |
379 bool auto_opened_; | 374 bool auto_opened_; |
380 | 375 |
381 bool is_persisted_; | |
382 | |
383 // True if the item was downloaded temporarily. | 376 // True if the item was downloaded temporarily. |
384 bool is_temporary_; | 377 bool is_temporary_; |
385 | 378 |
386 // True if we've saved all the data for the download. | 379 // True if we've saved all the data for the download. |
387 bool all_data_saved_; | 380 bool all_data_saved_; |
388 | 381 |
389 // Did the user open the item either directly or indirectly (such as by | 382 // Did the user open the item either directly or indirectly (such as by |
390 // setting always open files of this type)? The shelf also sets this field | 383 // setting always open files of this type)? The shelf also sets this field |
391 // when the user closes the shelf before the item has been opened but should | 384 // when the user closes the shelf before the item has been opened but should |
392 // be treated as though the user opened it. | 385 // be treated as though the user opened it. |
393 bool opened_; | 386 bool opened_; |
394 | 387 |
395 // Do we actually open downloads when requested? For testing purposes only. | 388 // Do we actually open downloads when requested? For testing purposes only. |
396 bool open_enabled_; | 389 bool open_enabled_; |
397 | 390 |
398 // Did the delegate delay calling Complete on this download? | 391 // Did the delegate delay calling Complete on this download? |
399 bool delegate_delayed_complete_; | 392 bool delegate_delayed_complete_; |
400 | 393 |
401 // Net log to use for this download. | 394 // Net log to use for this download. |
402 const net::BoundNetLog bound_net_log_; | 395 const net::BoundNetLog bound_net_log_; |
403 | 396 |
404 base::WeakPtrFactory<DownloadItemImpl> weak_ptr_factory_; | 397 base::WeakPtrFactory<DownloadItemImpl> weak_ptr_factory_; |
405 | 398 |
406 DISALLOW_COPY_AND_ASSIGN(DownloadItemImpl); | 399 DISALLOW_COPY_AND_ASSIGN(DownloadItemImpl); |
407 }; | 400 }; |
408 | 401 |
409 #endif // CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_IMPL_H_ | 402 #endif // CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_IMPL_H_ |
OLD | NEW |