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

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: " 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 (download_item_->GetDangerType() == DownloadStateInfo::DANGEROUS_URL ||
30 download_item_->GetDangerType() == DownloadStateInfo::DANGEROUS_CONTENT))
31 model = GetMaliciousMenuModel();
32 else if (download_item_->IsComplete())
33 model = GetFinishedMenuModel();
34 else
35 model = GetInProgressMenuModel();
36 return model;
26 } 37 }
27 38
28 bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const { 39 bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const {
29 switch (command_id) { 40 switch (command_id) {
30 case SHOW_IN_FOLDER: 41 case SHOW_IN_FOLDER:
31 case OPEN_WHEN_COMPLETE: 42 case OPEN_WHEN_COMPLETE:
32 return download_item_->CanShowInFolder(); 43 return download_item_->CanShowInFolder();
33 case ALWAYS_OPEN_TYPE: 44 case ALWAYS_OPEN_TYPE:
34 return download_item_->CanOpenDownload() && 45 return download_item_->CanOpenDownload() &&
35 !Extension::IsExtension(download_item_->GetStateInfo().target_name); 46 !Extension::IsExtension(download_item_->GetStateInfo().target_name);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 case CANCEL: 86 case CANCEL:
76 download_model_->CancelTask(); 87 download_model_->CancelTask();
77 break; 88 break;
78 case TOGGLE_PAUSE: 89 case TOGGLE_PAUSE:
79 // It is possible for the download to complete before the user clicks the 90 // 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 91 // menu item, recheck if the download is in progress state before toggling
81 // pause. 92 // pause.
82 if (download_item_->IsPartialDownload()) 93 if (download_item_->IsPartialDownload())
83 download_item_->TogglePause(); 94 download_item_->TogglePause();
84 break; 95 break;
96 case DISCARD:
97 if (download_item_->IsPartialDownload())
98 download_item_->Cancel(true);
noelutz 2011/12/01 00:48:27 Is that the same as calling CancelTask()?
asanka 2011/12/01 18:45:08 download_model_->CancelTask() does different thing
99 download_item_->Delete(DownloadItem::DELETE_DUE_TO_USER_DISCARD);
100 // We have been deleted!
101 break;
102 case KEEP:
103 download_item_->DangerousDownloadValidated();
104 break;
105 case LEARN_MORE: {
106 Browser* browser = BrowserList::GetLastActive();
107 if (!browser)
noelutz 2011/12/01 00:48:27 is that a failure case? should we dcheck here?
asanka 2011/12/01 18:45:08 It shouldn't happen. Aside from not being NULL, we
108 break;
109 GURL learn_more_url(
110 l10n_util::GetStringUTF8(IDS_DOWNLOAD_SAFE_BROWSING_LEARN_MORE_URL));
111 OpenURLParams params(learn_more_url, GURL(), NEW_FOREGROUND_TAB,
112 content::PAGE_TRANSITION_TYPED, false);
113 browser->OpenURL(params);
114 break;
115 }
85 default: 116 default:
86 NOTREACHED(); 117 NOTREACHED();
87 } 118 }
88 } 119 }
89 120
90 bool DownloadShelfContextMenu::GetAcceleratorForCommandId( 121 bool DownloadShelfContextMenu::GetAcceleratorForCommandId(
91 int command_id, ui::Accelerator* accelerator) { 122 int command_id, ui::Accelerator* accelerator) {
92 return false; 123 return false;
93 } 124 }
94 125
(...skipping 11 matching lines...) Expand all
106 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN); 137 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN);
107 case ALWAYS_OPEN_TYPE: 138 case ALWAYS_OPEN_TYPE:
108 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); 139 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE);
109 case CANCEL: 140 case CANCEL:
110 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_CANCEL); 141 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_CANCEL);
111 case TOGGLE_PAUSE: { 142 case TOGGLE_PAUSE: {
112 if (download_item_->IsPaused()) 143 if (download_item_->IsPaused())
113 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_RESUME_ITEM); 144 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_RESUME_ITEM);
114 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PAUSE_ITEM); 145 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PAUSE_ITEM);
115 } 146 }
147 case DISCARD:
148 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_DISCARD);
149 case KEEP:
150 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_KEEP);
151 case LEARN_MORE:
152 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_LEARN_MORE);
116 default: 153 default:
117 NOTREACHED(); 154 NOTREACHED();
118 break; 155 break;
119 } 156 }
120 return string16(); 157 return string16();
121 } 158 }
122 159
123 ui::SimpleMenuModel* DownloadShelfContextMenu::GetInProgressMenuModel() { 160 ui::SimpleMenuModel* DownloadShelfContextMenu::GetInProgressMenuModel() {
124 if (in_progress_download_menu_model_.get()) 161 if (in_progress_download_menu_model_.get())
125 return in_progress_download_menu_model_.get(); 162 return in_progress_download_menu_model_.get();
(...skipping 28 matching lines...) Expand all
154 ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); 191 ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE);
155 finished_download_menu_model_->AddSeparator(); 192 finished_download_menu_model_->AddSeparator();
156 finished_download_menu_model_->AddItemWithStringId( 193 finished_download_menu_model_->AddItemWithStringId(
157 SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW); 194 SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW);
158 finished_download_menu_model_->AddSeparator(); 195 finished_download_menu_model_->AddSeparator();
159 finished_download_menu_model_->AddItemWithStringId( 196 finished_download_menu_model_->AddItemWithStringId(
160 CANCEL, IDS_DOWNLOAD_MENU_CANCEL); 197 CANCEL, IDS_DOWNLOAD_MENU_CANCEL);
161 198
162 return finished_download_menu_model_.get(); 199 return finished_download_menu_model_.get();
163 } 200 }
201
202 ui::SimpleMenuModel* DownloadShelfContextMenu::GetMaliciousMenuModel() {
203 if (malicious_download_menu_model_.get())
204 return malicious_download_menu_model_.get();
205
206 malicious_download_menu_model_.reset(new ui::SimpleMenuModel(this));
207
208 malicious_download_menu_model_->AddItemWithStringId(
209 DISCARD, IDS_DOWNLOAD_MENU_DISCARD);
210 malicious_download_menu_model_->AddItemWithStringId(
211 KEEP, IDS_DOWNLOAD_MENU_KEEP);
212 malicious_download_menu_model_->AddSeparator();
213 malicious_download_menu_model_->AddItemWithStringId(
214 LEARN_MORE, IDS_DOWNLOAD_MENU_LEARN_MORE);
215
216 return malicious_download_menu_model_.get();
217 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698