| Index: chrome/browser/download/download_item_model.cc | 
| diff --git a/chrome/browser/download/download_item_model.cc b/chrome/browser/download/download_item_model.cc | 
| index 51ff68dd164c68d76a968a693b490020031937d6..fa77b223c41a2547325dd94323e9cec3d91b1983 100644 | 
| --- a/chrome/browser/download/download_item_model.cc | 
| +++ b/chrome/browser/download/download_item_model.cc | 
| @@ -70,6 +70,9 @@ class DownloadItemModelData : public base::SupportsUserData::Data { | 
| // Whether the download is currently being revived. | 
| bool is_being_revived_; | 
|  | 
| +  // Whether download was opened or shown in the shell. | 
| +  bool opened_or_shown_; | 
| + | 
| private: | 
| DownloadItemModelData(); | 
| ~DownloadItemModelData() override {} | 
| @@ -103,7 +106,8 @@ DownloadItemModelData::DownloadItemModelData() | 
| was_ui_notified_(false), | 
| should_prefer_opening_in_browser_(false), | 
| danger_level_(DownloadFileType::NOT_DANGEROUS), | 
| -      is_being_revived_(false) {} | 
| +      is_being_revived_(false), | 
| +      opened_or_shown_(false) {} | 
|  | 
| base::string16 InterruptReasonStatusMessage( | 
| content::DownloadInterruptReason reason) { | 
| @@ -659,6 +663,16 @@ void DownloadItemModel::SetIsBeingRevived(bool is_being_revived) { | 
| data->is_being_revived_ = is_being_revived; | 
| } | 
|  | 
| +bool DownloadItemModel::GetOpenedOrShown() const { | 
| +  const DownloadItemModelData* data = DownloadItemModelData::Get(download_); | 
| +  return download_->GetOpened() || (data && data->opened_or_shown_); | 
| +} | 
| + | 
| +void DownloadItemModel::SetOpenedOrShown(bool opened_or_shown) { | 
| +  DownloadItemModelData* data = DownloadItemModelData::GetOrCreate(download_); | 
| +  data->opened_or_shown_ = opened_or_shown; | 
| +} | 
| + | 
| base::string16 DownloadItemModel::GetProgressSizesString() const { | 
| base::string16 size_ratio; | 
| int64_t size = GetCompletedBytes(); | 
|  |