| 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
| 10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 prefs::kDownloadDefaultDirectory, save_dir_.path()); | 294 prefs::kDownloadDefaultDirectory, save_dir_.path()); |
| 295 browser()->profile()->GetPrefs()->SetFilePath( | 295 browser()->profile()->GetPrefs()->SetFilePath( |
| 296 prefs::kSaveFileDefaultDirectory, save_dir_.path()); | 296 prefs::kSaveFileDefaultDirectory, save_dir_.path()); |
| 297 BrowserThread::PostTask( | 297 BrowserThread::PostTask( |
| 298 BrowserThread::IO, FROM_HERE, | 298 BrowserThread::IO, FROM_HERE, |
| 299 base::Bind(&chrome_browser_net::SetUrlRequestMocksEnabled, true)); | 299 base::Bind(&chrome_browser_net::SetUrlRequestMocksEnabled, true)); |
| 300 } | 300 } |
| 301 | 301 |
| 302 GURL NavigateToMockURL(const std::string& prefix) { | 302 GURL NavigateToMockURL(const std::string& prefix) { |
| 303 GURL url = URLRequestMockHTTPJob::GetMockUrl( | 303 GURL url = URLRequestMockHTTPJob::GetMockUrl( |
| 304 base::FilePath(kTestDir).AppendASCII(prefix + ".htm")); | 304 "save_page/" + prefix + ".htm"); |
| 305 ui_test_utils::NavigateToURL(browser(), url); | 305 ui_test_utils::NavigateToURL(browser(), url); |
| 306 return url; | 306 return url; |
| 307 } | 307 } |
| 308 | 308 |
| 309 // Returns full paths of destination file and directory. | 309 // Returns full paths of destination file and directory. |
| 310 void GetDestinationPaths(const std::string& prefix, | 310 void GetDestinationPaths(const std::string& prefix, |
| 311 base::FilePath* full_file_name, | 311 base::FilePath* full_file_name, |
| 312 base::FilePath* dir) { | 312 base::FilePath* dir) { |
| 313 *full_file_name = save_dir_.path().AppendASCII(prefix + ".htm"); | 313 *full_file_name = save_dir_.path().AppendASCII(prefix + ".htm"); |
| 314 *dir = save_dir_.path().AppendASCII(prefix + "_files"); | 314 *dir = save_dir_.path().AppendASCII(prefix + "_files"); |
| 315 } | 315 } |
| 316 | 316 |
| 317 WebContents* GetCurrentTab(Browser* browser) const { | 317 WebContents* GetCurrentTab(Browser* browser) const { |
| 318 WebContents* current_tab = | 318 WebContents* current_tab = |
| 319 browser->tab_strip_model()->GetActiveWebContents(); | 319 browser->tab_strip_model()->GetActiveWebContents(); |
| 320 EXPECT_TRUE(current_tab); | 320 EXPECT_TRUE(current_tab); |
| 321 return current_tab; | 321 return current_tab; |
| 322 } | 322 } |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 503 EXPECT_FALSE(base::PathExists(dir)); | 503 EXPECT_FALSE(base::PathExists(dir)); |
| 504 } | 504 } |
| 505 | 505 |
| 506 // Disabled on Windows due to flakiness. http://crbug.com/162323 | 506 // Disabled on Windows due to flakiness. http://crbug.com/162323 |
| 507 #if defined(OS_WIN) | 507 #if defined(OS_WIN) |
| 508 #define MAYBE_SaveViewSourceHTMLOnly DISABLED_SaveViewSourceHTMLOnly | 508 #define MAYBE_SaveViewSourceHTMLOnly DISABLED_SaveViewSourceHTMLOnly |
| 509 #else | 509 #else |
| 510 #define MAYBE_SaveViewSourceHTMLOnly SaveViewSourceHTMLOnly | 510 #define MAYBE_SaveViewSourceHTMLOnly SaveViewSourceHTMLOnly |
| 511 #endif | 511 #endif |
| 512 IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, MAYBE_SaveViewSourceHTMLOnly) { | 512 IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, MAYBE_SaveViewSourceHTMLOnly) { |
| 513 base::FilePath file_name(FILE_PATH_LITERAL("a.htm")); | 513 GURL mock_url = URLRequestMockHTTPJob::GetMockUrl("save_page/a.htm"); |
| 514 GURL mock_url = URLRequestMockHTTPJob::GetMockUrl( | |
| 515 base::FilePath(kTestDir).Append(file_name)); | |
| 516 GURL view_source_url = | 514 GURL view_source_url = |
| 517 GURL(content::kViewSourceScheme + std::string(":") + mock_url.spec()); | 515 GURL(content::kViewSourceScheme + std::string(":") + mock_url.spec()); |
| 518 GURL actual_page_url = URLRequestMockHTTPJob::GetMockUrl( | 516 GURL actual_page_url = URLRequestMockHTTPJob::GetMockUrl( |
| 519 base::FilePath(kTestDir).Append(file_name)); | 517 "save_page/a.htm"); |
| 520 ui_test_utils::NavigateToURL(browser(), view_source_url); | 518 ui_test_utils::NavigateToURL(browser(), view_source_url); |
| 521 | 519 |
| 522 base::FilePath full_file_name, dir; | 520 base::FilePath full_file_name, dir; |
| 523 SaveCurrentTab(actual_page_url, content::SAVE_PAGE_TYPE_AS_ONLY_HTML, "a", 1, | 521 SaveCurrentTab(actual_page_url, content::SAVE_PAGE_TYPE_AS_ONLY_HTML, "a", 1, |
| 524 &dir, &full_file_name); | 522 &dir, &full_file_name); |
| 525 ASSERT_FALSE(HasFailure()); | 523 ASSERT_FALSE(HasFailure()); |
| 526 | 524 |
| 527 EXPECT_TRUE(base::PathExists(full_file_name)); | 525 EXPECT_TRUE(base::PathExists(full_file_name)); |
| 528 EXPECT_FALSE(base::PathExists(dir)); | 526 EXPECT_FALSE(base::PathExists(dir)); |
| 529 EXPECT_TRUE(base::ContentsEqual( | 527 EXPECT_TRUE(base::ContentsEqual( |
| 530 test_dir_.Append(base::FilePath(kTestDir)).Append(file_name), | 528 test_dir_.Append(base::FilePath(kTestDir)).AppendASCII("a.htm"), |
| 531 full_file_name)); | 529 full_file_name)); |
| 532 } | 530 } |
| 533 | 531 |
| 534 // Disabled on Windows due to flakiness. http://crbug.com/162323 | 532 // Disabled on Windows due to flakiness. http://crbug.com/162323 |
| 535 #if defined(OS_WIN) | 533 #if defined(OS_WIN) |
| 536 #define MAYBE_SaveCompleteHTML DISABLED_SaveCompleteHTML | 534 #define MAYBE_SaveCompleteHTML DISABLED_SaveCompleteHTML |
| 537 #else | 535 #else |
| 538 #define MAYBE_SaveCompleteHTML SaveCompleteHTML | 536 #define MAYBE_SaveCompleteHTML SaveCompleteHTML |
| 539 #endif | 537 #endif |
| 540 IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, DISABLED_SaveCompleteHTML) { | 538 IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, DISABLED_SaveCompleteHTML) { |
| (...skipping 29 matching lines...) Expand all Loading... |
| 570 MAYBE_SaveDuringInitialNavigationIncognito) { | 568 MAYBE_SaveDuringInitialNavigationIncognito) { |
| 571 // Open an Incognito window. | 569 // Open an Incognito window. |
| 572 Browser* incognito = CreateIncognitoBrowser(); // Waits. | 570 Browser* incognito = CreateIncognitoBrowser(); // Waits. |
| 573 ASSERT_TRUE(incognito); | 571 ASSERT_TRUE(incognito); |
| 574 | 572 |
| 575 // Create a download item creation waiter on that window. | 573 // Create a download item creation waiter on that window. |
| 576 DownloadItemCreatedObserver creation_observer( | 574 DownloadItemCreatedObserver creation_observer( |
| 577 BrowserContext::GetDownloadManager(incognito->profile())); | 575 BrowserContext::GetDownloadManager(incognito->profile())); |
| 578 | 576 |
| 579 // Navigate, unblocking with new tab. | 577 // Navigate, unblocking with new tab. |
| 580 GURL url = URLRequestMockHTTPJob::GetMockUrl( | 578 GURL url = URLRequestMockHTTPJob::GetMockUrl("save_page/b.htm"); |
| 581 base::FilePath(kTestDir).AppendASCII("b.htm")); | |
| 582 NavigateToURLWithDisposition(incognito, url, NEW_FOREGROUND_TAB, | 579 NavigateToURLWithDisposition(incognito, url, NEW_FOREGROUND_TAB, |
| 583 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); | 580 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); |
| 584 | 581 |
| 585 // Save the page before completion. | 582 // Save the page before completion. |
| 586 base::FilePath full_file_name, dir; | 583 base::FilePath full_file_name, dir; |
| 587 GetDestinationPaths("b", &full_file_name, &dir); | 584 GetDestinationPaths("b", &full_file_name, &dir); |
| 588 scoped_refptr<content::MessageLoopRunner> loop_runner( | 585 scoped_refptr<content::MessageLoopRunner> loop_runner( |
| 589 new content::MessageLoopRunner); | 586 new content::MessageLoopRunner); |
| 590 SavePackageFinishedObserver observer( | 587 SavePackageFinishedObserver observer( |
| 591 content::BrowserContext::GetDownloadManager(incognito->profile()), | 588 content::BrowserContext::GetDownloadManager(incognito->profile()), |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 677 EXPECT_FALSE(base::PathExists(dir)); | 674 EXPECT_FALSE(base::PathExists(dir)); |
| 678 EXPECT_TRUE(base::ContentsEqual(test_dir_.Append(base::FilePath( | 675 EXPECT_TRUE(base::ContentsEqual(test_dir_.Append(base::FilePath( |
| 679 kTestDir)).Append(FILE_PATH_LITERAL("a.htm")), full_file_name)); | 676 kTestDir)).Append(FILE_PATH_LITERAL("a.htm")), full_file_name)); |
| 680 } | 677 } |
| 681 | 678 |
| 682 // This tests that a webpage with the title "test.exe" is saved as | 679 // This tests that a webpage with the title "test.exe" is saved as |
| 683 // "test.exe.htm". | 680 // "test.exe.htm". |
| 684 // We probably don't care to handle this on Linux or Mac. | 681 // We probably don't care to handle this on Linux or Mac. |
| 685 #if defined(OS_WIN) | 682 #if defined(OS_WIN) |
| 686 IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, CleanFilenameFromPageTitle) { | 683 IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, CleanFilenameFromPageTitle) { |
| 687 const base::FilePath file_name(FILE_PATH_LITERAL("c.htm")); | |
| 688 base::FilePath download_dir = | 684 base::FilePath download_dir = |
| 689 DownloadPrefs::FromDownloadManager(GetDownloadManager())-> | 685 DownloadPrefs::FromDownloadManager(GetDownloadManager())-> |
| 690 DownloadPath(); | 686 DownloadPath(); |
| 691 base::FilePath full_file_name = | 687 base::FilePath full_file_name = |
| 692 download_dir.AppendASCII(std::string("test.exe") + kAppendedExtension); | 688 download_dir.AppendASCII(std::string("test.exe") + kAppendedExtension); |
| 693 base::FilePath dir = download_dir.AppendASCII("test.exe_files"); | 689 base::FilePath dir = download_dir.AppendASCII("test.exe_files"); |
| 694 | 690 |
| 695 EXPECT_FALSE(base::PathExists(full_file_name)); | 691 EXPECT_FALSE(base::PathExists(full_file_name)); |
| 696 GURL url = URLRequestMockHTTPJob::GetMockUrl( | 692 GURL url = URLRequestMockHTTPJob::GetMockUrl("save_page/c.htm"); |
| 697 base::FilePath(kTestDir).Append(file_name)); | |
| 698 ui_test_utils::NavigateToURL(browser(), url); | 693 ui_test_utils::NavigateToURL(browser(), url); |
| 699 | 694 |
| 700 SavePackageFilePicker::SetShouldPromptUser(false); | 695 SavePackageFilePicker::SetShouldPromptUser(false); |
| 701 scoped_refptr<content::MessageLoopRunner> loop_runner( | 696 scoped_refptr<content::MessageLoopRunner> loop_runner( |
| 702 new content::MessageLoopRunner); | 697 new content::MessageLoopRunner); |
| 703 SavePackageFinishedObserver observer( | 698 SavePackageFinishedObserver observer( |
| 704 content::BrowserContext::GetDownloadManager(browser()->profile()), | 699 content::BrowserContext::GetDownloadManager(browser()->profile()), |
| 705 loop_runner->QuitClosure()); | 700 loop_runner->QuitClosure()); |
| 706 chrome::SavePage(browser()); | 701 chrome::SavePage(browser()); |
| 707 loop_runner->Run(); | 702 loop_runner->Run(); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 773 std::string contents; | 768 std::string contents; |
| 774 EXPECT_TRUE(base::ReadFileToString(filename, &contents)); | 769 EXPECT_TRUE(base::ReadFileToString(filename, &contents)); |
| 775 EXPECT_EQ("foo", contents); | 770 EXPECT_EQ("foo", contents); |
| 776 } | 771 } |
| 777 | 772 |
| 778 // Test that we don't crash when the page contains an iframe that | 773 // Test that we don't crash when the page contains an iframe that |
| 779 // was handled as a download (http://crbug.com/42212). | 774 // was handled as a download (http://crbug.com/42212). |
| 780 // Flaky: https://crbug.com/537530. | 775 // Flaky: https://crbug.com/537530. |
| 781 IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, DISABLED_SaveDownloadableIFrame) { | 776 IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, DISABLED_SaveDownloadableIFrame) { |
| 782 GURL url = URLRequestMockHTTPJob::GetMockUrl( | 777 GURL url = URLRequestMockHTTPJob::GetMockUrl( |
| 783 base::FilePath(FILE_PATH_LITERAL("downloads")) | 778 "downloads/iframe-src-is-a-download.htm"); |
| 784 .AppendASCII("iframe-src-is-a-download.htm")); | |
| 785 ui_test_utils::NavigateToURL(browser(), url); | 779 ui_test_utils::NavigateToURL(browser(), url); |
| 786 | 780 |
| 787 // Wait for and then dismiss the non-save-page-as-related download item | 781 // Wait for and then dismiss the non-save-page-as-related download item |
| 788 // (the one associated with downloading of "thisdayinhistory.xls" file). | 782 // (the one associated with downloading of "thisdayinhistory.xls" file). |
| 789 VerifySavePackageExpectations(browser(), url); | 783 VerifySavePackageExpectations(browser(), url); |
| 790 GetDownloadManager()->RemoveAllDownloads(); | 784 GetDownloadManager()->RemoveAllDownloads(); |
| 791 | 785 |
| 792 base::FilePath full_file_name, dir; | 786 base::FilePath full_file_name, dir; |
| 793 SaveCurrentTab(url, content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML, | 787 SaveCurrentTab(url, content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML, |
| 794 "iframe-src-is-a-download", 2, &dir, &full_file_name); | 788 "iframe-src-is-a-download", 2, &dir, &full_file_name); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 866 ASSERT_TRUE(base::ReadFileToString(full_file_name, &main_contents)); | 860 ASSERT_TRUE(base::ReadFileToString(full_file_name, &main_contents)); |
| 867 EXPECT_THAT(main_contents, | 861 EXPECT_THAT(main_contents, |
| 868 HasSubstr("<iframe src=\"./iframes_files/a.html\"></iframe>")); | 862 HasSubstr("<iframe src=\"./iframes_files/a.html\"></iframe>")); |
| 869 EXPECT_THAT(main_contents, | 863 EXPECT_THAT(main_contents, |
| 870 HasSubstr("<iframe src=\"./iframes_files/b.html\"></iframe>")); | 864 HasSubstr("<iframe src=\"./iframes_files/b.html\"></iframe>")); |
| 871 EXPECT_THAT(main_contents, | 865 EXPECT_THAT(main_contents, |
| 872 HasSubstr("<img src=\"./iframes_files/1.png\">")); | 866 HasSubstr("<img src=\"./iframes_files/1.png\">")); |
| 873 } | 867 } |
| 874 | 868 |
| 875 } // namespace | 869 } // namespace |
| OLD | NEW |