Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: chrome/browser/download/download_shelf_context_menu.cc

Issue 8757007: Implement additional UI changes for dangerous download warnings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "chrome/browser/download/download_shelf_context_menu.h" 5 #include "chrome/browser/download/download_shelf_context_menu.h"
6 6
7 #include "chrome/browser/download/download_item_model.h" 7 #include "chrome/browser/download/download_item_model.h"
8 #include "chrome/browser/download/download_prefs.h" 8 #include "chrome/browser/download/download_prefs.h"
9 #include "chrome/browser/ui/browser_list.h"
9 #include "chrome/common/extensions/extension.h" 10 #include "chrome/common/extensions/extension.h"
10 #include "content/browser/download/download_item.h" 11 #include "content/browser/download/download_item.h"
11 #include "content/browser/download/download_manager.h" 12 #include "content/browser/download/download_manager.h"
13 #include "content/browser/tab_contents/page_navigator.h"
12 #include "grit/generated_resources.h" 14 #include "grit/generated_resources.h"
13 #include "ui/base/l10n/l10n_util.h" 15 #include "ui/base/l10n/l10n_util.h"
14 16
15 DownloadShelfContextMenu::~DownloadShelfContextMenu() {} 17 DownloadShelfContextMenu::~DownloadShelfContextMenu() {}
16 18
17 DownloadShelfContextMenu::DownloadShelfContextMenu( 19 DownloadShelfContextMenu::DownloadShelfContextMenu(
18 BaseDownloadItemModel* download_model) 20 BaseDownloadItemModel* download_model)
19 : download_model_(download_model), 21 : download_model_(download_model),
20 download_item_(download_model->download()) { 22 download_item_(download_model->download()) {
21 } 23 }
22 24
23 ui::SimpleMenuModel* DownloadShelfContextMenu::GetMenuModel() { 25 ui::SimpleMenuModel* DownloadShelfContextMenu::GetMenuModel() {
24 return download_item_->IsComplete() ? GetFinishedMenuModel() 26 ui::SimpleMenuModel* model;
25 : GetInProgressMenuModel(); 27
28 if (download_item_->GetSafetyState() == DownloadItem::DANGEROUS) {
29 if (download_item_->GetDangerType() == DownloadStateInfo::DANGEROUS_URL ||
30 download_item_->GetDangerType() ==
31 DownloadStateInfo::DANGEROUS_CONTENT) {
dmazzoni 2011/12/02 20:15:45 Nit: Indent this 4 more spaces
asanka 2011/12/02 22:11:57 Done.
32 model = GetMaliciousMenuModel();
33 } else {
34 NOTREACHED();
35 }
36 } else if (download_item_->IsComplete()) {
37 model = GetFinishedMenuModel();
38 } else {
39 model = GetInProgressMenuModel();
40 }
41 return model;
26 } 42 }
27 43
28 bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const { 44 bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const {
29 switch (command_id) { 45 switch (command_id) {
30 case SHOW_IN_FOLDER: 46 case SHOW_IN_FOLDER:
31 case OPEN_WHEN_COMPLETE: 47 case OPEN_WHEN_COMPLETE:
32 return download_item_->CanShowInFolder(); 48 return download_item_->CanShowInFolder();
33 case ALWAYS_OPEN_TYPE: 49 case ALWAYS_OPEN_TYPE:
34 return download_item_->CanOpenDownload() && 50 return download_item_->CanOpenDownload() &&
35 !Extension::IsExtension(download_item_->GetStateInfo().target_name); 51 !Extension::IsExtension(download_item_->GetStateInfo().target_name);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 case CANCEL: 91 case CANCEL:
76 download_model_->CancelTask(); 92 download_model_->CancelTask();
77 break; 93 break;
78 case TOGGLE_PAUSE: 94 case TOGGLE_PAUSE:
79 // It is possible for the download to complete before the user clicks the 95 // It is possible for the download to complete before the user clicks the
80 // menu item, recheck if the download is in progress state before toggling 96 // menu item, recheck if the download is in progress state before toggling
81 // pause. 97 // pause.
82 if (download_item_->IsPartialDownload()) 98 if (download_item_->IsPartialDownload())
83 download_item_->TogglePause(); 99 download_item_->TogglePause();
84 break; 100 break;
101 case DISCARD:
102 download_item_->Delete(DownloadItem::DELETE_DUE_TO_USER_DISCARD);
103 break;
104 case KEEP:
105 download_item_->DangerousDownloadValidated();
106 break;
107 case LEARN_MORE: {
108 Browser* browser = BrowserList::GetLastActive();
109 DCHECK(browser && browser->is_type_tabbed());
110 GURL learn_more_url(
111 l10n_util::GetStringUTF8(IDS_DOWNLOAD_SAFE_BROWSING_LEARN_MORE_URL));
112 OpenURLParams params(learn_more_url, GURL(), NEW_FOREGROUND_TAB,
113 content::PAGE_TRANSITION_TYPED, false);
114 browser->OpenURL(params);
115 break;
116 }
85 default: 117 default:
86 NOTREACHED(); 118 NOTREACHED();
87 } 119 }
88 } 120 }
89 121
90 bool DownloadShelfContextMenu::GetAcceleratorForCommandId( 122 bool DownloadShelfContextMenu::GetAcceleratorForCommandId(
91 int command_id, ui::Accelerator* accelerator) { 123 int command_id, ui::Accelerator* accelerator) {
92 return false; 124 return false;
93 } 125 }
94 126
(...skipping 11 matching lines...) Expand all
106 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN); 138 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN);
107 case ALWAYS_OPEN_TYPE: 139 case ALWAYS_OPEN_TYPE:
108 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); 140 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE);
109 case CANCEL: 141 case CANCEL:
110 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_CANCEL); 142 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_CANCEL);
111 case TOGGLE_PAUSE: { 143 case TOGGLE_PAUSE: {
112 if (download_item_->IsPaused()) 144 if (download_item_->IsPaused())
113 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_RESUME_ITEM); 145 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_RESUME_ITEM);
114 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PAUSE_ITEM); 146 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PAUSE_ITEM);
115 } 147 }
148 case DISCARD:
149 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_DISCARD);
150 case KEEP:
151 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_KEEP);
152 case LEARN_MORE:
153 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_LEARN_MORE);
116 default: 154 default:
117 NOTREACHED(); 155 NOTREACHED();
118 break; 156 break;
119 } 157 }
120 return string16(); 158 return string16();
121 } 159 }
122 160
123 ui::SimpleMenuModel* DownloadShelfContextMenu::GetInProgressMenuModel() { 161 ui::SimpleMenuModel* DownloadShelfContextMenu::GetInProgressMenuModel() {
124 if (in_progress_download_menu_model_.get()) 162 if (in_progress_download_menu_model_.get())
125 return in_progress_download_menu_model_.get(); 163 return in_progress_download_menu_model_.get();
(...skipping 28 matching lines...) Expand all
154 ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); 192 ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE);
155 finished_download_menu_model_->AddSeparator(); 193 finished_download_menu_model_->AddSeparator();
156 finished_download_menu_model_->AddItemWithStringId( 194 finished_download_menu_model_->AddItemWithStringId(
157 SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW); 195 SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW);
158 finished_download_menu_model_->AddSeparator(); 196 finished_download_menu_model_->AddSeparator();
159 finished_download_menu_model_->AddItemWithStringId( 197 finished_download_menu_model_->AddItemWithStringId(
160 CANCEL, IDS_DOWNLOAD_MENU_CANCEL); 198 CANCEL, IDS_DOWNLOAD_MENU_CANCEL);
161 199
162 return finished_download_menu_model_.get(); 200 return finished_download_menu_model_.get();
163 } 201 }
202
203 ui::SimpleMenuModel* DownloadShelfContextMenu::GetMaliciousMenuModel() {
204 if (malicious_download_menu_model_.get())
205 return malicious_download_menu_model_.get();
206
207 malicious_download_menu_model_.reset(new ui::SimpleMenuModel(this));
208
209 malicious_download_menu_model_->AddItemWithStringId(
210 DISCARD, IDS_DOWNLOAD_MENU_DISCARD);
211 malicious_download_menu_model_->AddItemWithStringId(
212 KEEP, IDS_DOWNLOAD_MENU_KEEP);
213 malicious_download_menu_model_->AddSeparator();
214 malicious_download_menu_model_->AddItemWithStringId(
215 LEARN_MORE, IDS_DOWNLOAD_MENU_LEARN_MORE);
216
217 return malicious_download_menu_model_.get();
218 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698