Index: chrome/browser/download/save_page_browsertest.cc |
diff --git a/chrome/browser/download/save_page_browsertest.cc b/chrome/browser/download/save_page_browsertest.cc |
index ddfb53e9b580bc586a4e6b57bf6551d529bc084d..b0b82c07fe60c1efd3e10d52e684b98308259363 100644 |
--- a/chrome/browser/download/save_page_browsertest.cc |
+++ b/chrome/browser/download/save_page_browsertest.cc |
@@ -47,6 +47,7 @@ |
#include "net/dns/mock_host_resolver.h" |
#include "net/test/embedded_test_server/embedded_test_server.h" |
#include "net/test/url_request/url_request_mock_http_job.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
using content::BrowserContext; |
@@ -55,6 +56,7 @@ using content::DownloadItem; |
using content::DownloadManager; |
using content::WebContents; |
using net::URLRequestMockHTTPJob; |
+using testing::HasSubstr; |
namespace { |
@@ -809,19 +811,21 @@ IN_PROC_BROWSER_TEST_F(SavePageSitePerProcessBrowserTest, SaveCrossSitePage) { |
return; // Avoid failing on Site Isolation FYI bot. |
} |
- GURL url(embedded_test_server()->GetURL( |
- "a.com", "/frame_tree/page_with_two_frames_remote_and_local.html")); |
+ GURL url(embedded_test_server()->GetURL("a.com", "/save_page/iframes.htm")); |
ui_test_utils::NavigateToURL(browser(), url); |
base::FilePath full_file_name, dir; |
- SaveCurrentTab(url, content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML, "xsite1", 3, |
+ SaveCurrentTab(url, content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML, "iframes", 5, |
&dir, &full_file_name); |
ASSERT_FALSE(HasFailure()); |
EXPECT_TRUE(base::DirectoryExists(dir)); |
base::FilePath expected_files[] = { |
- full_file_name, dir.AppendASCII("title1.html"), |
- dir.AppendASCII("title1(1).html"), |
+ full_file_name, |
+ dir.AppendASCII("a.html"), // From iframes.htm |
+ dir.AppendASCII("b.html"), // From iframes.htm |
+ dir.AppendASCII("1.css"), // From b.htm |
+ dir.AppendASCII("1.png"), // Deduplicated from iframes.htm and b.htm. |
}; |
for (auto file_path : expected_files) { |
EXPECT_TRUE(base::PathExists(file_path)) << "Does " << file_path.value() |
@@ -831,6 +835,18 @@ IN_PROC_BROWSER_TEST_F(SavePageSitePerProcessBrowserTest, SaveCrossSitePage) { |
EXPECT_NE(0, actual_file_size) << "Is " << file_path.value() |
<< " non-empty?"; |
} |
+ |
+ // Verify that local links got correctly replaced with local paths |
+ // (most importantly for iframe elements, which are only exercised |
+ // by this particular test). |
+ std::string main_contents; |
+ ASSERT_TRUE(base::ReadFileToString(full_file_name, &main_contents)); |
+ EXPECT_THAT(main_contents, |
+ HasSubstr("<iframe src=\"./iframes_files/a.html\"></iframe>")); |
+ EXPECT_THAT(main_contents, |
+ HasSubstr("<iframe src=\"./iframes_files/b.html\"></iframe>")); |
+ EXPECT_THAT(main_contents, |
+ HasSubstr("<img src=\"./iframes_files/1.png\">")); |
} |
} // namespace |