[email protected] | adc8e85 | 2012-01-29 08:58:22 | [diff] [blame] | 1 | // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
[email protected] | bcef0dc0 | 2009-02-28 00:35:02 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
[email protected] | 0f6bf7f | 2011-05-19 23:03:39 | [diff] [blame] | 5 | #include "chrome/browser/download/download_shelf_context_menu.h" |
[email protected] | bcef0dc0 | 2009-02-28 00:35:02 | [diff] [blame] | 6 | |
avi | e4d7b6f | 2015-12-26 00:59:18 | [diff] [blame] | 7 | #include "build/build_config.h" |
Daniel Rubery | 4f3ca7c4 | 2020-01-08 23:36:32 | [diff] [blame] | 8 | #include "chrome/browser/download/download_commands.h" |
[email protected] | af39f00 | 2014-08-22 10:18:18 | [diff] [blame] | 9 | #include "chrome/grit/generated_resources.h" |
Daniel Rubery | d9604dc7 | 2019-10-16 05:54:38 | [diff] [blame] | 10 | #include "components/download/public/common/download_danger_type.h" |
asanka | dc5a2994 | 2015-12-19 04:45:39 | [diff] [blame] | 11 | #include "content/public/common/content_features.h" |
[email protected] | e4452d3 | 2013-11-15 23:07:41 | [diff] [blame] | 12 | #include "extensions/common/extension.h" |
[email protected] | c051a1b | 2011-01-21 23:30:17 | [diff] [blame] | 13 | #include "ui/base/l10n/l10n_util.h" |
Daniel Rubery | 4f3ca7c4 | 2020-01-08 23:36:32 | [diff] [blame] | 14 | #include "ui/base/models/simple_menu_model.h" |
[email protected] | bcef0dc0 | 2009-02-28 00:35:02 | [diff] [blame] | 15 | |
[email protected] | 6abda2be | 2014-07-03 05:49:07 | [diff] [blame] | 16 | #if defined(OS_WIN) |
| 17 | #include "chrome/browser/ui/pdf/adobe_reader_info_win.h" |
| 18 | #endif |
| 19 | |
Joe DeBlasio | 449db40 | 2020-01-28 00:01:51 | [diff] [blame] | 20 | using MixedContentStatus = download::DownloadItem::MixedContentStatus; |
| 21 | |
Sidney San Martín | 620b249 | 2018-03-23 20:02:11 | [diff] [blame] | 22 | bool DownloadShelfContextMenu::WantsContextMenu( |
Shakti Sahu | ab33e9f | 2018-09-20 02:43:38 | [diff] [blame] | 23 | DownloadUIModel* download_model) { |
Joe DeBlasio | 449db40 | 2020-01-28 00:01:51 | [diff] [blame] | 24 | return !download_model->IsDangerous() || download_model->MightBeMalicious() || |
| 25 | download_model->IsMixedContent(); |
Sidney San Martín | 620b249 | 2018-03-23 20:02:11 | [diff] [blame] | 26 | } |
| 27 | |
[email protected] | 41b0021 | 2013-01-08 18:27:29 | [diff] [blame] | 28 | DownloadShelfContextMenu::~DownloadShelfContextMenu() { |
| 29 | DetachFromDownloadItem(); |
| 30 | } |
[email protected] | 8e3a815d | 2009-03-06 00:43:44 | [diff] [blame] | 31 | |
Shakti Sahu | ab33e9f | 2018-09-20 02:43:38 | [diff] [blame] | 32 | DownloadShelfContextMenu::DownloadShelfContextMenu(DownloadUIModel* download) |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 33 | : download_(download), download_commands_(new DownloadCommands(download_)) { |
Shakti Sahu | ab33e9f | 2018-09-20 02:43:38 | [diff] [blame] | 34 | DCHECK(download_); |
| 35 | download_->AddObserver(this); |
[email protected] | 546176c | 2010-02-25 21:52:52 | [diff] [blame] | 36 | } |
| 37 | |
[email protected] | 93af265d | 2011-05-23 12:54:54 | [diff] [blame] | 38 | ui::SimpleMenuModel* DownloadShelfContextMenu::GetMenuModel() { |
[email protected] | 687503b | 2011-12-05 03:10:33 | [diff] [blame] | 39 | ui::SimpleMenuModel* model = NULL; |
[email protected] | 41b0021 | 2013-01-08 18:27:29 | [diff] [blame] | 40 | |
Shakti Sahu | ab33e9f | 2018-09-20 02:43:38 | [diff] [blame] | 41 | if (!download_) |
[email protected] | 41b0021 | 2013-01-08 18:27:29 | [diff] [blame] | 42 | return NULL; |
| 43 | |
Shakti Sahu | ab33e9f | 2018-09-20 02:43:38 | [diff] [blame] | 44 | DCHECK(WantsContextMenu(download_)); |
Sidney San Martín | 620b249 | 2018-03-23 20:02:11 | [diff] [blame] | 45 | |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 46 | bool is_download = download_->download() != nullptr; |
| 47 | |
Joe DeBlasio | 449db40 | 2020-01-28 00:01:51 | [diff] [blame] | 48 | if (download_->IsMixedContent()) { |
| 49 | model = GetMixedContentDownloadMenuModel(); |
| 50 | } else if (download_->GetDangerType() == |
| 51 | download::DOWNLOAD_DANGER_TYPE_BLOCKED_PASSWORD_PROTECTED || |
| 52 | download_->GetDangerType() == |
| 53 | download::DOWNLOAD_DANGER_TYPE_BLOCKED_TOO_LARGE || |
| 54 | download_->GetDangerType() == |
| 55 | download::DOWNLOAD_DANGER_TYPE_SENSITIVE_CONTENT_BLOCK) { |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 56 | model = GetInterruptedMenuModel(is_download); |
Daniel Rubery | 4f3ca7c4 | 2020-01-08 23:36:32 | [diff] [blame] | 57 | } else if (download_->GetDangerType() == |
| 58 | download::DOWNLOAD_DANGER_TYPE_PROMPT_FOR_SCANNING) { |
| 59 | model = GetDeepScanningMenuModel(is_download); |
Daniel Rubery | d9604dc7 | 2019-10-16 05:54:38 | [diff] [blame] | 60 | } else if (download_->IsMalicious()) { |
| 61 | model = GetMaliciousMenuModel(is_download); |
| 62 | } else if (download_->MightBeMalicious()) { |
| 63 | model = GetMaybeMaliciousMenuModel(is_download); |
| 64 | } else if (download_->GetState() == download::DownloadItem::COMPLETE) { |
| 65 | model = GetFinishedMenuModel(is_download); |
| 66 | } else if (download_->GetState() == download::DownloadItem::INTERRUPTED) { |
| 67 | model = GetInterruptedMenuModel(is_download); |
| 68 | } else if (download_->IsPaused()) { |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 69 | model = GetInProgressPausedMenuModel(is_download); |
Daniel Rubery | d9604dc7 | 2019-10-16 05:54:38 | [diff] [blame] | 70 | } else { |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 71 | model = GetInProgressMenuModel(is_download); |
Daniel Rubery | d9604dc7 | 2019-10-16 05:54:38 | [diff] [blame] | 72 | } |
| 73 | |
[email protected] | 687503b | 2011-12-05 03:10:33 | [diff] [blame] | 74 | return model; |
[email protected] | 84e5cdd9 | 2010-02-19 21:47:34 | [diff] [blame] | 75 | } |
[email protected] | 0f6bf7f | 2011-05-19 23:03:39 | [diff] [blame] | 76 | |
| 77 | bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const { |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 78 | if (!download_commands_) |
[email protected] | 41b0021 | 2013-01-08 18:27:29 | [diff] [blame] | 79 | return false; |
| 80 | |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 81 | return download_commands_->IsCommandEnabled( |
| 82 | static_cast<DownloadCommands::Command>(command_id)); |
[email protected] | 0f6bf7f | 2011-05-19 23:03:39 | [diff] [blame] | 83 | } |
| 84 | |
| 85 | bool DownloadShelfContextMenu::IsCommandIdChecked(int command_id) const { |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 86 | if (!download_commands_) |
[email protected] | 41b0021 | 2013-01-08 18:27:29 | [diff] [blame] | 87 | return false; |
| 88 | |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 89 | return download_commands_->IsCommandChecked( |
| 90 | static_cast<DownloadCommands::Command>(command_id)); |
[email protected] | 0f6bf7f | 2011-05-19 23:03:39 | [diff] [blame] | 91 | } |
| 92 | |
[email protected] | 6abda2be | 2014-07-03 05:49:07 | [diff] [blame] | 93 | bool DownloadShelfContextMenu::IsCommandIdVisible(int command_id) const { |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 94 | if (!download_commands_) |
[email protected] | 6abda2be | 2014-07-03 05:49:07 | [diff] [blame] | 95 | return false; |
| 96 | |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 97 | return download_commands_->IsCommandVisible( |
| 98 | static_cast<DownloadCommands::Command>(command_id)); |
[email protected] | 6abda2be | 2014-07-03 05:49:07 | [diff] [blame] | 99 | } |
| 100 | |
[email protected] | 96bf34e | 2013-03-13 04:22:14 | [diff] [blame] | 101 | void DownloadShelfContextMenu::ExecuteCommand(int command_id, int event_flags) { |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 102 | if (!download_commands_) |
[email protected] | 41b0021 | 2013-01-08 18:27:29 | [diff] [blame] | 103 | return; |
| 104 | |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 105 | download_commands_->ExecuteCommand( |
| 106 | static_cast<DownloadCommands::Command>(command_id)); |
[email protected] | 0f6bf7f | 2011-05-19 23:03:39 | [diff] [blame] | 107 | } |
| 108 | |
[email protected] | 0f6bf7f | 2011-05-19 23:03:39 | [diff] [blame] | 109 | bool DownloadShelfContextMenu::IsItemForCommandIdDynamic(int command_id) const { |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 110 | return false; |
[email protected] | 0f6bf7f | 2011-05-19 23:03:39 | [diff] [blame] | 111 | } |
| 112 | |
[email protected] | 9692015 | 2013-12-04 21:00:16 | [diff] [blame] | 113 | base::string16 DownloadShelfContextMenu::GetLabelForCommandId( |
| 114 | int command_id) const { |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 115 | int id = -1; |
| 116 | |
| 117 | switch (static_cast<DownloadCommands::Command>(command_id)) { |
| 118 | case DownloadCommands::OPEN_WHEN_COMPLETE: |
Shakti Sahu | ab33e9f | 2018-09-20 02:43:38 | [diff] [blame] | 119 | if (download_ && !download_->IsDone()) |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 120 | id = IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE; |
| 121 | else |
| 122 | id = IDS_DOWNLOAD_MENU_OPEN; |
| 123 | break; |
| 124 | case DownloadCommands::PAUSE: |
| 125 | id = IDS_DOWNLOAD_MENU_PAUSE_ITEM; |
| 126 | break; |
| 127 | case DownloadCommands::RESUME: |
| 128 | id = IDS_DOWNLOAD_MENU_RESUME_ITEM; |
| 129 | break; |
| 130 | case DownloadCommands::SHOW_IN_FOLDER: |
| 131 | id = IDS_DOWNLOAD_MENU_SHOW; |
| 132 | break; |
| 133 | case DownloadCommands::DISCARD: |
| 134 | id = IDS_DOWNLOAD_MENU_DISCARD; |
| 135 | break; |
| 136 | case DownloadCommands::KEEP: |
| 137 | id = IDS_DOWNLOAD_MENU_KEEP; |
| 138 | break; |
| 139 | case DownloadCommands::ALWAYS_OPEN_TYPE: { |
| 140 | if (download_commands_) { |
| 141 | bool can_open_pdf_in_system_viewer = |
| 142 | download_commands_->CanOpenPdfInSystemViewer(); |
| 143 | #if defined(OS_WIN) |
| 144 | if (can_open_pdf_in_system_viewer) { |
| 145 | id = IsAdobeReaderDefaultPDFViewer() |
| 146 | ? IDS_DOWNLOAD_MENU_ALWAYS_OPEN_PDF_IN_READER |
| 147 | : IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS; |
| 148 | break; |
| 149 | } |
| 150 | #elif defined(OS_MACOSX) || defined(OS_LINUX) |
| 151 | if (can_open_pdf_in_system_viewer) { |
| 152 | id = IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS; |
| 153 | break; |
| 154 | } |
| 155 | #endif |
| 156 | } |
| 157 | id = IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE; |
| 158 | break; |
| 159 | } |
| 160 | case DownloadCommands::PLATFORM_OPEN: |
| 161 | id = IDS_DOWNLOAD_MENU_PLATFORM_OPEN; |
| 162 | break; |
| 163 | case DownloadCommands::CANCEL: |
| 164 | id = IDS_DOWNLOAD_MENU_CANCEL; |
| 165 | break; |
| 166 | case DownloadCommands::LEARN_MORE_SCANNING: |
| 167 | id = IDS_DOWNLOAD_MENU_LEARN_MORE_SCANNING; |
| 168 | break; |
| 169 | case DownloadCommands::LEARN_MORE_INTERRUPTED: |
| 170 | id = IDS_DOWNLOAD_MENU_LEARN_MORE_INTERRUPTED; |
| 171 | break; |
Joe DeBlasio | 449db40 | 2020-01-28 00:01:51 | [diff] [blame] | 172 | case DownloadCommands::LEARN_MORE_MIXED_CONTENT: |
| 173 | id = IDS_DOWNLOAD_MENU_LEARN_MORE_MIXED_CONTENT; |
| 174 | break; |
yoshiki | 3961fb44 | 2015-12-17 21:58:23 | [diff] [blame] | 175 | case DownloadCommands::COPY_TO_CLIPBOARD: |
derat | 51d9755 | 2016-08-09 15:12:30 | [diff] [blame] | 176 | case DownloadCommands::ANNOTATE: |
| 177 | // These commands are implemented only for the Download notification. |
yoshiki | 3961fb44 | 2015-12-17 21:58:23 | [diff] [blame] | 178 | NOTREACHED(); |
| 179 | break; |
Daniel Rubery | 4f3ca7c4 | 2020-01-08 23:36:32 | [diff] [blame] | 180 | case DownloadCommands::DEEP_SCAN: |
| 181 | id = IDS_DOWNLOAD_MENU_DEEP_SCAN; |
| 182 | break; |
Daniel Rubery | 2394782 | 2020-01-16 22:06:05 | [diff] [blame] | 183 | case DownloadCommands::BYPASS_DEEP_SCANNING: |
| 184 | id = IDS_OPEN_DOWNLOAD_NOW; |
| 185 | break; |
[email protected] | 0f6bf7f | 2011-05-19 23:03:39 | [diff] [blame] | 186 | } |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 187 | CHECK(id != -1); |
| 188 | return l10n_util::GetStringUTF16(id); |
[email protected] | 0f6bf7f | 2011-05-19 23:03:39 | [diff] [blame] | 189 | } |
[email protected] | 93af265d | 2011-05-23 12:54:54 | [diff] [blame] | 190 | |
[email protected] | 41b0021 | 2013-01-08 18:27:29 | [diff] [blame] | 191 | void DownloadShelfContextMenu::DetachFromDownloadItem() { |
Shakti Sahu | ab33e9f | 2018-09-20 02:43:38 | [diff] [blame] | 192 | if (!download_) |
[email protected] | 41b0021 | 2013-01-08 18:27:29 | [diff] [blame] | 193 | return; |
| 194 | |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 195 | download_commands_.reset(); |
Shakti Sahu | ab33e9f | 2018-09-20 02:43:38 | [diff] [blame] | 196 | download_->RemoveObserver(this); |
| 197 | download_ = NULL; |
[email protected] | 41b0021 | 2013-01-08 18:27:29 | [diff] [blame] | 198 | } |
| 199 | |
Shakti Sahu | ab33e9f | 2018-09-20 02:43:38 | [diff] [blame] | 200 | void DownloadShelfContextMenu::OnDownloadDestroyed() { |
[email protected] | 41b0021 | 2013-01-08 18:27:29 | [diff] [blame] | 201 | DetachFromDownloadItem(); |
| 202 | } |
| 203 | |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 204 | ui::SimpleMenuModel* DownloadShelfContextMenu::GetInProgressMenuModel( |
| 205 | bool is_download) { |
[email protected] | 66f2b0ee | 2013-05-08 17:51:25 | [diff] [blame] | 206 | if (in_progress_download_menu_model_) |
[email protected] | 93af265d | 2011-05-23 12:54:54 | [diff] [blame] | 207 | return in_progress_download_menu_model_.get(); |
| 208 | |
| 209 | in_progress_download_menu_model_.reset(new ui::SimpleMenuModel(this)); |
| 210 | |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 211 | if (is_download) { |
| 212 | in_progress_download_menu_model_->AddCheckItem( |
| 213 | DownloadCommands::OPEN_WHEN_COMPLETE, |
| 214 | GetLabelForCommandId(DownloadCommands::OPEN_WHEN_COMPLETE)); |
| 215 | in_progress_download_menu_model_->AddCheckItem( |
| 216 | DownloadCommands::ALWAYS_OPEN_TYPE, |
| 217 | GetLabelForCommandId(DownloadCommands::ALWAYS_OPEN_TYPE)); |
| 218 | in_progress_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); |
| 219 | } |
| 220 | |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 221 | in_progress_download_menu_model_->AddItem( |
| 222 | DownloadCommands::PAUSE, GetLabelForCommandId(DownloadCommands::PAUSE)); |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 223 | |
| 224 | if (is_download) { |
| 225 | in_progress_download_menu_model_->AddItem( |
| 226 | DownloadCommands::SHOW_IN_FOLDER, |
| 227 | GetLabelForCommandId(DownloadCommands::SHOW_IN_FOLDER)); |
| 228 | } |
| 229 | |
[email protected] | 3e59af4 | 2012-08-24 04:29:10 | [diff] [blame] | 230 | in_progress_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 231 | in_progress_download_menu_model_->AddItem( |
| 232 | DownloadCommands::CANCEL, GetLabelForCommandId(DownloadCommands::CANCEL)); |
[email protected] | 93af265d | 2011-05-23 12:54:54 | [diff] [blame] | 233 | |
| 234 | return in_progress_download_menu_model_.get(); |
| 235 | } |
| 236 | |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 237 | ui::SimpleMenuModel* DownloadShelfContextMenu::GetInProgressPausedMenuModel( |
| 238 | bool is_download) { |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 239 | if (in_progress_download_paused_menu_model_) |
| 240 | return in_progress_download_paused_menu_model_.get(); |
| 241 | |
| 242 | in_progress_download_paused_menu_model_.reset(new ui::SimpleMenuModel(this)); |
| 243 | |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 244 | if (is_download) { |
| 245 | in_progress_download_paused_menu_model_->AddCheckItem( |
| 246 | DownloadCommands::OPEN_WHEN_COMPLETE, |
| 247 | GetLabelForCommandId(DownloadCommands::OPEN_WHEN_COMPLETE)); |
| 248 | in_progress_download_paused_menu_model_->AddCheckItem( |
| 249 | DownloadCommands::ALWAYS_OPEN_TYPE, |
| 250 | GetLabelForCommandId(DownloadCommands::ALWAYS_OPEN_TYPE)); |
| 251 | in_progress_download_paused_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); |
| 252 | } |
| 253 | |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 254 | in_progress_download_paused_menu_model_->AddItem( |
| 255 | DownloadCommands::RESUME, GetLabelForCommandId(DownloadCommands::RESUME)); |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 256 | |
| 257 | if (is_download) { |
| 258 | in_progress_download_paused_menu_model_->AddItem( |
| 259 | DownloadCommands::SHOW_IN_FOLDER, |
| 260 | GetLabelForCommandId(DownloadCommands::SHOW_IN_FOLDER)); |
| 261 | } |
| 262 | |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 263 | in_progress_download_paused_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); |
| 264 | in_progress_download_paused_menu_model_->AddItem( |
| 265 | DownloadCommands::CANCEL, GetLabelForCommandId(DownloadCommands::CANCEL)); |
| 266 | |
| 267 | return in_progress_download_paused_menu_model_.get(); |
| 268 | } |
| 269 | |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 270 | ui::SimpleMenuModel* DownloadShelfContextMenu::GetFinishedMenuModel( |
| 271 | bool is_download) { |
[email protected] | 66f2b0ee | 2013-05-08 17:51:25 | [diff] [blame] | 272 | if (finished_download_menu_model_) |
[email protected] | 93af265d | 2011-05-23 12:54:54 | [diff] [blame] | 273 | return finished_download_menu_model_.get(); |
| 274 | |
| 275 | finished_download_menu_model_.reset(new ui::SimpleMenuModel(this)); |
| 276 | |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 277 | if (is_download) { |
| 278 | finished_download_menu_model_->AddItem( |
| 279 | DownloadCommands::OPEN_WHEN_COMPLETE, |
| 280 | GetLabelForCommandId(DownloadCommands::OPEN_WHEN_COMPLETE)); |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 281 | } |
| 282 | |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 283 | finished_download_menu_model_->AddItem( |
| 284 | DownloadCommands::PLATFORM_OPEN, |
| 285 | GetLabelForCommandId(DownloadCommands::PLATFORM_OPEN)); |
Xing Liu | fcdb2fa | 2019-10-24 18:17:25 | [diff] [blame] | 286 | |
| 287 | if (is_download) { |
| 288 | finished_download_menu_model_->AddCheckItem( |
| 289 | DownloadCommands::ALWAYS_OPEN_TYPE, |
| 290 | GetLabelForCommandId(DownloadCommands::ALWAYS_OPEN_TYPE)); |
| 291 | } |
[email protected] | 3e59af4 | 2012-08-24 04:29:10 | [diff] [blame] | 292 | finished_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 293 | |
| 294 | if (is_download) { |
| 295 | finished_download_menu_model_->AddItem( |
| 296 | DownloadCommands::SHOW_IN_FOLDER, |
| 297 | GetLabelForCommandId(DownloadCommands::SHOW_IN_FOLDER)); |
| 298 | finished_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); |
| 299 | } |
| 300 | |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 301 | finished_download_menu_model_->AddItem( |
| 302 | DownloadCommands::CANCEL, GetLabelForCommandId(DownloadCommands::CANCEL)); |
[email protected] | 93af265d | 2011-05-23 12:54:54 | [diff] [blame] | 303 | |
| 304 | return finished_download_menu_model_.get(); |
| 305 | } |
[email protected] | 687503b | 2011-12-05 03:10:33 | [diff] [blame] | 306 | |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 307 | ui::SimpleMenuModel* DownloadShelfContextMenu::GetInterruptedMenuModel( |
| 308 | bool is_download) { |
[email protected] | 66f2b0ee | 2013-05-08 17:51:25 | [diff] [blame] | 309 | if (interrupted_download_menu_model_) |
[email protected] | 85f9f951 | 2012-12-17 20:53:14 | [diff] [blame] | 310 | return interrupted_download_menu_model_.get(); |
| 311 | |
| 312 | interrupted_download_menu_model_.reset(new ui::SimpleMenuModel(this)); |
| 313 | |
asanka | fac8aa8 | 2016-06-08 00:41:18 | [diff] [blame] | 314 | interrupted_download_menu_model_->AddItem( |
| 315 | DownloadCommands::RESUME, GetLabelForCommandId(DownloadCommands::RESUME)); |
[email protected] | 75901213 | 2013-06-07 04:55:19 | [diff] [blame] | 316 | #if defined(OS_WIN) |
| 317 | // The Help Center article is currently Windows specific. |
| 318 | // TODO(asanka): Enable this for other platforms when the article is expanded |
| 319 | // for other platforms. |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 320 | interrupted_download_menu_model_->AddItem( |
| 321 | DownloadCommands::LEARN_MORE_INTERRUPTED, |
| 322 | GetLabelForCommandId(DownloadCommands::LEARN_MORE_INTERRUPTED)); |
[email protected] | 75901213 | 2013-06-07 04:55:19 | [diff] [blame] | 323 | #endif |
asanka | fac8aa8 | 2016-06-08 00:41:18 | [diff] [blame] | 324 | interrupted_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); |
| 325 | interrupted_download_menu_model_->AddItem( |
| 326 | DownloadCommands::CANCEL, GetLabelForCommandId(DownloadCommands::CANCEL)); |
[email protected] | 85f9f951 | 2012-12-17 20:53:14 | [diff] [blame] | 327 | |
| 328 | return interrupted_download_menu_model_.get(); |
[email protected] | 85f9f951 | 2012-12-17 20:53:14 | [diff] [blame] | 329 | } |
| 330 | |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 331 | ui::SimpleMenuModel* DownloadShelfContextMenu::GetMaybeMaliciousMenuModel( |
| 332 | bool is_download) { |
[email protected] | 6f897df | 2013-10-17 10:53:56 | [diff] [blame] | 333 | if (maybe_malicious_download_menu_model_) |
| 334 | return maybe_malicious_download_menu_model_.get(); |
| 335 | |
| 336 | maybe_malicious_download_menu_model_.reset(new ui::SimpleMenuModel(this)); |
| 337 | |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 338 | maybe_malicious_download_menu_model_->AddItem( |
| 339 | DownloadCommands::KEEP, GetLabelForCommandId(DownloadCommands::KEEP)); |
[email protected] | 6f897df | 2013-10-17 10:53:56 | [diff] [blame] | 340 | maybe_malicious_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 341 | maybe_malicious_download_menu_model_->AddItem( |
| 342 | DownloadCommands::LEARN_MORE_SCANNING, |
| 343 | GetLabelForCommandId(DownloadCommands::LEARN_MORE_SCANNING)); |
[email protected] | 6f897df | 2013-10-17 10:53:56 | [diff] [blame] | 344 | return maybe_malicious_download_menu_model_.get(); |
| 345 | } |
| 346 | |
Shakti Sahu | 31f9fa1 | 2018-09-21 20:53:58 | [diff] [blame] | 347 | ui::SimpleMenuModel* DownloadShelfContextMenu::GetMaliciousMenuModel( |
| 348 | bool is_download) { |
[email protected] | 66f2b0ee | 2013-05-08 17:51:25 | [diff] [blame] | 349 | if (malicious_download_menu_model_) |
[email protected] | 687503b | 2011-12-05 03:10:33 | [diff] [blame] | 350 | return malicious_download_menu_model_.get(); |
| 351 | |
| 352 | malicious_download_menu_model_.reset(new ui::SimpleMenuModel(this)); |
yoshiki | f42d8fc | 2015-03-04 20:07:50 | [diff] [blame] | 353 | malicious_download_menu_model_->AddItem( |
| 354 | DownloadCommands::LEARN_MORE_SCANNING, |
| 355 | GetLabelForCommandId(DownloadCommands::LEARN_MORE_SCANNING)); |
[email protected] | 687503b | 2011-12-05 03:10:33 | [diff] [blame] | 356 | |
| 357 | return malicious_download_menu_model_.get(); |
| 358 | } |
Daniel Rubery | 4f3ca7c4 | 2020-01-08 23:36:32 | [diff] [blame] | 359 | |
| 360 | ui::SimpleMenuModel* DownloadShelfContextMenu::GetDeepScanningMenuModel( |
| 361 | bool is_download) { |
| 362 | if (deep_scanning_menu_model_) |
| 363 | return deep_scanning_menu_model_.get(); |
| 364 | |
| 365 | deep_scanning_menu_model_.reset(new ui::SimpleMenuModel(this)); |
| 366 | deep_scanning_menu_model_->AddItem( |
| 367 | DownloadCommands::DEEP_SCAN, |
| 368 | GetLabelForCommandId(DownloadCommands::DEEP_SCAN)); |
| 369 | |
| 370 | deep_scanning_menu_model_->AddItem( |
| 371 | DownloadCommands::DISCARD, |
| 372 | GetLabelForCommandId(DownloadCommands::DISCARD)); |
| 373 | |
| 374 | deep_scanning_menu_model_->AddItem( |
Daniel Rubery | 2394782 | 2020-01-16 22:06:05 | [diff] [blame] | 375 | DownloadCommands::BYPASS_DEEP_SCANNING, |
| 376 | GetLabelForCommandId(DownloadCommands::BYPASS_DEEP_SCANNING)); |
Daniel Rubery | 4f3ca7c4 | 2020-01-08 23:36:32 | [diff] [blame] | 377 | |
| 378 | deep_scanning_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); |
| 379 | |
| 380 | if (is_download) { |
| 381 | deep_scanning_menu_model_->AddItem( |
| 382 | DownloadCommands::SHOW_IN_FOLDER, |
| 383 | GetLabelForCommandId(DownloadCommands::SHOW_IN_FOLDER)); |
| 384 | deep_scanning_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); |
| 385 | } |
| 386 | |
| 387 | deep_scanning_menu_model_->AddItem( |
| 388 | DownloadCommands::CANCEL, GetLabelForCommandId(DownloadCommands::CANCEL)); |
| 389 | |
| 390 | return deep_scanning_menu_model_.get(); |
| 391 | } |
Joe DeBlasio | 449db40 | 2020-01-28 00:01:51 | [diff] [blame] | 392 | |
| 393 | ui::SimpleMenuModel* |
| 394 | DownloadShelfContextMenu::GetMixedContentDownloadMenuModel() { |
| 395 | if (mixed_content_download_menu_model_) |
| 396 | return mixed_content_download_menu_model_.get(); |
| 397 | |
| 398 | mixed_content_download_menu_model_.reset(new ui::SimpleMenuModel(this)); |
| 399 | |
| 400 | if (download_->GetMixedContentStatus() == MixedContentStatus::WARN) { |
| 401 | mixed_content_download_menu_model_->AddItem( |
| 402 | DownloadCommands::DISCARD, |
| 403 | GetLabelForCommandId(DownloadCommands::DISCARD)); |
| 404 | } else { |
| 405 | mixed_content_download_menu_model_->AddItem( |
| 406 | DownloadCommands::KEEP, GetLabelForCommandId(DownloadCommands::KEEP)); |
| 407 | } |
| 408 | |
| 409 | mixed_content_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); |
| 410 | mixed_content_download_menu_model_->AddItem( |
| 411 | DownloadCommands::LEARN_MORE_MIXED_CONTENT, |
| 412 | GetLabelForCommandId(DownloadCommands::LEARN_MORE_MIXED_CONTENT)); |
| 413 | |
| 414 | return mixed_content_download_menu_model_.get(); |
| 415 | } |