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

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

Issue 2619603002: Remove android_java_ui as it is not used (Closed)
Patch Set: Rebase to master Created 3 years, 11 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) 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include "base/at_exit.h" 8 #include "base/at_exit.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/files/scoped_temp_dir.h" 10 #include "base/files/scoped_temp_dir.h"
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 base::FilePath() 505 base::FilePath()
506 .AppendASCII("overridden") 506 .AppendASCII("overridden")
507 .Append(path.BaseName()); 507 .Append(path.BaseName());
508 if (new_path.MatchesExtension(FILE_PATH_LITERAL(".remove"))) 508 if (new_path.MatchesExtension(FILE_PATH_LITERAL(".remove")))
509 new_path = new_path.RemoveExtension(); 509 new_path = new_path.RemoveExtension();
510 callback.Run(new_path, DownloadPathReservationTracker::UNIQUIFY); 510 callback.Run(new_path, DownloadPathReservationTracker::UNIQUIFY);
511 } 511 }
512 512
513 TEST_F(DownloadTargetDeterminerTest, Basic) { 513 TEST_F(DownloadTargetDeterminerTest, Basic) {
514 const DownloadTestCase kBasicTestCases[] = { 514 const DownloadTestCase kBasicTestCases[] = {
515 {// 0: Automatic Safe 515 {// 0: Automatic Safe
516 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 516 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
517 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 517 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
518 "text/plain", FILE_PATH_LITERAL(""), 518 "text/plain", FILE_PATH_LITERAL(""),
519 519
520 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 520 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
521 521
522 EXPECT_CRDOWNLOAD}, 522 EXPECT_CRDOWNLOAD},
523 523
524 #if !BUILDFLAG(ANDROID_JAVA_UI) 524 #if !defined(OS_ANDROID)
525 {// 1: Save_As Safe 525 {// 1: Save_As Safe
526 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 526 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
527 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 527 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
528 "text/plain", FILE_PATH_LITERAL(""), 528 "text/plain", FILE_PATH_LITERAL(""),
529 529
530 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, 530 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT,
531 531
532 EXPECT_CRDOWNLOAD}, 532 EXPECT_CRDOWNLOAD},
533 #endif // !BUILDFLAG(ANDROID_JAVA_UI) 533 #endif // !defined(OS_ANDROID)
534 534
535 {// 2: Automatic Dangerous 535 {// 2: Automatic Dangerous
536 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, 536 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE,
537 DownloadFileType::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", 537 DownloadFileType::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", "",
538 "", FILE_PATH_LITERAL(""), 538 FILE_PATH_LITERAL(""),
539 539
540 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 540 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
541 541
542 EXPECT_UNCONFIRMED}, 542 EXPECT_UNCONFIRMED},
543 543
544 {// 3: Forced Safe 544 {// 3: Forced Safe
545 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 545 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
546 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", "", 546 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", "",
547 FILE_PATH_LITERAL("forced-foo.txt"), 547 FILE_PATH_LITERAL("forced-foo.txt"),
548 548
549 FILE_PATH_LITERAL("forced-foo.txt"), 549 FILE_PATH_LITERAL("forced-foo.txt"),
550 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 550 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
551 551
552 EXPECT_LOCAL_PATH}, 552 EXPECT_LOCAL_PATH},
553 }; 553 };
554 554
555 // The test assumes that .crx files have a danger level of 555 // The test assumes that .crx files have a danger level of
556 // ALLOW_ON_USER_GESTURE. 556 // ALLOW_ON_USER_GESTURE.
557 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, 557 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE,
558 Policies()->GetFileDangerLevel( 558 Policies()->GetFileDangerLevel(
559 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); 559 base::FilePath(FILE_PATH_LITERAL("foo.crx"))));
560 RunTestCasesWithActiveItem(kBasicTestCases, arraysize(kBasicTestCases)); 560 RunTestCasesWithActiveItem(kBasicTestCases, arraysize(kBasicTestCases));
561 } 561 }
562 562
563 #if !BUILDFLAG(ANDROID_JAVA_UI) 563 #if !defined(OS_ANDROID)
564 TEST_F(DownloadTargetDeterminerTest, CancelSaveAs) { 564 TEST_F(DownloadTargetDeterminerTest, CancelSaveAs) {
565 const DownloadTestCase kCancelSaveAsTestCases[] = { 565 const DownloadTestCase kCancelSaveAsTestCases[] = {
566 {// 0: Save_As Safe, Cancelled. 566 {// 0: Save_As Safe, Cancelled.
567 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 567 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
568 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 568 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
569 "text/plain", FILE_PATH_LITERAL(""), 569 "text/plain", FILE_PATH_LITERAL(""),
570 570
571 FILE_PATH_LITERAL(""), DownloadItem::TARGET_DISPOSITION_PROMPT, 571 FILE_PATH_LITERAL(""), DownloadItem::TARGET_DISPOSITION_PROMPT,
572 572
573 EXPECT_LOCAL_PATH}}; 573 EXPECT_LOCAL_PATH}};
574 ON_CALL(*delegate(), PromptUserForDownloadPath(_, _, _)) 574 ON_CALL(*delegate(), PromptUserForDownloadPath(_, _, _))
575 .WillByDefault(WithArg<2>(ScheduleCallback(base::FilePath()))); 575 .WillByDefault(WithArg<2>(ScheduleCallback(base::FilePath())));
576 RunTestCasesWithActiveItem(kCancelSaveAsTestCases, 576 RunTestCasesWithActiveItem(kCancelSaveAsTestCases,
577 arraysize(kCancelSaveAsTestCases)); 577 arraysize(kCancelSaveAsTestCases));
578 } 578 }
579 #endif // !BUILDFLAG(ANDROID_JAVA_UI) 579 #endif // !defined(OS_ANDROID)
580 580
581 // The SafeBrowsing check is performed early. Make sure that a download item 581 // The SafeBrowsing check is performed early. Make sure that a download item
582 // that has been marked as DANGEROUS_URL behaves correctly. 582 // that has been marked as DANGEROUS_URL behaves correctly.
583 TEST_F(DownloadTargetDeterminerTest, DangerousUrl) { 583 TEST_F(DownloadTargetDeterminerTest, DangerousUrl) {
584 const DownloadTestCase kSafeBrowsingTestCases[] = { 584 const DownloadTestCase kSafeBrowsingTestCases[] = {
585 {// 0: Automatic Dangerous URL 585 {// 0: Automatic Dangerous URL
586 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, 586 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL,
587 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.txt", 587 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.txt", "",
588 "", FILE_PATH_LITERAL(""), 588 FILE_PATH_LITERAL(""),
589 589
590 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 590 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
591 591
592 EXPECT_UNCONFIRMED}, 592 EXPECT_UNCONFIRMED},
593 593
594 #if !BUILDFLAG(ANDROID_JAVA_UI) 594 #if !defined(OS_ANDROID)
595 {// 1: Save As Dangerous URL 595 {// 1: Save As Dangerous URL
596 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, 596 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL,
597 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.txt", 597 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.txt", "",
598 "", FILE_PATH_LITERAL(""), 598 FILE_PATH_LITERAL(""),
599 599
600 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, 600 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT,
601 601
602 EXPECT_UNCONFIRMED}, 602 EXPECT_UNCONFIRMED},
603 #endif // !BUILDFLAG(ANDROID_JAVA_UI) 603 #endif // !defined(OS_ANDROID)
604 604
605 {// 2: Forced Dangerous URL 605 {// 2: Forced Dangerous URL
606 FORCED, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, 606 FORCED, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL,
607 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.txt", 607 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.txt", "",
608 "", FILE_PATH_LITERAL("forced-foo.txt"), 608 FILE_PATH_LITERAL("forced-foo.txt"),
609 609
610 FILE_PATH_LITERAL("forced-foo.txt"), 610 FILE_PATH_LITERAL("forced-foo.txt"),
611 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 611 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
612 612
613 EXPECT_UNCONFIRMED}, 613 EXPECT_UNCONFIRMED},
614 614
615 {// 3: Automatic Dangerous URL + Dangerous file. Dangerous URL takes 615 {// 3: Automatic Dangerous URL + Dangerous file. Dangerous URL takes
616 // precedence. 616 // precedence.
617 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, 617 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL,
618 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.html", 618 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.html",
619 "", FILE_PATH_LITERAL(""), 619 "", FILE_PATH_LITERAL(""),
620 620
621 FILE_PATH_LITERAL("foo.html"), 621 FILE_PATH_LITERAL("foo.html"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
622 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
623 622
624 EXPECT_UNCONFIRMED}, 623 EXPECT_UNCONFIRMED},
625 624
626 #if !BUILDFLAG(ANDROID_JAVA_UI) 625 #if !defined(OS_ANDROID)
627 {// 4: Save As Dangerous URL + Dangerous file 626 {// 4: Save As Dangerous URL + Dangerous file
628 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, 627 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL,
629 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.html", 628 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.html",
630 "", FILE_PATH_LITERAL(""), 629 "", FILE_PATH_LITERAL(""),
631 630
632 FILE_PATH_LITERAL("foo.html"), DownloadItem::TARGET_DISPOSITION_PROMPT, 631 FILE_PATH_LITERAL("foo.html"), DownloadItem::TARGET_DISPOSITION_PROMPT,
633 632
634 EXPECT_UNCONFIRMED}, 633 EXPECT_UNCONFIRMED},
635 #endif // !BUILDFLAG(ANDROID_JAVA_UI) 634 #endif // !defined(OS_ANDROID)
636 635
637 {// 5: Forced Dangerous URL + Dangerous file 636 {// 5: Forced Dangerous URL + Dangerous file
638 FORCED, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, 637 FORCED, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL,
639 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.html", 638 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.html",
640 "", FILE_PATH_LITERAL("forced-foo.html"), 639 "", FILE_PATH_LITERAL("forced-foo.html"),
641 640
642 FILE_PATH_LITERAL("forced-foo.html"), 641 FILE_PATH_LITERAL("forced-foo.html"),
643 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 642 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
644 643
645 EXPECT_UNCONFIRMED}, 644 EXPECT_UNCONFIRMED},
646 }; 645 };
647 646
648 ON_CALL(*delegate(), CheckDownloadUrl(_, _, _)) 647 ON_CALL(*delegate(), CheckDownloadUrl(_, _, _))
649 .WillByDefault(WithArg<2>(ScheduleCallback( 648 .WillByDefault(WithArg<2>(ScheduleCallback(
650 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL))); 649 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL)));
651 RunTestCasesWithActiveItem(kSafeBrowsingTestCases, 650 RunTestCasesWithActiveItem(kSafeBrowsingTestCases,
652 arraysize(kSafeBrowsingTestCases)); 651 arraysize(kSafeBrowsingTestCases));
653 } 652 }
654 653
655 // The SafeBrowsing check is performed early. Make sure that a download item 654 // The SafeBrowsing check is performed early. Make sure that a download item
656 // that has been marked as MAYBE_DANGEROUS_CONTENT behaves correctly. 655 // that has been marked as MAYBE_DANGEROUS_CONTENT behaves correctly.
657 TEST_F(DownloadTargetDeterminerTest, MaybeDangerousContent) { 656 TEST_F(DownloadTargetDeterminerTest, MaybeDangerousContent) {
658 const DownloadTestCase kSafeBrowsingTestCases[] = { 657 const DownloadTestCase kSafeBrowsingTestCases[] = {
659 {// 0: Automatic Maybe dangerous content 658 {// 0: Automatic Maybe dangerous content
660 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, 659 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT,
661 DownloadFileType::ALLOW_ON_USER_GESTURE, 660 DownloadFileType::ALLOW_ON_USER_GESTURE,
662 "http://phishing.example.com/foo.crx", "", FILE_PATH_LITERAL(""), 661 "http://phishing.example.com/foo.crx", "", FILE_PATH_LITERAL(""),
663 662
664 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 663 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
665 664
666 EXPECT_UNCONFIRMED}, 665 EXPECT_UNCONFIRMED},
667 666
668 {// 1: Automatic Maybe dangerous content with DANGEROUS type. 667 {// 1: Automatic Maybe dangerous content with DANGEROUS type.
669 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, 668 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT,
670 DownloadFileType::DANGEROUS, "http://phishing.example.com/foo.swf", "", 669 DownloadFileType::DANGEROUS, "http://phishing.example.com/foo.swf", "",
671 FILE_PATH_LITERAL(""), 670 FILE_PATH_LITERAL(""),
672 671
673 FILE_PATH_LITERAL("foo.swf"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 672 FILE_PATH_LITERAL("foo.swf"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
674 673
675 EXPECT_UNCONFIRMED}, 674 EXPECT_UNCONFIRMED},
676 675
676 #if !defined(OS_ANDROID)
677 {// 2: Save As Maybe dangerous content
678 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT,
679 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.crx", "",
680 FILE_PATH_LITERAL(""),
677 681
678 #if !BUILDFLAG(ANDROID_JAVA_UI) 682 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_PROMPT,
679 {// 2: Save As Maybe dangerous content
680 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT,
681 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.crx",
682 "", FILE_PATH_LITERAL(""),
683 683
684 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_PROMPT, 684 EXPECT_UNCONFIRMED},
685 #endif // !defined(OS_ANDROID)
685 686
686 EXPECT_UNCONFIRMED}, 687 {// 3: Forced Maybe dangerous content
687 #endif // !BUILDFLAG(ANDROID_JAVA_UI) 688 FORCED, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT,
689 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.crx", "",
690 FILE_PATH_LITERAL("forced-foo.crx"),
688 691
689 {// 3: Forced Maybe dangerous content 692 FILE_PATH_LITERAL("forced-foo.crx"),
690 FORCED, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, 693 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
691 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.crx",
692 "", FILE_PATH_LITERAL("forced-foo.crx"),
693 694
694 FILE_PATH_LITERAL("forced-foo.crx"), 695 EXPECT_UNCONFIRMED},
695 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
696
697 EXPECT_UNCONFIRMED},
698 }; 696 };
699 697
700 // Test assumptions: 698 // Test assumptions:
701 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, 699 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE,
702 Policies()->GetFileDangerLevel( 700 Policies()->GetFileDangerLevel(
703 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); 701 base::FilePath(FILE_PATH_LITERAL("foo.crx"))));
704 ASSERT_EQ(DownloadFileType::DANGEROUS, 702 ASSERT_EQ(DownloadFileType::DANGEROUS,
705 Policies()->GetFileDangerLevel( 703 Policies()->GetFileDangerLevel(
706 base::FilePath(FILE_PATH_LITERAL("foo.swf")))); 704 base::FilePath(FILE_PATH_LITERAL("foo.swf"))));
707 705
708 ON_CALL(*delegate(), CheckDownloadUrl(_, _, _)) 706 ON_CALL(*delegate(), CheckDownloadUrl(_, _, _))
709 .WillByDefault(WithArg<2>(ScheduleCallback( 707 .WillByDefault(WithArg<2>(ScheduleCallback(
710 content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT))); 708 content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT)));
711 RunTestCasesWithActiveItem(kSafeBrowsingTestCases, 709 RunTestCasesWithActiveItem(kSafeBrowsingTestCases,
712 arraysize(kSafeBrowsingTestCases)); 710 arraysize(kSafeBrowsingTestCases));
713 } 711 }
714 712
715 #if !BUILDFLAG(ANDROID_JAVA_UI) 713 #if !defined(OS_ANDROID)
716 // Test whether the last saved directory is used for 'Save As' downloads. 714 // Test whether the last saved directory is used for 'Save As' downloads.
717 TEST_F(DownloadTargetDeterminerTest, LastSavePath) { 715 TEST_F(DownloadTargetDeterminerTest, LastSavePath) {
718 const DownloadTestCase kLastSavePathTestCasesPre[] = { 716 const DownloadTestCase kLastSavePathTestCasesPre[] = {
719 {// 0: If the last save path is empty, then the default download directory 717 {// 0: If the last save path is empty, then the default download directory
720 // should be used. 718 // should be used.
721 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 719 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
722 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 720 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
723 "text/plain", FILE_PATH_LITERAL(""), 721 "text/plain", FILE_PATH_LITERAL(""),
724 722
725 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, 723 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT,
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
794 download_prefs()->SetSaveFilePath(last_selected_dir); 792 download_prefs()->SetSaveFilePath(last_selected_dir);
795 EXPECT_CALL(*delegate(), PromptUserForDownloadPath( 793 EXPECT_CALL(*delegate(), PromptUserForDownloadPath(
796 _, last_selected_dir.AppendASCII("foo.txt"), _)); 794 _, last_selected_dir.AppendASCII("foo.txt"), _));
797 EXPECT_CALL(*delegate(), DetermineLocalPath(_, virtual_path, _)) 795 EXPECT_CALL(*delegate(), DetermineLocalPath(_, virtual_path, _))
798 .WillOnce(WithArg<2>(ScheduleCallback( 796 .WillOnce(WithArg<2>(ScheduleCallback(
799 GetPathInDownloadDir(FILE_PATH_LITERAL("bar.txt"))))); 797 GetPathInDownloadDir(FILE_PATH_LITERAL("bar.txt")))));
800 RunTestCasesWithActiveItem(kLastSavePathTestCasesVirtual, 798 RunTestCasesWithActiveItem(kLastSavePathTestCasesVirtual,
801 arraysize(kLastSavePathTestCasesVirtual)); 799 arraysize(kLastSavePathTestCasesVirtual));
802 } 800 }
803 } 801 }
804 #endif // !BUILDFLAG(ANDROID_JAVA_UI) 802 #endif // !defined(OS_ANDROID)
805 803
806 // These tests are run with the default downloads folder set to a virtual 804 // These tests are run with the default downloads folder set to a virtual
807 // directory. 805 // directory.
808 TEST_F(DownloadTargetDeterminerTest, DefaultVirtual) { 806 TEST_F(DownloadTargetDeterminerTest, DefaultVirtual) {
809 // The default download directory is the virutal path. 807 // The default download directory is the virutal path.
810 download_prefs()->SetDownloadPath(test_virtual_dir()); 808 download_prefs()->SetDownloadPath(test_virtual_dir());
811 809
812 { 810 {
813 SCOPED_TRACE(testing::Message() << "Automatic Safe Download"); 811 SCOPED_TRACE(testing::Message() << "Automatic Safe Download");
814 const DownloadTestCase kAutomaticDownloadToVirtualDir = { 812 const DownloadTestCase kAutomaticDownloadToVirtualDir = {
815 AUTOMATIC, 813 AUTOMATIC,
816 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 814 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
817 DownloadFileType::NOT_DANGEROUS, 815 DownloadFileType::NOT_DANGEROUS,
818 "http://example.com/foo.txt", 816 "http://example.com/foo.txt",
819 "text/plain", 817 "text/plain",
820 FILE_PATH_LITERAL(""), 818 FILE_PATH_LITERAL(""),
821 819
822 FILE_PATH_LITERAL("foo-local.txt"), 820 FILE_PATH_LITERAL("foo-local.txt"),
823 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 821 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
824 822
825 EXPECT_LOCAL_PATH}; 823 EXPECT_LOCAL_PATH};
826 EXPECT_CALL(*delegate(), DetermineLocalPath(_, _, _)) 824 EXPECT_CALL(*delegate(), DetermineLocalPath(_, _, _))
827 .WillOnce(WithArg<2>(ScheduleCallback( 825 .WillOnce(WithArg<2>(ScheduleCallback(
828 GetPathInDownloadDir(FILE_PATH_LITERAL("foo-local.txt"))))); 826 GetPathInDownloadDir(FILE_PATH_LITERAL("foo-local.txt")))));
829 RunTestCasesWithActiveItem(&kAutomaticDownloadToVirtualDir, 1); 827 RunTestCasesWithActiveItem(&kAutomaticDownloadToVirtualDir, 1);
830 } 828 }
831 829
832 #if !BUILDFLAG(ANDROID_JAVA_UI) 830 #if !defined(OS_ANDROID)
833 { 831 {
834 SCOPED_TRACE(testing::Message() << "Save As to virtual directory"); 832 SCOPED_TRACE(testing::Message() << "Save As to virtual directory");
835 const DownloadTestCase kSaveAsToVirtualDir = { 833 const DownloadTestCase kSaveAsToVirtualDir = {
836 SAVE_AS, 834 SAVE_AS,
837 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 835 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
838 DownloadFileType::NOT_DANGEROUS, 836 DownloadFileType::NOT_DANGEROUS,
839 "http://example.com/bar.txt", 837 "http://example.com/bar.txt",
840 "text/plain", 838 "text/plain",
841 FILE_PATH_LITERAL(""), 839 FILE_PATH_LITERAL(""),
842 840
(...skipping 24 matching lines...) Expand all
867 FILE_PATH_LITERAL("foo-x.txt"), 865 FILE_PATH_LITERAL("foo-x.txt"),
868 DownloadItem::TARGET_DISPOSITION_PROMPT, 866 DownloadItem::TARGET_DISPOSITION_PROMPT,
869 867
870 EXPECT_CRDOWNLOAD}; 868 EXPECT_CRDOWNLOAD};
871 EXPECT_CALL(*delegate(), PromptUserForDownloadPath( 869 EXPECT_CALL(*delegate(), PromptUserForDownloadPath(
872 _, test_virtual_dir().AppendASCII("bar.txt"), _)) 870 _, test_virtual_dir().AppendASCII("bar.txt"), _))
873 .WillOnce(WithArg<2>(ScheduleCallback( 871 .WillOnce(WithArg<2>(ScheduleCallback(
874 GetPathInDownloadDir(FILE_PATH_LITERAL("foo-x.txt"))))); 872 GetPathInDownloadDir(FILE_PATH_LITERAL("foo-x.txt")))));
875 RunTestCasesWithActiveItem(&kSaveAsToLocalDir, 1); 873 RunTestCasesWithActiveItem(&kSaveAsToLocalDir, 1);
876 } 874 }
877 #endif // !BUILDFLAG(ANDROID_JAVA_UI) 875 #endif // !defined(OS_ANDROID)
878 876
879 { 877 {
880 SCOPED_TRACE(testing::Message() << "Forced safe download"); 878 SCOPED_TRACE(testing::Message() << "Forced safe download");
881 const DownloadTestCase kForcedSafe = { 879 const DownloadTestCase kForcedSafe = {
882 FORCED, 880 FORCED,
883 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 881 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
884 DownloadFileType::NOT_DANGEROUS, 882 DownloadFileType::NOT_DANGEROUS,
885 "http://example.com/foo.txt", 883 "http://example.com/foo.txt",
886 "", 884 "",
887 FILE_PATH_LITERAL("forced-foo.txt"), 885 FILE_PATH_LITERAL("forced-foo.txt"),
888 886
889 FILE_PATH_LITERAL("forced-foo.txt"), 887 FILE_PATH_LITERAL("forced-foo.txt"),
890 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 888 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
891 889
892 EXPECT_LOCAL_PATH}; 890 EXPECT_LOCAL_PATH};
893 RunTestCasesWithActiveItem(&kForcedSafe, 1); 891 RunTestCasesWithActiveItem(&kForcedSafe, 1);
894 } 892 }
895 } 893 }
896 894
897 // Test that an inactive download will still get a virtual or local download 895 // Test that an inactive download will still get a virtual or local download
898 // path. 896 // path.
899 TEST_F(DownloadTargetDeterminerTest, InactiveDownload) { 897 TEST_F(DownloadTargetDeterminerTest, InactiveDownload) {
900 const DownloadTestCase kInactiveTestCases[] = { 898 const DownloadTestCase kInactiveTestCases[] = {
901 {AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 899 {AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
902 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 900 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
903 "text/plain", FILE_PATH_LITERAL(""), 901 "text/plain", FILE_PATH_LITERAL(""),
904 902
905 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 903 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
906 904
907 EXPECT_CRDOWNLOAD}, 905 EXPECT_CRDOWNLOAD},
908 906
909 #if !BUILDFLAG(ANDROID_JAVA_UI) 907 #if !defined(OS_ANDROID)
910 {SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 908 {SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
911 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 909 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
912 "text/plain", FILE_PATH_LITERAL(""), 910 "text/plain", FILE_PATH_LITERAL(""),
913 911
914 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, 912 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT,
915 913
916 EXPECT_CRDOWNLOAD} 914 EXPECT_CRDOWNLOAD}
917 #endif // !BUILDFLAG(ANDROID_JAVA_UI) 915 #endif // !defined(OS_ANDROID)
918 }; 916 };
919 917
920 for (size_t i = 0; i < arraysize(kInactiveTestCases); ++i) { 918 for (size_t i = 0; i < arraysize(kInactiveTestCases); ++i) {
921 SCOPED_TRACE(testing::Message() << "Running test case " << i); 919 SCOPED_TRACE(testing::Message() << "Running test case " << i);
922 const DownloadTestCase& test_case = kInactiveTestCases[i]; 920 const DownloadTestCase& test_case = kInactiveTestCases[i];
923 std::unique_ptr<content::MockDownloadItem> item( 921 std::unique_ptr<content::MockDownloadItem> item(
924 CreateActiveDownloadItem(i, test_case)); 922 CreateActiveDownloadItem(i, test_case));
925 EXPECT_CALL(*item.get(), GetState()) 923 EXPECT_CALL(*item.get(), GetState())
926 .WillRepeatedly(Return(content::DownloadItem::CANCELLED)); 924 .WillRepeatedly(Return(content::DownloadItem::CANCELLED));
927 925
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
977 .WillOnce(WithArg<2>(ScheduleCallback(base::FilePath()))); 975 .WillOnce(WithArg<2>(ScheduleCallback(base::FilePath())));
978 RunTestCasesWithActiveItem(kLocalPathFailedCases, 976 RunTestCasesWithActiveItem(kLocalPathFailedCases,
979 arraysize(kLocalPathFailedCases)); 977 arraysize(kLocalPathFailedCases));
980 } 978 }
981 979
982 // Downloads that have a danger level of ALLOW_ON_USER_GESTURE should be marked 980 // Downloads that have a danger level of ALLOW_ON_USER_GESTURE should be marked
983 // as safe depending on whether there was a user gesture associated with the 981 // as safe depending on whether there was a user gesture associated with the
984 // download and whether the referrer was visited prior to today. 982 // download and whether the referrer was visited prior to today.
985 TEST_F(DownloadTargetDeterminerTest, VisitedReferrer) { 983 TEST_F(DownloadTargetDeterminerTest, VisitedReferrer) {
986 const DownloadTestCase kVisitedReferrerCases[] = { 984 const DownloadTestCase kVisitedReferrerCases[] = {
987 // http://visited.example.com/ is added to the history as a visit that 985 // http://visited.example.com/ is added to the history as a visit that
988 // happened prior to today. 986 // happened prior to today.
989 {// 0: Safe download due to visiting referrer before. 987 {// 0: Safe download due to visiting referrer before.
990 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 988 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
991 DownloadFileType::NOT_DANGEROUS, "http://visited.example.com/foo.crx", 989 DownloadFileType::NOT_DANGEROUS, "http://visited.example.com/foo.crx",
992 "application/xml", FILE_PATH_LITERAL(""), 990 "application/xml", FILE_PATH_LITERAL(""),
993 991
994 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 992 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
995 993
996 EXPECT_CRDOWNLOAD}, 994 EXPECT_CRDOWNLOAD},
997 995
998 {// 1: Dangerous due to not having visited referrer before. 996 {// 1: Dangerous due to not having visited referrer before.
999 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, 997 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE,
1000 DownloadFileType::ALLOW_ON_USER_GESTURE, 998 DownloadFileType::ALLOW_ON_USER_GESTURE,
1001 "http://not-visited.example.com/foo.crx", "application/xml", 999 "http://not-visited.example.com/foo.crx", "application/xml",
1002 FILE_PATH_LITERAL(""), 1000 FILE_PATH_LITERAL(""),
1003 1001
1004 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 1002 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
1005 1003
1006 EXPECT_UNCONFIRMED}, 1004 EXPECT_UNCONFIRMED},
1007 1005
1008 #if !BUILDFLAG(ANDROID_JAVA_UI) 1006 #if !defined(OS_ANDROID)
1009 {// 2: Safe because the user is being prompted. 1007 {// 2: Safe because the user is being prompted.
1010 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1008 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
1011 DownloadFileType::NOT_DANGEROUS, 1009 DownloadFileType::NOT_DANGEROUS, "http://not-visited.example.com/foo.crx",
1012 "http://not-visited.example.com/foo.crx", "application/xml", 1010 "application/xml", FILE_PATH_LITERAL(""),
1013 FILE_PATH_LITERAL(""),
1014 1011
1015 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_PROMPT, 1012 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_PROMPT,
1016 1013
1017 EXPECT_CRDOWNLOAD}, 1014 EXPECT_CRDOWNLOAD},
1018 #endif // !BUILDFLAG(ANDROID_JAVA_UI) 1015 #endif // !defined(OS_ANDROID)
1019 1016
1020 {// 3: Safe because of forced path. 1017 {// 3: Safe because of forced path.
1021 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1018 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
1022 DownloadFileType::NOT_DANGEROUS, 1019 DownloadFileType::NOT_DANGEROUS, "http://not-visited.example.com/foo.crx",
1023 "http://not-visited.example.com/foo.crx", "application/xml", 1020 "application/xml", FILE_PATH_LITERAL("foo.crx"),
1024 FILE_PATH_LITERAL("foo.crx"),
1025 1021
1026 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 1022 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
1027 1023
1028 EXPECT_LOCAL_PATH}, 1024 EXPECT_LOCAL_PATH},
1029 }; 1025 };
1030 1026
1031 // This test assumes that the danger level of .crx files is 1027 // This test assumes that the danger level of .crx files is
1032 // ALLOW_ON_USER_GESTURE. 1028 // ALLOW_ON_USER_GESTURE.
1033 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, 1029 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE,
1034 Policies()->GetFileDangerLevel( 1030 Policies()->GetFileDangerLevel(
1035 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); 1031 base::FilePath(FILE_PATH_LITERAL("foo.crx"))));
1036 1032
1037 // First the history service must exist. 1033 // First the history service must exist.
1038 ASSERT_TRUE(profile()->CreateHistoryService(false, false)); 1034 ASSERT_TRUE(profile()->CreateHistoryService(false, false));
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1164 } 1160 }
1165 1161
1166 std::unique_ptr<content::MockDownloadItem> item( 1162 std::unique_ptr<content::MockDownloadItem> item(
1167 CreateActiveDownloadItem(1, download_test_case)); 1163 CreateActiveDownloadItem(1, download_test_case));
1168 EXPECT_CALL(*item, GetTransitionType()) 1164 EXPECT_CALL(*item, GetTransitionType())
1169 .WillRepeatedly(Return(test_case.page_transition)); 1165 .WillRepeatedly(Return(test_case.page_transition));
1170 RunTestCase(download_test_case, base::FilePath(), item.get()); 1166 RunTestCase(download_test_case, base::FilePath(), item.get());
1171 } 1167 }
1172 } 1168 }
1173 1169
1174 #if !BUILDFLAG(ANDROID_JAVA_UI) 1170 #if !defined(OS_ANDROID)
1175 // These test cases are run with "Prompt for download" user preference set to 1171 // These test cases are run with "Prompt for download" user preference set to
1176 // true. 1172 // true.
1177 TEST_F(DownloadTargetDeterminerTest, PromptAlways) { 1173 TEST_F(DownloadTargetDeterminerTest, PromptAlways) {
1178 const DownloadTestCase kPromptingTestCases[] = { 1174 const DownloadTestCase kPromptingTestCases[] = {
1179 {// 0: Safe Automatic - Should prompt because of "Prompt for download" 1175 {// 0: Safe Automatic - Should prompt because of "Prompt for download"
1180 // preference setting. 1176 // preference setting.
1181 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1177 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
1182 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 1178 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
1183 "text/plain", FILE_PATH_LITERAL(""), 1179 "text/plain", FILE_PATH_LITERAL(""),
1184 1180
(...skipping 21 matching lines...) Expand all
1206 1202
1207 EXPECT_CRDOWNLOAD}, 1203 EXPECT_CRDOWNLOAD},
1208 }; 1204 };
1209 1205
1210 SetPromptForDownload(true); 1206 SetPromptForDownload(true);
1211 EnableAutoOpenBasedOnExtension( 1207 EnableAutoOpenBasedOnExtension(
1212 base::FilePath(FILE_PATH_LITERAL("dummy.dummy"))); 1208 base::FilePath(FILE_PATH_LITERAL("dummy.dummy")));
1213 RunTestCasesWithActiveItem(kPromptingTestCases, 1209 RunTestCasesWithActiveItem(kPromptingTestCases,
1214 arraysize(kPromptingTestCases)); 1210 arraysize(kPromptingTestCases));
1215 } 1211 }
1216 #endif // !BUILDFLAG(ANDROID_JAVA_UI) 1212 #endif // !defined(OS_ANDROID)
1217 1213
1218 #if BUILDFLAG(ENABLE_EXTENSIONS) 1214 #if BUILDFLAG(ENABLE_EXTENSIONS)
1219 // These test cases are run with "Prompt for download" user preference set to 1215 // These test cases are run with "Prompt for download" user preference set to
1220 // true. Automatic extension downloads shouldn't cause prompting. 1216 // true. Automatic extension downloads shouldn't cause prompting.
1221 // Android doesn't support extensions. 1217 // Android doesn't support extensions.
1222 TEST_F(DownloadTargetDeterminerTest, PromptAlways_Extension) { 1218 TEST_F(DownloadTargetDeterminerTest, PromptAlways_Extension) {
1223 const DownloadTestCase kPromptingTestCases[] = { 1219 const DownloadTestCase kPromptingTestCases[] = {
1224 {// 0: Automatic Browser Extension download. - Shouldn't prompt for browser 1220 {// 0: Automatic Browser Extension download. - Shouldn't prompt for browser
1225 // extension downloads even if "Prompt for download" preference is set. 1221 // extension downloads even if "Prompt for download" preference is set.
1226 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, 1222 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE,
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1289 SetManagedDownloadPath(test_download_dir()); 1285 SetManagedDownloadPath(test_download_dir());
1290 ASSERT_TRUE(download_prefs()->IsDownloadPathManaged()); 1286 ASSERT_TRUE(download_prefs()->IsDownloadPathManaged());
1291 RunTestCasesWithActiveItem(kManagedPathTestCases, 1287 RunTestCasesWithActiveItem(kManagedPathTestCases,
1292 arraysize(kManagedPathTestCases)); 1288 arraysize(kManagedPathTestCases));
1293 } 1289 }
1294 1290
1295 // Test basic functionality supporting extensions that want to override download 1291 // Test basic functionality supporting extensions that want to override download
1296 // filenames. 1292 // filenames.
1297 TEST_F(DownloadTargetDeterminerTest, NotifyExtensionsSafe) { 1293 TEST_F(DownloadTargetDeterminerTest, NotifyExtensionsSafe) {
1298 const DownloadTestCase kNotifyExtensionsTestCases[] = { 1294 const DownloadTestCase kNotifyExtensionsTestCases[] = {
1299 {// 0: Automatic Safe 1295 {// 0: Automatic Safe
1300 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1296 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
1301 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 1297 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
1302 "text/plain", FILE_PATH_LITERAL(""), 1298 "text/plain", FILE_PATH_LITERAL(""),
1303 1299
1304 FILE_PATH_LITERAL("overridden/foo.txt"), 1300 FILE_PATH_LITERAL("overridden/foo.txt"),
1305 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 1301 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
1306 1302
1307 EXPECT_CRDOWNLOAD}, 1303 EXPECT_CRDOWNLOAD},
1308 1304
1309 #if !BUILDFLAG(ANDROID_JAVA_UI) 1305 #if !defined(OS_ANDROID)
1310 {// 1: Save_As Safe 1306 {// 1: Save_As Safe
1311 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1307 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
1312 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 1308 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
1313 "text/plain", FILE_PATH_LITERAL(""), 1309 "text/plain", FILE_PATH_LITERAL(""),
1314 1310
1315 FILE_PATH_LITERAL("overridden/foo.txt"), 1311 FILE_PATH_LITERAL("overridden/foo.txt"),
1316 DownloadItem::TARGET_DISPOSITION_PROMPT, 1312 DownloadItem::TARGET_DISPOSITION_PROMPT,
1317 1313
1318 EXPECT_CRDOWNLOAD}, 1314 EXPECT_CRDOWNLOAD},
1319 #endif // !BUILDFLAG(ANDROID_JAVA_UI) 1315 #endif // !defined(OS_ANDROID)
1320 1316
1321 {// 2: Automatic Dangerous 1317 {// 2: Automatic Dangerous
1322 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, 1318 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE,
1323 DownloadFileType::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", 1319 DownloadFileType::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", "",
1324 "", FILE_PATH_LITERAL(""), 1320 FILE_PATH_LITERAL(""),
1325 1321
1326 FILE_PATH_LITERAL("overridden/foo.crx"), 1322 FILE_PATH_LITERAL("overridden/foo.crx"),
1327 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 1323 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
1328 1324
1329 EXPECT_UNCONFIRMED}, 1325 EXPECT_UNCONFIRMED},
1330 1326
1331 {// 3: Forced Safe 1327 {// 3: Forced Safe
1332 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1328 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
1333 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", "", 1329 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", "",
1334 FILE_PATH_LITERAL("forced-foo.txt"), 1330 FILE_PATH_LITERAL("forced-foo.txt"),
1335 1331
1336 FILE_PATH_LITERAL("forced-foo.txt"), 1332 FILE_PATH_LITERAL("forced-foo.txt"),
1337 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 1333 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
1338 1334
1339 EXPECT_LOCAL_PATH}, 1335 EXPECT_LOCAL_PATH},
1340 }; 1336 };
1341 1337
1342 ON_CALL(*delegate(), NotifyExtensions(_, _, _)) 1338 ON_CALL(*delegate(), NotifyExtensions(_, _, _))
1343 .WillByDefault(Invoke(&NotifyExtensionsOverridePath)); 1339 .WillByDefault(Invoke(&NotifyExtensionsOverridePath));
1344 RunTestCasesWithActiveItem(kNotifyExtensionsTestCases, 1340 RunTestCasesWithActiveItem(kNotifyExtensionsTestCases,
1345 arraysize(kNotifyExtensionsTestCases)); 1341 arraysize(kNotifyExtensionsTestCases));
1346 } 1342 }
1347 1343
1348 // Test that filenames provided by extensions are passed into SafeBrowsing 1344 // Test that filenames provided by extensions are passed into SafeBrowsing
1349 // checks and dangerous download checks. 1345 // checks and dangerous download checks.
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
1424 .WillOnce(WithArg<2>( 1420 .WillOnce(WithArg<2>(
1425 ScheduleCallback2(overridden_path, 1421 ScheduleCallback2(overridden_path,
1426 DownloadPathReservationTracker::PROMPT))); 1422 DownloadPathReservationTracker::PROMPT)));
1427 EXPECT_CALL(*delegate(), ReserveVirtualPath( 1423 EXPECT_CALL(*delegate(), ReserveVirtualPath(
1428 _, full_overridden_path, true, DownloadPathReservationTracker::PROMPT, _)) 1424 _, full_overridden_path, true, DownloadPathReservationTracker::PROMPT, _))
1429 .WillOnce(WithArg<4>( 1425 .WillOnce(WithArg<4>(
1430 ScheduleCallback2(full_overridden_path, true))); 1426 ScheduleCallback2(full_overridden_path, true)));
1431 RunTestCase(test_case, base::FilePath(), item.get()); 1427 RunTestCase(test_case, base::FilePath(), item.get());
1432 } 1428 }
1433 1429
1434 #if !BUILDFLAG(ANDROID_JAVA_UI) 1430 #if !defined(OS_ANDROID)
1435 // Test that relative paths returned by extensions are always relative to the 1431 // Test that relative paths returned by extensions are always relative to the
1436 // default downloads path. 1432 // default downloads path.
1437 TEST_F(DownloadTargetDeterminerTest, NotifyExtensionsDefaultPath) { 1433 TEST_F(DownloadTargetDeterminerTest, NotifyExtensionsDefaultPath) {
1438 const DownloadTestCase kNotifyExtensionsTestCase = { 1434 const DownloadTestCase kNotifyExtensionsTestCase = {
1439 SAVE_AS, 1435 SAVE_AS,
1440 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1436 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
1441 DownloadFileType::NOT_DANGEROUS, 1437 DownloadFileType::NOT_DANGEROUS,
1442 "http://example.com/foo.txt", 1438 "http://example.com/foo.txt",
1443 "text/plain", 1439 "text/plain",
1444 FILE_PATH_LITERAL(""), 1440 FILE_PATH_LITERAL(""),
(...skipping 16 matching lines...) Expand all
1461 EXPECT_CALL(*delegate(), NotifyExtensions(_, _, _)) 1457 EXPECT_CALL(*delegate(), NotifyExtensions(_, _, _))
1462 .WillOnce(WithArg<2>( 1458 .WillOnce(WithArg<2>(
1463 ScheduleCallback2(overridden_path, 1459 ScheduleCallback2(overridden_path,
1464 DownloadPathReservationTracker::UNIQUIFY))); 1460 DownloadPathReservationTracker::UNIQUIFY)));
1465 EXPECT_CALL(*delegate(), 1461 EXPECT_CALL(*delegate(),
1466 PromptUserForDownloadPath(_, full_overridden_path, _)) 1462 PromptUserForDownloadPath(_, full_overridden_path, _))
1467 .WillOnce(WithArg<2>( 1463 .WillOnce(WithArg<2>(
1468 ScheduleCallback(full_overridden_path))); 1464 ScheduleCallback(full_overridden_path)));
1469 RunTestCase(test_case, base::FilePath(), item.get()); 1465 RunTestCase(test_case, base::FilePath(), item.get());
1470 } 1466 }
1471 #endif // !BUILDFLAG(ANDROID_JAVA_UI) 1467 #endif // !defined(OS_ANDROID)
1472 1468
1473 TEST_F(DownloadTargetDeterminerTest, InitialVirtualPathUnsafe) { 1469 TEST_F(DownloadTargetDeterminerTest, InitialVirtualPathUnsafe) {
1474 const base::FilePath::CharType* kInitialPath = 1470 const base::FilePath::CharType* kInitialPath =
1475 FILE_PATH_LITERAL("some_path/bar.html"); 1471 FILE_PATH_LITERAL("some_path/bar.html");
1476 1472
1477 const DownloadTestCase kInitialPathTestCase = { 1473 const DownloadTestCase kInitialPathTestCase = {
1478 // 0: Save As Save. The path generated based on the DownloadItem is safe, 1474 // 0: Save As Save. The path generated based on the DownloadItem is safe,
1479 // but the initial path is unsafe. However, the download is not considered 1475 // but the initial path is unsafe. However, the download is not considered
1480 // dangerous since the user has been prompted. 1476 // dangerous since the user has been prompted.
1481 SAVE_AS, 1477 SAVE_AS,
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
1629 const base::FilePath::CharType* kInitialPath = 1625 const base::FilePath::CharType* kInitialPath =
1630 FILE_PATH_LITERAL("some_path/bar.txt"); 1626 FILE_PATH_LITERAL("some_path/bar.txt");
1631 1627
1632 const DownloadTestCase kResumedTestCases[] = { 1628 const DownloadTestCase kResumedTestCases[] = {
1633 {// 0: Automatic Safe 1629 {// 0: Automatic Safe
1634 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1630 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
1635 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 1631 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
1636 "text/plain", FILE_PATH_LITERAL(""), 1632 "text/plain", FILE_PATH_LITERAL(""),
1637 1633
1638 FILE_PATH_LITERAL("foo.txt"), 1634 FILE_PATH_LITERAL("foo.txt"),
1639 #if BUILDFLAG(ANDROID_JAVA_UI) 1635 #if defined(OS_ANDROID)
1640 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 1636 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
1641 #else 1637 #else
1642 DownloadItem::TARGET_DISPOSITION_PROMPT, 1638 DownloadItem::TARGET_DISPOSITION_PROMPT,
1643 #endif 1639 #endif
1644 EXPECT_CRDOWNLOAD}, 1640 EXPECT_CRDOWNLOAD},
1645 1641
1646 {// 1: Save_As Safe 1642 {// 1: Save_As Safe
1647 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1643 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
1648 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 1644 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
1649 "text/plain", FILE_PATH_LITERAL(""), 1645 "text/plain", FILE_PATH_LITERAL(""),
1650 1646
1651 kInitialPath, DownloadItem::TARGET_DISPOSITION_PROMPT, 1647 kInitialPath, DownloadItem::TARGET_DISPOSITION_PROMPT,
1652 1648
1653 EXPECT_CRDOWNLOAD}, 1649 EXPECT_CRDOWNLOAD},
1654 1650
1655 { 1651 {
1656 // 2: Automatic Dangerous 1652 // 2: Automatic Dangerous
1657 AUTOMATIC, 1653 AUTOMATIC,
1658 #if BUILDFLAG(ANDROID_JAVA_UI) 1654 #if defined(OS_ANDROID)
1659 // If we don't prompt user, the file will be treated as dangerous. 1655 // If we don't prompt user, the file will be treated as dangerous.
1660 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, 1656 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE,
1661 DownloadFileType::ALLOW_ON_USER_GESTURE, 1657 DownloadFileType::ALLOW_ON_USER_GESTURE,
1662 #else 1658 #else
1663 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1659 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
1664 DownloadFileType::NOT_DANGEROUS, 1660 DownloadFileType::NOT_DANGEROUS,
1665 #endif 1661 #endif
1666 "http://example.com/foo.crx", "", FILE_PATH_LITERAL(""), 1662 "http://example.com/foo.crx", "", FILE_PATH_LITERAL(""),
1667 1663
1668 FILE_PATH_LITERAL("foo.crx"), 1664 FILE_PATH_LITERAL("foo.crx"),
1669 #if BUILDFLAG(ANDROID_JAVA_UI) 1665 #if defined(OS_ANDROID)
1670 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 1666 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
1671 // Dangerous download will have an unconfirmed intermediate file name. 1667 // Dangerous download will have an unconfirmed intermediate file name.
1672 EXPECT_UNCONFIRMED, 1668 EXPECT_UNCONFIRMED,
1673 #else 1669 #else
1674 DownloadItem::TARGET_DISPOSITION_PROMPT, EXPECT_CRDOWNLOAD, 1670 DownloadItem::TARGET_DISPOSITION_PROMPT, EXPECT_CRDOWNLOAD,
1675 #endif 1671 #endif
1676 }, 1672 },
1677 }; 1673 };
1678 1674
1679 // The test assumes that .xml files have a danger level of 1675 // The test assumes that .xml files have a danger level of
1680 // ALLOW_ON_USER_GESTURE. 1676 // ALLOW_ON_USER_GESTURE.
1681 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, 1677 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE,
1682 Policies()->GetFileDangerLevel( 1678 Policies()->GetFileDangerLevel(
1683 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); 1679 base::FilePath(FILE_PATH_LITERAL("foo.crx"))));
1684 for (size_t i = 0; i < arraysize(kResumedTestCases); ++i) { 1680 for (size_t i = 0; i < arraysize(kResumedTestCases); ++i) {
1685 SCOPED_TRACE(testing::Message() << "Running test case " << i); 1681 SCOPED_TRACE(testing::Message() << "Running test case " << i);
1686 download_prefs()->SetSaveFilePath(test_download_dir()); 1682 download_prefs()->SetSaveFilePath(test_download_dir());
1687 const DownloadTestCase& test_case = kResumedTestCases[i]; 1683 const DownloadTestCase& test_case = kResumedTestCases[i];
1688 base::FilePath expected_path = 1684 base::FilePath expected_path =
1689 GetPathInDownloadDir(test_case.expected_local_path); 1685 GetPathInDownloadDir(test_case.expected_local_path);
1690 std::unique_ptr<content::MockDownloadItem> item( 1686 std::unique_ptr<content::MockDownloadItem> item(
1691 CreateActiveDownloadItem(i, test_case)); 1687 CreateActiveDownloadItem(i, test_case));
1692 ON_CALL(*item.get(), GetLastReason()) 1688 ON_CALL(*item.get(), GetLastReason())
1693 .WillByDefault(Return( 1689 .WillByDefault(Return(
1694 content::DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE)); 1690 content::DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE));
1695 EXPECT_CALL(*delegate(), NotifyExtensions(_, _, _)) 1691 EXPECT_CALL(*delegate(), NotifyExtensions(_, _, _))
1696 .Times(test_case.test_type == AUTOMATIC ? 1 : 0); 1692 .Times(test_case.test_type == AUTOMATIC ? 1 : 0);
1697 EXPECT_CALL(*delegate(), ReserveVirtualPath(_, expected_path, false, _, _)); 1693 EXPECT_CALL(*delegate(), ReserveVirtualPath(_, expected_path, false, _, _));
1698 #if BUILDFLAG(ANDROID_JAVA_UI) 1694 #if defined(OS_ANDROID)
1699 EXPECT_CALL(*delegate(), PromptUserForDownloadPath(_, expected_path, _)) 1695 EXPECT_CALL(*delegate(), PromptUserForDownloadPath(_, expected_path, _))
1700 .Times(0); 1696 .Times(0);
1701 #else 1697 #else
1702 EXPECT_CALL(*delegate(), PromptUserForDownloadPath(_, expected_path, _)); 1698 EXPECT_CALL(*delegate(), PromptUserForDownloadPath(_, expected_path, _));
1703 #endif 1699 #endif
1704 EXPECT_CALL(*delegate(), DetermineLocalPath(_, expected_path, _)); 1700 EXPECT_CALL(*delegate(), DetermineLocalPath(_, expected_path, _));
1705 EXPECT_CALL(*delegate(), CheckDownloadUrl(_, expected_path, _)); 1701 EXPECT_CALL(*delegate(), CheckDownloadUrl(_, expected_path, _));
1706 RunTestCase(test_case, GetPathInDownloadDir(kInitialPath), item.get()); 1702 RunTestCase(test_case, GetPathInDownloadDir(kInitialPath), item.get());
1707 } 1703 }
1708 } 1704 }
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after
2160 EXPECT_CALL(mock_plugin_filter_, MockPluginAvailable(browser_plugin.path())) 2156 EXPECT_CALL(mock_plugin_filter_, MockPluginAvailable(browser_plugin.path()))
2161 .WillRepeatedly(Return(false)); 2157 .WillRepeatedly(Return(false));
2162 target_info = RunDownloadTargetDeterminer( 2158 target_info = RunDownloadTargetDeterminer(
2163 GetPathInDownloadDir(kInitialPath), item.get()); 2159 GetPathInDownloadDir(kInitialPath), item.get());
2164 EXPECT_FALSE(target_info->is_filetype_handled_safely); 2160 EXPECT_FALSE(target_info->is_filetype_handled_safely);
2165 } 2161 }
2166 2162
2167 #endif // BUILDFLAG(ENABLE_PLUGINS) 2163 #endif // BUILDFLAG(ENABLE_PLUGINS)
2168 2164
2169 } // namespace 2165 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698