Index: chrome/browser/download/download_util.cc |
diff --git a/chrome/browser/download/download_util.cc b/chrome/browser/download/download_util.cc |
index d043c220ea4448b0692e9e4435522888d81c84a7..3c8b59d017796e061383970319bca085eb990725 100644 |
--- a/chrome/browser/download/download_util.cc |
+++ b/chrome/browser/download/download_util.cc |
@@ -75,6 +75,21 @@ |
namespace { |
+// Key used to attach ShowInShelfData to a DownloadItem. |
+const char kShowInShelfKey[] = "chrome.download_util.show_in_shelf"; |
+ |
+// Class that tracks the "show in download shelf" setting for a download item. |
+class ShowInShelfData : public base::SupportsUserData::Data { |
+ public: |
+ explicit ShowInShelfData(bool should_show) : should_show_(should_show) { |
+ } |
+ |
+ bool should_show() const { return should_show_; } |
+ |
+ private: |
+ const bool should_show_; |
+}; |
+ |
// Get the opacity based on |animation_progress|, with values in [0.0, 1.0]. |
// Range of return value is [0, 255]. |
int GetOpacity(double animation_progress) { |
@@ -480,4 +495,14 @@ void RecordDownloadSource(ChromeDownloadSource source) { |
"Download.SourcesChrome", source, CHROME_DOWNLOAD_SOURCE_LAST_ENTRY); |
} |
+bool ShouldShowInShelf(content::DownloadItem* item) { |
+ ShowInShelfData* data = |
+ static_cast<ShowInShelfData*>(item->GetUserData(kShowInShelfKey)); |
+ return !data || data->should_show(); |
+} |
+ |
+void SetShouldShowInShelf(content::DownloadItem* item, bool should_show) { |
+ item->SetUserData(kShowInShelfKey, new ShowInShelfData(should_show)); |
+} |
+ |
} // namespace download_util |