OLD | NEW |
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 "chrome/browser/download/download_browsertest.h" | 5 #include "chrome/browser/download/download_browsertest.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <set> | 10 #include <set> |
(...skipping 13 matching lines...) Expand all Loading... |
24 #include "base/macros.h" | 24 #include "base/macros.h" |
25 #include "base/memory/ref_counted.h" | 25 #include "base/memory/ref_counted.h" |
26 #include "base/path_service.h" | 26 #include "base/path_service.h" |
27 #include "base/strings/string_number_conversions.h" | 27 #include "base/strings/string_number_conversions.h" |
28 #include "base/strings/string_split.h" | 28 #include "base/strings/string_split.h" |
29 #include "base/strings/string_util.h" | 29 #include "base/strings/string_util.h" |
30 #include "base/strings/stringprintf.h" | 30 #include "base/strings/stringprintf.h" |
31 #include "base/strings/utf_string_conversions.h" | 31 #include "base/strings/utf_string_conversions.h" |
32 #include "base/sys_info.h" | 32 #include "base/sys_info.h" |
33 #include "base/test/test_file_util.h" | 33 #include "base/test/test_file_util.h" |
| 34 #include "base/threading/thread_restrictions.h" |
34 #include "build/build_config.h" | 35 #include "build/build_config.h" |
35 #include "chrome/app/chrome_command_ids.h" | 36 #include "chrome/app/chrome_command_ids.h" |
36 #include "chrome/browser/browser_process.h" | 37 #include "chrome/browser/browser_process.h" |
37 #include "chrome/browser/chrome_notification_types.h" | 38 #include "chrome/browser/chrome_notification_types.h" |
38 #include "chrome/browser/download/chrome_download_manager_delegate.h" | 39 #include "chrome/browser/download/chrome_download_manager_delegate.h" |
39 #include "chrome/browser/download/download_commands.h" | 40 #include "chrome/browser/download/download_commands.h" |
40 #include "chrome/browser/download/download_crx_util.h" | 41 #include "chrome/browser/download/download_crx_util.h" |
41 #include "chrome/browser/download/download_history.h" | 42 #include "chrome/browser/download/download_history.h" |
42 #include "chrome/browser/download/download_item_model.h" | 43 #include "chrome/browser/download/download_item_model.h" |
43 #include "chrome/browser/download/download_prefs.h" | 44 #include "chrome/browser/download/download_prefs.h" |
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
496 } | 497 } |
497 | 498 |
498 // Must be called after browser creation. Creates a temporary | 499 // Must be called after browser creation. Creates a temporary |
499 // directory for downloads that is auto-deleted on destruction. | 500 // directory for downloads that is auto-deleted on destruction. |
500 // Returning false indicates a failure of the function, and should be asserted | 501 // Returning false indicates a failure of the function, and should be asserted |
501 // in the caller. | 502 // in the caller. |
502 bool CreateAndSetDownloadsDirectory(Browser* browser) { | 503 bool CreateAndSetDownloadsDirectory(Browser* browser) { |
503 if (!browser) | 504 if (!browser) |
504 return false; | 505 return false; |
505 | 506 |
| 507 base::ThreadRestrictions::ScopedAllowIO allow_io; |
506 if (!downloads_directory_.CreateUniqueTempDir()) | 508 if (!downloads_directory_.CreateUniqueTempDir()) |
507 return false; | 509 return false; |
508 | 510 |
509 browser->profile()->GetPrefs()->SetFilePath( | 511 browser->profile()->GetPrefs()->SetFilePath( |
510 prefs::kDownloadDefaultDirectory, downloads_directory_.GetPath()); | 512 prefs::kDownloadDefaultDirectory, downloads_directory_.GetPath()); |
511 browser->profile()->GetPrefs()->SetFilePath( | 513 browser->profile()->GetPrefs()->SetFilePath( |
512 prefs::kSaveFileDefaultDirectory, downloads_directory_.GetPath()); | 514 prefs::kSaveFileDefaultDirectory, downloads_directory_.GetPath()); |
513 | 515 |
514 return true; | 516 return true; |
515 } | 517 } |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
624 | 626 |
625 // Find the origin path (from which the data comes). | 627 // Find the origin path (from which the data comes). |
626 base::FilePath origin_file(OriginFile(origin_filename)); | 628 base::FilePath origin_file(OriginFile(origin_filename)); |
627 return CheckDownloadFullPaths(browser, downloaded_file, origin_file); | 629 return CheckDownloadFullPaths(browser, downloaded_file, origin_file); |
628 } | 630 } |
629 | 631 |
630 // A version of CheckDownload that allows complete path specification. | 632 // A version of CheckDownload that allows complete path specification. |
631 bool CheckDownloadFullPaths(Browser* browser, | 633 bool CheckDownloadFullPaths(Browser* browser, |
632 const base::FilePath& downloaded_file, | 634 const base::FilePath& downloaded_file, |
633 const base::FilePath& origin_file) { | 635 const base::FilePath& origin_file) { |
| 636 base::ThreadRestrictions::ScopedAllowIO allow_io; |
634 bool origin_file_exists = base::PathExists(origin_file); | 637 bool origin_file_exists = base::PathExists(origin_file); |
635 EXPECT_TRUE(origin_file_exists) << origin_file.value(); | 638 EXPECT_TRUE(origin_file_exists) << origin_file.value(); |
636 if (!origin_file_exists) | 639 if (!origin_file_exists) |
637 return false; | 640 return false; |
638 | 641 |
639 // Confirm the downloaded data file exists. | 642 // Confirm the downloaded data file exists. |
640 bool downloaded_file_exists = base::PathExists(downloaded_file); | 643 bool downloaded_file_exists = base::PathExists(downloaded_file); |
641 EXPECT_TRUE(downloaded_file_exists) << downloaded_file.value(); | 644 EXPECT_TRUE(downloaded_file_exists) << downloaded_file.value(); |
642 if (!downloaded_file_exists) | 645 if (!downloaded_file_exists) |
643 return false; | 646 return false; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
690 new_item = *iter; | 693 new_item = *iter; |
691 } | 694 } |
692 } | 695 } |
693 return new_item; | 696 return new_item; |
694 } | 697 } |
695 | 698 |
696 bool RunSizeTest(Browser* browser, | 699 bool RunSizeTest(Browser* browser, |
697 SizeTestType type, | 700 SizeTestType type, |
698 const std::string& partial_indication, | 701 const std::string& partial_indication, |
699 const std::string& total_indication) { | 702 const std::string& total_indication) { |
| 703 base::ThreadRestrictions::ScopedAllowIO allow_io; |
700 EXPECT_TRUE(type == SIZE_TEST_TYPE_UNKNOWN || type == SIZE_TEST_TYPE_KNOWN); | 704 EXPECT_TRUE(type == SIZE_TEST_TYPE_UNKNOWN || type == SIZE_TEST_TYPE_KNOWN); |
701 if (type != SIZE_TEST_TYPE_KNOWN && type != SIZE_TEST_TYPE_UNKNOWN) | 705 if (type != SIZE_TEST_TYPE_KNOWN && type != SIZE_TEST_TYPE_UNKNOWN) |
702 return false; | 706 return false; |
703 GURL url(type == SIZE_TEST_TYPE_KNOWN ? | 707 GURL url(type == SIZE_TEST_TYPE_KNOWN ? |
704 net::URLRequestSlowDownloadJob::kKnownSizeUrl : | 708 net::URLRequestSlowDownloadJob::kKnownSizeUrl : |
705 net::URLRequestSlowDownloadJob::kUnknownSizeUrl); | 709 net::URLRequestSlowDownloadJob::kUnknownSizeUrl); |
706 | 710 |
707 // TODO(ahendrickson) -- |expected_title_in_progress| and | 711 // TODO(ahendrickson) -- |expected_title_in_progress| and |
708 // |expected_title_finished| need to be checked. | 712 // |expected_title_finished| need to be checked. |
709 base::FilePath filename; | 713 base::FilePath filename; |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
785 return file_activity_observer_->TestAndResetDidShowFileChooser(); | 789 return file_activity_observer_->TestAndResetDidShowFileChooser(); |
786 } | 790 } |
787 | 791 |
788 // Checks that |path| is has |file_size| bytes, and matches the |value| | 792 // Checks that |path| is has |file_size| bytes, and matches the |value| |
789 // string. | 793 // string. |
790 bool VerifyFile(const base::FilePath& path, | 794 bool VerifyFile(const base::FilePath& path, |
791 const std::string& value, | 795 const std::string& value, |
792 const int64_t file_size) { | 796 const int64_t file_size) { |
793 std::string file_contents; | 797 std::string file_contents; |
794 | 798 |
| 799 base::ThreadRestrictions::ScopedAllowIO allow_io; |
795 bool read = base::ReadFileToString(path, &file_contents); | 800 bool read = base::ReadFileToString(path, &file_contents); |
796 EXPECT_TRUE(read) << "Failed reading file: " << path.value() << std::endl; | 801 EXPECT_TRUE(read) << "Failed reading file: " << path.value() << std::endl; |
797 if (!read) | 802 if (!read) |
798 return false; // Couldn't read the file. | 803 return false; // Couldn't read the file. |
799 | 804 |
800 // Note: we don't handle really large files (more than size_t can hold) | 805 // Note: we don't handle really large files (more than size_t can hold) |
801 // so we will fail in that case. | 806 // so we will fail in that case. |
802 size_t expected_size = static_cast<size_t>(file_size); | 807 size_t expected_size = static_cast<size_t>(file_size); |
803 | 808 |
804 // Check the size. | 809 // Check the size. |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
920 for (size_t d = 1; d < downloads_expected; ++d) { | 925 for (size_t d = 1; d < downloads_expected; ++d) { |
921 if (download_items[d]->GetStartTime() > item->GetStartTime()) | 926 if (download_items[d]->GetStartTime() > item->GetStartTime()) |
922 item = download_items[d]; | 927 item = download_items[d]; |
923 } | 928 } |
924 | 929 |
925 EXPECT_EQ(download_url, item->GetURL()); | 930 EXPECT_EQ(download_url, item->GetURL()); |
926 EXPECT_EQ(download_info.reason, item->GetLastReason()); | 931 EXPECT_EQ(download_info.reason, item->GetLastReason()); |
927 | 932 |
928 if (item->GetState() == content::DownloadItem::COMPLETE) { | 933 if (item->GetState() == content::DownloadItem::COMPLETE) { |
929 // Clean up the file, in case it ended up in the My Documents folder. | 934 // Clean up the file, in case it ended up in the My Documents folder. |
| 935 base::ThreadRestrictions::ScopedAllowIO allow_io; |
930 base::FilePath destination_folder = GetDownloadDirectory(browser()); | 936 base::FilePath destination_folder = GetDownloadDirectory(browser()); |
931 base::FilePath my_downloaded_file = item->GetTargetFilePath(); | 937 base::FilePath my_downloaded_file = item->GetTargetFilePath(); |
932 EXPECT_TRUE(base::PathExists(my_downloaded_file)); | 938 EXPECT_TRUE(base::PathExists(my_downloaded_file)); |
933 EXPECT_TRUE(base::DeleteFile(my_downloaded_file, false)); | 939 EXPECT_TRUE(base::DeleteFile(my_downloaded_file, false)); |
934 | 940 |
935 EXPECT_EQ(download_info.should_redirect_to_documents ? | 941 EXPECT_EQ(download_info.should_redirect_to_documents ? |
936 std::string::npos : | 942 std::string::npos : |
937 0u, | 943 0u, |
938 my_downloaded_file.value().find(destination_folder.value())); | 944 my_downloaded_file.value().find(destination_folder.value())); |
939 if (download_info.should_redirect_to_documents) { | 945 if (download_info.should_redirect_to_documents) { |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1193 GURL url(URLRequestMockHTTPJob::GetMockUrl(kDownloadTest1Path)); | 1199 GURL url(URLRequestMockHTTPJob::GetMockUrl(kDownloadTest1Path)); |
1194 | 1200 |
1195 // Download the file and wait. We do not expect the Select File dialog. | 1201 // Download the file and wait. We do not expect the Select File dialog. |
1196 DownloadAndWait(browser(), url); | 1202 DownloadAndWait(browser(), url); |
1197 | 1203 |
1198 // Check state. Special file state must be checked before CheckDownload, | 1204 // Check state. Special file state must be checked before CheckDownload, |
1199 // as CheckDownload will delete the output file. | 1205 // as CheckDownload will delete the output file. |
1200 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 1206 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
1201 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 1207 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
1202 base::FilePath downloaded_file(DestinationFile(browser(), file)); | 1208 base::FilePath downloaded_file(DestinationFile(browser(), file)); |
| 1209 base::ThreadRestrictions::ScopedAllowIO allow_io; |
1203 EXPECT_TRUE(content::IsFileQuarantined(downloaded_file, url, GURL())); | 1210 EXPECT_TRUE(content::IsFileQuarantined(downloaded_file, url, GURL())); |
1204 CheckDownload(browser(), file, file); | 1211 CheckDownload(browser(), file, file); |
1205 } | 1212 } |
1206 #endif | 1213 #endif |
1207 | 1214 |
1208 #if defined(OS_WIN) | 1215 #if defined(OS_WIN) |
1209 // A couple of Windows specific tests to make sure we respect OS specific | 1216 // A couple of Windows specific tests to make sure we respect OS specific |
1210 // restrictions on Mark-Of-The-Web can be applied. While Chrome doesn't directly | 1217 // restrictions on Mark-Of-The-Web can be applied. While Chrome doesn't directly |
1211 // apply these policies, Chrome still needs to make sure the correct APIs are | 1218 // apply these policies, Chrome still needs to make sure the correct APIs are |
1212 // invoked during the download process that result in the expected MOTW | 1219 // invoked during the download process that result in the expected MOTW |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1274 // did not initiate. | 1281 // did not initiate. |
1275 IN_PROC_BROWSER_TEST_F(DownloadTest, NoDownload) { | 1282 IN_PROC_BROWSER_TEST_F(DownloadTest, NoDownload) { |
1276 base::FilePath file(FILE_PATH_LITERAL("download-test2.html")); | 1283 base::FilePath file(FILE_PATH_LITERAL("download-test2.html")); |
1277 GURL url(URLRequestMockHTTPJob::GetMockUrl("download-test2.html")); | 1284 GURL url(URLRequestMockHTTPJob::GetMockUrl("download-test2.html")); |
1278 base::FilePath file_path(DestinationFile(browser(), file)); | 1285 base::FilePath file_path(DestinationFile(browser(), file)); |
1279 | 1286 |
1280 // Open a web page and wait. | 1287 // Open a web page and wait. |
1281 ui_test_utils::NavigateToURL(browser(), url); | 1288 ui_test_utils::NavigateToURL(browser(), url); |
1282 | 1289 |
1283 // Check that we did not download the web page. | 1290 // Check that we did not download the web page. |
| 1291 base::ThreadRestrictions::ScopedAllowIO allow_io; |
1284 EXPECT_FALSE(base::PathExists(file_path)); | 1292 EXPECT_FALSE(base::PathExists(file_path)); |
1285 | 1293 |
1286 // Check state. | 1294 // Check state. |
1287 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 1295 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
1288 EXPECT_TRUE(VerifyNoDownloads()); | 1296 EXPECT_TRUE(VerifyNoDownloads()); |
1289 } | 1297 } |
1290 | 1298 |
1291 // EmbeddedTestServer::HandleRequestCallback function that returns the relative | 1299 // EmbeddedTestServer::HandleRequestCallback function that returns the relative |
1292 // URL as the MIME type. | 1300 // URL as the MIME type. |
1293 // E.g.: | 1301 // E.g.: |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1373 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | 1381 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
1374 browser()->tab_strip_model()->GetActiveWebContents(), | 1382 browser()->tab_strip_model()->GetActiveWebContents(), |
1375 "window.domAutomationController.send(startDownload());", | 1383 "window.domAutomationController.send(startDownload());", |
1376 &download_attempted)); | 1384 &download_attempted)); |
1377 ASSERT_TRUE(download_attempted); | 1385 ASSERT_TRUE(download_attempted); |
1378 observer.Wait(); | 1386 observer.Wait(); |
1379 | 1387 |
1380 // Check that we did not download the file. | 1388 // Check that we did not download the file. |
1381 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 1389 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
1382 base::FilePath file_path(DestinationFile(browser(), file)); | 1390 base::FilePath file_path(DestinationFile(browser(), file)); |
| 1391 base::ThreadRestrictions::ScopedAllowIO allow_io; |
1383 EXPECT_FALSE(base::PathExists(file_path)); | 1392 EXPECT_FALSE(base::PathExists(file_path)); |
1384 | 1393 |
1385 // Check state. | 1394 // Check state. |
1386 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 1395 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
1387 | 1396 |
1388 // Verify that there's no pending download. The resource throttle | 1397 // Verify that there's no pending download. The resource throttle |
1389 // should have deleted it before it created a download item, so it | 1398 // should have deleted it before it created a download item, so it |
1390 // shouldn't be available as a cancelled download either. | 1399 // shouldn't be available as a cancelled download either. |
1391 EXPECT_TRUE(VerifyNoDownloads()); | 1400 EXPECT_TRUE(VerifyNoDownloads()); |
1392 } | 1401 } |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1471 // that the filename is deduplicated. The previous test tests for a specific | 1480 // that the filename is deduplicated. The previous test tests for a specific |
1472 // bug; this next test tests that filename deduplication happens independently | 1481 // bug; this next test tests that filename deduplication happens independently |
1473 // of DownloadManager/CDMD. | 1482 // of DownloadManager/CDMD. |
1474 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadTest_IncognitoRegular) { | 1483 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadTest_IncognitoRegular) { |
1475 GURL url = net::URLRequestMockHTTPJob::GetMockUrl("downloads/a_zip_file.zip"); | 1484 GURL url = net::URLRequestMockHTTPJob::GetMockUrl("downloads/a_zip_file.zip"); |
1476 | 1485 |
1477 // Read the origin file now so that we can compare the downloaded files to it | 1486 // Read the origin file now so that we can compare the downloaded files to it |
1478 // later. | 1487 // later. |
1479 base::FilePath origin(OriginFile(base::FilePath(FILE_PATH_LITERAL( | 1488 base::FilePath origin(OriginFile(base::FilePath(FILE_PATH_LITERAL( |
1480 "downloads/a_zip_file.zip")))); | 1489 "downloads/a_zip_file.zip")))); |
| 1490 base::ThreadRestrictions::ScopedAllowIO allow_io; |
1481 ASSERT_TRUE(base::PathExists(origin)); | 1491 ASSERT_TRUE(base::PathExists(origin)); |
1482 int64_t origin_file_size = 0; | 1492 int64_t origin_file_size = 0; |
1483 EXPECT_TRUE(base::GetFileSize(origin, &origin_file_size)); | 1493 EXPECT_TRUE(base::GetFileSize(origin, &origin_file_size)); |
1484 std::string original_contents; | 1494 std::string original_contents; |
1485 EXPECT_TRUE(base::ReadFileToString(origin, &original_contents)); | 1495 EXPECT_TRUE(base::ReadFileToString(origin, &original_contents)); |
1486 | 1496 |
1487 std::vector<DownloadItem*> download_items; | 1497 std::vector<DownloadItem*> download_items; |
1488 GetDownloads(browser(), &download_items); | 1498 GetDownloads(browser(), &download_items); |
1489 ASSERT_TRUE(download_items.empty()); | 1499 ASSERT_TRUE(download_items.empty()); |
1490 | 1500 |
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1975 std::unique_ptr<content::DownloadTestObserver> observer( | 1985 std::unique_ptr<content::DownloadTestObserver> observer( |
1976 CreateWaiter(browser(), 1)); | 1986 CreateWaiter(browser(), 1)); |
1977 ui_test_utils::NavigateToURL(browser(), url); | 1987 ui_test_utils::NavigateToURL(browser(), url); |
1978 observer->WaitForFinished(); | 1988 observer->WaitForFinished(); |
1979 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | 1989 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); |
1980 CheckDownloadStates(1, DownloadItem::COMPLETE); | 1990 CheckDownloadStates(1, DownloadItem::COMPLETE); |
1981 | 1991 |
1982 // Confirm the downloaded data exists. | 1992 // Confirm the downloaded data exists. |
1983 base::FilePath downloaded_file = GetDownloadDirectory(browser()); | 1993 base::FilePath downloaded_file = GetDownloadDirectory(browser()); |
1984 downloaded_file = downloaded_file.Append(FILE_PATH_LITERAL("a_red_dot.png")); | 1994 downloaded_file = downloaded_file.Append(FILE_PATH_LITERAL("a_red_dot.png")); |
| 1995 base::ThreadRestrictions::ScopedAllowIO allow_io; |
1985 EXPECT_TRUE(base::PathExists(downloaded_file)); | 1996 EXPECT_TRUE(base::PathExists(downloaded_file)); |
1986 } | 1997 } |
1987 | 1998 |
1988 // Test to make sure auto-open works. | 1999 // Test to make sure auto-open works. |
1989 IN_PROC_BROWSER_TEST_F(DownloadTest, AutoOpen) { | 2000 IN_PROC_BROWSER_TEST_F(DownloadTest, AutoOpen) { |
1990 base::FilePath file(FILE_PATH_LITERAL("download-autoopen.txt")); | 2001 base::FilePath file(FILE_PATH_LITERAL("download-autoopen.txt")); |
1991 GURL url(URLRequestMockHTTPJob::GetMockUrl("download-autoopen.txt")); | 2002 GURL url(URLRequestMockHTTPJob::GetMockUrl("download-autoopen.txt")); |
1992 | 2003 |
1993 ASSERT_TRUE( | 2004 ASSERT_TRUE( |
1994 GetDownloadPrefs(browser())->EnableAutoOpenBasedOnExtension(file)); | 2005 GetDownloadPrefs(browser())->EnableAutoOpenBasedOnExtension(file)); |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2197 ASSERT_TRUE(CheckDownload(browser(), file, file)); | 2208 ASSERT_TRUE(CheckDownload(browser(), file, file)); |
2198 } | 2209 } |
2199 | 2210 |
2200 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrlToPath) { | 2211 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrlToPath) { |
2201 GURL url(URLRequestMockHTTPJob::GetMockUrl(kDownloadTest1Path)); | 2212 GURL url(URLRequestMockHTTPJob::GetMockUrl(kDownloadTest1Path)); |
2202 | 2213 |
2203 WebContents* web_contents = | 2214 WebContents* web_contents = |
2204 browser()->tab_strip_model()->GetActiveWebContents(); | 2215 browser()->tab_strip_model()->GetActiveWebContents(); |
2205 ASSERT_TRUE(web_contents); | 2216 ASSERT_TRUE(web_contents); |
2206 | 2217 |
| 2218 base::ThreadRestrictions::ScopedAllowIO allow_io; |
2207 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 2219 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
2208 base::ScopedTempDir other_directory; | 2220 base::ScopedTempDir other_directory; |
2209 ASSERT_TRUE(other_directory.CreateUniqueTempDir()); | 2221 ASSERT_TRUE(other_directory.CreateUniqueTempDir()); |
2210 base::FilePath target_file_full_path = | 2222 base::FilePath target_file_full_path = |
2211 other_directory.GetPath().Append(file.BaseName()); | 2223 other_directory.GetPath().Append(file.BaseName()); |
2212 content::DownloadTestObserver* observer(CreateWaiter(browser(), 1)); | 2224 content::DownloadTestObserver* observer(CreateWaiter(browser(), 1)); |
2213 std::unique_ptr<DownloadUrlParameters> params( | 2225 std::unique_ptr<DownloadUrlParameters> params( |
2214 DownloadUrlParameters::CreateForWebContentsMainFrame( | 2226 DownloadUrlParameters::CreateForWebContentsMainFrame( |
2215 web_contents, url)); | 2227 web_contents, url)); |
2216 params->set_file_path(target_file_full_path); | 2228 params->set_file_path(target_file_full_path); |
(...skipping 16 matching lines...) Expand all Loading... |
2233 downloads[0], base::Bind(&WasAutoOpened)).WaitForEvent(); | 2245 downloads[0], base::Bind(&WasAutoOpened)).WaitForEvent(); |
2234 } | 2246 } |
2235 | 2247 |
2236 IN_PROC_BROWSER_TEST_F(DownloadTest, TransientDownload) { | 2248 IN_PROC_BROWSER_TEST_F(DownloadTest, TransientDownload) { |
2237 GURL url(URLRequestMockHTTPJob::GetMockUrl(kDownloadTest1Path)); | 2249 GURL url(URLRequestMockHTTPJob::GetMockUrl(kDownloadTest1Path)); |
2238 | 2250 |
2239 WebContents* web_contents = | 2251 WebContents* web_contents = |
2240 browser()->tab_strip_model()->GetActiveWebContents(); | 2252 browser()->tab_strip_model()->GetActiveWebContents(); |
2241 ASSERT_TRUE(web_contents); | 2253 ASSERT_TRUE(web_contents); |
2242 | 2254 |
| 2255 base::ThreadRestrictions::ScopedAllowIO allow_io; |
2243 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 2256 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
2244 base::ScopedTempDir other_directory; | 2257 base::ScopedTempDir other_directory; |
2245 ASSERT_TRUE(other_directory.CreateUniqueTempDir()); | 2258 ASSERT_TRUE(other_directory.CreateUniqueTempDir()); |
2246 base::FilePath target_file_full_path = | 2259 base::FilePath target_file_full_path = |
2247 other_directory.GetPath().Append(file.BaseName()); | 2260 other_directory.GetPath().Append(file.BaseName()); |
2248 content::DownloadTestObserver* observer(CreateWaiter(browser(), 1)); | 2261 content::DownloadTestObserver* observer(CreateWaiter(browser(), 1)); |
2249 std::unique_ptr<DownloadUrlParameters> params( | 2262 std::unique_ptr<DownloadUrlParameters> params( |
2250 DownloadUrlParameters::CreateForWebContentsMainFrame(web_contents, url)); | 2263 DownloadUrlParameters::CreateForWebContentsMainFrame(web_contents, url)); |
2251 params->set_file_path(target_file_full_path); | 2264 params->set_file_path(target_file_full_path); |
2252 params->set_transient(true); | 2265 params->set_transient(true); |
(...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2924 browser()->tab_strip_model()->GetActiveWebContents()->Close(); | 2937 browser()->tab_strip_model()->GetActiveWebContents()->Close(); |
2925 g_browser_process->notification_ui_manager()->CancelAll(); | 2938 g_browser_process->notification_ui_manager()->CancelAll(); |
2926 } | 2939 } |
2927 #endif | 2940 #endif |
2928 | 2941 |
2929 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadTest_Renaming) { | 2942 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadTest_Renaming) { |
2930 GURL url = net::URLRequestMockHTTPJob::GetMockUrl("downloads/a_zip_file.zip"); | 2943 GURL url = net::URLRequestMockHTTPJob::GetMockUrl("downloads/a_zip_file.zip"); |
2931 content::DownloadManager* manager = DownloadManagerForBrowser(browser()); | 2944 content::DownloadManager* manager = DownloadManagerForBrowser(browser()); |
2932 base::FilePath origin_file(OriginFile(base::FilePath(FILE_PATH_LITERAL( | 2945 base::FilePath origin_file(OriginFile(base::FilePath(FILE_PATH_LITERAL( |
2933 "downloads/a_zip_file.zip")))); | 2946 "downloads/a_zip_file.zip")))); |
| 2947 base::ThreadRestrictions::ScopedAllowIO allow_io; |
2934 ASSERT_TRUE(base::PathExists(origin_file)); | 2948 ASSERT_TRUE(base::PathExists(origin_file)); |
2935 std::string origin_contents; | 2949 std::string origin_contents; |
2936 ASSERT_TRUE(base::ReadFileToString(origin_file, &origin_contents)); | 2950 ASSERT_TRUE(base::ReadFileToString(origin_file, &origin_contents)); |
2937 | 2951 |
2938 // Download the same url several times and expect that all downloaded files | 2952 // Download the same url several times and expect that all downloaded files |
2939 // after the zero-th contain a deduplication counter. | 2953 // after the zero-th contain a deduplication counter. |
2940 for (int index = 0; index < 5; ++index) { | 2954 for (int index = 0; index < 5; ++index) { |
2941 DownloadAndWait(browser(), url); | 2955 DownloadAndWait(browser(), url); |
2942 content::DownloadItem* item = manager->GetDownload( | 2956 content::DownloadItem* item = manager->GetDownload( |
2943 content::DownloadItem::kInvalidId + 1 + index); | 2957 content::DownloadItem::kInvalidId + 1 + index); |
2944 ASSERT_TRUE(item); | 2958 ASSERT_TRUE(item); |
2945 ASSERT_EQ(DownloadItem::COMPLETE, item->GetState()); | 2959 ASSERT_EQ(DownloadItem::COMPLETE, item->GetState()); |
2946 base::FilePath target_path(item->GetTargetFilePath()); | 2960 base::FilePath target_path(item->GetTargetFilePath()); |
2947 EXPECT_EQ(std::string("a_zip_file") + | 2961 EXPECT_EQ(std::string("a_zip_file") + |
2948 (index == 0 ? std::string(".zip") : | 2962 (index == 0 ? std::string(".zip") : |
2949 base::StringPrintf(" (%d).zip", index)), | 2963 base::StringPrintf(" (%d).zip", index)), |
2950 target_path.BaseName().AsUTF8Unsafe()); | 2964 target_path.BaseName().AsUTF8Unsafe()); |
| 2965 base::ThreadRestrictions::ScopedAllowIO allow_io; |
2951 ASSERT_TRUE(base::PathExists(target_path)); | 2966 ASSERT_TRUE(base::PathExists(target_path)); |
2952 ASSERT_TRUE(VerifyFile(target_path, origin_contents, | 2967 ASSERT_TRUE(VerifyFile(target_path, origin_contents, |
2953 origin_contents.size())); | 2968 origin_contents.size())); |
2954 } | 2969 } |
2955 } | 2970 } |
2956 | 2971 |
2957 // Test that the entire download pipeline handles unicode correctly. | 2972 // Test that the entire download pipeline handles unicode correctly. |
2958 // Disabled on Windows due to flaky timeouts: crbug.com/446695 | 2973 // Disabled on Windows due to flaky timeouts: crbug.com/446695 |
2959 // Disabled on chromeos due to flaky crash: crbug.com/577332 | 2974 // Disabled on chromeos due to flaky crash: crbug.com/577332 |
2960 #if defined(OS_WIN) || defined(OS_CHROMEOS) | 2975 #if defined(OS_WIN) || defined(OS_CHROMEOS) |
(...skipping 19 matching lines...) Expand all Loading... |
2980 // korean | 2995 // korean |
2981 L"\u97d3-\u4e2d \uc815\uc0c1, \ucc9c\uc548\ud568 \uc758\uacac.zip", | 2996 L"\u97d3-\u4e2d \uc815\uc0c1, \ucc9c\uc548\ud568 \uc758\uacac.zip", |
2982 L"jiho....tiho...miho.zip", | 2997 L"jiho....tiho...miho.zip", |
2983 L"jiho!@#$tiho$%^&-()_+=miho copy.zip", // special chars | 2998 L"jiho!@#$tiho$%^&-()_+=miho copy.zip", // special chars |
2984 L"Wohoo-to hoo+I.zip", | 2999 L"Wohoo-to hoo+I.zip", |
2985 L"Picture 1.zip", | 3000 L"Picture 1.zip", |
2986 L"This is a very very long english sentence with spaces and , and +.zip", | 3001 L"This is a very very long english sentence with spaces and , and +.zip", |
2987 }; | 3002 }; |
2988 | 3003 |
2989 std::vector<DownloadItem*> download_items; | 3004 std::vector<DownloadItem*> download_items; |
| 3005 base::ThreadRestrictions::ScopedAllowIO allow_io; |
2990 base::FilePath origin_directory = | 3006 base::FilePath origin_directory = |
2991 GetDownloadDirectory(browser()).Append(FILE_PATH_LITERAL("origin")); | 3007 GetDownloadDirectory(browser()).Append(FILE_PATH_LITERAL("origin")); |
2992 ASSERT_TRUE(base::CreateDirectory(origin_directory)); | 3008 ASSERT_TRUE(base::CreateDirectory(origin_directory)); |
2993 | 3009 |
2994 for (size_t index = 0; index < arraysize(kCrazyFilenames); ++index) { | 3010 for (size_t index = 0; index < arraysize(kCrazyFilenames); ++index) { |
2995 SCOPED_TRACE(testing::Message() << "Index " << index); | 3011 SCOPED_TRACE(testing::Message() << "Index " << index); |
2996 base::string16 crazy16; | 3012 base::string16 crazy16; |
2997 std::string crazy8; | 3013 std::string crazy8; |
2998 const wchar_t* crazy_w = kCrazyFilenames[index]; | 3014 const wchar_t* crazy_w = kCrazyFilenames[index]; |
2999 ASSERT_TRUE(base::WideToUTF8(crazy_w, wcslen(crazy_w), &crazy8)); | 3015 ASSERT_TRUE(base::WideToUTF8(crazy_w, wcslen(crazy_w), &crazy8)); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3077 // Disable on mac: http://crbug.com/238831 | 3093 // Disable on mac: http://crbug.com/238831 |
3078 #define MAYBE_DownloadTest_PercentComplete DISABLED_DownloadTest_PercentComplete | 3094 #define MAYBE_DownloadTest_PercentComplete DISABLED_DownloadTest_PercentComplete |
3079 #else | 3095 #else |
3080 #define MAYBE_DownloadTest_PercentComplete DownloadTest_PercentComplete | 3096 #define MAYBE_DownloadTest_PercentComplete DownloadTest_PercentComplete |
3081 #endif | 3097 #endif |
3082 IN_PROC_BROWSER_TEST_F(DownloadTest, MAYBE_DownloadTest_PercentComplete) { | 3098 IN_PROC_BROWSER_TEST_F(DownloadTest, MAYBE_DownloadTest_PercentComplete) { |
3083 // Write a huge file. | 3099 // Write a huge file. |
3084 base::FilePath file_path( | 3100 base::FilePath file_path( |
3085 GetDownloadDirectory(browser()).AppendASCII("source").AppendASCII( | 3101 GetDownloadDirectory(browser()).AppendASCII("source").AppendASCII( |
3086 "DownloadTest_BigZip.zip")); | 3102 "DownloadTest_BigZip.zip")); |
3087 ASSERT_TRUE(CreateDirectory(file_path.DirName())); | |
3088 base::File file(file_path, base::File::FLAG_CREATE | base::File::FLAG_WRITE); | |
3089 ASSERT_TRUE(file.IsValid()); | |
3090 int64_t size = 1 << 25; | 3103 int64_t size = 1 << 25; |
3091 EXPECT_EQ(1, file.Write(size, "a", 1)); | 3104 { |
3092 file.Close(); | 3105 base::ThreadRestrictions::ScopedAllowIO allow_io; |
| 3106 ASSERT_TRUE(CreateDirectory(file_path.DirName())); |
| 3107 base::File file(file_path, |
| 3108 base::File::FLAG_CREATE | base::File::FLAG_WRITE); |
| 3109 ASSERT_TRUE(file.IsValid()); |
| 3110 EXPECT_EQ(1, file.Write(size, "a", 1)); |
| 3111 file.Close(); |
3093 | 3112 |
3094 #if defined(OS_POSIX) | 3113 #if defined(OS_POSIX) |
3095 // Make it readable by chronos on chromeos | 3114 // Make it readable by chronos on chromeos |
3096 base::SetPosixFilePermissions(file_path, 0755); | 3115 base::SetPosixFilePermissions(file_path, 0755); |
3097 #endif | 3116 #endif |
3098 | 3117 |
3099 // Ensure that we have enough disk space. | 3118 // Ensure that we have enough disk space. |
3100 int64_t free_space = | 3119 int64_t free_space = |
3101 base::SysInfo::AmountOfFreeDiskSpace(GetDownloadDirectory(browser())); | 3120 base::SysInfo::AmountOfFreeDiskSpace(GetDownloadDirectory(browser())); |
3102 ASSERT_LE(size, free_space) << "Not enough disk space to download. Got " | 3121 ASSERT_LE(size, free_space) |
3103 << free_space; | 3122 << "Not enough disk space to download. Got " << free_space; |
| 3123 } |
3104 GURL file_url(net::FilePathToFileURL(file_path)); | 3124 GURL file_url(net::FilePathToFileURL(file_path)); |
3105 std::unique_ptr<content::DownloadTestObserver> progress_waiter( | 3125 std::unique_ptr<content::DownloadTestObserver> progress_waiter( |
3106 CreateInProgressWaiter(browser(), 1)); | 3126 CreateInProgressWaiter(browser(), 1)); |
3107 | 3127 |
3108 // Start downloading a file, wait for it to be created. | 3128 // Start downloading a file, wait for it to be created. |
3109 ui_test_utils::NavigateToURLWithDisposition( | 3129 ui_test_utils::NavigateToURLWithDisposition( |
3110 browser(), file_url, WindowOpenDisposition::CURRENT_TAB, | 3130 browser(), file_url, WindowOpenDisposition::CURRENT_TAB, |
3111 ui_test_utils::BROWSER_TEST_NONE); | 3131 ui_test_utils::BROWSER_TEST_NONE); |
3112 progress_waiter->WaitForFinished(); | 3132 progress_waiter->WaitForFinished(); |
3113 EXPECT_EQ(1u, progress_waiter->NumDownloadsSeenInState( | 3133 EXPECT_EQ(1u, progress_waiter->NumDownloadsSeenInState( |
3114 DownloadItem::IN_PROGRESS)); | 3134 DownloadItem::IN_PROGRESS)); |
3115 std::vector<DownloadItem*> download_items; | 3135 std::vector<DownloadItem*> download_items; |
3116 GetDownloads(browser(), &download_items); | 3136 GetDownloads(browser(), &download_items); |
3117 ASSERT_EQ(1UL, download_items.size()); | 3137 ASSERT_EQ(1UL, download_items.size()); |
3118 | 3138 |
3119 // Wait for the download to complete, checking along the way that the | 3139 // Wait for the download to complete, checking along the way that the |
3120 // PercentComplete() never regresses. | 3140 // PercentComplete() never regresses. |
3121 PercentWaiter waiter(download_items[0]); | 3141 PercentWaiter waiter(download_items[0]); |
3122 EXPECT_TRUE(waiter.WaitForFinished()); | 3142 EXPECT_TRUE(waiter.WaitForFinished()); |
3123 EXPECT_EQ(DownloadItem::COMPLETE, download_items[0]->GetState()); | 3143 EXPECT_EQ(DownloadItem::COMPLETE, download_items[0]->GetState()); |
3124 ASSERT_EQ(100, download_items[0]->PercentComplete()); | 3144 ASSERT_EQ(100, download_items[0]->PercentComplete()); |
3125 | 3145 |
3126 // Check that the file downloaded correctly. | 3146 // Check that the file downloaded correctly. |
| 3147 base::ThreadRestrictions::ScopedAllowIO allow_io; |
3127 ASSERT_TRUE(base::PathExists(download_items[0]->GetTargetFilePath())); | 3148 ASSERT_TRUE(base::PathExists(download_items[0]->GetTargetFilePath())); |
3128 int64_t downloaded_size = 0; | 3149 int64_t downloaded_size = 0; |
3129 ASSERT_TRUE(base::GetFileSize( | 3150 ASSERT_TRUE(base::GetFileSize( |
3130 download_items[0]->GetTargetFilePath(), &downloaded_size)); | 3151 download_items[0]->GetTargetFilePath(), &downloaded_size)); |
3131 ASSERT_EQ(size + 1, downloaded_size); | 3152 ASSERT_EQ(size + 1, downloaded_size); |
3132 ASSERT_TRUE(base::DieFileDie(file_path, false)); | 3153 ASSERT_TRUE(base::DieFileDie(file_path, false)); |
3133 ASSERT_TRUE(base::DieFileDie(download_items[0]->GetTargetFilePath(), false)); | 3154 ASSERT_TRUE(base::DieFileDie(download_items[0]->GetTargetFilePath(), false)); |
3134 } | 3155 } |
3135 | 3156 |
3136 // A download that is interrupted due to a file error should be able to be | 3157 // A download that is interrupted due to a file error should be able to be |
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3527 | 3548 |
3528 // Begin feedback and check that file is still there. | 3549 // Begin feedback and check that file is still there. |
3529 download_protection_service->feedback_service()->BeginFeedbackForDownload( | 3550 download_protection_service->feedback_service()->BeginFeedbackForDownload( |
3530 downloads[0], DownloadCommands::KEEP); | 3551 downloads[0], DownloadCommands::KEEP); |
3531 completion_observer->WaitForFinished(); | 3552 completion_observer->WaitForFinished(); |
3532 | 3553 |
3533 std::vector<DownloadItem*> updated_downloads; | 3554 std::vector<DownloadItem*> updated_downloads; |
3534 GetDownloads(browser(), &updated_downloads); | 3555 GetDownloads(browser(), &updated_downloads); |
3535 ASSERT_EQ(std::size_t(1), updated_downloads.size()); | 3556 ASSERT_EQ(std::size_t(1), updated_downloads.size()); |
3536 ASSERT_FALSE(updated_downloads[0]->IsDangerous()); | 3557 ASSERT_FALSE(updated_downloads[0]->IsDangerous()); |
| 3558 base::ThreadRestrictions::ScopedAllowIO allow_io; |
3537 ASSERT_TRUE(PathExists(updated_downloads[0]->GetTargetFilePath())); | 3559 ASSERT_TRUE(PathExists(updated_downloads[0]->GetTargetFilePath())); |
3538 updated_downloads[0]->Cancel(true); | 3560 updated_downloads[0]->Cancel(true); |
3539 } | 3561 } |
3540 | 3562 |
3541 IN_PROC_BROWSER_TEST_F(DownloadTestWithFakeSafeBrowsing, | 3563 IN_PROC_BROWSER_TEST_F(DownloadTestWithFakeSafeBrowsing, |
3542 SendUncommonDownloadReportIfUserProceed) { | 3564 SendUncommonDownloadReportIfUserProceed) { |
3543 browser()->profile()->GetPrefs()->SetBoolean(prefs::kSafeBrowsingEnabled, | 3565 browser()->profile()->GetPrefs()->SetBoolean(prefs::kSafeBrowsingEnabled, |
3544 true); | 3566 true); |
3545 // Make a dangerous file. | 3567 // Make a dangerous file. |
3546 GURL download_url( | 3568 GURL download_url( |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3843 browser(), 1, | 3865 browser(), 1, |
3844 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_DENY)); | 3866 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_DENY)); |
3845 ui_test_utils::NavigateToURL(browser(), extension_url); | 3867 ui_test_utils::NavigateToURL(browser(), extension_url); |
3846 | 3868 |
3847 observer->WaitForFinished(); | 3869 observer->WaitForFinished(); |
3848 | 3870 |
3849 // Download shelf should close. | 3871 // Download shelf should close. |
3850 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); | 3872 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); |
3851 } | 3873 } |
3852 #endif // defined(OS_CHROMEOS) | 3874 #endif // defined(OS_CHROMEOS) |
OLD | NEW |