Commit 770db5b0 authored by Mugdha Lakhani's avatar Mugdha Lakhani Committed by Commit Bot

[Prerender] Port over more tests.

The following now-irrelevant Prerender tests have been deleted:
PrerenderServerRedirectInIframe
SafeBrowsingTest:Iframe

The following have equivalent tests in NoStatePrefetch tests and have
been deleted:
SafeBrowsingTest:TopLevel
SafeBrowsingTest:Subresource

The following test has been ported over:
SafeBrowsingTest:ServerRedirect

Please see this spreadsheet for details:
https://docs.google.com/spreadsheets/d/1LFPB4UhPWQkBRz481lz49zmS25znhjSDUtagtTTSPQo/edit?usp=sharing

Bug: 898955
Change-Id: Ib99d58fc833f7c65adb3a908fc12d239ec635b28
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2300118Reviewed-by: default avatarRyan Sturm <ryansturm@chromium.org>
Commit-Queue: Mugdha Lakhani <nator@chromium.org>
Cr-Commit-Position: refs/heads/master@{#789895}
parent 0f0c7ff6
...@@ -154,13 +154,6 @@ namespace prerender { ...@@ -154,13 +154,6 @@ namespace prerender {
namespace { namespace {
const char kPrefetchJpeg[] = "/prerender/image.jpeg";
std::string CreateServerRedirect(const std::string& dest_url) {
const char* const kServerRedirectBase = "/server-redirect?";
return kServerRedirectBase + net::EscapeQueryParamValue(dest_url, false);
}
// Returns true if the prerender is expected to abort on its own, before // Returns true if the prerender is expected to abort on its own, before
// attempting to swap it. // attempting to swap it.
bool ShouldAbortPrerenderBeforeSwap(FinalStatus status) { bool ShouldAbortPrerenderBeforeSwap(FinalStatus status) {
...@@ -417,11 +410,7 @@ class PrerenderBrowserTest : public test_utils::PrerenderInProcessBrowserTest { ...@@ -417,11 +410,7 @@ class PrerenderBrowserTest : public test_utils::PrerenderInProcessBrowserTest {
test_utils::PrerenderInProcessBrowserTest::SetUpOnMainThread(); test_utils::PrerenderInProcessBrowserTest::SetUpOnMainThread();
prerender::PrerenderManager::SetMode( prerender::PrerenderManager::SetMode(
prerender::PrerenderManager::DEPRECATED_PRERENDER_MODE_ENABLED); prerender::PrerenderManager::DEPRECATED_PRERENDER_MODE_ENABLED);
const testing::TestInfo* const test_info = host_resolver()->AddRule("*", "127.0.0.1");
testing::UnitTest::GetInstance()->current_test_info();
// This one test fails with the host resolver redirecting all hosts.
if (std::string(test_info->name()) != "PrerenderServerRedirectInIframe")
host_resolver()->AddRule("*", "127.0.0.1");
} }
void TearDownOnMainThread() override { void TearDownOnMainThread() override {
...@@ -781,21 +770,6 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHttpAuthentication) { ...@@ -781,21 +770,6 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHttpAuthentication) {
FINAL_STATUS_AUTH_NEEDED, 0); FINAL_STATUS_AUTH_NEEDED, 0);
} }
// Checks that server-issued redirects within an iframe in a prerendered
// page will not count as an "alias" for the prerendered page.
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderServerRedirectInIframe) {
std::string redirect_path =
CreateServerRedirect("//prerender/prerender_embedded_content.html");
base::StringPairs replacement_text;
replacement_text.push_back(std::make_pair("REPLACE_WITH_URL", redirect_path));
std::string replacement_path = net::test_server::GetFilePathWithReplacements(
"/prerender/prerender_with_iframe.html", replacement_text);
PrerenderTestURL(replacement_path, FINAL_STATUS_USED, 1);
EXPECT_FALSE(
UrlIsInPrerenderManager("/prerender/prerender_embedded_content.html"));
NavigateToDestURL();
}
// Checks that the referrer is set when prerendering. // Checks that the referrer is set when prerendering.
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderReferrer) { IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderReferrer) {
PrerenderTestURL("/prerender/prerender_referrer.html", FINAL_STATUS_USED, 1); PrerenderTestURL("/prerender/prerender_referrer.html", FINAL_STATUS_USED, 1);
...@@ -902,81 +876,6 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLReferrerPolicy) { ...@@ -902,81 +876,6 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLReferrerPolicy) {
NavigateToDestURL(); NavigateToDestURL();
} }
// Test interaction of Safe Browsing with prerender. Parametrized to enable
// SafeBrowsing Delayed Warnings experiment. The experiment shouldn't delay
// prerender page loads. Otherwise, the tests will crash or timeout.
// The experiment only delays phishing warnings so the tests must use a phishing
// resource.
class PrerenderSafeBrowsingTest
: public PrerenderBrowserTest,
public testing::WithParamInterface<
testing::tuple<bool /* Enable delayed warnings experiment */>> {
public:
PrerenderSafeBrowsingTest() {
if (testing::get<0>(GetParam())) {
scoped_feature_list_.InitWithFeatures(
/*enabled_features=*/{safe_browsing::kDelayedWarnings},
/*disabled_features=*/{});
}
}
private:
base::test::ScopedFeatureList scoped_feature_list_;
};
// Ensures that we do not prerender pages with a safe browsing
// interstitial.
IN_PROC_BROWSER_TEST_P(PrerenderSafeBrowsingTest, TopLevel) {
GURL url = embedded_test_server()->GetURL("/prerender/prerender_page.html");
GetFakeSafeBrowsingDatabaseManager()->SetThreatTypeForUrl(
url, safe_browsing::SB_THREAT_TYPE_URL_PHISHING);
PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_SAFE_BROWSING,
0);
}
// Ensures that server redirects to a malware page will cancel prerenders.
IN_PROC_BROWSER_TEST_P(PrerenderSafeBrowsingTest, ServerRedirect) {
GURL url = embedded_test_server()->GetURL("/prerender/prerender_page.html");
GetFakeSafeBrowsingDatabaseManager()->SetThreatTypeForUrl(
url, safe_browsing::SB_THREAT_TYPE_URL_PHISHING);
PrerenderTestURL(CreateServerRedirect("/prerender/prerender_page.html"),
FINAL_STATUS_SAFE_BROWSING, 0);
}
// Ensures that we do not prerender pages which have a malware subresource.
IN_PROC_BROWSER_TEST_P(PrerenderSafeBrowsingTest, Subresource) {
GURL image_url = embedded_test_server()->GetURL(kPrefetchJpeg);
GetFakeSafeBrowsingDatabaseManager()->SetThreatTypeForUrl(
image_url, safe_browsing::SB_THREAT_TYPE_URL_PHISHING);
base::StringPairs replacement_text;
replacement_text.push_back(
std::make_pair("REPLACE_WITH_IMAGE_URL", image_url.spec()));
std::string replacement_path = net::test_server::GetFilePathWithReplacements(
"/prerender/prerender_with_image.html", replacement_text);
PrerenderTestURL(replacement_path, FINAL_STATUS_SAFE_BROWSING, 0);
}
// Ensures that we do not prerender pages which have a malware iframe.
IN_PROC_BROWSER_TEST_P(PrerenderSafeBrowsingTest, Iframe) {
GURL iframe_url = embedded_test_server()->GetURL(
"/prerender/prerender_embedded_content.html");
GetFakeSafeBrowsingDatabaseManager()->SetThreatTypeForUrl(
iframe_url, safe_browsing::SB_THREAT_TYPE_URL_PHISHING);
base::StringPairs replacement_text;
replacement_text.push_back(
std::make_pair("REPLACE_WITH_URL", iframe_url.spec()));
std::string replacement_path = net::test_server::GetFilePathWithReplacements(
"/prerender/prerender_with_iframe.html", replacement_text);
PrerenderTestURL(replacement_path, FINAL_STATUS_SAFE_BROWSING, 0);
}
INSTANTIATE_TEST_SUITE_P(PrerenderSafeBrowsingTest,
PrerenderSafeBrowsingTest,
testing::Combine(testing::Values(
false,
true)) /* Enable delayed warnings experiment */
);
} // namespace prerender } // namespace prerender
#endif // !defined(OS_MACOSX) || !defined(ADDRESS_SANITIZER) #endif // !defined(OS_MACOSX) || !defined(ADDRESS_SANITIZER)
...@@ -1450,6 +1450,16 @@ IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, ...@@ -1450,6 +1450,16 @@ IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest,
WaitForRequestCount(src_server()->GetURL(kPrefetchScript), 0); WaitForRequestCount(src_server()->GetURL(kPrefetchScript), 0);
} }
// Ensures that server redirects to a malware page will cancel prerenders.
IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, ServerRedirect) {
GURL url = src_server()->GetURL("/prerender/prerender_page.html");
GetFakeSafeBrowsingDatabaseManager()->SetThreatTypeForUrl(
url, safe_browsing::SB_THREAT_TYPE_URL_PHISHING);
PrefetchFromURL(src_server()->GetURL(
CreateServerRedirect("/prerender/prerender_page.html")),
FINAL_STATUS_SAFE_BROWSING, 0);
}
// If a subresource is unsafe, the corresponding request is cancelled. // If a subresource is unsafe, the corresponding request is cancelled.
IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest,
PrerenderSafeBrowsingSubresource) { PrerenderSafeBrowsingSubresource) {
......
<html>
<head>
<title>Embedded iframe</title>
</head>
<body>
Embedded iframe.
</body>
</html>
<html>
<head>
<title>Prerender with iframe</title>
<script>
var pageWasPrerendered = false;
function DidPrerenderPass() {
pageWasPrerendered = true;
return true;
}
// Make sure DidPrerenderPass() was called first. Otherwise, the page was
// most likely reloaded instead of using the prerendered page.
function DidDisplayPass() {
return pageWasPrerendered;
}
</script>
</head>
<body>
<iframe name="iframe"
src="REPLACE_WITH_URL"
width="0"
height="0"
frameborder="0">
</iframe>
</body>
</html>
<html>
<!--
This test checks to make sure that a prerendered page is loaded.
-->
<head>
<title>Prerendered Page</title>
<script>
var pageWasPrerendered = false;
// Make sure plugin was not loaded while prerendering.
function DidPrerenderPass() {
pageWasPrerendered = true;
return true;
}
// Make sure DidPrerenderPass() was called first. Otherwise, the page was
// most likely reloaded instead of using the prerendered page.
function DidDisplayPass() {
return pageWasPrerendered;
}
</script>
</head>
<body>
<img src="REPLACE_WITH_IMAGE_URL"/>
</body>
</html>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment