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/ui/webui/downloads_dom_handler.h" | 5 #include "chrome/browser/ui/webui/downloads_dom_handler.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <functional> | 8 #include <functional> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 file_value->SetString("file_name", file_name); | 140 file_value->SetString("file_name", file_name); |
141 file_value->SetString("url", download_item->GetURL().spec()); | 141 file_value->SetString("url", download_item->GetURL().spec()); |
142 file_value->SetBoolean("otr", incognito); | 142 file_value->SetBoolean("otr", incognito); |
143 file_value->SetInteger("total", static_cast<int>( | 143 file_value->SetInteger("total", static_cast<int>( |
144 download_item->GetTotalBytes())); | 144 download_item->GetTotalBytes())); |
145 file_value->SetBoolean("file_externally_removed", | 145 file_value->SetBoolean("file_externally_removed", |
146 download_item->GetFileExternallyRemoved()); | 146 download_item->GetFileExternallyRemoved()); |
147 file_value->SetBoolean("retry", false); // Overridden below if needed. | 147 file_value->SetBoolean("retry", false); // Overridden below if needed. |
148 file_value->SetBoolean("resume", download_item->CanResume()); | 148 file_value->SetBoolean("resume", download_item->CanResume()); |
149 | 149 |
150 if (download_item->IsInProgress()) { | 150 switch (download_item->GetState()) { |
151 if (download_item->IsDangerous()) { | 151 case content::DownloadItem::IN_PROGRESS: |
152 file_value->SetString("state", "DANGEROUS"); | 152 if (download_item->IsDangerous()) { |
153 // These are the only danger states that the UI is equipped to handle. | 153 file_value->SetString("state", "DANGEROUS"); |
154 DCHECK(download_item->GetDangerType() == | 154 // These are the only danger states that the UI is equipped to handle. |
155 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE || | 155 DCHECK(download_item->GetDangerType() == |
156 download_item->GetDangerType() == | 156 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE || |
157 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL || | 157 download_item->GetDangerType() == |
158 download_item->GetDangerType() == | 158 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL || |
159 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT || | 159 download_item->GetDangerType() == |
160 download_item->GetDangerType() == | 160 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT || |
161 content::DOWNLOAD_DANGER_TYPE_UNCOMMON_CONTENT || | 161 download_item->GetDangerType() == |
162 download_item->GetDangerType() == | 162 content::DOWNLOAD_DANGER_TYPE_UNCOMMON_CONTENT || |
163 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_HOST); | 163 download_item->GetDangerType() == |
164 const char* danger_type_value = | 164 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_HOST); |
165 GetDangerTypeString(download_item->GetDangerType()); | 165 const char* danger_type_value = |
166 file_value->SetString("danger_type", danger_type_value); | 166 GetDangerTypeString(download_item->GetDangerType()); |
167 } else if (download_item->IsPaused()) { | 167 file_value->SetString("danger_type", danger_type_value); |
168 file_value->SetString("state", "PAUSED"); | 168 } else if (download_item->IsPaused()) { |
169 } else { | 169 file_value->SetString("state", "PAUSED"); |
170 file_value->SetString("state", "IN_PROGRESS"); | 170 } else { |
171 } | 171 file_value->SetString("state", "IN_PROGRESS"); |
| 172 } |
172 | 173 |
173 file_value->SetString("progress_status_text", | 174 file_value->SetString("progress_status_text", |
174 download_util::GetProgressStatusText(download_item)); | 175 download_util::GetProgressStatusText(download_item)); |
175 | 176 |
176 file_value->SetInteger("percent", | 177 file_value->SetInteger("percent", |
177 static_cast<int>(download_item->PercentComplete())); | 178 static_cast<int>(download_item->PercentComplete())); |
178 file_value->SetInteger("received", | 179 file_value->SetInteger("received", |
179 static_cast<int>(download_item->GetReceivedBytes())); | 180 static_cast<int>(download_item->GetReceivedBytes())); |
180 } else if (download_item->IsInterrupted()) { | 181 break; |
181 file_value->SetString("state", "INTERRUPTED"); | |
182 | 182 |
183 file_value->SetString("progress_status_text", | 183 case content::DownloadItem::INTERRUPTED: |
184 download_util::GetProgressStatusText(download_item)); | 184 file_value->SetString("state", "INTERRUPTED"); |
185 | 185 |
186 file_value->SetInteger("percent", | 186 file_value->SetString("progress_status_text", |
187 static_cast<int>(download_item->PercentComplete())); | 187 download_util::GetProgressStatusText(download_item)); |
188 file_value->SetInteger("received", | 188 |
189 static_cast<int>(download_item->GetReceivedBytes())); | 189 file_value->SetInteger("percent", |
190 file_value->SetString("last_reason_text", | 190 static_cast<int>(download_item->PercentComplete())); |
191 download_model.GetInterruptReasonText()); | 191 file_value->SetInteger("received", |
192 if (content::DOWNLOAD_INTERRUPT_REASON_CRASH == | 192 static_cast<int>(download_item->GetReceivedBytes())); |
193 download_item->GetLastReason() && !download_item->CanResume()) | 193 file_value->SetString("last_reason_text", |
| 194 download_model.GetInterruptReasonText()); |
| 195 if (content::DOWNLOAD_INTERRUPT_REASON_CRASH == |
| 196 download_item->GetLastReason() && !download_item->CanResume()) |
| 197 file_value->SetBoolean("retry", true); |
| 198 break; |
| 199 |
| 200 case content::DownloadItem::CANCELLED: |
| 201 file_value->SetString("state", "CANCELLED"); |
194 file_value->SetBoolean("retry", true); | 202 file_value->SetBoolean("retry", true); |
195 } else if (download_item->IsCancelled()) { | 203 break; |
196 file_value->SetString("state", "CANCELLED"); | 204 |
197 file_value->SetBoolean("retry", true); | 205 case content::DownloadItem::COMPLETE: |
198 } else if (download_item->IsComplete()) { | 206 DCHECK(!download_item->IsDangerous()); |
199 DCHECK(!download_item->IsDangerous()); | 207 file_value->SetString("state", "COMPLETE"); |
200 file_value->SetString("state", "COMPLETE"); | 208 break; |
201 } else { | 209 |
202 NOTREACHED() << "state undefined"; | 210 case content::DownloadItem::MAX_DOWNLOAD_STATE: |
| 211 NOTREACHED() << "state undefined"; |
203 } | 212 } |
204 | 213 |
205 return file_value; | 214 return file_value; |
206 } | 215 } |
207 | 216 |
208 // Filters out extension downloads and downloads that don't have a filename yet. | 217 // Filters out extension downloads and downloads that don't have a filename yet. |
209 bool IsDownloadDisplayable(const content::DownloadItem& item) { | 218 bool IsDownloadDisplayable(const content::DownloadItem& item) { |
210 return (!download_crx_util::IsExtensionDownload(item) && | 219 return (!download_crx_util::IsExtensionDownload(item) && |
211 !item.IsTemporary() && | 220 !item.IsTemporary() && |
212 !item.GetFileNameToReportUser().empty() && | 221 !item.GetFileNameToReportUser().empty() && |
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
542 } | 551 } |
543 | 552 |
544 void DownloadsDOMHandler::CallDownloadsList(const base::ListValue& downloads) { | 553 void DownloadsDOMHandler::CallDownloadsList(const base::ListValue& downloads) { |
545 web_ui()->CallJavascriptFunction("downloadsList", downloads); | 554 web_ui()->CallJavascriptFunction("downloadsList", downloads); |
546 } | 555 } |
547 | 556 |
548 void DownloadsDOMHandler::CallDownloadUpdated( | 557 void DownloadsDOMHandler::CallDownloadUpdated( |
549 const base::ListValue& download_item) { | 558 const base::ListValue& download_item) { |
550 web_ui()->CallJavascriptFunction("downloadUpdated", download_item); | 559 web_ui()->CallJavascriptFunction("downloadUpdated", download_item); |
551 } | 560 } |
OLD | NEW |