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 29 matching lines...) Expand all Loading... |
40 #include "content/public/browser/notification_service.h" | 40 #include "content/public/browser/notification_service.h" |
41 #include "content/public/browser/notification_types.h" | 41 #include "content/public/browser/notification_types.h" |
42 #include "content/public/browser/web_contents.h" | 42 #include "content/public/browser/web_contents.h" |
43 #include "content/public/common/content_switches.h" | 43 #include "content/public/common/content_switches.h" |
44 #include "content/public/common/url_constants.h" | 44 #include "content/public/common/url_constants.h" |
45 #include "content/public/test/browser_test_utils.h" | 45 #include "content/public/test/browser_test_utils.h" |
46 #include "content/public/test/test_utils.h" | 46 #include "content/public/test/test_utils.h" |
47 #include "net/dns/mock_host_resolver.h" | 47 #include "net/dns/mock_host_resolver.h" |
48 #include "net/test/embedded_test_server/embedded_test_server.h" | 48 #include "net/test/embedded_test_server/embedded_test_server.h" |
49 #include "net/test/url_request/url_request_mock_http_job.h" | 49 #include "net/test/url_request/url_request_mock_http_job.h" |
| 50 #include "testing/gmock/include/gmock/gmock.h" |
50 #include "testing/gtest/include/gtest/gtest.h" | 51 #include "testing/gtest/include/gtest/gtest.h" |
51 | 52 |
52 using content::BrowserContext; | 53 using content::BrowserContext; |
53 using content::BrowserThread; | 54 using content::BrowserThread; |
54 using content::DownloadItem; | 55 using content::DownloadItem; |
55 using content::DownloadManager; | 56 using content::DownloadManager; |
56 using content::WebContents; | 57 using content::WebContents; |
57 using net::URLRequestMockHTTPJob; | 58 using net::URLRequestMockHTTPJob; |
| 59 using testing::HasSubstr; |
58 | 60 |
59 namespace { | 61 namespace { |
60 | 62 |
61 // Waits for an item record in the downloads database to match |filter|. See | 63 // Waits for an item record in the downloads database to match |filter|. See |
62 // DownloadStoredProperly() below for an example filter. | 64 // DownloadStoredProperly() below for an example filter. |
63 class DownloadPersistedObserver : public DownloadHistory::Observer { | 65 class DownloadPersistedObserver : public DownloadHistory::Observer { |
64 public: | 66 public: |
65 typedef base::Callback<bool( | 67 typedef base::Callback<bool( |
66 DownloadItem* item, | 68 DownloadItem* item, |
67 const history::DownloadRow&)> PersistedFilter; | 69 const history::DownloadRow&)> PersistedFilter; |
(...skipping 734 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
802 | 804 |
803 // Test for crbug.com/526786. Without OOPIFs fixes, the test will trigger | 805 // Test for crbug.com/526786. Without OOPIFs fixes, the test will trigger |
804 // a crash in the renderer process. | 806 // a crash in the renderer process. |
805 IN_PROC_BROWSER_TEST_F(SavePageSitePerProcessBrowserTest, SaveCrossSitePage) { | 807 IN_PROC_BROWSER_TEST_F(SavePageSitePerProcessBrowserTest, SaveCrossSitePage) { |
806 // TODO(lukasza): Remove this check once crbug.com/526786 is fixed. | 808 // TODO(lukasza): Remove this check once crbug.com/526786 is fixed. |
807 if (content::AreAllSitesIsolatedForTesting()) { | 809 if (content::AreAllSitesIsolatedForTesting()) { |
808 LOG(WARNING) << "Skipping the test."; | 810 LOG(WARNING) << "Skipping the test."; |
809 return; // Avoid failing on Site Isolation FYI bot. | 811 return; // Avoid failing on Site Isolation FYI bot. |
810 } | 812 } |
811 | 813 |
812 GURL url(embedded_test_server()->GetURL( | 814 GURL url(embedded_test_server()->GetURL("a.com", "/save_page/iframes.htm")); |
813 "a.com", "/frame_tree/page_with_two_frames_remote_and_local.html")); | |
814 ui_test_utils::NavigateToURL(browser(), url); | 815 ui_test_utils::NavigateToURL(browser(), url); |
815 | 816 |
816 base::FilePath full_file_name, dir; | 817 base::FilePath full_file_name, dir; |
817 SaveCurrentTab(url, content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML, "xsite1", 3, | 818 SaveCurrentTab(url, content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML, "iframes", 5, |
818 &dir, &full_file_name); | 819 &dir, &full_file_name); |
819 ASSERT_FALSE(HasFailure()); | 820 ASSERT_FALSE(HasFailure()); |
820 | 821 |
821 EXPECT_TRUE(base::DirectoryExists(dir)); | 822 EXPECT_TRUE(base::DirectoryExists(dir)); |
822 base::FilePath expected_files[] = { | 823 base::FilePath expected_files[] = { |
823 full_file_name, dir.AppendASCII("title1.html"), | 824 full_file_name, |
824 dir.AppendASCII("title1(1).html"), | 825 dir.AppendASCII("a.html"), // From iframes.htm |
| 826 dir.AppendASCII("b.html"), // From iframes.htm |
| 827 dir.AppendASCII("1.css"), // From b.htm |
| 828 dir.AppendASCII("1.png"), // Deduplicated from iframes.htm and b.htm. |
825 }; | 829 }; |
826 for (auto file_path : expected_files) { | 830 for (auto file_path : expected_files) { |
827 EXPECT_TRUE(base::PathExists(file_path)) << "Does " << file_path.value() | 831 EXPECT_TRUE(base::PathExists(file_path)) << "Does " << file_path.value() |
828 << " exist?"; | 832 << " exist?"; |
829 int64 actual_file_size = 0; | 833 int64 actual_file_size = 0; |
830 EXPECT_TRUE(base::GetFileSize(file_path, &actual_file_size)); | 834 EXPECT_TRUE(base::GetFileSize(file_path, &actual_file_size)); |
831 EXPECT_NE(0, actual_file_size) << "Is " << file_path.value() | 835 EXPECT_NE(0, actual_file_size) << "Is " << file_path.value() |
832 << " non-empty?"; | 836 << " non-empty?"; |
833 } | 837 } |
| 838 |
| 839 // Verify that local links got correctly replaced with local paths |
| 840 // (most importantly for iframe elements, which are only exercised |
| 841 // by this particular test). |
| 842 std::string main_contents; |
| 843 ASSERT_TRUE(base::ReadFileToString(full_file_name, &main_contents)); |
| 844 EXPECT_THAT(main_contents, |
| 845 HasSubstr("<iframe src=\"./iframes_files/a.html\"></iframe>")); |
| 846 EXPECT_THAT(main_contents, |
| 847 HasSubstr("<iframe src=\"./iframes_files/b.html\"></iframe>")); |
| 848 EXPECT_THAT(main_contents, |
| 849 HasSubstr("<img src=\"./iframes_files/1.png\">")); |
834 } | 850 } |
835 | 851 |
836 } // namespace | 852 } // namespace |
OLD | NEW |