| 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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 } | 71 } |
| 72 | 72 |
| 73 bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const { | 73 bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const { |
| 74 if (!download_item_) | 74 if (!download_item_) |
| 75 return false; | 75 return false; |
| 76 | 76 |
| 77 switch (static_cast<ContextMenuCommands>(command_id)) { | 77 switch (static_cast<ContextMenuCommands>(command_id)) { |
| 78 case SHOW_IN_FOLDER: | 78 case SHOW_IN_FOLDER: |
| 79 return download_item_->CanShowInFolder(); | 79 return download_item_->CanShowInFolder(); |
| 80 case OPEN_WHEN_COMPLETE: | 80 case OPEN_WHEN_COMPLETE: |
| 81 case PLATFORM_OPEN: |
| 81 return download_item_->CanOpenDownload() && | 82 return download_item_->CanOpenDownload() && |
| 82 !download_crx_util::IsExtensionDownload(*download_item_); | 83 !download_crx_util::IsExtensionDownload(*download_item_); |
| 83 case ALWAYS_OPEN_TYPE: | 84 case ALWAYS_OPEN_TYPE: |
| 84 // For temporary downloads, the target filename might be a temporary | 85 // For temporary downloads, the target filename might be a temporary |
| 85 // 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 |
| 86 // exclude extensions. | 87 // exclude extensions. |
| 87 return download_item_->CanOpenDownload() && | 88 return download_item_->CanOpenDownload() && |
| 88 !download_crx_util::IsExtensionDownload(*download_item_); | 89 !download_crx_util::IsExtensionDownload(*download_item_); |
| 89 case CANCEL: | 90 case CANCEL: |
| 90 return !download_item_->IsDone(); | 91 return !download_item_->IsDone(); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 case ALWAYS_OPEN_TYPE: { | 130 case ALWAYS_OPEN_TYPE: { |
| 130 DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext( | 131 DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext( |
| 131 download_item_->GetBrowserContext()); | 132 download_item_->GetBrowserContext()); |
| 132 base::FilePath path = download_item_->GetTargetFilePath(); | 133 base::FilePath path = download_item_->GetTargetFilePath(); |
| 133 if (!IsCommandIdChecked(ALWAYS_OPEN_TYPE)) | 134 if (!IsCommandIdChecked(ALWAYS_OPEN_TYPE)) |
| 134 prefs->EnableAutoOpenBasedOnExtension(path); | 135 prefs->EnableAutoOpenBasedOnExtension(path); |
| 135 else | 136 else |
| 136 prefs->DisableAutoOpenBasedOnExtension(path); | 137 prefs->DisableAutoOpenBasedOnExtension(path); |
| 137 break; | 138 break; |
| 138 } | 139 } |
| 140 case PLATFORM_OPEN: |
| 141 DownloadItemModel(download_item_).OpenUsingPlatformHandler(); |
| 142 break; |
| 139 case CANCEL: | 143 case CANCEL: |
| 140 download_item_->Cancel(true /* Cancelled by user */); | 144 download_item_->Cancel(true /* Cancelled by user */); |
| 141 break; | 145 break; |
| 142 case TOGGLE_PAUSE: | 146 case TOGGLE_PAUSE: |
| 143 if (download_item_->GetState() == DownloadItem::IN_PROGRESS && | 147 if (download_item_->GetState() == DownloadItem::IN_PROGRESS && |
| 144 !download_item_->IsPaused()) { | 148 !download_item_->IsPaused()) { |
| 145 download_item_->Pause(); | 149 download_item_->Pause(); |
| 146 } else { | 150 } else { |
| 147 download_item_->Resume(); | 151 download_item_->Resume(); |
| 148 } | 152 } |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 string16 DownloadShelfContextMenu::GetLabelForCommandId(int command_id) const { | 196 string16 DownloadShelfContextMenu::GetLabelForCommandId(int command_id) const { |
| 193 switch (static_cast<ContextMenuCommands>(command_id)) { | 197 switch (static_cast<ContextMenuCommands>(command_id)) { |
| 194 case SHOW_IN_FOLDER: | 198 case SHOW_IN_FOLDER: |
| 195 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_SHOW); | 199 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_SHOW); |
| 196 case OPEN_WHEN_COMPLETE: | 200 case OPEN_WHEN_COMPLETE: |
| 197 if (download_item_ && !download_item_->IsDone()) | 201 if (download_item_ && !download_item_->IsDone()) |
| 198 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE); | 202 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE); |
| 199 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN); | 203 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN); |
| 200 case ALWAYS_OPEN_TYPE: | 204 case ALWAYS_OPEN_TYPE: |
| 201 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); | 205 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); |
| 206 case PLATFORM_OPEN: |
| 207 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PLATFORM_OPEN); |
| 202 case CANCEL: | 208 case CANCEL: |
| 203 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_CANCEL); | 209 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_CANCEL); |
| 204 case TOGGLE_PAUSE: | 210 case TOGGLE_PAUSE: |
| 205 if (download_item_ && | 211 if (download_item_ && |
| 206 download_item_->GetState() == DownloadItem::IN_PROGRESS && | 212 download_item_->GetState() == DownloadItem::IN_PROGRESS && |
| 207 !download_item_->IsPaused()) | 213 !download_item_->IsPaused()) |
| 208 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PAUSE_ITEM); | 214 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PAUSE_ITEM); |
| 209 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_RESUME_ITEM); | 215 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_RESUME_ITEM); |
| 210 case DISCARD: | 216 case DISCARD: |
| 211 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_DISCARD); | 217 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_DISCARD); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 ui::SimpleMenuModel* DownloadShelfContextMenu::GetFinishedMenuModel() { | 265 ui::SimpleMenuModel* DownloadShelfContextMenu::GetFinishedMenuModel() { |
| 260 if (finished_download_menu_model_) | 266 if (finished_download_menu_model_) |
| 261 return finished_download_menu_model_.get(); | 267 return finished_download_menu_model_.get(); |
| 262 | 268 |
| 263 finished_download_menu_model_.reset(new ui::SimpleMenuModel(this)); | 269 finished_download_menu_model_.reset(new ui::SimpleMenuModel(this)); |
| 264 | 270 |
| 265 finished_download_menu_model_->AddItemWithStringId( | 271 finished_download_menu_model_->AddItemWithStringId( |
| 266 OPEN_WHEN_COMPLETE, IDS_DOWNLOAD_MENU_OPEN); | 272 OPEN_WHEN_COMPLETE, IDS_DOWNLOAD_MENU_OPEN); |
| 267 finished_download_menu_model_->AddCheckItemWithStringId( | 273 finished_download_menu_model_->AddCheckItemWithStringId( |
| 268 ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); | 274 ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); |
| 275 if (DownloadItemModel(download_item_).ShouldPreferOpeningInBrowser()) |
| 276 finished_download_menu_model_->AddItemWithStringId( |
| 277 PLATFORM_OPEN, IDS_DOWNLOAD_MENU_PLATFORM_OPEN); |
| 269 finished_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); | 278 finished_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); |
| 270 finished_download_menu_model_->AddItemWithStringId( | 279 finished_download_menu_model_->AddItemWithStringId( |
| 271 SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW); | 280 SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW); |
| 272 finished_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); | 281 finished_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); |
| 273 finished_download_menu_model_->AddItemWithStringId( | 282 finished_download_menu_model_->AddItemWithStringId( |
| 274 CANCEL, IDS_DOWNLOAD_MENU_CANCEL); | 283 CANCEL, IDS_DOWNLOAD_MENU_CANCEL); |
| 275 | 284 |
| 276 return finished_download_menu_model_.get(); | 285 return finished_download_menu_model_.get(); |
| 277 } | 286 } |
| 278 | 287 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 338 DownloadItemModel download_model(download_item_); | 347 DownloadItemModel download_model(download_item_); |
| 339 if (download_model.ShouldAllowDownloadFeedback()) { | 348 if (download_model.ShouldAllowDownloadFeedback()) { |
| 340 maybe_malicious_download_menu_model_->AddItemWithStringId( | 349 maybe_malicious_download_menu_model_->AddItemWithStringId( |
| 341 DISCARD, IDS_DOWNLOAD_MENU_DISCARD); | 350 DISCARD, IDS_DOWNLOAD_MENU_DISCARD); |
| 342 } | 351 } |
| 343 malicious_download_menu_model_->AddItemWithStringId( | 352 malicious_download_menu_model_->AddItemWithStringId( |
| 344 LEARN_MORE_SCANNING, IDS_DOWNLOAD_MENU_LEARN_MORE_SCANNING); | 353 LEARN_MORE_SCANNING, IDS_DOWNLOAD_MENU_LEARN_MORE_SCANNING); |
| 345 | 354 |
| 346 return malicious_download_menu_model_.get(); | 355 return malicious_download_menu_model_.get(); |
| 347 } | 356 } |
| OLD | NEW |