| 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_commands.h" |
| 9 #include "chrome/browser/download/download_crx_util.h" | 10 #include "chrome/browser/download/download_crx_util.h" |
| 10 #include "chrome/browser/download/download_item_model.h" | 11 #include "chrome/browser/download/download_item_model.h" |
| 11 #include "chrome/browser/download/download_prefs.h" | 12 #include "chrome/browser/download/download_prefs.h" |
| 12 #include "chrome/browser/download/download_target_determiner.h" | 13 #include "chrome/browser/download/download_target_determiner.h" |
| 13 #include "chrome/browser/safe_browsing/download_protection_service.h" | 14 #include "chrome/browser/safe_browsing/download_protection_service.h" |
| 14 #include "chrome/browser/safe_browsing/safe_browsing_service.h" | 15 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
| 15 #include "chrome/common/url_constants.h" | 16 #include "chrome/common/url_constants.h" |
| 16 #include "chrome/grit/generated_resources.h" | 17 #include "chrome/grit/generated_resources.h" |
| 17 #include "content/public/browser/download_item.h" | 18 #include "content/public/browser/download_item.h" |
| 18 #include "content/public/browser/download_manager.h" | 19 #include "content/public/browser/download_manager.h" |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 model = GetInterruptedMenuModel(); | 80 model = GetInterruptedMenuModel(); |
| 80 else | 81 else |
| 81 model = GetInProgressMenuModel(); | 82 model = GetInProgressMenuModel(); |
| 82 return model; | 83 return model; |
| 83 } | 84 } |
| 84 | 85 |
| 85 bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const { | 86 bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const { |
| 86 if (!download_item_) | 87 if (!download_item_) |
| 87 return false; | 88 return false; |
| 88 | 89 |
| 89 switch (static_cast<ContextMenuCommands>(command_id)) { | 90 switch (static_cast<DownloadCommands>(command_id)) { |
| 90 case SHOW_IN_FOLDER: | 91 case SHOW_IN_FOLDER: |
| 91 return download_item_->CanShowInFolder(); | 92 return download_item_->CanShowInFolder(); |
| 92 case OPEN_WHEN_COMPLETE: | 93 case OPEN_WHEN_COMPLETE: |
| 93 case PLATFORM_OPEN: | 94 case PLATFORM_OPEN: |
| 94 return download_item_->CanOpenDownload() && | 95 return download_item_->CanOpenDownload() && |
| 95 !download_crx_util::IsExtensionDownload(*download_item_); | 96 !download_crx_util::IsExtensionDownload(*download_item_); |
| 96 case ALWAYS_OPEN_TYPE: | 97 case ALWAYS_OPEN_TYPE: |
| 97 // For temporary downloads, the target filename might be a temporary | 98 // For temporary downloads, the target filename might be a temporary |
| 98 // filename. Don't base an "Always open" decision based on it. Also | 99 // filename. Don't base an "Always open" decision based on it. Also |
| 99 // exclude extensions. | 100 // exclude extensions. |
| 100 return download_item_->CanOpenDownload() && | 101 return download_item_->CanOpenDownload() && |
| 101 !download_crx_util::IsExtensionDownload(*download_item_); | 102 !download_crx_util::IsExtensionDownload(*download_item_); |
| 102 case CANCEL: | 103 case CANCEL: |
| 103 return !download_item_->IsDone(); | 104 return !download_item_->IsDone(); |
| 104 case TOGGLE_PAUSE: | 105 case TOGGLE_PAUSE: |
| 105 return !download_item_->IsDone(); | 106 return !download_item_->IsDone(); |
| 106 case DISCARD: | 107 case DISCARD: |
| 107 case KEEP: | 108 case KEEP: |
| 108 case LEARN_MORE_SCANNING: | 109 case LEARN_MORE_SCANNING: |
| 109 case LEARN_MORE_INTERRUPTED: | 110 case LEARN_MORE_INTERRUPTED: |
| 110 return true; | 111 return true; |
| 112 default: |
| 113 break; |
| 111 } | 114 } |
| 112 NOTREACHED(); | 115 NOTREACHED(); |
| 113 return false; | 116 return false; |
| 114 } | 117 } |
| 115 | 118 |
| 116 bool DownloadShelfContextMenu::IsCommandIdChecked(int command_id) const { | 119 bool DownloadShelfContextMenu::IsCommandIdChecked(int command_id) const { |
| 117 if (!download_item_) | 120 if (!download_item_) |
| 118 return false; | 121 return false; |
| 119 | 122 |
| 120 switch (command_id) { | 123 switch (static_cast<DownloadCommands>(command_id)) { |
| 121 case OPEN_WHEN_COMPLETE: | 124 case OPEN_WHEN_COMPLETE: |
| 122 return download_item_->GetOpenWhenComplete() || | 125 return download_item_->GetOpenWhenComplete() || |
| 123 download_crx_util::IsExtensionDownload(*download_item_); | 126 download_crx_util::IsExtensionDownload(*download_item_); |
| 124 case ALWAYS_OPEN_TYPE: | 127 case ALWAYS_OPEN_TYPE: |
| 125 #if defined(OS_WIN) || defined(OS_LINUX) || \ | 128 #if defined(OS_WIN) || defined(OS_LINUX) || \ |
| 126 (defined(OS_MACOSX) && !defined(OS_IOS)) | 129 (defined(OS_MACOSX) && !defined(OS_IOS)) |
| 127 if (CanOpenPdfInSystemViewer()) { | 130 if (CanOpenPdfInSystemViewer()) { |
| 128 DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext( | 131 DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext( |
| 129 download_item_->GetBrowserContext()); | 132 download_item_->GetBrowserContext()); |
| 130 return prefs->ShouldOpenPdfInSystemReader(); | 133 return prefs->ShouldOpenPdfInSystemReader(); |
| 131 } | 134 } |
| 132 #endif | 135 #endif |
| 133 return download_item_->ShouldOpenFileBasedOnExtension(); | 136 return download_item_->ShouldOpenFileBasedOnExtension(); |
| 134 case TOGGLE_PAUSE: | 137 case TOGGLE_PAUSE: |
| 135 return download_item_->IsPaused(); | 138 return download_item_->IsPaused(); |
| 139 default: |
| 140 break; |
| 136 } | 141 } |
| 137 return false; | 142 return false; |
| 138 } | 143 } |
| 139 | 144 |
| 140 bool DownloadShelfContextMenu::IsCommandIdVisible(int command_id) const { | 145 bool DownloadShelfContextMenu::IsCommandIdVisible(int command_id) const { |
| 141 if (!download_item_) | 146 if (!download_item_) |
| 142 return false; | 147 return false; |
| 143 | 148 |
| 144 if (command_id == PLATFORM_OPEN) | 149 if (command_id == PLATFORM_OPEN) |
| 145 return (DownloadItemModel(download_item_).ShouldPreferOpeningInBrowser()); | 150 return (DownloadItemModel(download_item_).ShouldPreferOpeningInBrowser()); |
| 146 | 151 |
| 147 return true; | 152 return true; |
| 148 } | 153 } |
| 149 | 154 |
| 150 void DownloadShelfContextMenu::ExecuteCommand(int command_id, int event_flags) { | 155 void DownloadShelfContextMenu::ExecuteCommand(int command_id, int event_flags) { |
| 151 if (!download_item_) | 156 if (!download_item_) |
| 152 return; | 157 return; |
| 153 | 158 |
| 154 switch (static_cast<ContextMenuCommands>(command_id)) { | 159 switch (static_cast<DownloadCommands>(command_id)) { |
| 155 case SHOW_IN_FOLDER: | 160 case SHOW_IN_FOLDER: |
| 156 download_item_->ShowDownloadInShell(); | 161 download_item_->ShowDownloadInShell(); |
| 157 break; | 162 break; |
| 158 case OPEN_WHEN_COMPLETE: | 163 case OPEN_WHEN_COMPLETE: |
| 159 download_item_->OpenDownload(); | 164 download_item_->OpenDownload(); |
| 160 break; | 165 break; |
| 161 case ALWAYS_OPEN_TYPE: { | 166 case ALWAYS_OPEN_TYPE: { |
| 162 bool is_checked = IsCommandIdChecked(ALWAYS_OPEN_TYPE); | 167 bool is_checked = IsCommandIdChecked(ALWAYS_OPEN_TYPE); |
| 163 DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext( | 168 DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext( |
| 164 download_item_->GetBrowserContext()); | 169 download_item_->GetBrowserContext()); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 break; | 220 break; |
| 216 } | 221 } |
| 217 case LEARN_MORE_INTERRUPTED: | 222 case LEARN_MORE_INTERRUPTED: |
| 218 navigator_->OpenURL( | 223 navigator_->OpenURL( |
| 219 content::OpenURLParams(GURL(chrome::kDownloadInterruptedLearnMoreURL), | 224 content::OpenURLParams(GURL(chrome::kDownloadInterruptedLearnMoreURL), |
| 220 content::Referrer(), | 225 content::Referrer(), |
| 221 NEW_FOREGROUND_TAB, | 226 NEW_FOREGROUND_TAB, |
| 222 ui::PAGE_TRANSITION_LINK, | 227 ui::PAGE_TRANSITION_LINK, |
| 223 false)); | 228 false)); |
| 224 break; | 229 break; |
| 230 default: |
| 231 break; |
| 225 } | 232 } |
| 226 } | 233 } |
| 227 | 234 |
| 228 bool DownloadShelfContextMenu::GetAcceleratorForCommandId( | 235 bool DownloadShelfContextMenu::GetAcceleratorForCommandId( |
| 229 int command_id, ui::Accelerator* accelerator) { | 236 int command_id, ui::Accelerator* accelerator) { |
| 230 return false; | 237 return false; |
| 231 } | 238 } |
| 232 | 239 |
| 233 bool DownloadShelfContextMenu::IsItemForCommandIdDynamic(int command_id) const { | 240 bool DownloadShelfContextMenu::IsItemForCommandIdDynamic(int command_id) const { |
| 234 return command_id == TOGGLE_PAUSE; | 241 return command_id == TOGGLE_PAUSE; |
| 235 } | 242 } |
| 236 | 243 |
| 237 base::string16 DownloadShelfContextMenu::GetLabelForCommandId( | 244 base::string16 DownloadShelfContextMenu::GetLabelForCommandId( |
| 238 int command_id) const { | 245 int command_id) const { |
| 239 switch (static_cast<ContextMenuCommands>(command_id)) { | 246 switch (static_cast<DownloadCommands>(command_id)) { |
| 240 case SHOW_IN_FOLDER: | 247 case SHOW_IN_FOLDER: |
| 241 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_SHOW); | 248 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_SHOW); |
| 242 case OPEN_WHEN_COMPLETE: | 249 case OPEN_WHEN_COMPLETE: |
| 243 if (download_item_ && !download_item_->IsDone()) | 250 if (download_item_ && !download_item_->IsDone()) |
| 244 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE); | 251 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE); |
| 245 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN); | 252 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN); |
| 246 case ALWAYS_OPEN_TYPE: | 253 case ALWAYS_OPEN_TYPE: |
| 247 return l10n_util::GetStringUTF16(GetAlwaysOpenStringId()); | 254 return l10n_util::GetStringUTF16(GetAlwaysOpenStringId()); |
| 248 case PLATFORM_OPEN: | 255 case PLATFORM_OPEN: |
| 249 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PLATFORM_OPEN); | 256 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PLATFORM_OPEN); |
| 250 case CANCEL: | 257 case CANCEL: |
| 251 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_CANCEL); | 258 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_CANCEL); |
| 252 case TOGGLE_PAUSE: | 259 case TOGGLE_PAUSE: |
| 253 if (download_item_ && | 260 if (download_item_ && |
| 254 download_item_->GetState() == DownloadItem::IN_PROGRESS && | 261 download_item_->GetState() == DownloadItem::IN_PROGRESS && |
| 255 !download_item_->IsPaused()) | 262 !download_item_->IsPaused()) |
| 256 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PAUSE_ITEM); | 263 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PAUSE_ITEM); |
| 257 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_RESUME_ITEM); | 264 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_RESUME_ITEM); |
| 258 case DISCARD: | 265 case DISCARD: |
| 259 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_DISCARD); | 266 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_DISCARD); |
| 260 case KEEP: | 267 case KEEP: |
| 261 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_KEEP); | 268 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_KEEP); |
| 262 case LEARN_MORE_SCANNING: | 269 case LEARN_MORE_SCANNING: |
| 263 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_LEARN_MORE_SCANNING); | 270 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_LEARN_MORE_SCANNING); |
| 264 case LEARN_MORE_INTERRUPTED: | 271 case LEARN_MORE_INTERRUPTED: |
| 265 return l10n_util::GetStringUTF16( | 272 return l10n_util::GetStringUTF16( |
| 266 IDS_DOWNLOAD_MENU_LEARN_MORE_INTERRUPTED); | 273 IDS_DOWNLOAD_MENU_LEARN_MORE_INTERRUPTED); |
| 274 default: |
| 275 break; |
| 267 } | 276 } |
| 268 NOTREACHED(); | 277 NOTREACHED(); |
| 269 return base::string16(); | 278 return base::string16(); |
| 270 } | 279 } |
| 271 | 280 |
| 272 void DownloadShelfContextMenu::DetachFromDownloadItem() { | 281 void DownloadShelfContextMenu::DetachFromDownloadItem() { |
| 273 if (!download_item_) | 282 if (!download_item_) |
| 274 return; | 283 return; |
| 275 | 284 |
| 276 download_item_->RemoveObserver(this); | 285 download_item_->RemoveObserver(this); |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 | 417 |
| 409 bool DownloadShelfContextMenu::CanOpenPdfInSystemViewer() const { | 418 bool DownloadShelfContextMenu::CanOpenPdfInSystemViewer() const { |
| 410 #if defined(OS_WIN) | 419 #if defined(OS_WIN) |
| 411 return IsDownloadPdf() && | 420 return IsDownloadPdf() && |
| 412 (IsAdobeReaderDefaultPDFViewer() ? is_adobe_pdf_reader_up_to_date_ : | 421 (IsAdobeReaderDefaultPDFViewer() ? is_adobe_pdf_reader_up_to_date_ : |
| 413 true); | 422 true); |
| 414 #elif defined(OS_MACOSX) || defined(OS_LINUX) | 423 #elif defined(OS_MACOSX) || defined(OS_LINUX) |
| 415 return IsDownloadPdf(); | 424 return IsDownloadPdf(); |
| 416 #endif | 425 #endif |
| 417 } | 426 } |
| OLD | NEW |