OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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: |
11 // DownloadItem::Observer: | 11 // DownloadItem::Observer: |
12 // - allows observers to receive notifications about one download from start | 12 // - allows observers to receive notifications about one download from start |
13 // to completion | 13 // to completion |
14 // Use AddObserver() / RemoveObserver() on the appropriate download object to | 14 // Use AddObserver() / RemoveObserver() on the appropriate download object to |
15 // receive state updates. | 15 // receive state updates. |
16 | 16 |
17 #ifndef CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_H_ | 17 #ifndef CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_H_ |
18 #define CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_H_ | 18 #define CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_H_ |
19 #pragma once | 19 #pragma once |
20 | 20 |
| 21 #include <map> |
21 #include <string> | 22 #include <string> |
22 | 23 |
23 #include "base/string16.h" | 24 #include "base/string16.h" |
24 #include "content/browser/download/download_state_info.h" | 25 #include "content/browser/download/download_state_info.h" |
25 #include "content/browser/download/interrupt_reasons.h" | 26 #include "content/browser/download/interrupt_reasons.h" |
26 | 27 |
27 class DownloadId; | 28 class DownloadId; |
28 class DownloadFileManager; | 29 class DownloadFileManager; |
29 class DownloadManager; | 30 class DownloadManager; |
30 class FilePath; | 31 class FilePath; |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 public: | 94 public: |
94 virtual void OnDownloadUpdated(DownloadItem* download) = 0; | 95 virtual void OnDownloadUpdated(DownloadItem* download) = 0; |
95 | 96 |
96 // Called when a downloaded file has been opened. | 97 // Called when a downloaded file has been opened. |
97 virtual void OnDownloadOpened(DownloadItem* download) = 0; | 98 virtual void OnDownloadOpened(DownloadItem* download) = 0; |
98 | 99 |
99 protected: | 100 protected: |
100 virtual ~Observer() {} | 101 virtual ~Observer() {} |
101 }; | 102 }; |
102 | 103 |
| 104 // Interface for data that can be stored associated with (and owned |
| 105 // by) an object of this class via GetExternalData/SetExternalData. |
| 106 class ExternalData { |
| 107 public: |
| 108 virtual ~ExternalData() {}; |
| 109 }; |
| 110 |
103 virtual ~DownloadItem(); | 111 virtual ~DownloadItem(); |
104 | 112 |
105 virtual void AddObserver(DownloadItem::Observer* observer) = 0; | 113 virtual void AddObserver(DownloadItem::Observer* observer) = 0; |
106 virtual void RemoveObserver(DownloadItem::Observer* observer) = 0; | 114 virtual void RemoveObserver(DownloadItem::Observer* observer) = 0; |
107 | 115 |
108 // Notifies our observers periodically. | 116 // Notifies our observers periodically. |
109 virtual void UpdateObservers() = 0; | 117 virtual void UpdateObservers() = 0; |
110 | 118 |
111 // Returns true if it is OK to open a folder which this file is inside. | 119 // Returns true if it is OK to open a folder which this file is inside. |
112 virtual bool CanShowInFolder() = 0; | 120 virtual bool CanShowInFolder() = 0; |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
301 virtual bool NeedsRename() const = 0; | 309 virtual bool NeedsRename() const = 0; |
302 | 310 |
303 // Cancels the off-thread aspects of the download. | 311 // Cancels the off-thread aspects of the download. |
304 // TODO(rdsmith): This should be private and only called from | 312 // TODO(rdsmith): This should be private and only called from |
305 // DownloadItem::Cancel/Interrupt; it isn't now because we can't | 313 // DownloadItem::Cancel/Interrupt; it isn't now because we can't |
306 // call those functions from | 314 // call those functions from |
307 // DownloadManager::FileSelectionCancelled() without doing some | 315 // DownloadManager::FileSelectionCancelled() without doing some |
308 // rewrites of the DownloadManager queues. | 316 // rewrites of the DownloadManager queues. |
309 virtual void OffThreadCancel(DownloadFileManager* file_manager) = 0; | 317 virtual void OffThreadCancel(DownloadFileManager* file_manager) = 0; |
310 | 318 |
| 319 // Manage data owned by other subsystems associated with the |
| 320 // DownloadItem. By custom, key is the address of a |
| 321 // static char subsystem_specific_string[] = ".."; defined |
| 322 // in the subsystem, but the only requirement of this interface |
| 323 // is that the key be unique over all data stored with this |
| 324 // DownloadItem. |
| 325 // |
| 326 // Note that SetExternalData takes ownership of the |
| 327 // passed object; it will be destroyed when the DownloadItem is. |
| 328 // If an object is already held by the DownloadItem associated with |
| 329 // the passed key, it will be destroyed if overwriten by a new pointer |
| 330 // (overwrites by the same pointer are ignored). |
| 331 virtual ExternalData* GetExternalData(const void* key) = 0; |
| 332 virtual void SetExternalData(const void* key, ExternalData* data) = 0; |
| 333 |
311 virtual std::string DebugString(bool verbose) const = 0; | 334 virtual std::string DebugString(bool verbose) const = 0; |
312 | 335 |
313 virtual void MockDownloadOpenForTesting() = 0; | 336 virtual void MockDownloadOpenForTesting() = 0; |
314 }; | 337 }; |
315 | 338 |
316 #endif // CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_H_ | 339 #endif // CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_H_ |
OLD | NEW |