blob: 499898e41946edda9f7ac240018877f4d57a0c09 [file] [log] [blame]
[email protected]adc8e852012-01-29 08:58:221// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]bcef0dc02009-02-28 00:35:022// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]0f6bf7f2011-05-19 23:03:395#include "chrome/browser/download/download_shelf_context_menu.h"
[email protected]bcef0dc02009-02-28 00:35:026
avie4d7b6f2015-12-26 00:59:187#include "build/build_config.h"
Daniel Rubery4f3ca7c42020-01-08 23:36:328#include "chrome/browser/download/download_commands.h"
[email protected]af39f002014-08-22 10:18:189#include "chrome/grit/generated_resources.h"
Daniel Ruberyd9604dc72019-10-16 05:54:3810#include "components/download/public/common/download_danger_type.h"
asankadc5a29942015-12-19 04:45:3911#include "content/public/common/content_features.h"
[email protected]e4452d32013-11-15 23:07:4112#include "extensions/common/extension.h"
[email protected]c051a1b2011-01-21 23:30:1713#include "ui/base/l10n/l10n_util.h"
Daniel Rubery4f3ca7c42020-01-08 23:36:3214#include "ui/base/models/simple_menu_model.h"
[email protected]bcef0dc02009-02-28 00:35:0215
[email protected]6abda2be2014-07-03 05:49:0716#if defined(OS_WIN)
17#include "chrome/browser/ui/pdf/adobe_reader_info_win.h"
18#endif
19
Joe DeBlasio449db402020-01-28 00:01:5120using MixedContentStatus = download::DownloadItem::MixedContentStatus;
21
Sidney San Martín620b2492018-03-23 20:02:1122bool DownloadShelfContextMenu::WantsContextMenu(
Shakti Sahuab33e9f2018-09-20 02:43:3823 DownloadUIModel* download_model) {
Joe DeBlasio449db402020-01-28 00:01:5124 return !download_model->IsDangerous() || download_model->MightBeMalicious() ||
25 download_model->IsMixedContent();
Sidney San Martín620b2492018-03-23 20:02:1126}
27
[email protected]41b00212013-01-08 18:27:2928DownloadShelfContextMenu::~DownloadShelfContextMenu() {
29 DetachFromDownloadItem();
30}
[email protected]8e3a815d2009-03-06 00:43:4431
Shakti Sahuab33e9f2018-09-20 02:43:3832DownloadShelfContextMenu::DownloadShelfContextMenu(DownloadUIModel* download)
Shakti Sahu31f9fa12018-09-21 20:53:5833 : download_(download), download_commands_(new DownloadCommands(download_)) {
Shakti Sahuab33e9f2018-09-20 02:43:3834 DCHECK(download_);
35 download_->AddObserver(this);
[email protected]546176c2010-02-25 21:52:5236}
37
[email protected]93af265d2011-05-23 12:54:5438ui::SimpleMenuModel* DownloadShelfContextMenu::GetMenuModel() {
[email protected]687503b2011-12-05 03:10:3339 ui::SimpleMenuModel* model = NULL;
[email protected]41b00212013-01-08 18:27:2940
Shakti Sahuab33e9f2018-09-20 02:43:3841 if (!download_)
[email protected]41b00212013-01-08 18:27:2942 return NULL;
43
Shakti Sahuab33e9f2018-09-20 02:43:3844 DCHECK(WantsContextMenu(download_));
Sidney San Martín620b2492018-03-23 20:02:1145
Shakti Sahu31f9fa12018-09-21 20:53:5846 bool is_download = download_->download() != nullptr;
47
Joe DeBlasio449db402020-01-28 00:01:5148 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 Sahu31f9fa12018-09-21 20:53:5856 model = GetInterruptedMenuModel(is_download);
Daniel Rubery4f3ca7c42020-01-08 23:36:3257 } else if (download_->GetDangerType() ==
58 download::DOWNLOAD_DANGER_TYPE_PROMPT_FOR_SCANNING) {
59 model = GetDeepScanningMenuModel(is_download);
Daniel Ruberyd9604dc72019-10-16 05:54:3860 } 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 Sahu31f9fa12018-09-21 20:53:5869 model = GetInProgressPausedMenuModel(is_download);
Daniel Ruberyd9604dc72019-10-16 05:54:3870 } else {
Shakti Sahu31f9fa12018-09-21 20:53:5871 model = GetInProgressMenuModel(is_download);
Daniel Ruberyd9604dc72019-10-16 05:54:3872 }
73
[email protected]687503b2011-12-05 03:10:3374 return model;
[email protected]84e5cdd92010-02-19 21:47:3475}
[email protected]0f6bf7f2011-05-19 23:03:3976
77bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const {
yoshikif42d8fc2015-03-04 20:07:5078 if (!download_commands_)
[email protected]41b00212013-01-08 18:27:2979 return false;
80
yoshikif42d8fc2015-03-04 20:07:5081 return download_commands_->IsCommandEnabled(
82 static_cast<DownloadCommands::Command>(command_id));
[email protected]0f6bf7f2011-05-19 23:03:3983}
84
85bool DownloadShelfContextMenu::IsCommandIdChecked(int command_id) const {
yoshikif42d8fc2015-03-04 20:07:5086 if (!download_commands_)
[email protected]41b00212013-01-08 18:27:2987 return false;
88
yoshikif42d8fc2015-03-04 20:07:5089 return download_commands_->IsCommandChecked(
90 static_cast<DownloadCommands::Command>(command_id));
[email protected]0f6bf7f2011-05-19 23:03:3991}
92
[email protected]6abda2be2014-07-03 05:49:0793bool DownloadShelfContextMenu::IsCommandIdVisible(int command_id) const {
yoshikif42d8fc2015-03-04 20:07:5094 if (!download_commands_)
[email protected]6abda2be2014-07-03 05:49:0795 return false;
96
yoshikif42d8fc2015-03-04 20:07:5097 return download_commands_->IsCommandVisible(
98 static_cast<DownloadCommands::Command>(command_id));
[email protected]6abda2be2014-07-03 05:49:0799}
100
[email protected]96bf34e2013-03-13 04:22:14101void DownloadShelfContextMenu::ExecuteCommand(int command_id, int event_flags) {
yoshikif42d8fc2015-03-04 20:07:50102 if (!download_commands_)
[email protected]41b00212013-01-08 18:27:29103 return;
104
yoshikif42d8fc2015-03-04 20:07:50105 download_commands_->ExecuteCommand(
106 static_cast<DownloadCommands::Command>(command_id));
[email protected]0f6bf7f2011-05-19 23:03:39107}
108
[email protected]0f6bf7f2011-05-19 23:03:39109bool DownloadShelfContextMenu::IsItemForCommandIdDynamic(int command_id) const {
yoshikif42d8fc2015-03-04 20:07:50110 return false;
[email protected]0f6bf7f2011-05-19 23:03:39111}
112
[email protected]96920152013-12-04 21:00:16113base::string16 DownloadShelfContextMenu::GetLabelForCommandId(
114 int command_id) const {
yoshikif42d8fc2015-03-04 20:07:50115 int id = -1;
116
117 switch (static_cast<DownloadCommands::Command>(command_id)) {
118 case DownloadCommands::OPEN_WHEN_COMPLETE:
Shakti Sahuab33e9f2018-09-20 02:43:38119 if (download_ && !download_->IsDone())
yoshikif42d8fc2015-03-04 20:07:50120 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 DeBlasio449db402020-01-28 00:01:51172 case DownloadCommands::LEARN_MORE_MIXED_CONTENT:
173 id = IDS_DOWNLOAD_MENU_LEARN_MORE_MIXED_CONTENT;
174 break;
yoshiki3961fb442015-12-17 21:58:23175 case DownloadCommands::COPY_TO_CLIPBOARD:
derat51d97552016-08-09 15:12:30176 case DownloadCommands::ANNOTATE:
177 // These commands are implemented only for the Download notification.
yoshiki3961fb442015-12-17 21:58:23178 NOTREACHED();
179 break;
Daniel Rubery4f3ca7c42020-01-08 23:36:32180 case DownloadCommands::DEEP_SCAN:
181 id = IDS_DOWNLOAD_MENU_DEEP_SCAN;
182 break;
Daniel Rubery23947822020-01-16 22:06:05183 case DownloadCommands::BYPASS_DEEP_SCANNING:
184 id = IDS_OPEN_DOWNLOAD_NOW;
185 break;
[email protected]0f6bf7f2011-05-19 23:03:39186 }
yoshikif42d8fc2015-03-04 20:07:50187 CHECK(id != -1);
188 return l10n_util::GetStringUTF16(id);
[email protected]0f6bf7f2011-05-19 23:03:39189}
[email protected]93af265d2011-05-23 12:54:54190
[email protected]41b00212013-01-08 18:27:29191void DownloadShelfContextMenu::DetachFromDownloadItem() {
Shakti Sahuab33e9f2018-09-20 02:43:38192 if (!download_)
[email protected]41b00212013-01-08 18:27:29193 return;
194
yoshikif42d8fc2015-03-04 20:07:50195 download_commands_.reset();
Shakti Sahuab33e9f2018-09-20 02:43:38196 download_->RemoveObserver(this);
197 download_ = NULL;
[email protected]41b00212013-01-08 18:27:29198}
199
Shakti Sahuab33e9f2018-09-20 02:43:38200void DownloadShelfContextMenu::OnDownloadDestroyed() {
[email protected]41b00212013-01-08 18:27:29201 DetachFromDownloadItem();
202}
203
Shakti Sahu31f9fa12018-09-21 20:53:58204ui::SimpleMenuModel* DownloadShelfContextMenu::GetInProgressMenuModel(
205 bool is_download) {
[email protected]66f2b0ee2013-05-08 17:51:25206 if (in_progress_download_menu_model_)
[email protected]93af265d2011-05-23 12:54:54207 return in_progress_download_menu_model_.get();
208
209 in_progress_download_menu_model_.reset(new ui::SimpleMenuModel(this));
210
Shakti Sahu31f9fa12018-09-21 20:53:58211 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
yoshikif42d8fc2015-03-04 20:07:50221 in_progress_download_menu_model_->AddItem(
222 DownloadCommands::PAUSE, GetLabelForCommandId(DownloadCommands::PAUSE));
Shakti Sahu31f9fa12018-09-21 20:53:58223
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]3e59af42012-08-24 04:29:10230 in_progress_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR);
yoshikif42d8fc2015-03-04 20:07:50231 in_progress_download_menu_model_->AddItem(
232 DownloadCommands::CANCEL, GetLabelForCommandId(DownloadCommands::CANCEL));
[email protected]93af265d2011-05-23 12:54:54233
234 return in_progress_download_menu_model_.get();
235}
236
Shakti Sahu31f9fa12018-09-21 20:53:58237ui::SimpleMenuModel* DownloadShelfContextMenu::GetInProgressPausedMenuModel(
238 bool is_download) {
yoshikif42d8fc2015-03-04 20:07:50239 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 Sahu31f9fa12018-09-21 20:53:58244 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
yoshikif42d8fc2015-03-04 20:07:50254 in_progress_download_paused_menu_model_->AddItem(
255 DownloadCommands::RESUME, GetLabelForCommandId(DownloadCommands::RESUME));
Shakti Sahu31f9fa12018-09-21 20:53:58256
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
yoshikif42d8fc2015-03-04 20:07:50263 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 Sahu31f9fa12018-09-21 20:53:58270ui::SimpleMenuModel* DownloadShelfContextMenu::GetFinishedMenuModel(
271 bool is_download) {
[email protected]66f2b0ee2013-05-08 17:51:25272 if (finished_download_menu_model_)
[email protected]93af265d2011-05-23 12:54:54273 return finished_download_menu_model_.get();
274
275 finished_download_menu_model_.reset(new ui::SimpleMenuModel(this));
276
Shakti Sahu31f9fa12018-09-21 20:53:58277 if (is_download) {
278 finished_download_menu_model_->AddItem(
279 DownloadCommands::OPEN_WHEN_COMPLETE,
280 GetLabelForCommandId(DownloadCommands::OPEN_WHEN_COMPLETE));
Shakti Sahu31f9fa12018-09-21 20:53:58281 }
282
yoshikif42d8fc2015-03-04 20:07:50283 finished_download_menu_model_->AddItem(
284 DownloadCommands::PLATFORM_OPEN,
285 GetLabelForCommandId(DownloadCommands::PLATFORM_OPEN));
Xing Liufcdb2fa2019-10-24 18:17:25286
287 if (is_download) {
288 finished_download_menu_model_->AddCheckItem(
289 DownloadCommands::ALWAYS_OPEN_TYPE,
290 GetLabelForCommandId(DownloadCommands::ALWAYS_OPEN_TYPE));
291 }
[email protected]3e59af42012-08-24 04:29:10292 finished_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR);
Shakti Sahu31f9fa12018-09-21 20:53:58293
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
yoshikif42d8fc2015-03-04 20:07:50301 finished_download_menu_model_->AddItem(
302 DownloadCommands::CANCEL, GetLabelForCommandId(DownloadCommands::CANCEL));
[email protected]93af265d2011-05-23 12:54:54303
304 return finished_download_menu_model_.get();
305}
[email protected]687503b2011-12-05 03:10:33306
Shakti Sahu31f9fa12018-09-21 20:53:58307ui::SimpleMenuModel* DownloadShelfContextMenu::GetInterruptedMenuModel(
308 bool is_download) {
[email protected]66f2b0ee2013-05-08 17:51:25309 if (interrupted_download_menu_model_)
[email protected]85f9f9512012-12-17 20:53:14310 return interrupted_download_menu_model_.get();
311
312 interrupted_download_menu_model_.reset(new ui::SimpleMenuModel(this));
313
asankafac8aa82016-06-08 00:41:18314 interrupted_download_menu_model_->AddItem(
315 DownloadCommands::RESUME, GetLabelForCommandId(DownloadCommands::RESUME));
[email protected]759012132013-06-07 04:55:19316#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.
yoshikif42d8fc2015-03-04 20:07:50320 interrupted_download_menu_model_->AddItem(
321 DownloadCommands::LEARN_MORE_INTERRUPTED,
322 GetLabelForCommandId(DownloadCommands::LEARN_MORE_INTERRUPTED));
[email protected]759012132013-06-07 04:55:19323#endif
asankafac8aa82016-06-08 00:41:18324 interrupted_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR);
325 interrupted_download_menu_model_->AddItem(
326 DownloadCommands::CANCEL, GetLabelForCommandId(DownloadCommands::CANCEL));
[email protected]85f9f9512012-12-17 20:53:14327
328 return interrupted_download_menu_model_.get();
[email protected]85f9f9512012-12-17 20:53:14329}
330
Shakti Sahu31f9fa12018-09-21 20:53:58331ui::SimpleMenuModel* DownloadShelfContextMenu::GetMaybeMaliciousMenuModel(
332 bool is_download) {
[email protected]6f897df2013-10-17 10:53:56333 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
yoshikif42d8fc2015-03-04 20:07:50338 maybe_malicious_download_menu_model_->AddItem(
339 DownloadCommands::KEEP, GetLabelForCommandId(DownloadCommands::KEEP));
[email protected]6f897df2013-10-17 10:53:56340 maybe_malicious_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR);
yoshikif42d8fc2015-03-04 20:07:50341 maybe_malicious_download_menu_model_->AddItem(
342 DownloadCommands::LEARN_MORE_SCANNING,
343 GetLabelForCommandId(DownloadCommands::LEARN_MORE_SCANNING));
[email protected]6f897df2013-10-17 10:53:56344 return maybe_malicious_download_menu_model_.get();
345}
346
Shakti Sahu31f9fa12018-09-21 20:53:58347ui::SimpleMenuModel* DownloadShelfContextMenu::GetMaliciousMenuModel(
348 bool is_download) {
[email protected]66f2b0ee2013-05-08 17:51:25349 if (malicious_download_menu_model_)
[email protected]687503b2011-12-05 03:10:33350 return malicious_download_menu_model_.get();
351
352 malicious_download_menu_model_.reset(new ui::SimpleMenuModel(this));
yoshikif42d8fc2015-03-04 20:07:50353 malicious_download_menu_model_->AddItem(
354 DownloadCommands::LEARN_MORE_SCANNING,
355 GetLabelForCommandId(DownloadCommands::LEARN_MORE_SCANNING));
[email protected]687503b2011-12-05 03:10:33356
357 return malicious_download_menu_model_.get();
358}
Daniel Rubery4f3ca7c42020-01-08 23:36:32359
360ui::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 Rubery23947822020-01-16 22:06:05375 DownloadCommands::BYPASS_DEEP_SCANNING,
376 GetLabelForCommandId(DownloadCommands::BYPASS_DEEP_SCANNING));
Daniel Rubery4f3ca7c42020-01-08 23:36:32377
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 DeBlasio449db402020-01-28 00:01:51392
393ui::SimpleMenuModel*
394DownloadShelfContextMenu::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}