OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "chrome/browser/browser_process.h" | 8 #include "chrome/browser/browser_process.h" |
9 #include "chrome/browser/download/download_crx_util.h" | 9 #include "chrome/browser/download/download_crx_util.h" |
10 #include "chrome/browser/download/download_item_model.h" | 10 #include "chrome/browser/download/download_item_model.h" |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 } | 72 } |
73 | 73 |
74 bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const { | 74 bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const { |
75 if (!download_item_) | 75 if (!download_item_) |
76 return false; | 76 return false; |
77 | 77 |
78 switch (static_cast<ContextMenuCommands>(command_id)) { | 78 switch (static_cast<ContextMenuCommands>(command_id)) { |
79 case SHOW_IN_FOLDER: | 79 case SHOW_IN_FOLDER: |
80 return download_item_->CanShowInFolder(); | 80 return download_item_->CanShowInFolder(); |
81 case OPEN_WHEN_COMPLETE: | 81 case OPEN_WHEN_COMPLETE: |
82 case PLATFORM_OPEN: | |
83 return download_item_->CanOpenDownload() && | 82 return download_item_->CanOpenDownload() && |
84 !download_crx_util::IsExtensionDownload(*download_item_); | 83 !download_crx_util::IsExtensionDownload(*download_item_); |
85 case ALWAYS_OPEN_TYPE: | 84 case ALWAYS_OPEN_TYPE: |
86 // For temporary downloads, the target filename might be a temporary | 85 // For temporary downloads, the target filename might be a temporary |
87 // filename. Don't base an "Always open" decision based on it. Also | 86 // filename. Don't base an "Always open" decision based on it. Also |
88 // exclude extensions. | 87 // exclude extensions. |
89 return download_item_->CanOpenDownload() && | 88 return download_item_->CanOpenDownload() && |
90 !download_crx_util::IsExtensionDownload(*download_item_); | 89 !download_crx_util::IsExtensionDownload(*download_item_); |
91 case CANCEL: | 90 case CANCEL: |
92 return !download_item_->IsDone(); | 91 return !download_item_->IsDone(); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 case ALWAYS_OPEN_TYPE: { | 131 case ALWAYS_OPEN_TYPE: { |
133 DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext( | 132 DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext( |
134 download_item_->GetBrowserContext()); | 133 download_item_->GetBrowserContext()); |
135 base::FilePath path = download_item_->GetTargetFilePath(); | 134 base::FilePath path = download_item_->GetTargetFilePath(); |
136 if (!IsCommandIdChecked(ALWAYS_OPEN_TYPE)) | 135 if (!IsCommandIdChecked(ALWAYS_OPEN_TYPE)) |
137 prefs->EnableAutoOpenBasedOnExtension(path); | 136 prefs->EnableAutoOpenBasedOnExtension(path); |
138 else | 137 else |
139 prefs->DisableAutoOpenBasedOnExtension(path); | 138 prefs->DisableAutoOpenBasedOnExtension(path); |
140 break; | 139 break; |
141 } | 140 } |
142 case PLATFORM_OPEN: | |
143 DownloadItemModel(download_item_).OpenUsingPlatformHandler(); | |
144 break; | |
145 case CANCEL: | 141 case CANCEL: |
146 download_item_->Cancel(true /* Cancelled by user */); | 142 download_item_->Cancel(true /* Cancelled by user */); |
147 break; | 143 break; |
148 case TOGGLE_PAUSE: | 144 case TOGGLE_PAUSE: |
149 if (download_item_->GetState() == DownloadItem::IN_PROGRESS && | 145 if (download_item_->GetState() == DownloadItem::IN_PROGRESS && |
150 !download_item_->IsPaused()) { | 146 !download_item_->IsPaused()) { |
151 download_item_->Pause(); | 147 download_item_->Pause(); |
152 } else { | 148 } else { |
153 download_item_->Resume(); | 149 download_item_->Resume(); |
154 } | 150 } |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 string16 DownloadShelfContextMenu::GetLabelForCommandId(int command_id) const { | 214 string16 DownloadShelfContextMenu::GetLabelForCommandId(int command_id) const { |
219 switch (static_cast<ContextMenuCommands>(command_id)) { | 215 switch (static_cast<ContextMenuCommands>(command_id)) { |
220 case SHOW_IN_FOLDER: | 216 case SHOW_IN_FOLDER: |
221 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_SHOW); | 217 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_SHOW); |
222 case OPEN_WHEN_COMPLETE: | 218 case OPEN_WHEN_COMPLETE: |
223 if (download_item_ && !download_item_->IsDone()) | 219 if (download_item_ && !download_item_->IsDone()) |
224 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE); | 220 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE); |
225 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN); | 221 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN); |
226 case ALWAYS_OPEN_TYPE: | 222 case ALWAYS_OPEN_TYPE: |
227 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); | 223 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); |
228 case PLATFORM_OPEN: | |
229 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PLATFORM_OPEN); | |
230 case CANCEL: | 224 case CANCEL: |
231 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_CANCEL); | 225 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_CANCEL); |
232 case TOGGLE_PAUSE: | 226 case TOGGLE_PAUSE: |
233 if (download_item_ && | 227 if (download_item_ && |
234 download_item_->GetState() == DownloadItem::IN_PROGRESS && | 228 download_item_->GetState() == DownloadItem::IN_PROGRESS && |
235 !download_item_->IsPaused()) | 229 !download_item_->IsPaused()) |
236 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PAUSE_ITEM); | 230 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PAUSE_ITEM); |
237 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_RESUME_ITEM); | 231 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_RESUME_ITEM); |
238 case DISCARD: | 232 case DISCARD: |
239 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_DISCARD); | 233 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_DISCARD); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 ui::SimpleMenuModel* DownloadShelfContextMenu::GetFinishedMenuModel() { | 283 ui::SimpleMenuModel* DownloadShelfContextMenu::GetFinishedMenuModel() { |
290 if (finished_download_menu_model_) | 284 if (finished_download_menu_model_) |
291 return finished_download_menu_model_.get(); | 285 return finished_download_menu_model_.get(); |
292 | 286 |
293 finished_download_menu_model_.reset(new ui::SimpleMenuModel(this)); | 287 finished_download_menu_model_.reset(new ui::SimpleMenuModel(this)); |
294 | 288 |
295 finished_download_menu_model_->AddItemWithStringId( | 289 finished_download_menu_model_->AddItemWithStringId( |
296 OPEN_WHEN_COMPLETE, IDS_DOWNLOAD_MENU_OPEN); | 290 OPEN_WHEN_COMPLETE, IDS_DOWNLOAD_MENU_OPEN); |
297 finished_download_menu_model_->AddCheckItemWithStringId( | 291 finished_download_menu_model_->AddCheckItemWithStringId( |
298 ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); | 292 ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); |
299 if (DownloadItemModel(download_item_).ShouldPreferOpeningInBrowser()) | |
300 finished_download_menu_model_->AddItemWithStringId( | |
301 PLATFORM_OPEN, IDS_DOWNLOAD_MENU_PLATFORM_OPEN); | |
302 finished_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); | 293 finished_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); |
303 finished_download_menu_model_->AddItemWithStringId( | 294 finished_download_menu_model_->AddItemWithStringId( |
304 SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW); | 295 SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW); |
305 finished_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); | 296 finished_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); |
306 finished_download_menu_model_->AddItemWithStringId( | 297 finished_download_menu_model_->AddItemWithStringId( |
307 CANCEL, IDS_DOWNLOAD_MENU_CANCEL); | 298 CANCEL, IDS_DOWNLOAD_MENU_CANCEL); |
308 | 299 |
309 return finished_download_menu_model_.get(); | 300 return finished_download_menu_model_.get(); |
310 } | 301 } |
311 | 302 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
368 DownloadItemModel download_model(download_item_); | 359 DownloadItemModel download_model(download_item_); |
369 if (download_model.ShouldAllowDownloadFeedback()) { | 360 if (download_model.ShouldAllowDownloadFeedback()) { |
370 malicious_download_menu_model_->AddItemWithStringId( | 361 malicious_download_menu_model_->AddItemWithStringId( |
371 REPORT, IDS_DOWNLOAD_MENU_REPORT); | 362 REPORT, IDS_DOWNLOAD_MENU_REPORT); |
372 } | 363 } |
373 malicious_download_menu_model_->AddItemWithStringId( | 364 malicious_download_menu_model_->AddItemWithStringId( |
374 LEARN_MORE_SCANNING, IDS_DOWNLOAD_MENU_LEARN_MORE_SCANNING); | 365 LEARN_MORE_SCANNING, IDS_DOWNLOAD_MENU_LEARN_MORE_SCANNING); |
375 | 366 |
376 return malicious_download_menu_model_.get(); | 367 return malicious_download_menu_model_.get(); |
377 } | 368 } |
OLD | NEW |