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

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

Issue 3127008: Preliminary work on resuming downloads whose connections have expired.
Patch Set: Waiting to send download automation error message until after other downloads are canceled. Created 10 years, 3 months 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
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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.h" 5 #include "chrome/browser/download/download_shelf.h"
6 6
7 #include "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "base/command_line.h"
8 #include "base/file_util.h" 9 #include "base/file_util.h"
9 #include "chrome/browser/browser.h" 10 #include "chrome/browser/browser.h"
10 #include "chrome/browser/dom_ui/downloads_ui.h" 11 #include "chrome/browser/dom_ui/downloads_ui.h"
11 #include "chrome/browser/download/download_item.h" 12 #include "chrome/browser/download/download_item.h"
12 #include "chrome/browser/download/download_item_model.h" 13 #include "chrome/browser/download/download_item_model.h"
13 #include "chrome/browser/download/download_manager.h" 14 #include "chrome/browser/download/download_manager.h"
14 #include "chrome/browser/download/download_util.h" 15 #include "chrome/browser/download/download_util.h"
15 #include "chrome/browser/metrics/user_metrics.h" 16 #include "chrome/browser/metrics/user_metrics.h"
16 #include "chrome/common/url_constants.h" 17 #include "chrome/common/url_constants.h"
18 #include "chrome/common/chrome_switches.h"
17 #include "grit/generated_resources.h" 19 #include "grit/generated_resources.h"
18 20
19 // DownloadShelfContextMenu ---------------------------------------------------- 21 // DownloadShelfContextMenu ----------------------------------------------------
20 22
21 DownloadShelfContextMenu::DownloadShelfContextMenu( 23 DownloadShelfContextMenu::DownloadShelfContextMenu(
22 BaseDownloadItemModel* download_model) 24 BaseDownloadItemModel* download_model)
23 : download_(download_model->download()), 25 : download_(download_model->download()),
24 model_(download_model) { 26 model_(download_model) {
25 } 27 }
26 28
(...skipping 16 matching lines...) Expand all
43 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_SHOW); 45 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_SHOW);
44 case OPEN_WHEN_COMPLETE: 46 case OPEN_WHEN_COMPLETE:
45 if (download_->state() == DownloadItem::IN_PROGRESS) 47 if (download_->state() == DownloadItem::IN_PROGRESS)
46 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE); 48 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE);
47 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN); 49 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN);
48 case ALWAYS_OPEN_TYPE: 50 case ALWAYS_OPEN_TYPE:
49 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); 51 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE);
50 case CANCEL: 52 case CANCEL:
51 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_CANCEL); 53 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_CANCEL);
52 case TOGGLE_PAUSE: { 54 case TOGGLE_PAUSE: {
53 if (download_->is_paused()) 55 if (download_->is_paused() || download_->IsInterruptedDownload())
54 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_RESUME_ITEM); 56 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_RESUME_ITEM);
55 else 57 else
56 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PAUSE_ITEM); 58 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PAUSE_ITEM);
57 } 59 }
58 default: 60 default:
59 NOTREACHED(); 61 NOTREACHED();
60 } 62 }
61 return string16(); 63 return string16();
62 } 64 }
63 65
64 bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const { 66 bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const {
67 static bool can_restart = CommandLine::ForCurrentProcess()->HasSwitch(
68 switches::kEnableDownloadRestarts);
65 switch (command_id) { 69 switch (command_id) {
66 case SHOW_IN_FOLDER: 70 case SHOW_IN_FOLDER:
67 case OPEN_WHEN_COMPLETE: 71 case OPEN_WHEN_COMPLETE:
68 return download_->state() != DownloadItem::CANCELLED; 72 return download_->state() != DownloadItem::CANCELLED;
69 case ALWAYS_OPEN_TYPE: 73 case ALWAYS_OPEN_TYPE:
70 return download_->CanOpenDownload(); 74 return download_->CanOpenDownload();
71 case CANCEL: 75 case CANCEL:
72 return download_->state() == DownloadItem::IN_PROGRESS; 76 return download_->IsPartialDownload();
73 case TOGGLE_PAUSE: 77 case TOGGLE_PAUSE:
74 return download_->state() == DownloadItem::IN_PROGRESS; 78 return ((download_->state() == DownloadItem::IN_PROGRESS) ||
79 (can_restart &&
80 (download_->IsInterruptedDownload())));
75 default: 81 default:
76 return command_id > 0 && command_id < MENU_LAST; 82 return command_id > 0 && command_id < MENU_LAST;
77 } 83 }
78 } 84 }
79 85
80 void DownloadShelfContextMenu::ExecuteCommand(int command_id) { 86 void DownloadShelfContextMenu::ExecuteCommand(int command_id) {
81 switch (command_id) { 87 switch (command_id) {
82 case SHOW_IN_FOLDER: 88 case SHOW_IN_FOLDER:
83 download_->ShowDownloadInShell(); 89 download_->ShowDownloadInShell();
84 break; 90 break;
85 case OPEN_WHEN_COMPLETE: 91 case OPEN_WHEN_COMPLETE:
86 download_->OpenDownload(); 92 download_->OpenDownload();
87 break; 93 break;
88 case ALWAYS_OPEN_TYPE: { 94 case ALWAYS_OPEN_TYPE: {
89 download_->OpenFilesBasedOnExtension( 95 download_->OpenFilesBasedOnExtension(
90 !IsCommandIdChecked(ALWAYS_OPEN_TYPE)); 96 !IsCommandIdChecked(ALWAYS_OPEN_TYPE));
91 break; 97 break;
92 } 98 }
93 case CANCEL: 99 case CANCEL:
94 model_->CancelTask(); 100 model_->CancelTask();
95 break; 101 break;
96 case TOGGLE_PAUSE: 102 case TOGGLE_PAUSE:
97 // It is possible for the download to complete before the user clicks the 103 // It is possible for the download to complete before the user clicks the
98 // menu item, recheck if the download is in progress state before toggling 104 // menu item, recheck if the download is in progress state before toggling
99 // pause. 105 // pause.
100 if (download_->state() == DownloadItem::IN_PROGRESS) 106 if (download_->IsPartialDownload())
101 download_->TogglePause(); 107 download_->TogglePause();
102 break; 108 break;
103 default: 109 default:
104 NOTREACHED(); 110 NOTREACHED();
105 } 111 }
106 } 112 }
107 113
108 bool DownloadShelfContextMenu::GetAcceleratorForCommandId( 114 bool DownloadShelfContextMenu::GetAcceleratorForCommandId(
109 int command_id, menus::Accelerator* accelerator) { 115 int command_id, menus::Accelerator* accelerator) {
110 return false; 116 return false;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); 155 ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE);
150 finished_download_menu_model_->AddSeparator(); 156 finished_download_menu_model_->AddSeparator();
151 finished_download_menu_model_->AddItemWithStringId( 157 finished_download_menu_model_->AddItemWithStringId(
152 SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW); 158 SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW);
153 finished_download_menu_model_->AddSeparator(); 159 finished_download_menu_model_->AddSeparator();
154 finished_download_menu_model_->AddItemWithStringId( 160 finished_download_menu_model_->AddItemWithStringId(
155 CANCEL, IDS_DOWNLOAD_MENU_CANCEL); 161 CANCEL, IDS_DOWNLOAD_MENU_CANCEL);
156 162
157 return finished_download_menu_model_.get(); 163 return finished_download_menu_model_.get();
158 } 164 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698