Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 #include "base/file_path.h" | 5 #include "base/file_path.h" |
| 6 #include "base/file_util.h" | 6 #include "base/file_util.h" |
| 7 #include "base/memory/ref_counted.h" | 7 #include "base/memory/ref_counted.h" |
| 8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
| 9 #include "base/scoped_temp_dir.h" | 9 #include "base/scoped_temp_dir.h" |
| 10 #include "base/stl_util-inl.h" | 10 #include "base/stl_util-inl.h" |
| (...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 601 } | 601 } |
| 602 | 602 |
| 603 // Create a DownloadsObserver that will wait for the | 603 // Create a DownloadsObserver that will wait for the |
| 604 // specified number of downloads to finish, or for | 604 // specified number of downloads to finish, or for |
| 605 // a dangerous download warning to be shown. | 605 // a dangerous download warning to be shown. |
| 606 DownloadsObserver* DangerousInstallWaiter( | 606 DownloadsObserver* DangerousInstallWaiter( |
| 607 Browser* browser, | 607 Browser* browser, |
| 608 int num_downloads, | 608 int num_downloads, |
| 609 DownloadItem::DownloadState final_state, | 609 DownloadItem::DownloadState final_state, |
| 610 DangerousDownloadAction dangerous_download_action) { | 610 DangerousDownloadAction dangerous_download_action) { |
| 611 | |
|
achuithb
2011/06/24 21:08:53
Fix lint error.
| |
| 612 DownloadManager* download_manager = | 611 DownloadManager* download_manager = |
| 613 browser->profile()->GetDownloadManager(); | 612 browser->profile()->GetDownloadManager(); |
| 614 return new DownloadsObserver( | 613 return new DownloadsObserver( |
| 615 download_manager, num_downloads, | 614 download_manager, num_downloads, |
| 616 final_state, | 615 final_state, |
| 617 true, // Bail on select file | 616 true, // Bail on select file |
| 618 dangerous_download_action); | 617 dangerous_download_action); |
| 619 } | 618 } |
| 620 | 619 |
| 621 // Download |url|, then wait for the download to finish. | 620 // Download |url|, then wait for the download to finish. |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 744 browser, | 743 browser, |
| 745 finish_url, | 744 finish_url, |
| 746 NEW_FOREGROUND_TAB, | 745 NEW_FOREGROUND_TAB, |
| 747 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 746 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 748 observer->WaitForFinished(); | 747 observer->WaitForFinished(); |
| 749 | 748 |
| 750 EXPECT_EQ(2, browser->tab_count()); | 749 EXPECT_EQ(2, browser->tab_count()); |
| 751 | 750 |
| 752 // TODO(ahendrickson): check download status text after downloading. | 751 // TODO(ahendrickson): check download status text after downloading. |
| 753 | 752 |
| 754 // Make sure the download shelf is showing. | |
| 755 CheckDownloadUIVisible(browser, true, true); | |
| 756 | |
| 757 FilePath basefilename(filename.BaseName()); | 753 FilePath basefilename(filename.BaseName()); |
| 758 net::FileURLToFilePath(url, &filename); | 754 net::FileURLToFilePath(url, &filename); |
| 759 FilePath download_path = downloads_directory_.path().Append(basefilename); | 755 FilePath download_path = downloads_directory_.path().Append(basefilename); |
| 756 CheckDownloadUI(browser, true, true, basefilename); | |
| 760 | 757 |
| 761 bool downloaded_path_exists = file_util::PathExists(download_path); | 758 bool downloaded_path_exists = file_util::PathExists(download_path); |
| 762 EXPECT_TRUE(downloaded_path_exists); | 759 EXPECT_TRUE(downloaded_path_exists); |
| 763 if (!downloaded_path_exists) | 760 if (!downloaded_path_exists) |
| 764 return false; | 761 return false; |
| 765 | 762 |
| 766 // Delete the file we just downloaded. | 763 // Delete the file we just downloaded. |
| 767 EXPECT_TRUE(file_util::DieFileDie(download_path, true)); | 764 EXPECT_TRUE(file_util::DieFileDie(download_path, true)); |
| 768 EXPECT_FALSE(file_util::PathExists(download_path)); | 765 EXPECT_FALSE(file_util::PathExists(download_path)); |
| 769 | 766 |
| 770 return true; | 767 return true; |
| 771 } | 768 } |
| 772 | 769 |
| 773 void GetDownloads(Browser* browser, std::vector<DownloadItem*>* downloads) { | 770 void GetDownloads(Browser* browser, std::vector<DownloadItem*>* downloads) { |
| 774 DCHECK(downloads); | 771 DCHECK(downloads); |
| 775 DownloadManager* manager = browser->profile()->GetDownloadManager(); | 772 DownloadManager* manager = browser->profile()->GetDownloadManager(); |
| 776 manager->SearchDownloads(string16(), downloads); | 773 manager->SearchDownloads(string16(), downloads); |
| 777 } | 774 } |
| 778 | 775 |
| 779 // Figure out if the appropriate download visibility was done. A | 776 // Check that the download UI (shelf on non-chromeos or panel on chromeos) |
| 780 // utility function to support ChromeOS variations. | 777 // is visible or not as expected. Additionally, check that the filename |
| 781 static void CheckDownloadUIVisible(Browser* browser, | 778 // is correct (currently only on chromeos). |
|
Randy Smith (Not in Mondays)
2011/06/26 21:11:45
nit: Suggested comment change "filename is correct
achuithb
2011/06/27 18:34:21
Done.
| |
| 782 bool expected_non_chromeos, | 779 void CheckDownloadUI(Browser* browser, bool expected_non_cros, |
| 783 bool expected_chromeos) { | 780 bool expected_cros, const FilePath& filename) { |
| 784 #if defined(OS_CHROMEOS) | 781 #if defined(OS_CHROMEOS) |
| 785 EXPECT_EQ(expected_chromeos, | 782 Browser* popup = ActiveDownloadsUI::GetPopup(browser->profile()); |
| 786 NULL != ActiveDownloadsUI::GetPopup(browser->profile())); | 783 EXPECT_EQ(expected_cros, popup != NULL); |
| 784 if (!popup || filename.empty()) | |
| 785 return; | |
| 786 | |
| 787 ActiveDownloadsUI* downloads_ui = static_cast<ActiveDownloadsUI*>( | |
| 788 popup->GetSelectedTabContents()->web_ui()); | |
| 789 ASSERT_TRUE(downloads_ui); | |
| 790 const ActiveDownloadsUI::DownloadList& downloads = | |
| 791 downloads_ui->GetDownloads(); | |
| 792 EXPECT_EQ(downloads.size(), 1U); | |
| 793 | |
| 794 FilePath full_path(DestinationFile(browser, filename)); | |
| 795 bool exists = false; | |
| 796 for (size_t i = 0; i < downloads.size(); ++i) { | |
| 797 if (downloads[i]->full_path() == full_path) { | |
| 798 exists = true; | |
| 799 break; | |
| 800 } | |
| 801 } | |
| 802 EXPECT_TRUE(exists); | |
| 787 #else | 803 #else |
| 788 EXPECT_EQ(expected_non_chromeos, | 804 EXPECT_EQ(expected_non_cros, browser->window()->IsDownloadShelfVisible()); |
| 789 browser->window()->IsDownloadShelfVisible()); | 805 // TODO: Check for filename match in download shelf. |
| 790 #endif | 806 #endif |
| 791 } | 807 } |
| 792 | |
| 793 static void ExpectWindowCountAfterDownload(size_t expected) { | 808 static void ExpectWindowCountAfterDownload(size_t expected) { |
| 794 #if defined(OS_CHROMEOS) | 809 #if defined(OS_CHROMEOS) |
| 795 // On ChromeOS, a download panel is created to display | 810 // On ChromeOS, a download panel is created to display |
| 796 // download information, and this counts as a window. | 811 // download information, and this counts as a window. |
| 797 expected++; | 812 expected++; |
| 798 #endif | 813 #endif |
| 799 EXPECT_EQ(expected, BrowserList::size()); | 814 EXPECT_EQ(expected, BrowserList::size()); |
| 800 } | 815 } |
| 801 | 816 |
| 802 private: | 817 private: |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 932 ASSERT_TRUE(InitialSetup(false)); | 947 ASSERT_TRUE(InitialSetup(false)); |
| 933 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 948 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 934 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 949 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 935 | 950 |
| 936 // Download the file and wait. We do not expect the Select File dialog. | 951 // Download the file and wait. We do not expect the Select File dialog. |
| 937 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); | 952 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); |
| 938 | 953 |
| 939 // Check state. | 954 // Check state. |
| 940 EXPECT_EQ(1, browser()->tab_count()); | 955 EXPECT_EQ(1, browser()->tab_count()); |
| 941 CheckDownload(browser(), file, file); | 956 CheckDownload(browser(), file, file); |
| 942 CheckDownloadUIVisible(browser(), true, true); | 957 CheckDownloadUI(browser(), true, true, file); |
| 943 } | 958 } |
| 944 | 959 |
| 945 #if defined(OS_WIN) | 960 #if defined(OS_WIN) |
| 946 // Download a file and confirm that the zone identifier (on windows) | 961 // Download a file and confirm that the zone identifier (on windows) |
| 947 // is set to internet. | 962 // is set to internet. |
| 948 IN_PROC_BROWSER_TEST_F(DownloadTest, CheckInternetZone) { | 963 IN_PROC_BROWSER_TEST_F(DownloadTest, CheckInternetZone) { |
| 949 ASSERT_TRUE(InitialSetup(false)); | 964 ASSERT_TRUE(InitialSetup(false)); |
| 950 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 965 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 951 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 966 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 952 | 967 |
| 953 // Download the file and wait. We do not expect the Select File dialog. | 968 // Download the file and wait. We do not expect the Select File dialog. |
| 954 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); | 969 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); |
| 955 | 970 |
| 956 // Check state. Special file state must be checked before CheckDownload, | 971 // Check state. Special file state must be checked before CheckDownload, |
| 957 // as CheckDownload will delete the output file. | 972 // as CheckDownload will delete the output file. |
| 958 EXPECT_EQ(1, browser()->tab_count()); | 973 EXPECT_EQ(1, browser()->tab_count()); |
| 959 FilePath downloaded_file(DestinationFile(browser(), file)); | 974 FilePath downloaded_file(DestinationFile(browser(), file)); |
| 960 if (file_util::VolumeSupportsADS(downloaded_file)) | 975 if (file_util::VolumeSupportsADS(downloaded_file)) |
| 961 EXPECT_TRUE(file_util::HasInternetZoneIdentifier(downloaded_file)); | 976 EXPECT_TRUE(file_util::HasInternetZoneIdentifier(downloaded_file)); |
| 962 CheckDownload(browser(), file, file); | 977 CheckDownload(browser(), file, file); |
| 963 CheckDownloadUIVisible(browser(), true, true); | 978 CheckDownloadUI(browser(), true, true, file); |
| 964 } | 979 } |
| 965 #endif | 980 #endif |
| 966 | 981 |
| 967 // Put up a Select File dialog when the file is downloaded, due to its MIME | 982 // Put up a Select File dialog when the file is downloaded, due to its MIME |
| 968 // type. | 983 // type. |
| 969 // | 984 // |
| 970 // This test runs correctly, but leaves behind turds in the test user's | 985 // This test runs correctly, but leaves behind turds in the test user's |
| 971 // download directory because of http://crbug.com/62099. No big loss; it | 986 // download directory because of http://crbug.com/62099. No big loss; it |
| 972 // was primarily confirming DownloadsObserver wait on select file dialog | 987 // was primarily confirming DownloadsObserver wait on select file dialog |
| 973 // functionality anyway. | 988 // functionality anyway. |
| 974 IN_PROC_BROWSER_TEST_F(DownloadTest, DISABLED_DownloadMimeTypeSelect) { | 989 IN_PROC_BROWSER_TEST_F(DownloadTest, DISABLED_DownloadMimeTypeSelect) { |
| 975 ASSERT_TRUE(InitialSetup(true)); | 990 ASSERT_TRUE(InitialSetup(true)); |
| 976 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 991 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 977 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 992 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 978 | 993 |
| 979 // Download the file and wait. We expect the Select File dialog to appear | 994 // Download the file and wait. We expect the Select File dialog to appear |
| 980 // due to the MIME type. | 995 // due to the MIME type. |
| 981 DownloadAndWait(browser(), url, EXPECT_SELECT_DIALOG); | 996 DownloadAndWait(browser(), url, EXPECT_SELECT_DIALOG); |
| 982 | 997 |
| 983 // Check state. | 998 // Check state. |
| 984 EXPECT_EQ(1, browser()->tab_count()); | 999 EXPECT_EQ(1, browser()->tab_count()); |
| 985 // Since we exited while the Select File dialog was visible, there should not | 1000 // Since we exited while the Select File dialog was visible, there should not |
| 986 // be anything in the download shelf and so it should not be visible. | 1001 // be anything in the download shelf and so it should not be visible. |
| 987 CheckDownloadUIVisible(browser(), false, false); | 1002 CheckDownloadUI(browser(), false, false, FilePath()); |
| 988 } | 1003 } |
| 989 | 1004 |
| 990 // Access a file with a viewable mime-type, verify that a download | 1005 // Access a file with a viewable mime-type, verify that a download |
| 991 // did not initiate. | 1006 // did not initiate. |
| 992 IN_PROC_BROWSER_TEST_F(DownloadTest, NoDownload) { | 1007 IN_PROC_BROWSER_TEST_F(DownloadTest, NoDownload) { |
| 993 ASSERT_TRUE(InitialSetup(false)); | 1008 ASSERT_TRUE(InitialSetup(false)); |
| 994 FilePath file(FILE_PATH_LITERAL("download-test2.html")); | 1009 FilePath file(FILE_PATH_LITERAL("download-test2.html")); |
| 995 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 1010 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 996 FilePath file_path(DestinationFile(browser(), file)); | 1011 FilePath file_path(DestinationFile(browser(), file)); |
| 997 | 1012 |
| 998 // Open a web page and wait. | 1013 // Open a web page and wait. |
| 999 ui_test_utils::NavigateToURL(browser(), url); | 1014 ui_test_utils::NavigateToURL(browser(), url); |
| 1000 | 1015 |
| 1001 // Check that we did not download the web page. | 1016 // Check that we did not download the web page. |
| 1002 EXPECT_FALSE(file_util::PathExists(file_path)); | 1017 EXPECT_FALSE(file_util::PathExists(file_path)); |
| 1003 | 1018 |
| 1004 // Check state. | 1019 // Check state. |
| 1005 EXPECT_EQ(1, browser()->tab_count()); | 1020 EXPECT_EQ(1, browser()->tab_count()); |
| 1006 CheckDownloadUIVisible(browser(), false, false); | 1021 CheckDownloadUI(browser(), false, false, FilePath()); |
| 1007 } | 1022 } |
| 1008 | 1023 |
| 1009 // Download a 0-size file with a content-disposition header, verify that the | 1024 // Download a 0-size file with a content-disposition header, verify that the |
| 1010 // download tab opened and the file exists as the filename specified in the | 1025 // download tab opened and the file exists as the filename specified in the |
| 1011 // header. This also ensures we properly handle empty file downloads. | 1026 // header. This also ensures we properly handle empty file downloads. |
| 1012 // The download shelf should be visible in the current tab. | 1027 // The download shelf should be visible in the current tab. |
| 1013 IN_PROC_BROWSER_TEST_F(DownloadTest, ContentDisposition) { | 1028 IN_PROC_BROWSER_TEST_F(DownloadTest, ContentDisposition) { |
| 1014 ASSERT_TRUE(InitialSetup(false)); | 1029 ASSERT_TRUE(InitialSetup(false)); |
| 1015 FilePath file(FILE_PATH_LITERAL("download-test3.gif")); | 1030 FilePath file(FILE_PATH_LITERAL("download-test3.gif")); |
| 1016 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 1031 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 1017 FilePath download_file(FILE_PATH_LITERAL("download-test3-attachment.gif")); | 1032 FilePath download_file(FILE_PATH_LITERAL("download-test3-attachment.gif")); |
| 1018 | 1033 |
| 1019 // Download a file and wait. | 1034 // Download a file and wait. |
| 1020 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); | 1035 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); |
| 1021 | 1036 |
| 1022 CheckDownload(browser(), download_file, file); | 1037 CheckDownload(browser(), download_file, file); |
| 1023 | 1038 |
| 1024 // Check state. | 1039 // Check state. |
| 1025 EXPECT_EQ(1, browser()->tab_count()); | 1040 EXPECT_EQ(1, browser()->tab_count()); |
| 1026 CheckDownloadUIVisible(browser(), true, true); | 1041 CheckDownloadUI(browser(), true, true, download_file); |
| 1027 } | 1042 } |
| 1028 | 1043 |
| 1029 #if !defined(OS_CHROMEOS) // Download shelf is not per-window on ChromeOS. | 1044 #if !defined(OS_CHROMEOS) // Download shelf is not per-window on ChromeOS. |
| 1030 // Test that the download shelf is per-window by starting a download in one | 1045 // Test that the download shelf is per-window by starting a download in one |
| 1031 // tab, opening a second tab, closing the shelf, going back to the first tab, | 1046 // tab, opening a second tab, closing the shelf, going back to the first tab, |
| 1032 // and checking that the shelf is closed. | 1047 // and checking that the shelf is closed. |
| 1033 IN_PROC_BROWSER_TEST_F(DownloadTest, PerWindowShelf) { | 1048 IN_PROC_BROWSER_TEST_F(DownloadTest, PerWindowShelf) { |
| 1034 ASSERT_TRUE(InitialSetup(false)); | 1049 ASSERT_TRUE(InitialSetup(false)); |
| 1035 FilePath file(FILE_PATH_LITERAL("download-test3.gif")); | 1050 FilePath file(FILE_PATH_LITERAL("download-test3.gif")); |
| 1036 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 1051 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 1037 FilePath download_file(FILE_PATH_LITERAL("download-test3-attachment.gif")); | 1052 FilePath download_file(FILE_PATH_LITERAL("download-test3-attachment.gif")); |
| 1038 | 1053 |
| 1039 // Download a file and wait. | 1054 // Download a file and wait. |
| 1040 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); | 1055 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); |
| 1041 | 1056 |
| 1042 CheckDownload(browser(), download_file, file); | 1057 CheckDownload(browser(), download_file, file); |
| 1043 | 1058 |
| 1044 // Check state. | 1059 // Check state. |
| 1045 EXPECT_EQ(1, browser()->tab_count()); | 1060 EXPECT_EQ(1, browser()->tab_count()); |
| 1046 CheckDownloadUIVisible(browser(), true, true); | 1061 CheckDownloadUI(browser(), true, true, download_file); |
| 1047 | 1062 |
| 1048 // Open a second tab and wait. | 1063 // Open a second tab and wait. |
| 1049 EXPECT_NE(static_cast<TabContentsWrapper*>(NULL), | 1064 EXPECT_NE(static_cast<TabContentsWrapper*>(NULL), |
| 1050 browser()->AddSelectedTabWithURL(GURL(), PageTransition::TYPED)); | 1065 browser()->AddSelectedTabWithURL(GURL(), PageTransition::TYPED)); |
| 1051 EXPECT_EQ(2, browser()->tab_count()); | 1066 EXPECT_EQ(2, browser()->tab_count()); |
| 1052 CheckDownloadUIVisible(browser(), true, true); | 1067 CheckDownloadUI(browser(), true, true, download_file); |
| 1053 | 1068 |
| 1054 // Hide the download shelf. | 1069 // Hide the download shelf. |
| 1055 browser()->window()->GetDownloadShelf()->Close(); | 1070 browser()->window()->GetDownloadShelf()->Close(); |
| 1056 CheckDownloadUIVisible(browser(), false, false); | 1071 CheckDownloadUI(browser(), false, false, FilePath()); |
| 1057 | 1072 |
| 1058 // Go to the first tab. | 1073 // Go to the first tab. |
| 1059 browser()->ActivateTabAt(0, true); | 1074 browser()->ActivateTabAt(0, true); |
| 1060 EXPECT_EQ(2, browser()->tab_count()); | 1075 EXPECT_EQ(2, browser()->tab_count()); |
| 1061 | 1076 |
| 1062 // The download shelf should not be visible. | 1077 // The download shelf should not be visible. |
| 1063 CheckDownloadUIVisible(browser(), false, false); | 1078 CheckDownloadUI(browser(), false, false, FilePath()); |
| 1064 } | 1079 } |
| 1065 #endif // !OS_CHROMEOS | 1080 #endif // !OS_CHROMEOS |
| 1066 | 1081 |
| 1067 // UnknownSize and KnownSize are tests which depend on | 1082 // UnknownSize and KnownSize are tests which depend on |
| 1068 // URLRequestSlowDownloadJob to serve content in a certain way. Data will be | 1083 // URLRequestSlowDownloadJob to serve content in a certain way. Data will be |
| 1069 // sent in two chunks where the first chunk is 35K and the second chunk is 10K. | 1084 // sent in two chunks where the first chunk is 35K and the second chunk is 10K. |
| 1070 // The test will first attempt to download a file; but the server will "pause" | 1085 // The test will first attempt to download a file; but the server will "pause" |
| 1071 // in the middle until the server receives a second request for | 1086 // in the middle until the server receives a second request for |
| 1072 // "download-finish". At that time, the download will finish. | 1087 // "download-finish". At that time, the download will finish. |
| 1073 // These tests don't currently test much due to holes in |RunSizeTest()|. See | 1088 // These tests don't currently test much due to holes in |RunSizeTest()|. See |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 1101 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 1116 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 1102 // Since |incognito| is a separate browser, we have to set it up explicitly. | 1117 // Since |incognito| is a separate browser, we have to set it up explicitly. |
| 1103 incognito->profile()->GetPrefs()->SetBoolean(prefs::kPromptForDownload, | 1118 incognito->profile()->GetPrefs()->SetBoolean(prefs::kPromptForDownload, |
| 1104 false); | 1119 false); |
| 1105 DownloadAndWait(incognito, url, EXPECT_NO_SELECT_DIALOG); | 1120 DownloadAndWait(incognito, url, EXPECT_NO_SELECT_DIALOG); |
| 1106 | 1121 |
| 1107 // We should still have 2 windows. | 1122 // We should still have 2 windows. |
| 1108 ExpectWindowCountAfterDownload(2); | 1123 ExpectWindowCountAfterDownload(2); |
| 1109 | 1124 |
| 1110 // Verify that the download shelf is showing for the Incognito window. | 1125 // Verify that the download shelf is showing for the Incognito window. |
| 1111 CheckDownloadUIVisible(incognito, true, true); | 1126 CheckDownloadUI(incognito, true, true, file); |
| 1112 | 1127 |
| 1113 #if !defined(OS_MACOSX) | 1128 #if !defined(OS_MACOSX) |
| 1114 // On Mac OS X, the UI window close is delayed until the outermost | 1129 // On Mac OS X, the UI window close is delayed until the outermost |
| 1115 // message loop runs. So it isn't possible to get a BROWSER_CLOSED | 1130 // message loop runs. So it isn't possible to get a BROWSER_CLOSED |
| 1116 // notification inside of a test. | 1131 // notification inside of a test. |
| 1117 ui_test_utils::WindowedNotificationObserver signal( | 1132 ui_test_utils::WindowedNotificationObserver signal( |
| 1118 NotificationType::BROWSER_CLOSED, | 1133 NotificationType::BROWSER_CLOSED, |
| 1119 Source<Browser>(incognito)); | 1134 Source<Browser>(incognito)); |
| 1120 #endif | 1135 #endif |
| 1121 | 1136 |
| 1122 // Close the Incognito window and don't crash. | 1137 // Close the Incognito window and don't crash. |
| 1123 incognito->CloseWindow(); | 1138 incognito->CloseWindow(); |
| 1124 | 1139 |
| 1125 #if !defined(OS_MACOSX) | 1140 #if !defined(OS_MACOSX) |
| 1126 signal.Wait(); | 1141 signal.Wait(); |
| 1127 ExpectWindowCountAfterDownload(1); | 1142 ExpectWindowCountAfterDownload(1); |
| 1128 #endif | 1143 #endif |
| 1129 | 1144 |
| 1130 // Verify that the regular window does not have a download shelf. | 1145 // Verify that the regular window does not have a download shelf. |
| 1131 // On ChromeOS, the download panel is common to both profiles, so | 1146 // On ChromeOS, the download panel is common to both profiles, so |
| 1132 // it is still visible. | 1147 // it is still visible. |
| 1133 CheckDownloadUIVisible(browser(), false, true); | 1148 CheckDownloadUI(browser(), false, true, file); |
| 1134 | 1149 |
| 1135 CheckDownload(browser(), file, file); | 1150 CheckDownload(browser(), file, file); |
| 1136 } | 1151 } |
| 1137 | 1152 |
| 1138 // Navigate to a new background page, but don't download. Confirm that the | 1153 // Navigate to a new background page, but don't download. Confirm that the |
| 1139 // download shelf is not visible and that we have two tabs. | 1154 // download shelf is not visible and that we have two tabs. |
| 1140 IN_PROC_BROWSER_TEST_F(DownloadTest, DontCloseNewTab1) { | 1155 IN_PROC_BROWSER_TEST_F(DownloadTest, DontCloseNewTab1) { |
| 1141 ASSERT_TRUE(InitialSetup(false)); | 1156 ASSERT_TRUE(InitialSetup(false)); |
| 1142 // Because it's an HTML link, it should open a web page rather than | 1157 // Because it's an HTML link, it should open a web page rather than |
| 1143 // downloading. | 1158 // downloading. |
| 1144 FilePath file1(FILE_PATH_LITERAL("download-test2.html")); | 1159 FilePath file1(FILE_PATH_LITERAL("download-test2.html")); |
| 1145 GURL url(URLRequestMockHTTPJob::GetMockUrl(file1)); | 1160 GURL url(URLRequestMockHTTPJob::GetMockUrl(file1)); |
| 1146 | 1161 |
| 1147 // Open a web page and wait. | 1162 // Open a web page and wait. |
| 1148 ui_test_utils::NavigateToURLWithDisposition( | 1163 ui_test_utils::NavigateToURLWithDisposition( |
| 1149 browser(), | 1164 browser(), |
| 1150 url, | 1165 url, |
| 1151 NEW_BACKGROUND_TAB, | 1166 NEW_BACKGROUND_TAB, |
| 1152 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1167 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1153 | 1168 |
| 1154 // We should have two tabs now. | 1169 // We should have two tabs now. |
| 1155 EXPECT_EQ(2, browser()->tab_count()); | 1170 EXPECT_EQ(2, browser()->tab_count()); |
| 1156 CheckDownloadUIVisible(browser(), false, false); | 1171 CheckDownloadUI(browser(), false, false, FilePath()); |
| 1157 } | 1172 } |
| 1158 | 1173 |
| 1159 // Download a file in a background tab. Verify that the tab is closed | 1174 // Download a file in a background tab. Verify that the tab is closed |
| 1160 // automatically, and that the download shelf is visible in the current tab. | 1175 // automatically, and that the download shelf is visible in the current tab. |
| 1161 IN_PROC_BROWSER_TEST_F(DownloadTest, CloseNewTab1) { | 1176 IN_PROC_BROWSER_TEST_F(DownloadTest, CloseNewTab1) { |
| 1162 ASSERT_TRUE(InitialSetup(false)); | 1177 ASSERT_TRUE(InitialSetup(false)); |
| 1163 | 1178 |
| 1164 // Download a file in a new background tab and wait. The tab is automatically | 1179 // Download a file in a new background tab and wait. The tab is automatically |
| 1165 // closed when the download begins. | 1180 // closed when the download begins. |
| 1166 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 1181 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 1167 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 1182 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 1168 DownloadAndWaitWithDisposition( | 1183 DownloadAndWaitWithDisposition( |
| 1169 browser(), | 1184 browser(), |
| 1170 url, | 1185 url, |
| 1171 NEW_BACKGROUND_TAB, | 1186 NEW_BACKGROUND_TAB, |
| 1172 EXPECT_NO_SELECT_DIALOG, | 1187 EXPECT_NO_SELECT_DIALOG, |
| 1173 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1188 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1174 | 1189 |
| 1175 // When the download finishes, we should still have one tab. | 1190 // When the download finishes, we should still have one tab. |
| 1176 CheckDownloadUIVisible(browser(), true, true); | 1191 CheckDownloadUI(browser(), true, true, file); |
| 1177 EXPECT_EQ(1, browser()->tab_count()); | 1192 EXPECT_EQ(1, browser()->tab_count()); |
| 1178 | 1193 |
| 1179 CheckDownload(browser(), file, file); | 1194 CheckDownload(browser(), file, file); |
| 1180 } | 1195 } |
| 1181 | 1196 |
| 1182 // Open a web page in the current tab, then download a file in another tab via | 1197 // Open a web page in the current tab, then download a file in another tab via |
| 1183 // a Javascript call. | 1198 // a Javascript call. |
| 1184 // Verify that we have 2 tabs, and the download shelf is visible in the current | 1199 // Verify that we have 2 tabs, and the download shelf is visible in the current |
| 1185 // tab. | 1200 // tab. |
| 1186 // | 1201 // |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 1198 | 1213 |
| 1199 // Download a file in a new tab and wait (via Javascript). | 1214 // Download a file in a new tab and wait (via Javascript). |
| 1200 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 1215 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 1201 DownloadAndWaitWithDisposition(browser(), | 1216 DownloadAndWaitWithDisposition(browser(), |
| 1202 GURL("javascript:openNew()"), | 1217 GURL("javascript:openNew()"), |
| 1203 CURRENT_TAB, | 1218 CURRENT_TAB, |
| 1204 EXPECT_NO_SELECT_DIALOG, | 1219 EXPECT_NO_SELECT_DIALOG, |
| 1205 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); | 1220 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); |
| 1206 | 1221 |
| 1207 // When the download finishes, we should have two tabs. | 1222 // When the download finishes, we should have two tabs. |
| 1208 CheckDownloadUIVisible(browser(), true, true); | 1223 CheckDownloadUI(browser(), true, true, file); |
| 1209 EXPECT_EQ(2, browser()->tab_count()); | 1224 EXPECT_EQ(2, browser()->tab_count()); |
| 1210 | 1225 |
| 1211 CheckDownload(browser(), file, file); | 1226 CheckDownload(browser(), file, file); |
| 1212 } | 1227 } |
| 1213 | 1228 |
| 1214 // Open a web page in the current tab, open another tab via a Javascript call, | 1229 // Open a web page in the current tab, open another tab via a Javascript call, |
| 1215 // then download a file in the new tab. | 1230 // then download a file in the new tab. |
| 1216 // Verify that we have 2 tabs, and the download shelf is visible in the current | 1231 // Verify that we have 2 tabs, and the download shelf is visible in the current |
| 1217 // tab. | 1232 // tab. |
| 1218 // | 1233 // |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 1240 // Download a file and wait. | 1255 // Download a file and wait. |
| 1241 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 1256 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 1242 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 1257 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 1243 DownloadAndWaitWithDisposition(browser(), | 1258 DownloadAndWaitWithDisposition(browser(), |
| 1244 url, | 1259 url, |
| 1245 CURRENT_TAB, | 1260 CURRENT_TAB, |
| 1246 EXPECT_NO_SELECT_DIALOG, | 1261 EXPECT_NO_SELECT_DIALOG, |
| 1247 ui_test_utils::BROWSER_TEST_NONE); | 1262 ui_test_utils::BROWSER_TEST_NONE); |
| 1248 | 1263 |
| 1249 // When the download finishes, we should have two tabs. | 1264 // When the download finishes, we should have two tabs. |
| 1250 CheckDownloadUIVisible(browser(), true, true); | 1265 CheckDownloadUI(browser(), true, true, file); |
| 1251 EXPECT_EQ(2, browser()->tab_count()); | 1266 EXPECT_EQ(2, browser()->tab_count()); |
| 1252 | 1267 |
| 1253 CheckDownload(browser(), file, file); | 1268 CheckDownload(browser(), file, file); |
| 1254 } | 1269 } |
| 1255 | 1270 |
| 1256 // Open a web page in the current tab, then download a file via Javascript, | 1271 // Open a web page in the current tab, then download a file via Javascript, |
| 1257 // which will do so in a temporary tab. | 1272 // which will do so in a temporary tab. |
| 1258 // Verify that we have 1 tab, and the download shelf is visible. | 1273 // Verify that we have 1 tab, and the download shelf is visible. |
| 1259 // | 1274 // |
| 1260 // The download_page3.html page contains an openNew() function that opens a | 1275 // The download_page3.html page contains an openNew() function that opens a |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 1273 // Download a file and wait. | 1288 // Download a file and wait. |
| 1274 // The file to download is "download-test1.lib". | 1289 // The file to download is "download-test1.lib". |
| 1275 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 1290 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 1276 DownloadAndWaitWithDisposition(browser(), | 1291 DownloadAndWaitWithDisposition(browser(), |
| 1277 GURL("javascript:openNew()"), | 1292 GURL("javascript:openNew()"), |
| 1278 CURRENT_TAB, | 1293 CURRENT_TAB, |
| 1279 EXPECT_NO_SELECT_DIALOG, | 1294 EXPECT_NO_SELECT_DIALOG, |
| 1280 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); | 1295 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); |
| 1281 | 1296 |
| 1282 // When the download finishes, we should still have one tab. | 1297 // When the download finishes, we should still have one tab. |
| 1283 CheckDownloadUIVisible(browser(), true, true); | 1298 CheckDownloadUI(browser(), true, true, file); |
| 1284 EXPECT_EQ(1, browser()->tab_count()); | 1299 EXPECT_EQ(1, browser()->tab_count()); |
| 1285 | 1300 |
| 1286 CheckDownload(browser(), file, file); | 1301 CheckDownload(browser(), file, file); |
| 1287 } | 1302 } |
| 1288 | 1303 |
| 1289 // Open a web page in the current tab, then call Javascript via a button to | 1304 // Open a web page in the current tab, then call Javascript via a button to |
| 1290 // download a file in a new tab, which is closed automatically when the | 1305 // download a file in a new tab, which is closed automatically when the |
| 1291 // download begins. | 1306 // download begins. |
| 1292 // Verify that we have 1 tab, and the download shelf is visible. | 1307 // Verify that we have 1 tab, and the download shelf is visible. |
| 1293 // | 1308 // |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 1308 // The file to download is "download-test1.lib". | 1323 // The file to download is "download-test1.lib". |
| 1309 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 1324 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 1310 DownloadAndWaitWithDisposition( | 1325 DownloadAndWaitWithDisposition( |
| 1311 browser(), | 1326 browser(), |
| 1312 GURL("javascript:document.getElementById('form').submit()"), | 1327 GURL("javascript:document.getElementById('form').submit()"), |
| 1313 CURRENT_TAB, | 1328 CURRENT_TAB, |
| 1314 EXPECT_NO_SELECT_DIALOG, | 1329 EXPECT_NO_SELECT_DIALOG, |
| 1315 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); | 1330 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); |
| 1316 | 1331 |
| 1317 // When the download finishes, we should still have one tab. | 1332 // When the download finishes, we should still have one tab. |
| 1318 CheckDownloadUIVisible(browser(), true, true); | 1333 CheckDownloadUI(browser(), true, true, file); |
| 1319 EXPECT_EQ(1, browser()->tab_count()); | 1334 EXPECT_EQ(1, browser()->tab_count()); |
| 1320 | 1335 |
| 1321 CheckDownload(browser(), file, file); | 1336 CheckDownload(browser(), file, file); |
| 1322 } | 1337 } |
| 1323 | 1338 |
| 1324 // Download a file in a new window. | 1339 // Download a file in a new window. |
| 1325 // Verify that we have 2 windows, and the download shelf is not visible in the | 1340 // Verify that we have 2 windows, and the download shelf is not visible in the |
| 1326 // first window, but is visible in the second window. | 1341 // first window, but is visible in the second window. |
| 1327 // Close the new window. | 1342 // Close the new window. |
| 1328 // Verify that we have 1 window, and the download shelf is not visible. | 1343 // Verify that we have 1 window, and the download shelf is not visible. |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 1341 DownloadAndWaitWithDisposition(browser(), | 1356 DownloadAndWaitWithDisposition(browser(), |
| 1342 url, | 1357 url, |
| 1343 NEW_WINDOW, | 1358 NEW_WINDOW, |
| 1344 EXPECT_NO_SELECT_DIALOG, | 1359 EXPECT_NO_SELECT_DIALOG, |
| 1345 ui_test_utils::BROWSER_TEST_NONE); | 1360 ui_test_utils::BROWSER_TEST_NONE); |
| 1346 | 1361 |
| 1347 // When the download finishes, the download shelf SHOULD NOT be visible in | 1362 // When the download finishes, the download shelf SHOULD NOT be visible in |
| 1348 // the first window. | 1363 // the first window. |
| 1349 ExpectWindowCountAfterDownload(2); | 1364 ExpectWindowCountAfterDownload(2); |
| 1350 EXPECT_EQ(1, browser()->tab_count()); | 1365 EXPECT_EQ(1, browser()->tab_count()); |
| 1351 // Except on Chrome OS, where the download window sticks around. | 1366 // Download shelf should close. Download panel stays open on ChromeOS. |
| 1352 CheckDownloadUIVisible(browser(), false, true); | 1367 CheckDownloadUI(browser(), false, true, file); |
| 1353 | 1368 |
| 1354 // The download shelf SHOULD be visible in the second window. | 1369 // The download shelf SHOULD be visible in the second window. |
| 1355 std::set<Browser*> original_browsers; | 1370 std::set<Browser*> original_browsers; |
| 1356 original_browsers.insert(browser()); | 1371 original_browsers.insert(browser()); |
| 1357 Browser* download_browser = | 1372 Browser* download_browser = |
| 1358 ui_test_utils::GetBrowserNotInSet(original_browsers); | 1373 ui_test_utils::GetBrowserNotInSet(original_browsers); |
| 1359 ASSERT_TRUE(download_browser != NULL); | 1374 ASSERT_TRUE(download_browser != NULL); |
| 1360 EXPECT_NE(download_browser, browser()); | 1375 EXPECT_NE(download_browser, browser()); |
| 1361 EXPECT_EQ(1, download_browser->tab_count()); | 1376 EXPECT_EQ(1, download_browser->tab_count()); |
| 1362 CheckDownloadUIVisible(download_browser, true, true); | 1377 CheckDownloadUI(download_browser, true, true, file); |
| 1363 | 1378 |
| 1364 #if !defined(OS_MACOSX) | 1379 #if !defined(OS_MACOSX) |
| 1365 // On Mac OS X, the UI window close is delayed until the outermost | 1380 // On Mac OS X, the UI window close is delayed until the outermost |
| 1366 // message loop runs. So it isn't possible to get a BROWSER_CLOSED | 1381 // message loop runs. So it isn't possible to get a BROWSER_CLOSED |
| 1367 // notification inside of a test. | 1382 // notification inside of a test. |
| 1368 ui_test_utils::WindowedNotificationObserver signal( | 1383 ui_test_utils::WindowedNotificationObserver signal( |
| 1369 NotificationType::BROWSER_CLOSED, | 1384 NotificationType::BROWSER_CLOSED, |
| 1370 Source<Browser>(download_browser)); | 1385 Source<Browser>(download_browser)); |
| 1371 #endif | 1386 #endif |
| 1372 | 1387 |
| 1373 // Close the new window. | 1388 // Close the new window. |
| 1374 download_browser->CloseWindow(); | 1389 download_browser->CloseWindow(); |
| 1375 | 1390 |
| 1376 #if !defined(OS_MACOSX) | 1391 #if !defined(OS_MACOSX) |
| 1377 signal.Wait(); | 1392 signal.Wait(); |
| 1378 EXPECT_EQ(first_browser, browser()); | 1393 EXPECT_EQ(first_browser, browser()); |
| 1379 ExpectWindowCountAfterDownload(1); | 1394 ExpectWindowCountAfterDownload(1); |
| 1380 #endif | 1395 #endif |
| 1381 | 1396 |
| 1382 EXPECT_EQ(1, browser()->tab_count()); | 1397 EXPECT_EQ(1, browser()->tab_count()); |
| 1383 // On ChromeOS, the popup sticks around. | 1398 // Download shelf should close. Download panel stays open on ChromeOS. |
| 1384 CheckDownloadUIVisible(browser(), false, true); | 1399 CheckDownloadUI(browser(), false, true, file); |
| 1385 | 1400 |
| 1386 CheckDownload(browser(), file, file); | 1401 CheckDownload(browser(), file, file); |
| 1387 } | 1402 } |
| 1388 | 1403 |
| 1389 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadCancelled) { | 1404 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadCancelled) { |
| 1390 ASSERT_TRUE(InitialSetup(false)); | 1405 ASSERT_TRUE(InitialSetup(false)); |
| 1391 EXPECT_EQ(1, browser()->tab_count()); | 1406 EXPECT_EQ(1, browser()->tab_count()); |
| 1392 | 1407 |
| 1393 // TODO(rdsmith): Fragile code warning! The code below relies on the | 1408 // TODO(rdsmith): Fragile code warning! The code below relies on the |
| 1394 // DownloadsObserver only finishing when the new download has reached | 1409 // DownloadsObserver only finishing when the new download has reached |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 1412 CreateInProgressWaiter(browser(), 1)); | 1427 CreateInProgressWaiter(browser(), 1)); |
| 1413 ui_test_utils::NavigateToURL( | 1428 ui_test_utils::NavigateToURL( |
| 1414 browser(), GURL(URLRequestSlowDownloadJob::kUnknownSizeUrl)); | 1429 browser(), GURL(URLRequestSlowDownloadJob::kUnknownSizeUrl)); |
| 1415 observer->WaitForFinished(); | 1430 observer->WaitForFinished(); |
| 1416 | 1431 |
| 1417 std::vector<DownloadItem*> downloads; | 1432 std::vector<DownloadItem*> downloads; |
| 1418 browser()->profile()->GetDownloadManager()->SearchDownloads( | 1433 browser()->profile()->GetDownloadManager()->SearchDownloads( |
| 1419 string16(), &downloads); | 1434 string16(), &downloads); |
| 1420 ASSERT_EQ(1u, downloads.size()); | 1435 ASSERT_EQ(1u, downloads.size()); |
| 1421 ASSERT_EQ(DownloadItem::IN_PROGRESS, downloads[0]->state()); | 1436 ASSERT_EQ(DownloadItem::IN_PROGRESS, downloads[0]->state()); |
| 1422 CheckDownloadUIVisible(browser(), true, true); | 1437 CheckDownloadUI(browser(), true, true, FilePath()); |
| 1423 | 1438 |
| 1424 // Cancel the download and wait for download system quiesce. | 1439 // Cancel the download and wait for download system quiesce. |
| 1425 downloads[0]->Delete(DownloadItem::DELETE_DUE_TO_USER_DISCARD); | 1440 downloads[0]->Delete(DownloadItem::DELETE_DUE_TO_USER_DISCARD); |
| 1426 scoped_refptr<DownloadsFlushObserver> flush_observer( | 1441 scoped_refptr<DownloadsFlushObserver> flush_observer( |
| 1427 new DownloadsFlushObserver(browser()->profile()->GetDownloadManager())); | 1442 new DownloadsFlushObserver(browser()->profile()->GetDownloadManager())); |
| 1428 flush_observer->WaitForFlush(); | 1443 flush_observer->WaitForFlush(); |
| 1429 | 1444 |
| 1430 // Get the important info from other threads and check it. | 1445 // Get the important info from other threads and check it. |
| 1431 scoped_refptr<CancelTestDataCollector> info(new CancelTestDataCollector()); | 1446 scoped_refptr<CancelTestDataCollector> info(new CancelTestDataCollector()); |
| 1432 info->WaitForDataCollected(); | 1447 info->WaitForDataCollected(); |
| 1433 EXPECT_EQ(0, info->rdh_pending_requests()); | 1448 EXPECT_EQ(0, info->rdh_pending_requests()); |
| 1434 EXPECT_EQ(0, info->dfm_pending_downloads()); | 1449 EXPECT_EQ(0, info->dfm_pending_downloads()); |
| 1435 | 1450 |
| 1436 // Using "DownloadItem::Remove" follows the discard dangerous download path, | 1451 // Using "DownloadItem::Remove" follows the discard dangerous download path, |
| 1437 // which completely removes the browser from the shelf and closes the shelf | 1452 // which completely removes the browser from the shelf and closes the shelf |
| 1438 // if it was there. Chrome OS is an exception to this, where if we | 1453 // if it was there. Download panel stays open on ChromeOS. |
| 1439 // bring up the downloads panel, it stays there. | 1454 CheckDownloadUI(browser(), false, true, FilePath()); |
| 1440 CheckDownloadUIVisible(browser(), false, true); | |
| 1441 } | 1455 } |
| 1442 | 1456 |
| 1443 // Confirm a download makes it into the history properly. | 1457 // Confirm a download makes it into the history properly. |
| 1444 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadHistoryCheck) { | 1458 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadHistoryCheck) { |
| 1445 ASSERT_TRUE(InitialSetup(false)); | 1459 ASSERT_TRUE(InitialSetup(false)); |
| 1446 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 1460 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 1447 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 1461 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 1448 FilePath origin_file(OriginFile(file)); | 1462 FilePath origin_file(OriginFile(file)); |
| 1449 int64 origin_size; | 1463 int64 origin_size; |
| 1450 file_util::GetFileSize(origin_file, &origin_size); | 1464 file_util::GetFileSize(origin_file, &origin_size); |
| 1451 | 1465 |
| 1452 // Download the file and wait. We do not expect the Select File dialog. | 1466 // Download the file and wait. We do not expect the Select File dialog. |
| 1453 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); | 1467 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); |
| 1454 | 1468 |
| 1455 // Get details of what downloads have just happened. | 1469 // Get details of what downloads have just happened. |
| 1456 std::vector<DownloadItem*> downloads; | 1470 std::vector<DownloadItem*> downloads; |
| 1457 GetDownloads(browser(), &downloads); | 1471 GetDownloads(browser(), &downloads); |
| 1458 ASSERT_EQ(1u, downloads.size()); | 1472 ASSERT_EQ(1u, downloads.size()); |
| 1459 int64 db_handle = downloads[0]->db_handle(); | 1473 int64 db_handle = downloads[0]->db_handle(); |
| 1460 | 1474 |
| 1461 // Check state. | 1475 // Check state. |
| 1462 EXPECT_EQ(1, browser()->tab_count()); | 1476 EXPECT_EQ(1, browser()->tab_count()); |
| 1463 CheckDownload(browser(), file, file); | 1477 CheckDownload(browser(), file, file); |
| 1464 CheckDownloadUIVisible(browser(), true, true); | 1478 CheckDownloadUI(browser(), true, true, file); |
| 1465 | 1479 |
| 1466 // Check history results. | 1480 // Check history results. |
| 1467 DownloadsHistoryDataCollector history_collector( | 1481 DownloadsHistoryDataCollector history_collector( |
| 1468 db_handle, | 1482 db_handle, |
| 1469 browser()->profile()->GetDownloadManager()); | 1483 browser()->profile()->GetDownloadManager()); |
| 1470 DownloadHistoryInfo info; | 1484 DownloadHistoryInfo info; |
| 1471 EXPECT_TRUE(history_collector.GetDownloadsHistoryEntry(&info)) << db_handle; | 1485 EXPECT_TRUE(history_collector.GetDownloadsHistoryEntry(&info)) << db_handle; |
| 1472 EXPECT_EQ(file, info.path.BaseName()); | 1486 EXPECT_EQ(file, info.path.BaseName()); |
| 1473 EXPECT_EQ(url, info.url); | 1487 EXPECT_EQ(url, info.url); |
| 1474 // Ignore start_time. | 1488 // Ignore start_time. |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1552 std::vector<DownloadItem*> downloads; | 1566 std::vector<DownloadItem*> downloads; |
| 1553 browser()->profile()->GetDownloadManager()->SearchDownloads( | 1567 browser()->profile()->GetDownloadManager()->SearchDownloads( |
| 1554 string16(), &downloads); | 1568 string16(), &downloads); |
| 1555 ASSERT_EQ(1u, downloads.size()); | 1569 ASSERT_EQ(1u, downloads.size()); |
| 1556 EXPECT_EQ(DownloadItem::COMPLETE, downloads[0]->state()); | 1570 EXPECT_EQ(DownloadItem::COMPLETE, downloads[0]->state()); |
| 1557 EXPECT_TRUE(downloads[0]->opened()); | 1571 EXPECT_TRUE(downloads[0]->opened()); |
| 1558 | 1572 |
| 1559 // As long as we're here, confirmed everything else is good. | 1573 // As long as we're here, confirmed everything else is good. |
| 1560 EXPECT_EQ(1, browser()->tab_count()); | 1574 EXPECT_EQ(1, browser()->tab_count()); |
| 1561 CheckDownload(browser(), file, file); | 1575 CheckDownload(browser(), file, file); |
| 1562 // Dissapears on most UIs, but the download panel sticks around for | 1576 // Download shelf should close. Download panel stays open on ChromeOS. |
| 1563 // chrome os. | 1577 CheckDownloadUI(browser(), false, true, file); |
| 1564 CheckDownloadUIVisible(browser(), false, true); | |
| 1565 } | 1578 } |
| 1566 | 1579 |
| 1567 // Download an extension. Expect a dangerous download warning. | 1580 // Download an extension. Expect a dangerous download warning. |
| 1568 // Deny the download. | 1581 // Deny the download. |
| 1569 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxDenyInstall) { | 1582 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxDenyInstall) { |
| 1570 ASSERT_TRUE(InitialSetup(false)); | 1583 ASSERT_TRUE(InitialSetup(false)); |
| 1571 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath)); | 1584 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath)); |
| 1572 | 1585 |
| 1573 scoped_ptr<DownloadsObserver> observer( | 1586 scoped_ptr<DownloadsObserver> observer( |
| 1574 DangerousInstallWaiter(browser(), | 1587 DangerousInstallWaiter(browser(), |
| 1575 1, | 1588 1, |
| 1576 DownloadItem::CANCELLED, | 1589 DownloadItem::CANCELLED, |
| 1577 ON_DANGEROUS_DOWNLOAD_DENY)); | 1590 ON_DANGEROUS_DOWNLOAD_DENY)); |
| 1578 ui_test_utils::NavigateToURL(browser(), extension_url); | 1591 ui_test_utils::NavigateToURL(browser(), extension_url); |
| 1579 | 1592 |
| 1580 observer->WaitForFinished(); | 1593 observer->WaitForFinished(); |
| 1581 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); | 1594 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); |
| 1582 | 1595 |
| 1583 CheckDownloadUIVisible(browser(), false, true); | 1596 // Download shelf should close. Download panel stays open on ChromeOS. |
| 1597 CheckDownloadUI(browser(), false, true, FilePath()); | |
| 1584 | 1598 |
| 1585 // Check that the CRX is not installed. | 1599 // Check that the CRX is not installed. |
| 1586 ExtensionService* extension_service = | 1600 ExtensionService* extension_service = |
| 1587 browser()->profile()->GetExtensionService(); | 1601 browser()->profile()->GetExtensionService(); |
| 1588 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false)); | 1602 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false)); |
| 1589 } | 1603 } |
| 1590 | 1604 |
| 1591 // Download an extension. Expect a dangerous download warning. | 1605 // Download an extension. Expect a dangerous download warning. |
| 1592 // Allow the download, deny the install. | 1606 // Allow the download, deny the install. |
| 1593 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInstallDenysPermissions) { | 1607 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInstallDenysPermissions) { |
| 1594 ASSERT_TRUE(InitialSetup(false)); | 1608 ASSERT_TRUE(InitialSetup(false)); |
| 1595 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath)); | 1609 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath)); |
| 1596 | 1610 |
| 1597 // Install a mock install UI that simulates a user denying permission to | 1611 // Install a mock install UI that simulates a user denying permission to |
| 1598 // finish the install. | 1612 // finish the install. |
| 1599 download_crx_util::SetMockInstallUIForTesting( | 1613 download_crx_util::SetMockInstallUIForTesting( |
| 1600 new MockAbortExtensionInstallUI()); | 1614 new MockAbortExtensionInstallUI()); |
| 1601 | 1615 |
| 1602 scoped_ptr<DownloadsObserver> observer( | 1616 scoped_ptr<DownloadsObserver> observer( |
| 1603 DangerousInstallWaiter(browser(), | 1617 DangerousInstallWaiter(browser(), |
| 1604 1, | 1618 1, |
| 1605 DownloadItem::COMPLETE, | 1619 DownloadItem::COMPLETE, |
| 1606 ON_DANGEROUS_DOWNLOAD_ACCEPT)); | 1620 ON_DANGEROUS_DOWNLOAD_ACCEPT)); |
| 1607 ui_test_utils::NavigateToURL(browser(), extension_url); | 1621 ui_test_utils::NavigateToURL(browser(), extension_url); |
| 1608 | 1622 |
| 1609 observer->WaitForFinished(); | 1623 observer->WaitForFinished(); |
| 1610 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); | 1624 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); |
| 1611 | 1625 |
| 1612 // DL Shelf should close. Download panel sticks around on ChromeOS. | 1626 // Download shelf should close. Download panel stays open on ChromeOS. |
| 1613 CheckDownloadUIVisible(browser(), false, true); | 1627 CheckDownloadUI(browser(), false, true, FilePath()); |
| 1614 | 1628 |
| 1615 // Check that the extension was not installed. | 1629 // Check that the extension was not installed. |
| 1616 ExtensionService* extension_service = | 1630 ExtensionService* extension_service = |
| 1617 browser()->profile()->GetExtensionService(); | 1631 browser()->profile()->GetExtensionService(); |
| 1618 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false)); | 1632 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false)); |
| 1619 } | 1633 } |
| 1620 | 1634 |
| 1621 // Download an extension. Expect a dangerous download warning. | 1635 // Download an extension. Expect a dangerous download warning. |
| 1622 // Allow the download, and the install. | 1636 // Allow the download, and the install. |
| 1623 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInstallAcceptPermissions) { | 1637 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInstallAcceptPermissions) { |
| 1624 ASSERT_TRUE(InitialSetup(false)); | 1638 ASSERT_TRUE(InitialSetup(false)); |
| 1625 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath)); | 1639 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath)); |
| 1626 | 1640 |
| 1627 // Install a mock install UI that simulates a user allowing permission to | 1641 // Install a mock install UI that simulates a user allowing permission to |
| 1628 // finish the install. | 1642 // finish the install. |
| 1629 download_crx_util::SetMockInstallUIForTesting( | 1643 download_crx_util::SetMockInstallUIForTesting( |
| 1630 new MockAutoConfirmExtensionInstallUI(browser()->profile())); | 1644 new MockAutoConfirmExtensionInstallUI(browser()->profile())); |
| 1631 | 1645 |
| 1632 scoped_ptr<DownloadsObserver> observer( | 1646 scoped_ptr<DownloadsObserver> observer( |
| 1633 DangerousInstallWaiter(browser(), | 1647 DangerousInstallWaiter(browser(), |
| 1634 1, | 1648 1, |
| 1635 DownloadItem::COMPLETE, | 1649 DownloadItem::COMPLETE, |
| 1636 ON_DANGEROUS_DOWNLOAD_ACCEPT)); | 1650 ON_DANGEROUS_DOWNLOAD_ACCEPT)); |
| 1637 ui_test_utils::NavigateToURL(browser(), extension_url); | 1651 ui_test_utils::NavigateToURL(browser(), extension_url); |
| 1638 | 1652 |
| 1639 observer->WaitForFinished(); | 1653 observer->WaitForFinished(); |
| 1640 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); | 1654 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); |
| 1641 | 1655 |
| 1642 // DL Shelf should close. Download panel sticks around on ChromeOS. | 1656 // Download shelf should close. Download panel stays open on ChromeOS. |
| 1643 CheckDownloadUIVisible(browser(), false, true); | 1657 CheckDownloadUI(browser(), false, true, FilePath()); |
| 1644 | 1658 |
| 1645 // Check that the extension was installed. | 1659 // Check that the extension was installed. |
| 1646 ExtensionService* extension_service = | 1660 ExtensionService* extension_service = |
| 1647 browser()->profile()->GetExtensionService(); | 1661 browser()->profile()->GetExtensionService(); |
| 1648 ASSERT_TRUE(extension_service->GetExtensionById(kGoodCrxId, false)); | 1662 ASSERT_TRUE(extension_service->GetExtensionById(kGoodCrxId, false)); |
| 1649 } | 1663 } |
| 1650 | 1664 |
| 1651 // Test installing a CRX that fails integrity checks. | 1665 // Test installing a CRX that fails integrity checks. |
| 1652 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInvalid) { | 1666 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInvalid) { |
| 1653 ASSERT_TRUE(InitialSetup(false)); | 1667 ASSERT_TRUE(InitialSetup(false)); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1688 scoped_ptr<DownloadsObserver> observer( | 1702 scoped_ptr<DownloadsObserver> observer( |
| 1689 DangerousInstallWaiter(browser(), | 1703 DangerousInstallWaiter(browser(), |
| 1690 1, | 1704 1, |
| 1691 DownloadItem::COMPLETE, | 1705 DownloadItem::COMPLETE, |
| 1692 ON_DANGEROUS_DOWNLOAD_ACCEPT)); | 1706 ON_DANGEROUS_DOWNLOAD_ACCEPT)); |
| 1693 ui_test_utils::NavigateToURL(browser(), extension_url); | 1707 ui_test_utils::NavigateToURL(browser(), extension_url); |
| 1694 | 1708 |
| 1695 observer->WaitForFinished(); | 1709 observer->WaitForFinished(); |
| 1696 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); | 1710 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); |
| 1697 | 1711 |
| 1698 // DL Shelf should close. Download panel sticks around on ChromeOS. | 1712 // Download shelf should close. Download panel stays open on ChromeOS. |
| 1699 CheckDownloadUIVisible(browser(), false, true); | 1713 CheckDownloadUI(browser(), false, true, FilePath()); |
| 1700 | 1714 |
| 1701 // Check that the extension was installed. | 1715 // Check that the extension was installed. |
| 1702 ExtensionService* extension_service = | 1716 ExtensionService* extension_service = |
| 1703 browser()->profile()->GetExtensionService(); | 1717 browser()->profile()->GetExtensionService(); |
| 1704 ASSERT_TRUE(extension_service->GetExtensionById(kLargeThemeCrxId, false)); | 1718 ASSERT_TRUE(extension_service->GetExtensionById(kLargeThemeCrxId, false)); |
| 1705 } | 1719 } |
| OLD | NEW |