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 CHROME_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_MODEL_H_ | 5 #ifndef CHROME_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_MODEL_H_ |
6 #define CHROME_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_MODEL_H_ | 6 #define CHROME_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_MODEL_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 // | 26 // |
27 // It is intended to be used as a thin wrapper around a |DownloadItem*|. As | 27 // It is intended to be used as a thin wrapper around a |DownloadItem*|. As |
28 // such, the caller is expected to ensure that the |download| passed into the | 28 // such, the caller is expected to ensure that the |download| passed into the |
29 // constructor outlives this |DownloadItemModel|. In addition, multiple | 29 // constructor outlives this |DownloadItemModel|. In addition, multiple |
30 // DownloadItemModel objects could be wrapping the same DownloadItem. | 30 // DownloadItemModel objects could be wrapping the same DownloadItem. |
31 class DownloadItemModel { | 31 class DownloadItemModel { |
32 public: | 32 public: |
33 // Constructs a DownloadItemModel. The caller must ensure that |download| | 33 // Constructs a DownloadItemModel. The caller must ensure that |download| |
34 // outlives this object. | 34 // outlives this object. |
35 explicit DownloadItemModel(content::DownloadItem* download); | 35 explicit DownloadItemModel(content::DownloadItem* download); |
36 virtual ~DownloadItemModel(); | 36 ~DownloadItemModel(); |
37 | 37 |
38 // Cancel the task corresponding to the item. | 38 // Cancel the task corresponding to the item. |
39 void CancelTask(); | 39 void CancelTask(); |
40 | 40 |
41 // Returns a short one-line status string for the download. | |
42 string16 GetStatusText() const; | |
43 | |
44 // Returns a long descriptive string for a download that's in the INTERRUPTED | 41 // Returns a long descriptive string for a download that's in the INTERRUPTED |
45 // state. For other downloads, the returned string will be empty. | 42 // state. For other downloads, the returned string will be empty. |
46 string16 GetInterruptReasonText() const; | 43 string16 GetInterruptReasonText() const; |
47 | 44 |
| 45 // Returns a short one-line status string for the download. |
| 46 string16 GetStatusText() const; |
| 47 |
48 // Returns a string suitable for use as a tooltip. For a regular download, the | 48 // Returns a string suitable for use as a tooltip. For a regular download, the |
49 // tooltip is the filename. For an interrupted download, the string states the | 49 // tooltip is the filename. For an interrupted download, the string states the |
50 // filename and a short description of the reason for interruption. For | 50 // filename and a short description of the reason for interruption. For |
51 // example: | 51 // example: |
52 // Report.pdf | 52 // Report.pdf |
53 // Network disconnected | 53 // Network disconnected |
54 // |font| and |max_width| are used to elide the filename and/or interrupt | 54 // |font| and |max_width| are used to elide the filename and/or interrupt |
55 // reason as necessary to keep the width of the tooltip text under | 55 // reason as necessary to keep the width of the tooltip text under |
56 // |max_width|. The tooltip will be at most 2 lines. | 56 // |max_width|. The tooltip will be at most 2 lines. |
57 string16 GetTooltipText(const gfx::Font& font, int max_width) const; | 57 string16 GetTooltipText(const gfx::Font& font, int max_width) const; |
58 | 58 |
59 // Rough percent complete. Returns -1 if the progress is unknown. | |
60 int PercentComplete() const; | |
61 | |
62 // Get the warning text to display for a dangerous download. The |base_width| | 59 // Get the warning text to display for a dangerous download. The |base_width| |
63 // is the maximum width of an embedded filename (if there is one). The metrics | 60 // is the maximum width of an embedded filename (if there is one). The metrics |
64 // for the filename will be based on |font|. Should only be called if | 61 // for the filename will be based on |font|. Should only be called if |
65 // IsDangerous() is true. | 62 // IsDangerous() is true. |
66 string16 GetWarningText(const gfx::Font& font, int base_width) const; | 63 string16 GetWarningText(const gfx::Font& font, int base_width) const; |
67 | 64 |
68 // Get the caption text for a button for confirming a dangerous download | 65 // Get the caption text for a button for confirming a dangerous download |
69 // warning. | 66 // warning. |
70 string16 GetWarningConfirmButtonText() const; | 67 string16 GetWarningConfirmButtonText() const; |
71 | 68 |
| 69 // Get the number of bytes that has completed so far. Virtual for testing. |
| 70 int64 GetCompletedBytes() const; |
| 71 |
| 72 // Get the total number of bytes for this download. Should return 0 if the |
| 73 // total size of the download is not known. Virual for testing. |
| 74 int64 GetTotalBytes() const; |
| 75 |
| 76 // Rough percent complete. Returns -1 if the progress is unknown. |
| 77 int PercentComplete() const; |
| 78 |
| 79 // Is this considered a dangerous download? |
| 80 bool IsDangerous() const; |
| 81 |
72 // Is this considered a malicious download? Implies IsDangerous(). | 82 // Is this considered a malicious download? Implies IsDangerous(). |
73 bool IsMalicious() const; | 83 bool IsMalicious() const; |
74 | 84 |
75 // Is this considered a dangerous download? | 85 // Returns |true| if this download should be displayed in the downloads shelf. |
76 bool IsDangerous() const; | 86 bool ShouldShowInShelf() const; |
77 | 87 |
78 // Get the total number of bytes for this download. Should return 0 if the | 88 // Change whether the download should be displayed on the downloads |
79 // total size of the download is not known. Virual for testing. | 89 // shelf. Setting this is only effective if the download hasn't already been |
80 virtual int64 GetTotalBytes() const; | 90 // displayed in the shelf. |
81 | 91 void SetShouldShowInShelf(bool should_show); |
82 // Get the number of bytes that has completed so far. Virtual for testing. | |
83 virtual int64 GetCompletedBytes() const; | |
84 | 92 |
85 content::DownloadItem* download() { return download_; } | 93 content::DownloadItem* download() { return download_; } |
86 | 94 |
87 private: | 95 private: |
88 // Returns a string representations of the current download progress sizes. If | 96 // Returns a string representations of the current download progress sizes. If |
89 // the total size of the download is known, this string looks like: "100/200 | 97 // the total size of the download is known, this string looks like: "100/200 |
90 // MB" where the numerator is the transferred size and the denominator is the | 98 // MB" where the numerator is the transferred size and the denominator is the |
91 // total size. If the total isn't known, returns the transferred size as a | 99 // total size. If the total isn't known, returns the transferred size as a |
92 // string (e.g.: "100 MB"). | 100 // string (e.g.: "100 MB"). |
93 string16 GetProgressSizesString() const; | 101 string16 GetProgressSizesString() const; |
94 | 102 |
95 // Returns a string indicating the status of an in-progress download. | 103 // Returns a string indicating the status of an in-progress download. |
96 string16 GetInProgressStatusString() const; | 104 string16 GetInProgressStatusString() const; |
97 | 105 |
98 // The DownloadItem that this model represents. Note that DownloadItemModel | 106 // The DownloadItem that this model represents. Note that DownloadItemModel |
99 // itself shouldn't maintain any state since there can be more than one | 107 // itself shouldn't maintain any state since there can be more than one |
100 // DownloadItemModel in use with the same DownloadItem. | 108 // DownloadItemModel in use with the same DownloadItem. |
101 content::DownloadItem* download_; | 109 content::DownloadItem* download_; |
102 | 110 |
103 DISALLOW_COPY_AND_ASSIGN(DownloadItemModel); | 111 DISALLOW_COPY_AND_ASSIGN(DownloadItemModel); |
104 }; | 112 }; |
105 | 113 |
106 #endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_MODEL_H_ | 114 #endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_MODEL_H_ |
OLD | NEW |