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

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

Powered by Google App Engine
This is Rietveld 408576698