Commit c62cdb03 authored by Findit's avatar Findit

Revert "Prerender: Add browser tests for <link rel=next>"

This reverts commit 33cb4c97.

Reason for revert:

Findit (https://goo.gl/kROfz5) identified CL at revision 836533 as the
culprit for flakes in the build cycles as shown on:
https://analysis.chromium.org/p/chromium/flake-portal/analysis/culprit?key=ag9zfmZpbmRpdC1mb3ItbWVyQwsSDEZsYWtlQ3VscHJpdCIxY2hyb21pdW0vMzNjYjRjOTc5N2VlNjQ4YWEyNzMxMGU1NjMzODJjZjE3ZGYxNGUxMww

Sample Failed Build: https://ci.chromium.org/b/8860915097129113392

Sample Failed Step: content_browsertests_wayland

Sample Flaky Test: All/PrerenderTriggerBrowserTest.LinkRelNext/0

Original change's description:
> Prerender: Add browser tests for <link rel=next>
> 
> <link rel=next> is expected to trigger prerendering like
> <link rel=prerender>.
> 
> Note that when the feature flag `kPrerender2` is disabled,
> <link rel=next> triggers NoStatePrefetch.
> 
> Bug: 1155925
> Change-Id: If430701e125dcc55e9bded8350dcc43eed8a1a1f
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2578499
> Reviewed-by: Matt Falkenhagen <falken@chromium.org>
> Commit-Queue: Hiroki Nakagawa <nhiroki@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#836533}


Change-Id: I17b153d7da65a5573a613bce4fd4da20c18f4623
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 1155925
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2588013
Cr-Commit-Position: refs/heads/master@{#836681}
parent 54613402
......@@ -20,17 +20,17 @@
namespace content {
namespace {
class PrerenderBrowserTestBase : public ContentBrowserTest,
public testing::WithParamInterface<bool> {
class PrerenderBrowserTest : public ContentBrowserTest,
public testing::WithParamInterface<bool> {
public:
PrerenderBrowserTestBase() {
PrerenderBrowserTest() {
std::map<std::string, std::string> parameters;
if (IsActivationDisabled())
parameters["activation"] = "disabled";
feature_list_.InitAndEnableFeatureWithParameters(
blink::features::kPrerender2, parameters);
}
~PrerenderBrowserTestBase() override = default;
~PrerenderBrowserTest() override = default;
void SetUpOnMainThread() override {
// Make sure the feature param is correctly set before testing.
......@@ -46,15 +46,9 @@ class PrerenderBrowserTestBase : public ContentBrowserTest,
ssl_server_.AddDefaultHandlers(GetTestDataFilePath());
ssl_server_.SetSSLConfig(
net::test_server::EmbeddedTestServer::CERT_TEST_NAMES);
ssl_server_.RegisterRequestMonitor(
base::BindRepeating(&PrerenderBrowserTestBase::MonitorResourceRequest,
base::Unretained(this)));
ssl_server_.RegisterRequestMonitor(base::BindRepeating(
&PrerenderBrowserTest::MonitorResourceRequest, base::Unretained(this)));
ASSERT_TRUE(ssl_server_.Start());
// Navigate to an initial page.
const GURL kInitialUrl = GetUrl("/prerender/add_prerender.html");
ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl));
ASSERT_EQ(shell()->web_contents()->GetURL(), kInitialUrl);
}
void TearDownOnMainThread() override {
......@@ -84,18 +78,6 @@ class PrerenderBrowserTestBase : public ContentBrowserTest,
observer.Wait();
}
// Adds <link rel=next> in the current main frame and waits until the
// completion of prerendering.
void AddNext(const GURL& prerendering_url) {
// Start watching new web contents to be created for prerendering.
content::TestNavigationObserver observer(prerendering_url);
observer.StartWatchingNewWebContents();
// Add the link tag that will prerender the URL.
EXPECT_TRUE(ExecJs(shell()->web_contents(),
JsReplace("add_next($1)", prerendering_url)));
observer.Wait();
}
// Navigates to the URL and waits until the completion of navigation.
//
// Navigations that could activate a prerendered page on the multiple
......@@ -134,44 +116,21 @@ class PrerenderBrowserTestBase : public ContentBrowserTest,
base::test::ScopedFeatureList feature_list_;
};
// Tests for prerendering triggers =============================================
class PrerenderTriggerBrowserTest : public PrerenderBrowserTestBase {
protected:
enum class TriggerType {
// <link rel=prerender>
kLinkRelPrerender,
// <link rel=next>
kLinkRelNext
};
void AddTrigger(const GURL& prerendering_url, TriggerType trigger_type) {
switch (trigger_type) {
case TriggerType::kLinkRelPrerender:
AddPrerender(prerendering_url);
return;
case TriggerType::kLinkRelNext:
AddNext(prerendering_url);
return;
}
}
void TestTrigger(TriggerType trigger_type);
void TestMultipleTriggers(TriggerType trigger_type);
void TestDuplicateTriggers(TriggerType trigger_type);
};
INSTANTIATE_TEST_SUITE_P(All,
PrerenderTriggerBrowserTest,
PrerenderBrowserTest,
/*disable_activation=*/testing::Bool());
void PrerenderTriggerBrowserTest::TestTrigger(TriggerType trigger_type) {
IN_PROC_BROWSER_TEST_P(PrerenderBrowserTest, LinkRelPrerender) {
const GURL kInitialUrl = GetUrl("/prerender/add_prerender.html");
const GURL kPrerenderingUrl = GetUrl("/empty.html");
// Add a trigger that will prerender `kPrerenderingUrl`.
// Navigate to an initial page.
ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl));
ASSERT_EQ(shell()->web_contents()->GetURL(), kInitialUrl);
// Add <link rel=prerender> that will prerender `kPrerenderingUrl`.
ASSERT_EQ(GetRequestCount(kPrerenderingUrl), 0);
AddTrigger(kPrerenderingUrl, trigger_type);
AddPrerender(kPrerenderingUrl);
EXPECT_EQ(GetRequestCount(kPrerenderingUrl), 1);
// A prerender host for the URL should be registered.
......@@ -193,25 +152,21 @@ void PrerenderTriggerBrowserTest::TestTrigger(TriggerType trigger_type) {
}
}
IN_PROC_BROWSER_TEST_P(PrerenderTriggerBrowserTest, LinkRelPrerender) {
TestTrigger(TriggerType::kLinkRelPrerender);
}
IN_PROC_BROWSER_TEST_P(PrerenderTriggerBrowserTest, LinkRelNext) {
TestTrigger(TriggerType::kLinkRelNext);
}
void PrerenderTriggerBrowserTest::TestMultipleTriggers(
TriggerType trigger_type) {
IN_PROC_BROWSER_TEST_P(PrerenderBrowserTest, LinkRelPrerender_Multiple) {
const GURL kInitialUrl = GetUrl("/prerender/add_prerender.html");
const GURL kPrerenderingUrl1 = GetUrl("/empty.html?1");
const GURL kPrerenderingUrl2 = GetUrl("/empty.html?2");
// Add triggers that will prerender `kPrerenderingUrl1` and
// Navigate to an initial page.
ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl));
ASSERT_EQ(shell()->web_contents()->GetURL(), kInitialUrl);
// Add <link rel=prerender> that will prerender `kPrerenderingUrl1` and
// `kPrerenderingUrl2`.
ASSERT_EQ(GetRequestCount(kPrerenderingUrl1), 0);
ASSERT_EQ(GetRequestCount(kPrerenderingUrl2), 0);
AddTrigger(kPrerenderingUrl1, trigger_type);
AddTrigger(kPrerenderingUrl2, trigger_type);
AddPrerender(kPrerenderingUrl1);
AddPrerender(kPrerenderingUrl2);
EXPECT_EQ(GetRequestCount(kPrerenderingUrl1), 1);
EXPECT_EQ(GetRequestCount(kPrerenderingUrl2), 1);
......@@ -239,25 +194,8 @@ void PrerenderTriggerBrowserTest::TestMultipleTriggers(
}
}
IN_PROC_BROWSER_TEST_P(PrerenderTriggerBrowserTest, LinkRelPrerender_Multiple) {
TestMultipleTriggers(TriggerType::kLinkRelPrerender);
}
IN_PROC_BROWSER_TEST_P(PrerenderTriggerBrowserTest, LinkRelNext_Multiple) {
TestMultipleTriggers(TriggerType::kLinkRelNext);
}
void PrerenderTriggerBrowserTest::TestDuplicateTriggers(
TriggerType trigger_type) {
GURL initial_url;
switch (trigger_type) {
case TriggerType::kLinkRelPrerender:
initial_url = GetUrl("/prerender/duplicate_link_prerenders.html");
break;
case TriggerType::kLinkRelNext:
initial_url = GetUrl("/prerender/duplicate_link_nexts.html");
break;
}
IN_PROC_BROWSER_TEST_P(PrerenderBrowserTest, LinkRelPrerender_Duplicate) {
const GURL kInitialUrl = GetUrl("/prerender/duplicate_prerenders.html");
const GURL kPrerenderingUrl1 = GetUrl("/empty.html?1");
const GURL kPrerenderingUrl2 = GetUrl("/empty.html?2");
......@@ -269,7 +207,7 @@ void PrerenderTriggerBrowserTest::TestDuplicateTriggers(
// Navigate to a page that initiates prerendering for `kPrerenderingUrl1`
// twice. The second prerendering request should be ignored.
ASSERT_TRUE(NavigateToURL(shell(), initial_url));
ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl));
// Wait until the completion of prerendering.
navigation_observer1.Wait();
......@@ -304,29 +242,15 @@ void PrerenderTriggerBrowserTest::TestDuplicateTriggers(
}
}
IN_PROC_BROWSER_TEST_P(PrerenderTriggerBrowserTest,
LinkRelPrerender_Duplicate) {
TestDuplicateTriggers(TriggerType::kLinkRelPrerender);
}
IN_PROC_BROWSER_TEST_P(PrerenderTriggerBrowserTest, LinkRelNext_Duplicate) {
TestDuplicateTriggers(TriggerType::kLinkRelNext);
}
// Tests for activation =======================================================
class PrerenderActivationBrowserTest : public PrerenderTriggerBrowserTest {
// TODO(https://crbug.com/1132746): Factor out common functions to here.
};
INSTANTIATE_TEST_SUITE_P(All,
PrerenderActivationBrowserTest,
/*disable_activation=*/testing::Bool());
// Makes sure that activations on navigations for iframes don't happen.
IN_PROC_BROWSER_TEST_P(PrerenderActivationBrowserTest, iFrame) {
IN_PROC_BROWSER_TEST_P(PrerenderBrowserTest, Activation_iFrame) {
const GURL kInitialUrl = GetUrl("/prerender/add_prerender.html");
const GURL kPrerenderingUrl = GetUrl("/empty.html");
// Navigate to an initial page.
ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl));
ASSERT_EQ(shell()->web_contents()->GetURL(), kInitialUrl);
// Add <link rel=prerender> that will prerender `kPrerenderingUrl`.
ASSERT_EQ(GetRequestCount(kPrerenderingUrl), 0);
AddPrerender(kPrerenderingUrl);
......@@ -350,9 +274,14 @@ IN_PROC_BROWSER_TEST_P(PrerenderActivationBrowserTest, iFrame) {
}
// Makes sure that activations on navigations for pop-up windows don't happen.
IN_PROC_BROWSER_TEST_P(PrerenderActivationBrowserTest, PopUpWindow) {
IN_PROC_BROWSER_TEST_P(PrerenderBrowserTest, Activation_PopUpWindow) {
const GURL kInitialUrl = GetUrl("/prerender/add_prerender.html");
const GURL kPrerenderingUrl = GetUrl("/empty.html");
// Navigate to an initial page.
ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl));
ASSERT_EQ(shell()->web_contents()->GetURL(), kInitialUrl);
// Add <link rel=prerender> that will prerender `kPrerenderingUrl`.
ASSERT_EQ(GetRequestCount(kPrerenderingUrl), 0);
AddPrerender(kPrerenderingUrl);
......
......@@ -12,15 +12,6 @@ function add_prerender(url) {
document.head.appendChild(link);
}
// Adds <link rel=next> for the URL that triggers prerendering like <link
// rel=prerender>.
function add_next(url) {
const link = document.createElement('link');
link.rel = 'next';
link.href = url;
document.head.appendChild(link);
}
// Creates a new iframe with the URL.
async function add_iframe(url) {
const frame = document.createElement('iframe');
......
<!DOCTYPE html>
<html>
<head>
<title>Duplicate link nexts</title>
<link rel="next" href="/empty.html?1">
<link rel="next" href="/empty.html?1">
<link rel="next" href="/empty.html?2">
</head>
<body></body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>Duplicate link prerenders</title>
<title>Duplicate Prerenders Test</title>
<link rel="prerender" href="/empty.html?1">
<link rel="prerender" href="/empty.html?1">
<link rel="prerender" href="/empty.html?2">
......
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