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

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

Issue 8503018: Split DownloadItem into an ABC, an Impl, and a Mock. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: CamelCase Created 9 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // Download utility implementation 5 // Download utility implementation
6 6
7 #include "chrome/browser/download/download_util.h" 7 #include "chrome/browser/download/download_util.h"
8 8
9 #if defined(OS_WIN) 9 #if defined(OS_WIN)
10 #include <shobjidl.h> 10 #include <shobjidl.h>
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 } 123 }
124 return (download_path == desktop_dir); 124 return (download_path == desktop_dir);
125 } 125 }
126 126
127 void GenerateFileNameFromRequest(const DownloadItem& download_item, 127 void GenerateFileNameFromRequest(const DownloadItem& download_item,
128 FilePath* generated_name) { 128 FilePath* generated_name) {
129 std::string default_file_name( 129 std::string default_file_name(
130 l10n_util::GetStringUTF8(IDS_DEFAULT_DOWNLOAD_FILENAME)); 130 l10n_util::GetStringUTF8(IDS_DEFAULT_DOWNLOAD_FILENAME));
131 131
132 *generated_name = net::GenerateFileName(download_item.GetURL(), 132 *generated_name = net::GenerateFileName(download_item.GetURL(),
133 download_item.content_disposition(), 133 download_item.GetContentDisposition(),
134 download_item.referrer_charset(), 134 download_item.GetReferrerCharset(),
135 download_item.suggested_filename(), 135 download_item.GetSuggestedFilename(),
136 download_item.mime_type(), 136 download_item.GetMimeType(),
137 default_file_name); 137 default_file_name);
138 } 138 }
139 139
140 // Download progress painting -------------------------------------------------- 140 // Download progress painting --------------------------------------------------
141 141
142 // Common bitmaps used for download progress animations. We load them once the 142 // Common bitmaps used for download progress animations. We load them once the
143 // first time we do a progress paint, then reuse them as they are always the 143 // first time we do a progress paint, then reuse them as they are always the
144 // same. 144 // same.
145 SkBitmap* g_foreground_16 = NULL; 145 SkBitmap* g_foreground_16 = NULL;
146 SkBitmap* g_background_16 = NULL; 146 SkBitmap* g_background_16 = NULL;
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 DCHECK(download); 346 DCHECK(download);
347 347
348 // Set up our OLE machinery 348 // Set up our OLE machinery
349 ui::OSExchangeData data; 349 ui::OSExchangeData data;
350 350
351 if (icon) { 351 if (icon) {
352 drag_utils::CreateDragImageForFile( 352 drag_utils::CreateDragImageForFile(
353 download->GetFileNameToReportUser(), *icon, &data); 353 download->GetFileNameToReportUser(), *icon, &data);
354 } 354 }
355 355
356 const FilePath full_path = download->full_path(); 356 const FilePath full_path = download->GetFullPath();
357 data.SetFilename(full_path); 357 data.SetFilename(full_path);
358 358
359 std::string mime_type = download->mime_type(); 359 std::string mime_type = download->GetMimeType();
360 if (mime_type.empty()) 360 if (mime_type.empty())
361 net::GetMimeTypeFromFile(full_path, &mime_type); 361 net::GetMimeTypeFromFile(full_path, &mime_type);
362 362
363 // Add URL so that we can load supported files when dragged to TabContents. 363 // Add URL so that we can load supported files when dragged to TabContents.
364 if (net::IsSupportedMimeType(mime_type)) { 364 if (net::IsSupportedMimeType(mime_type)) {
365 data.SetURL(net::FilePathToFileURL(full_path), 365 data.SetURL(net::FilePathToFileURL(full_path),
366 download->GetFileNameToReportUser().LossyDisplayName()); 366 download->GetFileNameToReportUser().LossyDisplayName());
367 } 367 }
368 368
369 #if defined(USE_AURA) 369 #if defined(USE_AURA)
(...skipping 25 matching lines...) Expand all
395 gfx::Image* icon, 395 gfx::Image* icon,
396 gfx::NativeView view) { 396 gfx::NativeView view) {
397 DownloadItemDrag::BeginDrag(download, icon); 397 DownloadItemDrag::BeginDrag(download, icon);
398 } 398 }
399 #endif // USE_X11 399 #endif // USE_X11
400 400
401 DictionaryValue* CreateDownloadItemValue(DownloadItem* download, int id) { 401 DictionaryValue* CreateDownloadItemValue(DownloadItem* download, int id) {
402 DictionaryValue* file_value = new DictionaryValue(); 402 DictionaryValue* file_value = new DictionaryValue();
403 403
404 file_value->SetInteger("started", 404 file_value->SetInteger("started",
405 static_cast<int>(download->start_time().ToTimeT())); 405 static_cast<int>(download->GetStartTime().ToTimeT()));
406 file_value->SetString("since_string", 406 file_value->SetString("since_string",
407 TimeFormat::RelativeDate(download->start_time(), NULL)); 407 TimeFormat::RelativeDate(download->GetStartTime(), NULL));
408 file_value->SetString("date_string", 408 file_value->SetString("date_string",
409 base::TimeFormatShortDate(download->start_time())); 409 base::TimeFormatShortDate(download->GetStartTime()));
410 file_value->SetInteger("id", id); 410 file_value->SetInteger("id", id);
411 411
412 FilePath download_path(download->GetTargetFilePath()); 412 FilePath download_path(download->GetTargetFilePath());
413 file_value->Set("file_path", base::CreateFilePathValue(download_path)); 413 file_value->Set("file_path", base::CreateFilePathValue(download_path));
414 file_value->SetString("file_url", 414 file_value->SetString("file_url",
415 net::FilePathToFileURL(download_path).spec()); 415 net::FilePathToFileURL(download_path).spec());
416 416
417 // Keep file names as LTR. 417 // Keep file names as LTR.
418 string16 file_name = download->GetFileNameToReportUser().LossyDisplayName(); 418 string16 file_name = download->GetFileNameToReportUser().LossyDisplayName();
419 file_name = base::i18n::GetDisplayStringInLTRDirectionality(file_name); 419 file_name = base::i18n::GetDisplayStringInLTRDirectionality(file_name);
420 file_value->SetString("file_name", file_name); 420 file_value->SetString("file_name", file_name);
421 file_value->SetString("url", download->GetURL().spec()); 421 file_value->SetString("url", download->GetURL().spec());
422 file_value->SetBoolean("otr", download->is_otr()); 422 file_value->SetBoolean("otr", download->IsOtr());
423 file_value->SetInteger("total", static_cast<int>(download->total_bytes())); 423 file_value->SetInteger("total", static_cast<int>(download->GetTotalBytes()));
424 file_value->SetBoolean("file_externally_removed", 424 file_value->SetBoolean("file_externally_removed",
425 download->file_externally_removed()); 425 download->GetFileExternallyRemoved());
426 426
427 if (download->IsInProgress()) { 427 if (download->IsInProgress()) {
428 if (download->safety_state() == DownloadItem::DANGEROUS) { 428 if (download->GetSafetyState() == DownloadItem::DANGEROUS) {
429 file_value->SetString("state", "DANGEROUS"); 429 file_value->SetString("state", "DANGEROUS");
430 DCHECK(download->GetDangerType() == DownloadItem::DANGEROUS_FILE || 430 DCHECK(download->GetDangerType() == DownloadItem::DANGEROUS_FILE ||
431 download->GetDangerType() == DownloadItem::DANGEROUS_URL); 431 download->GetDangerType() == DownloadItem::DANGEROUS_URL);
432 const char* danger_type_value = 432 const char* danger_type_value =
433 download->GetDangerType() == DownloadItem::DANGEROUS_FILE ? 433 download->GetDangerType() == DownloadItem::DANGEROUS_FILE ?
434 "DANGEROUS_FILE" : "DANGEROUS_URL"; 434 "DANGEROUS_FILE" : "DANGEROUS_URL";
435 file_value->SetString("danger_type", danger_type_value); 435 file_value->SetString("danger_type", danger_type_value);
436 } else if (download->is_paused()) { 436 } else if (download->IsPaused()) {
437 file_value->SetString("state", "PAUSED"); 437 file_value->SetString("state", "PAUSED");
438 } else { 438 } else {
439 file_value->SetString("state", "IN_PROGRESS"); 439 file_value->SetString("state", "IN_PROGRESS");
440 } 440 }
441 441
442 file_value->SetString("progress_status_text", 442 file_value->SetString("progress_status_text",
443 GetProgressStatusText(download)); 443 GetProgressStatusText(download));
444 444
445 file_value->SetInteger("percent", 445 file_value->SetInteger("percent",
446 static_cast<int>(download->PercentComplete())); 446 static_cast<int>(download->PercentComplete()));
447 file_value->SetInteger("received", 447 file_value->SetInteger("received",
448 static_cast<int>(download->received_bytes())); 448 static_cast<int>(download->GetReceivedBytes()));
449 } else if (download->IsInterrupted()) { 449 } else if (download->IsInterrupted()) {
450 file_value->SetString("state", "INTERRUPTED"); 450 file_value->SetString("state", "INTERRUPTED");
451 451
452 file_value->SetString("progress_status_text", 452 file_value->SetString("progress_status_text",
453 GetProgressStatusText(download)); 453 GetProgressStatusText(download));
454 454
455 file_value->SetInteger("percent", 455 file_value->SetInteger("percent",
456 static_cast<int>(download->PercentComplete())); 456 static_cast<int>(download->PercentComplete()));
457 file_value->SetInteger("received", 457 file_value->SetInteger("received",
458 static_cast<int>(download->received_bytes())); 458 static_cast<int>(download->GetReceivedBytes()));
459 } else if (download->IsCancelled()) { 459 } else if (download->IsCancelled()) {
460 file_value->SetString("state", "CANCELLED"); 460 file_value->SetString("state", "CANCELLED");
461 } else if (download->IsComplete()) { 461 } else if (download->IsComplete()) {
462 if (download->safety_state() == DownloadItem::DANGEROUS) 462 if (download->GetSafetyState() == DownloadItem::DANGEROUS)
463 file_value->SetString("state", "DANGEROUS"); 463 file_value->SetString("state", "DANGEROUS");
464 else 464 else
465 file_value->SetString("state", "COMPLETE"); 465 file_value->SetString("state", "COMPLETE");
466 } else if (download->state() == DownloadItem::REMOVING) { 466 } else if (download->GetState() == DownloadItem::REMOVING) {
467 file_value->SetString("state", "REMOVING"); 467 file_value->SetString("state", "REMOVING");
468 } else { 468 } else {
469 NOTREACHED() << "state undefined"; 469 NOTREACHED() << "state undefined";
470 } 470 }
471 471
472 return file_value; 472 return file_value;
473 } 473 }
474 474
475 string16 GetProgressStatusText(DownloadItem* download) { 475 string16 GetProgressStatusText(DownloadItem* download) {
476 int64 total = download->total_bytes(); 476 int64 total = download->GetTotalBytes();
477 int64 size = download->received_bytes(); 477 int64 size = download->GetReceivedBytes();
478 string16 received_size = ui::FormatBytes(size); 478 string16 received_size = ui::FormatBytes(size);
479 string16 amount = received_size; 479 string16 amount = received_size;
480 480
481 // Adjust both strings for the locale direction since we don't yet know which 481 // Adjust both strings for the locale direction since we don't yet know which
482 // string we'll end up using for constructing the final progress string. 482 // string we'll end up using for constructing the final progress string.
483 base::i18n::AdjustStringForLocaleDirection(&amount); 483 base::i18n::AdjustStringForLocaleDirection(&amount);
484 484
485 if (total) { 485 if (total) {
486 string16 total_text = ui::FormatBytes(total); 486 string16 total_text = ui::FormatBytes(total);
487 base::i18n::AdjustStringForLocaleDirection(&total_text); 487 base::i18n::AdjustStringForLocaleDirection(&total_text);
488 488
489 base::i18n::AdjustStringForLocaleDirection(&received_size); 489 base::i18n::AdjustStringForLocaleDirection(&received_size);
490 amount = l10n_util::GetStringFUTF16(IDS_DOWNLOAD_TAB_PROGRESS_SIZE, 490 amount = l10n_util::GetStringFUTF16(IDS_DOWNLOAD_TAB_PROGRESS_SIZE,
491 received_size, 491 received_size,
492 total_text); 492 total_text);
493 } else { 493 } else {
494 amount.assign(received_size); 494 amount.assign(received_size);
495 } 495 }
496 int64 current_speed = download->CurrentSpeed(); 496 int64 current_speed = download->CurrentSpeed();
497 string16 speed_text = ui::FormatSpeed(current_speed); 497 string16 speed_text = ui::FormatSpeed(current_speed);
498 base::i18n::AdjustStringForLocaleDirection(&speed_text); 498 base::i18n::AdjustStringForLocaleDirection(&speed_text);
499 499
500 base::TimeDelta remaining; 500 base::TimeDelta remaining;
501 string16 time_remaining; 501 string16 time_remaining;
502 if (download->is_paused()) 502 if (download->IsPaused())
503 time_remaining = l10n_util::GetStringUTF16(IDS_DOWNLOAD_PROGRESS_PAUSED); 503 time_remaining = l10n_util::GetStringUTF16(IDS_DOWNLOAD_PROGRESS_PAUSED);
504 else if (download->TimeRemaining(&remaining)) 504 else if (download->TimeRemaining(&remaining))
505 time_remaining = TimeFormat::TimeRemaining(remaining); 505 time_remaining = TimeFormat::TimeRemaining(remaining);
506 506
507 if (time_remaining.empty()) { 507 if (time_remaining.empty()) {
508 base::i18n::AdjustStringForLocaleDirection(&amount); 508 base::i18n::AdjustStringForLocaleDirection(&amount);
509 return l10n_util::GetStringFUTF16( 509 return l10n_util::GetStringFUTF16(
510 IDS_DOWNLOAD_TAB_PROGRESS_STATUS_TIME_UNKNOWN, speed_text, amount); 510 IDS_DOWNLOAD_TAB_PROGRESS_STATUS_TIME_UNKNOWN, speed_text, amount);
511 } 511 }
512 return l10n_util::GetStringFUTF16(IDS_DOWNLOAD_TAB_PROGRESS_STATUS, 512 return l10n_util::GetStringFUTF16(IDS_DOWNLOAD_TAB_PROGRESS_STATUS,
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 return DownloadFile::GetUniquePathNumberWithSuffix( 565 return DownloadFile::GetUniquePathNumberWithSuffix(
566 path, FILE_PATH_LITERAL(".crdownload")); 566 path, FILE_PATH_LITERAL(".crdownload"));
567 } 567 }
568 568
569 FilePath GetCrDownloadPath(const FilePath& suggested_path) { 569 FilePath GetCrDownloadPath(const FilePath& suggested_path) {
570 return DownloadFile::AppendSuffixToPath( 570 return DownloadFile::AppendSuffixToPath(
571 suggested_path, FILE_PATH_LITERAL(".crdownload")); 571 suggested_path, FILE_PATH_LITERAL(".crdownload"));
572 } 572 }
573 573
574 } // namespace download_util 574 } // namespace download_util
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698