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

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

Issue 2401143002: Don't prompt for download location on Android (Closed)
Patch Set: Created 4 years, 2 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
« no previous file with comments | « chrome/browser/download/download_target_determiner.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 const DownloadTestCase kBasicTestCases[] = { 513 const DownloadTestCase kBasicTestCases[] = {
514 {// 0: Automatic Safe 514 {// 0: Automatic Safe
515 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 515 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
516 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 516 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
517 "text/plain", FILE_PATH_LITERAL(""), 517 "text/plain", FILE_PATH_LITERAL(""),
518 518
519 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 519 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
520 520
521 EXPECT_CRDOWNLOAD}, 521 EXPECT_CRDOWNLOAD},
522 522
523 #if !BUILDFLAG(ANDROID_JAVA_UI)
523 {// 1: Save_As Safe 524 {// 1: Save_As Safe
524 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 525 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
525 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 526 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
526 "text/plain", FILE_PATH_LITERAL(""), 527 "text/plain", FILE_PATH_LITERAL(""),
527 528
528 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, 529 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT,
529 530
530 EXPECT_CRDOWNLOAD}, 531 EXPECT_CRDOWNLOAD},
532 #endif // !BUILDFLAG(ANDROID_JAVA_UI)
531 533
532 {// 2: Automatic Dangerous 534 {// 2: Automatic Dangerous
533 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, 535 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE,
534 DownloadFileType::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", 536 DownloadFileType::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx",
535 "", FILE_PATH_LITERAL(""), 537 "", FILE_PATH_LITERAL(""),
536 538
537 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 539 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
538 540
539 EXPECT_UNCONFIRMED}, 541 EXPECT_UNCONFIRMED},
540 542
541 {// 3: Forced Safe 543 {// 3: Forced Safe
542 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 544 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
543 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", "", 545 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", "",
544 FILE_PATH_LITERAL("forced-foo.txt"), 546 FILE_PATH_LITERAL("forced-foo.txt"),
545 547
546 FILE_PATH_LITERAL("forced-foo.txt"), 548 FILE_PATH_LITERAL("forced-foo.txt"),
547 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 549 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
548 550
549 EXPECT_LOCAL_PATH}, 551 EXPECT_LOCAL_PATH},
550 }; 552 };
551 553
552 // The test assumes that .crx files have a danger level of 554 // The test assumes that .crx files have a danger level of
553 // ALLOW_ON_USER_GESTURE. 555 // ALLOW_ON_USER_GESTURE.
554 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, 556 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE,
555 Policies()->GetFileDangerLevel( 557 Policies()->GetFileDangerLevel(
556 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); 558 base::FilePath(FILE_PATH_LITERAL("foo.crx"))));
557 RunTestCasesWithActiveItem(kBasicTestCases, arraysize(kBasicTestCases)); 559 RunTestCasesWithActiveItem(kBasicTestCases, arraysize(kBasicTestCases));
558 } 560 }
559 561
562 #if !BUILDFLAG(ANDROID_JAVA_UI)
560 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_CancelSaveAs) { 563 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_CancelSaveAs) {
561 const DownloadTestCase kCancelSaveAsTestCases[] = { 564 const DownloadTestCase kCancelSaveAsTestCases[] = {
562 {// 0: Save_As Safe, Cancelled. 565 {// 0: Save_As Safe, Cancelled.
563 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 566 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
564 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 567 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
565 "text/plain", FILE_PATH_LITERAL(""), 568 "text/plain", FILE_PATH_LITERAL(""),
566 569
567 FILE_PATH_LITERAL(""), DownloadItem::TARGET_DISPOSITION_PROMPT, 570 FILE_PATH_LITERAL(""), DownloadItem::TARGET_DISPOSITION_PROMPT,
568 571
569 EXPECT_LOCAL_PATH}}; 572 EXPECT_LOCAL_PATH}};
570 ON_CALL(*delegate(), PromptUserForDownloadPath(_, _, _)) 573 ON_CALL(*delegate(), PromptUserForDownloadPath(_, _, _))
571 .WillByDefault(WithArg<2>(ScheduleCallback(base::FilePath()))); 574 .WillByDefault(WithArg<2>(ScheduleCallback(base::FilePath())));
572 RunTestCasesWithActiveItem(kCancelSaveAsTestCases, 575 RunTestCasesWithActiveItem(kCancelSaveAsTestCases,
573 arraysize(kCancelSaveAsTestCases)); 576 arraysize(kCancelSaveAsTestCases));
574 } 577 }
578 #endif // !BUILDFLAG(ANDROID_JAVA_UI)
575 579
576 // The SafeBrowsing check is performed early. Make sure that a download item 580 // The SafeBrowsing check is performed early. Make sure that a download item
577 // that has been marked as DANGEROUS_URL behaves correctly. 581 // that has been marked as DANGEROUS_URL behaves correctly.
578 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_DangerousUrl) { 582 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_DangerousUrl) {
579 const DownloadTestCase kSafeBrowsingTestCases[] = { 583 const DownloadTestCase kSafeBrowsingTestCases[] = {
580 {// 0: Automatic Dangerous URL 584 {// 0: Automatic Dangerous URL
581 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, 585 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL,
582 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.txt", 586 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.txt",
583 "", FILE_PATH_LITERAL(""), 587 "", FILE_PATH_LITERAL(""),
584 588
585 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 589 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
586 590
587 EXPECT_UNCONFIRMED}, 591 EXPECT_UNCONFIRMED},
588 592
593 #if !BUILDFLAG(ANDROID_JAVA_UI)
589 {// 1: Save As Dangerous URL 594 {// 1: Save As Dangerous URL
590 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, 595 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL,
591 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.txt", 596 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.txt",
592 "", FILE_PATH_LITERAL(""), 597 "", FILE_PATH_LITERAL(""),
593 598
594 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, 599 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT,
595 600
596 EXPECT_UNCONFIRMED}, 601 EXPECT_UNCONFIRMED},
602 #endif // !BUILDFLAG(ANDROID_JAVA_UI)
597 603
598 {// 2: Forced Dangerous URL 604 {// 2: Forced Dangerous URL
599 FORCED, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, 605 FORCED, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL,
600 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.txt", 606 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.txt",
601 "", FILE_PATH_LITERAL("forced-foo.txt"), 607 "", FILE_PATH_LITERAL("forced-foo.txt"),
602 608
603 FILE_PATH_LITERAL("forced-foo.txt"), 609 FILE_PATH_LITERAL("forced-foo.txt"),
604 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 610 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
605 611
606 EXPECT_UNCONFIRMED}, 612 EXPECT_UNCONFIRMED},
607 613
608 {// 3: Automatic Dangerous URL + Dangerous file. Dangerous URL takes 614 {// 3: Automatic Dangerous URL + Dangerous file. Dangerous URL takes
609 // precedence. 615 // precedence.
610 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, 616 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL,
611 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.html", 617 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.html",
612 "", FILE_PATH_LITERAL(""), 618 "", FILE_PATH_LITERAL(""),
613 619
614 FILE_PATH_LITERAL("foo.html"), 620 FILE_PATH_LITERAL("foo.html"),
615 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 621 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
616 622
617 EXPECT_UNCONFIRMED}, 623 EXPECT_UNCONFIRMED},
618 624
625 #if !BUILDFLAG(ANDROID_JAVA_UI)
619 {// 4: Save As Dangerous URL + Dangerous file 626 {// 4: Save As Dangerous URL + Dangerous file
620 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, 627 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL,
621 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.html", 628 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.html",
622 "", FILE_PATH_LITERAL(""), 629 "", FILE_PATH_LITERAL(""),
623 630
624 FILE_PATH_LITERAL("foo.html"), DownloadItem::TARGET_DISPOSITION_PROMPT, 631 FILE_PATH_LITERAL("foo.html"), DownloadItem::TARGET_DISPOSITION_PROMPT,
625 632
626 EXPECT_UNCONFIRMED}, 633 EXPECT_UNCONFIRMED},
634 #endif // !BUILDFLAG(ANDROID_JAVA_UI)
627 635
628 {// 5: Forced Dangerous URL + Dangerous file 636 {// 5: Forced Dangerous URL + Dangerous file
629 FORCED, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, 637 FORCED, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL,
630 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.html", 638 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.html",
631 "", FILE_PATH_LITERAL("forced-foo.html"), 639 "", FILE_PATH_LITERAL("forced-foo.html"),
632 640
633 FILE_PATH_LITERAL("forced-foo.html"), 641 FILE_PATH_LITERAL("forced-foo.html"),
634 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 642 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
635 643
636 EXPECT_UNCONFIRMED}, 644 EXPECT_UNCONFIRMED},
(...skipping 21 matching lines...) Expand all
658 666
659 {// 1: Automatic Maybe dangerous content with DANGEROUS type. 667 {// 1: Automatic Maybe dangerous content with DANGEROUS type.
660 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, 668 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT,
661 DownloadFileType::DANGEROUS, "http://phishing.example.com/foo.swf", "", 669 DownloadFileType::DANGEROUS, "http://phishing.example.com/foo.swf", "",
662 FILE_PATH_LITERAL(""), 670 FILE_PATH_LITERAL(""),
663 671
664 FILE_PATH_LITERAL("foo.swf"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 672 FILE_PATH_LITERAL("foo.swf"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
665 673
666 EXPECT_UNCONFIRMED}, 674 EXPECT_UNCONFIRMED},
667 675
676
677 #if !BUILDFLAG(ANDROID_JAVA_UI)
668 {// 2: Save As Maybe dangerous content 678 {// 2: Save As Maybe dangerous content
669 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, 679 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT,
670 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.crx", 680 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.crx",
671 "", FILE_PATH_LITERAL(""), 681 "", FILE_PATH_LITERAL(""),
672 682
673 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_PROMPT, 683 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_PROMPT,
674 684
675 EXPECT_UNCONFIRMED}, 685 EXPECT_UNCONFIRMED},
686 #endif // !BUILDFLAG(ANDROID_JAVA_UI)
676 687
677 {// 3: Forced Maybe dangerous content 688 {// 3: Forced Maybe dangerous content
678 FORCED, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, 689 FORCED, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT,
679 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.crx", 690 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.crx",
680 "", FILE_PATH_LITERAL("forced-foo.crx"), 691 "", FILE_PATH_LITERAL("forced-foo.crx"),
681 692
682 FILE_PATH_LITERAL("forced-foo.crx"), 693 FILE_PATH_LITERAL("forced-foo.crx"),
683 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 694 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
684 695
685 EXPECT_UNCONFIRMED}, 696 EXPECT_UNCONFIRMED},
686 }; 697 };
687 698
688 // Test assumptions: 699 // Test assumptions:
689 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, 700 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE,
690 Policies()->GetFileDangerLevel( 701 Policies()->GetFileDangerLevel(
691 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); 702 base::FilePath(FILE_PATH_LITERAL("foo.crx"))));
692 ASSERT_EQ(DownloadFileType::DANGEROUS, 703 ASSERT_EQ(DownloadFileType::DANGEROUS,
693 Policies()->GetFileDangerLevel( 704 Policies()->GetFileDangerLevel(
694 base::FilePath(FILE_PATH_LITERAL("foo.swf")))); 705 base::FilePath(FILE_PATH_LITERAL("foo.swf"))));
695 706
696 ON_CALL(*delegate(), CheckDownloadUrl(_, _, _)) 707 ON_CALL(*delegate(), CheckDownloadUrl(_, _, _))
697 .WillByDefault(WithArg<2>(ScheduleCallback( 708 .WillByDefault(WithArg<2>(ScheduleCallback(
698 content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT))); 709 content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT)));
699 RunTestCasesWithActiveItem(kSafeBrowsingTestCases, 710 RunTestCasesWithActiveItem(kSafeBrowsingTestCases,
700 arraysize(kSafeBrowsingTestCases)); 711 arraysize(kSafeBrowsingTestCases));
701 } 712 }
702 713
714 #if !BUILDFLAG(ANDROID_JAVA_UI)
703 // Test whether the last saved directory is used for 'Save As' downloads. 715 // Test whether the last saved directory is used for 'Save As' downloads.
704 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_LastSavePath) { 716 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_LastSavePath) {
705 const DownloadTestCase kLastSavePathTestCasesPre[] = { 717 const DownloadTestCase kLastSavePathTestCasesPre[] = {
706 {// 0: If the last save path is empty, then the default download directory 718 {// 0: If the last save path is empty, then the default download directory
707 // should be used. 719 // should be used.
708 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 720 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
709 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 721 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
710 "text/plain", FILE_PATH_LITERAL(""), 722 "text/plain", FILE_PATH_LITERAL(""),
711 723
712 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, 724 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT,
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 download_prefs()->SetSaveFilePath(last_selected_dir); 793 download_prefs()->SetSaveFilePath(last_selected_dir);
782 EXPECT_CALL(*delegate(), PromptUserForDownloadPath( 794 EXPECT_CALL(*delegate(), PromptUserForDownloadPath(
783 _, last_selected_dir.AppendASCII("foo.txt"), _)); 795 _, last_selected_dir.AppendASCII("foo.txt"), _));
784 EXPECT_CALL(*delegate(), DetermineLocalPath(_, virtual_path, _)) 796 EXPECT_CALL(*delegate(), DetermineLocalPath(_, virtual_path, _))
785 .WillOnce(WithArg<2>(ScheduleCallback( 797 .WillOnce(WithArg<2>(ScheduleCallback(
786 GetPathInDownloadDir(FILE_PATH_LITERAL("bar.txt"))))); 798 GetPathInDownloadDir(FILE_PATH_LITERAL("bar.txt")))));
787 RunTestCasesWithActiveItem(kLastSavePathTestCasesVirtual, 799 RunTestCasesWithActiveItem(kLastSavePathTestCasesVirtual,
788 arraysize(kLastSavePathTestCasesVirtual)); 800 arraysize(kLastSavePathTestCasesVirtual));
789 } 801 }
790 } 802 }
803 #endif // !BUILDFLAG(ANDROID_JAVA_UI)
791 804
792 // These tests are run with the default downloads folder set to a virtual 805 // These tests are run with the default downloads folder set to a virtual
793 // directory. 806 // directory.
794 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_DefaultVirtual) { 807 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_DefaultVirtual) {
795 // The default download directory is the virutal path. 808 // The default download directory is the virutal path.
796 download_prefs()->SetDownloadPath(test_virtual_dir()); 809 download_prefs()->SetDownloadPath(test_virtual_dir());
797 810
798 { 811 {
799 SCOPED_TRACE(testing::Message() << "Automatic Safe Download"); 812 SCOPED_TRACE(testing::Message() << "Automatic Safe Download");
800 const DownloadTestCase kAutomaticDownloadToVirtualDir = { 813 const DownloadTestCase kAutomaticDownloadToVirtualDir = {
801 AUTOMATIC, 814 AUTOMATIC,
802 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 815 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
803 DownloadFileType::NOT_DANGEROUS, 816 DownloadFileType::NOT_DANGEROUS,
804 "http://example.com/foo.txt", 817 "http://example.com/foo.txt",
805 "text/plain", 818 "text/plain",
806 FILE_PATH_LITERAL(""), 819 FILE_PATH_LITERAL(""),
807 820
808 FILE_PATH_LITERAL("foo-local.txt"), 821 FILE_PATH_LITERAL("foo-local.txt"),
809 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 822 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
810 823
811 EXPECT_LOCAL_PATH}; 824 EXPECT_LOCAL_PATH};
812 EXPECT_CALL(*delegate(), DetermineLocalPath(_, _, _)) 825 EXPECT_CALL(*delegate(), DetermineLocalPath(_, _, _))
813 .WillOnce(WithArg<2>(ScheduleCallback( 826 .WillOnce(WithArg<2>(ScheduleCallback(
814 GetPathInDownloadDir(FILE_PATH_LITERAL("foo-local.txt"))))); 827 GetPathInDownloadDir(FILE_PATH_LITERAL("foo-local.txt")))));
815 RunTestCasesWithActiveItem(&kAutomaticDownloadToVirtualDir, 1); 828 RunTestCasesWithActiveItem(&kAutomaticDownloadToVirtualDir, 1);
816 } 829 }
817 830
831 #if !BUILDFLAG(ANDROID_JAVA_UI)
818 { 832 {
819 SCOPED_TRACE(testing::Message() << "Save As to virtual directory"); 833 SCOPED_TRACE(testing::Message() << "Save As to virtual directory");
820 const DownloadTestCase kSaveAsToVirtualDir = { 834 const DownloadTestCase kSaveAsToVirtualDir = {
821 SAVE_AS, 835 SAVE_AS,
822 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 836 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
823 DownloadFileType::NOT_DANGEROUS, 837 DownloadFileType::NOT_DANGEROUS,
824 "http://example.com/bar.txt", 838 "http://example.com/bar.txt",
825 "text/plain", 839 "text/plain",
826 FILE_PATH_LITERAL(""), 840 FILE_PATH_LITERAL(""),
827 841
(...skipping 24 matching lines...) Expand all
852 FILE_PATH_LITERAL("foo-x.txt"), 866 FILE_PATH_LITERAL("foo-x.txt"),
853 DownloadItem::TARGET_DISPOSITION_PROMPT, 867 DownloadItem::TARGET_DISPOSITION_PROMPT,
854 868
855 EXPECT_CRDOWNLOAD}; 869 EXPECT_CRDOWNLOAD};
856 EXPECT_CALL(*delegate(), PromptUserForDownloadPath( 870 EXPECT_CALL(*delegate(), PromptUserForDownloadPath(
857 _, test_virtual_dir().AppendASCII("bar.txt"), _)) 871 _, test_virtual_dir().AppendASCII("bar.txt"), _))
858 .WillOnce(WithArg<2>(ScheduleCallback( 872 .WillOnce(WithArg<2>(ScheduleCallback(
859 GetPathInDownloadDir(FILE_PATH_LITERAL("foo-x.txt"))))); 873 GetPathInDownloadDir(FILE_PATH_LITERAL("foo-x.txt")))));
860 RunTestCasesWithActiveItem(&kSaveAsToLocalDir, 1); 874 RunTestCasesWithActiveItem(&kSaveAsToLocalDir, 1);
861 } 875 }
876 #endif // !BUILDFLAG(ANDROID_JAVA_UI)
862 877
863 { 878 {
864 SCOPED_TRACE(testing::Message() << "Forced safe download"); 879 SCOPED_TRACE(testing::Message() << "Forced safe download");
865 const DownloadTestCase kForcedSafe = { 880 const DownloadTestCase kForcedSafe = {
866 FORCED, 881 FORCED,
867 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 882 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
868 DownloadFileType::NOT_DANGEROUS, 883 DownloadFileType::NOT_DANGEROUS,
869 "http://example.com/foo.txt", 884 "http://example.com/foo.txt",
870 "", 885 "",
871 FILE_PATH_LITERAL("forced-foo.txt"), 886 FILE_PATH_LITERAL("forced-foo.txt"),
(...skipping 11 matching lines...) Expand all
883 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_InactiveDownload) { 898 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_InactiveDownload) {
884 const DownloadTestCase kInactiveTestCases[] = { 899 const DownloadTestCase kInactiveTestCases[] = {
885 {AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 900 {AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
886 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 901 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
887 "text/plain", FILE_PATH_LITERAL(""), 902 "text/plain", FILE_PATH_LITERAL(""),
888 903
889 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 904 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
890 905
891 EXPECT_CRDOWNLOAD}, 906 EXPECT_CRDOWNLOAD},
892 907
908 #if !BUILDFLAG(ANDROID_JAVA_UI)
893 {SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 909 {SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
894 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 910 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
895 "text/plain", FILE_PATH_LITERAL(""), 911 "text/plain", FILE_PATH_LITERAL(""),
896 912
897 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, 913 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT,
898 914
899 EXPECT_CRDOWNLOAD}}; 915 EXPECT_CRDOWNLOAD}
916 #endif // !BUILDFLAG(ANDROID_JAVA_UI)
917 };
900 918
901 for (size_t i = 0; i < arraysize(kInactiveTestCases); ++i) { 919 for (size_t i = 0; i < arraysize(kInactiveTestCases); ++i) {
902 SCOPED_TRACE(testing::Message() << "Running test case " << i); 920 SCOPED_TRACE(testing::Message() << "Running test case " << i);
903 const DownloadTestCase& test_case = kInactiveTestCases[i]; 921 const DownloadTestCase& test_case = kInactiveTestCases[i];
904 std::unique_ptr<content::MockDownloadItem> item( 922 std::unique_ptr<content::MockDownloadItem> item(
905 CreateActiveDownloadItem(i, test_case)); 923 CreateActiveDownloadItem(i, test_case));
906 EXPECT_CALL(*item.get(), GetState()) 924 EXPECT_CALL(*item.get(), GetState())
907 .WillRepeatedly(Return(content::DownloadItem::CANCELLED)); 925 .WillRepeatedly(Return(content::DownloadItem::CANCELLED));
908 926
909 EXPECT_CALL(*delegate(), PromptUserForDownloadPath(_, _, _)).Times(0); 927 EXPECT_CALL(*delegate(), PromptUserForDownloadPath(_, _, _)).Times(0);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 {// 1: Dangerous due to not having visited referrer before. 997 {// 1: Dangerous due to not having visited referrer before.
980 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, 998 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE,
981 DownloadFileType::ALLOW_ON_USER_GESTURE, 999 DownloadFileType::ALLOW_ON_USER_GESTURE,
982 "http://not-visited.example.com/foo.crx", "application/xml", 1000 "http://not-visited.example.com/foo.crx", "application/xml",
983 FILE_PATH_LITERAL(""), 1001 FILE_PATH_LITERAL(""),
984 1002
985 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 1003 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
986 1004
987 EXPECT_UNCONFIRMED}, 1005 EXPECT_UNCONFIRMED},
988 1006
1007 #if !BUILDFLAG(ANDROID_JAVA_UI)
989 {// 2: Safe because the user is being prompted. 1008 {// 2: Safe because the user is being prompted.
990 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1009 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
991 DownloadFileType::NOT_DANGEROUS, 1010 DownloadFileType::NOT_DANGEROUS,
992 "http://not-visited.example.com/foo.crx", "application/xml", 1011 "http://not-visited.example.com/foo.crx", "application/xml",
993 FILE_PATH_LITERAL(""), 1012 FILE_PATH_LITERAL(""),
994 1013
995 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_PROMPT, 1014 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_PROMPT,
996 1015
997 EXPECT_CRDOWNLOAD}, 1016 EXPECT_CRDOWNLOAD},
1017 #endif // !BUILDFLAG(ANDROID_JAVA_UI)
998 1018
999 {// 3: Safe because of forced path. 1019 {// 3: Safe because of forced path.
1000 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1020 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
1001 DownloadFileType::NOT_DANGEROUS, 1021 DownloadFileType::NOT_DANGEROUS,
1002 "http://not-visited.example.com/foo.crx", "application/xml", 1022 "http://not-visited.example.com/foo.crx", "application/xml",
1003 FILE_PATH_LITERAL("foo.crx"), 1023 FILE_PATH_LITERAL("foo.crx"),
1004 1024
1005 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, 1025 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE,
1006 1026
1007 EXPECT_LOCAL_PATH}, 1027 EXPECT_LOCAL_PATH},
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1143 } 1163 }
1144 1164
1145 std::unique_ptr<content::MockDownloadItem> item( 1165 std::unique_ptr<content::MockDownloadItem> item(
1146 CreateActiveDownloadItem(1, download_test_case)); 1166 CreateActiveDownloadItem(1, download_test_case));
1147 EXPECT_CALL(*item, GetTransitionType()) 1167 EXPECT_CALL(*item, GetTransitionType())
1148 .WillRepeatedly(Return(test_case.page_transition)); 1168 .WillRepeatedly(Return(test_case.page_transition));
1149 RunTestCase(download_test_case, base::FilePath(), item.get()); 1169 RunTestCase(download_test_case, base::FilePath(), item.get());
1150 } 1170 }
1151 } 1171 }
1152 1172
1173 #if !BUILDFLAG(ANDROID_JAVA_UI)
1153 // These test cases are run with "Prompt for download" user preference set to 1174 // These test cases are run with "Prompt for download" user preference set to
1154 // true. 1175 // true.
1155 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_PromptAlways) { 1176 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_PromptAlways) {
1156 const DownloadTestCase kPromptingTestCases[] = { 1177 const DownloadTestCase kPromptingTestCases[] = {
1157 {// 0: Safe Automatic - Should prompt because of "Prompt for download" 1178 {// 0: Safe Automatic - Should prompt because of "Prompt for download"
1158 // preference setting. 1179 // preference setting.
1159 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1180 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
1160 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 1181 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
1161 "text/plain", FILE_PATH_LITERAL(""), 1182 "text/plain", FILE_PATH_LITERAL(""),
1162 1183
(...skipping 21 matching lines...) Expand all
1184 1205
1185 EXPECT_CRDOWNLOAD}, 1206 EXPECT_CRDOWNLOAD},
1186 }; 1207 };
1187 1208
1188 SetPromptForDownload(true); 1209 SetPromptForDownload(true);
1189 EnableAutoOpenBasedOnExtension( 1210 EnableAutoOpenBasedOnExtension(
1190 base::FilePath(FILE_PATH_LITERAL("dummy.dummy"))); 1211 base::FilePath(FILE_PATH_LITERAL("dummy.dummy")));
1191 RunTestCasesWithActiveItem(kPromptingTestCases, 1212 RunTestCasesWithActiveItem(kPromptingTestCases,
1192 arraysize(kPromptingTestCases)); 1213 arraysize(kPromptingTestCases));
1193 } 1214 }
1215 #endif // !BUILDFLAG(ANDROID_JAVA_UI)
1194 1216
1195 #if defined(ENABLE_EXTENSIONS) 1217 #if defined(ENABLE_EXTENSIONS)
1196 // These test cases are run with "Prompt for download" user preference set to 1218 // These test cases are run with "Prompt for download" user preference set to
1197 // true. Automatic extension downloads shouldn't cause prompting. 1219 // true. Automatic extension downloads shouldn't cause prompting.
1198 // Android doesn't support extensions. 1220 // Android doesn't support extensions.
1199 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_PromptAlways_Extension) { 1221 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_PromptAlways_Extension) {
1200 const DownloadTestCase kPromptingTestCases[] = { 1222 const DownloadTestCase kPromptingTestCases[] = {
1201 {// 0: Automatic Browser Extension download. - Shouldn't prompt for browser 1223 {// 0: Automatic Browser Extension download. - Shouldn't prompt for browser
1202 // extension downloads even if "Prompt for download" preference is set. 1224 // extension downloads even if "Prompt for download" preference is set.
1203 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, 1225 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE,
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1276 {// 0: Automatic Safe 1298 {// 0: Automatic Safe
1277 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1299 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
1278 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 1300 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
1279 "text/plain", FILE_PATH_LITERAL(""), 1301 "text/plain", FILE_PATH_LITERAL(""),
1280 1302
1281 FILE_PATH_LITERAL("overridden/foo.txt"), 1303 FILE_PATH_LITERAL("overridden/foo.txt"),
1282 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 1304 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
1283 1305
1284 EXPECT_CRDOWNLOAD}, 1306 EXPECT_CRDOWNLOAD},
1285 1307
1308 #if !BUILDFLAG(ANDROID_JAVA_UI)
1286 {// 1: Save_As Safe 1309 {// 1: Save_As Safe
1287 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1310 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
1288 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", 1311 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt",
1289 "text/plain", FILE_PATH_LITERAL(""), 1312 "text/plain", FILE_PATH_LITERAL(""),
1290 1313
1291 FILE_PATH_LITERAL("overridden/foo.txt"), 1314 FILE_PATH_LITERAL("overridden/foo.txt"),
1292 DownloadItem::TARGET_DISPOSITION_PROMPT, 1315 DownloadItem::TARGET_DISPOSITION_PROMPT,
1293 1316
1294 EXPECT_CRDOWNLOAD}, 1317 EXPECT_CRDOWNLOAD},
1318 #endif // !BUILDFLAG(ANDROID_JAVA_UI)
1295 1319
1296 {// 2: Automatic Dangerous 1320 {// 2: Automatic Dangerous
1297 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, 1321 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE,
1298 DownloadFileType::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", 1322 DownloadFileType::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx",
1299 "", FILE_PATH_LITERAL(""), 1323 "", FILE_PATH_LITERAL(""),
1300 1324
1301 FILE_PATH_LITERAL("overridden/foo.crx"), 1325 FILE_PATH_LITERAL("overridden/foo.crx"),
1302 DownloadItem::TARGET_DISPOSITION_OVERWRITE, 1326 DownloadItem::TARGET_DISPOSITION_OVERWRITE,
1303 1327
1304 EXPECT_UNCONFIRMED}, 1328 EXPECT_UNCONFIRMED},
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1400 .WillOnce(WithArg<2>( 1424 .WillOnce(WithArg<2>(
1401 ScheduleCallback2(overridden_path, 1425 ScheduleCallback2(overridden_path,
1402 DownloadPathReservationTracker::PROMPT))); 1426 DownloadPathReservationTracker::PROMPT)));
1403 EXPECT_CALL(*delegate(), ReserveVirtualPath( 1427 EXPECT_CALL(*delegate(), ReserveVirtualPath(
1404 _, full_overridden_path, true, DownloadPathReservationTracker::PROMPT, _)) 1428 _, full_overridden_path, true, DownloadPathReservationTracker::PROMPT, _))
1405 .WillOnce(WithArg<4>( 1429 .WillOnce(WithArg<4>(
1406 ScheduleCallback2(full_overridden_path, true))); 1430 ScheduleCallback2(full_overridden_path, true)));
1407 RunTestCase(test_case, base::FilePath(), item.get()); 1431 RunTestCase(test_case, base::FilePath(), item.get());
1408 } 1432 }
1409 1433
1434 #if !BUILDFLAG(ANDROID_JAVA_UI)
1410 // Test that relative paths returned by extensions are always relative to the 1435 // Test that relative paths returned by extensions are always relative to the
1411 // default downloads path. 1436 // default downloads path.
1412 TEST_F(DownloadTargetDeterminerTest, 1437 TEST_F(DownloadTargetDeterminerTest,
1413 TargetDeterminer_NotifyExtensionsDefaultPath) { 1438 TargetDeterminer_NotifyExtensionsDefaultPath) {
1414 const DownloadTestCase kNotifyExtensionsTestCase = { 1439 const DownloadTestCase kNotifyExtensionsTestCase = {
1415 SAVE_AS, 1440 SAVE_AS,
1416 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 1441 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
1417 DownloadFileType::NOT_DANGEROUS, 1442 DownloadFileType::NOT_DANGEROUS,
1418 "http://example.com/foo.txt", 1443 "http://example.com/foo.txt",
1419 "text/plain", 1444 "text/plain",
(...skipping 17 matching lines...) Expand all
1437 EXPECT_CALL(*delegate(), NotifyExtensions(_, _, _)) 1462 EXPECT_CALL(*delegate(), NotifyExtensions(_, _, _))
1438 .WillOnce(WithArg<2>( 1463 .WillOnce(WithArg<2>(
1439 ScheduleCallback2(overridden_path, 1464 ScheduleCallback2(overridden_path,
1440 DownloadPathReservationTracker::UNIQUIFY))); 1465 DownloadPathReservationTracker::UNIQUIFY)));
1441 EXPECT_CALL(*delegate(), 1466 EXPECT_CALL(*delegate(),
1442 PromptUserForDownloadPath(_, full_overridden_path, _)) 1467 PromptUserForDownloadPath(_, full_overridden_path, _))
1443 .WillOnce(WithArg<2>( 1468 .WillOnce(WithArg<2>(
1444 ScheduleCallback(full_overridden_path))); 1469 ScheduleCallback(full_overridden_path)));
1445 RunTestCase(test_case, base::FilePath(), item.get()); 1470 RunTestCase(test_case, base::FilePath(), item.get());
1446 } 1471 }
1472 #endif // !BUILDFLAG(ANDROID_JAVA_UI)
1447 1473
1448 TEST_F(DownloadTargetDeterminerTest, 1474 TEST_F(DownloadTargetDeterminerTest,
1449 TargetDeterminer_InitialVirtualPathUnsafe) { 1475 TargetDeterminer_InitialVirtualPathUnsafe) {
1450 const base::FilePath::CharType* kInitialPath = 1476 const base::FilePath::CharType* kInitialPath =
1451 FILE_PATH_LITERAL("some_path/bar.html"); 1477 FILE_PATH_LITERAL("some_path/bar.html");
1452 1478
1453 const DownloadTestCase kInitialPathTestCase = { 1479 const DownloadTestCase kInitialPathTestCase = {
1454 // 0: Save As Save. The path generated based on the DownloadItem is safe, 1480 // 0: Save As Save. The path generated based on the DownloadItem is safe,
1455 // but the initial path is unsafe. However, the download is not considered 1481 // but the initial path is unsafe. However, the download is not considered
1456 // dangerous since the user has been prompted. 1482 // dangerous since the user has been prompted.
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after
2139 EXPECT_CALL(mock_plugin_filter_, MockPluginAvailable(browser_plugin.path())) 2165 EXPECT_CALL(mock_plugin_filter_, MockPluginAvailable(browser_plugin.path()))
2140 .WillRepeatedly(Return(false)); 2166 .WillRepeatedly(Return(false));
2141 target_info = RunDownloadTargetDeterminer( 2167 target_info = RunDownloadTargetDeterminer(
2142 GetPathInDownloadDir(kInitialPath), item.get()); 2168 GetPathInDownloadDir(kInitialPath), item.get());
2143 EXPECT_FALSE(target_info->is_filetype_handled_safely); 2169 EXPECT_FALSE(target_info->is_filetype_handled_safely);
2144 } 2170 }
2145 2171
2146 #endif // defined(ENABLE_PLUGINS) 2172 #endif // defined(ENABLE_PLUGINS)
2147 2173
2148 } // namespace 2174 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/download/download_target_determiner.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698