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 @@ ...@@ -20,17 +20,17 @@
namespace content { namespace content {
namespace { namespace {
class PrerenderBrowserTestBase : public ContentBrowserTest, class PrerenderBrowserTest : public ContentBrowserTest,
public testing::WithParamInterface<bool> { public testing::WithParamInterface<bool> {
public: public:
PrerenderBrowserTestBase() { PrerenderBrowserTest() {
std::map<std::string, std::string> parameters; std::map<std::string, std::string> parameters;
if (IsActivationDisabled()) if (IsActivationDisabled())
parameters["activation"] = "disabled"; parameters["activation"] = "disabled";
feature_list_.InitAndEnableFeatureWithParameters( feature_list_.InitAndEnableFeatureWithParameters(
blink::features::kPrerender2, parameters); blink::features::kPrerender2, parameters);
} }
~PrerenderBrowserTestBase() override = default; ~PrerenderBrowserTest() override = default;
void SetUpOnMainThread() override { void SetUpOnMainThread() override {
// Make sure the feature param is correctly set before testing. // Make sure the feature param is correctly set before testing.
...@@ -46,15 +46,9 @@ class PrerenderBrowserTestBase : public ContentBrowserTest, ...@@ -46,15 +46,9 @@ class PrerenderBrowserTestBase : public ContentBrowserTest,
ssl_server_.AddDefaultHandlers(GetTestDataFilePath()); ssl_server_.AddDefaultHandlers(GetTestDataFilePath());
ssl_server_.SetSSLConfig( ssl_server_.SetSSLConfig(
net::test_server::EmbeddedTestServer::CERT_TEST_NAMES); net::test_server::EmbeddedTestServer::CERT_TEST_NAMES);
ssl_server_.RegisterRequestMonitor( ssl_server_.RegisterRequestMonitor(base::BindRepeating(
base::BindRepeating(&PrerenderBrowserTestBase::MonitorResourceRequest, &PrerenderBrowserTest::MonitorResourceRequest, base::Unretained(this)));
base::Unretained(this)));
ASSERT_TRUE(ssl_server_.Start()); 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 { void TearDownOnMainThread() override {
...@@ -84,18 +78,6 @@ class PrerenderBrowserTestBase : public ContentBrowserTest, ...@@ -84,18 +78,6 @@ class PrerenderBrowserTestBase : public ContentBrowserTest,
observer.Wait(); 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. // Navigates to the URL and waits until the completion of navigation.
// //
// Navigations that could activate a prerendered page on the multiple // Navigations that could activate a prerendered page on the multiple
...@@ -134,44 +116,21 @@ class PrerenderBrowserTestBase : public ContentBrowserTest, ...@@ -134,44 +116,21 @@ class PrerenderBrowserTestBase : public ContentBrowserTest,
base::test::ScopedFeatureList feature_list_; 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, INSTANTIATE_TEST_SUITE_P(All,
PrerenderTriggerBrowserTest, PrerenderBrowserTest,
/*disable_activation=*/testing::Bool()); /*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"); 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); ASSERT_EQ(GetRequestCount(kPrerenderingUrl), 0);
AddTrigger(kPrerenderingUrl, trigger_type); AddPrerender(kPrerenderingUrl);
EXPECT_EQ(GetRequestCount(kPrerenderingUrl), 1); EXPECT_EQ(GetRequestCount(kPrerenderingUrl), 1);
// A prerender host for the URL should be registered. // A prerender host for the URL should be registered.
...@@ -193,25 +152,21 @@ void PrerenderTriggerBrowserTest::TestTrigger(TriggerType trigger_type) { ...@@ -193,25 +152,21 @@ void PrerenderTriggerBrowserTest::TestTrigger(TriggerType trigger_type) {
} }
} }
IN_PROC_BROWSER_TEST_P(PrerenderTriggerBrowserTest, LinkRelPrerender) { IN_PROC_BROWSER_TEST_P(PrerenderBrowserTest, LinkRelPrerender_Multiple) {
TestTrigger(TriggerType::kLinkRelPrerender); const GURL kInitialUrl = GetUrl("/prerender/add_prerender.html");
}
IN_PROC_BROWSER_TEST_P(PrerenderTriggerBrowserTest, LinkRelNext) {
TestTrigger(TriggerType::kLinkRelNext);
}
void PrerenderTriggerBrowserTest::TestMultipleTriggers(
TriggerType trigger_type) {
const GURL kPrerenderingUrl1 = GetUrl("/empty.html?1"); const GURL kPrerenderingUrl1 = GetUrl("/empty.html?1");
const GURL kPrerenderingUrl2 = GetUrl("/empty.html?2"); 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`. // `kPrerenderingUrl2`.
ASSERT_EQ(GetRequestCount(kPrerenderingUrl1), 0); ASSERT_EQ(GetRequestCount(kPrerenderingUrl1), 0);
ASSERT_EQ(GetRequestCount(kPrerenderingUrl2), 0); ASSERT_EQ(GetRequestCount(kPrerenderingUrl2), 0);
AddTrigger(kPrerenderingUrl1, trigger_type); AddPrerender(kPrerenderingUrl1);
AddTrigger(kPrerenderingUrl2, trigger_type); AddPrerender(kPrerenderingUrl2);
EXPECT_EQ(GetRequestCount(kPrerenderingUrl1), 1); EXPECT_EQ(GetRequestCount(kPrerenderingUrl1), 1);
EXPECT_EQ(GetRequestCount(kPrerenderingUrl2), 1); EXPECT_EQ(GetRequestCount(kPrerenderingUrl2), 1);
...@@ -239,25 +194,8 @@ void PrerenderTriggerBrowserTest::TestMultipleTriggers( ...@@ -239,25 +194,8 @@ void PrerenderTriggerBrowserTest::TestMultipleTriggers(
} }
} }
IN_PROC_BROWSER_TEST_P(PrerenderTriggerBrowserTest, LinkRelPrerender_Multiple) { IN_PROC_BROWSER_TEST_P(PrerenderBrowserTest, LinkRelPrerender_Duplicate) {
TestMultipleTriggers(TriggerType::kLinkRelPrerender); const GURL kInitialUrl = GetUrl("/prerender/duplicate_prerenders.html");
}
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;
}
const GURL kPrerenderingUrl1 = GetUrl("/empty.html?1"); const GURL kPrerenderingUrl1 = GetUrl("/empty.html?1");
const GURL kPrerenderingUrl2 = GetUrl("/empty.html?2"); const GURL kPrerenderingUrl2 = GetUrl("/empty.html?2");
...@@ -269,7 +207,7 @@ void PrerenderTriggerBrowserTest::TestDuplicateTriggers( ...@@ -269,7 +207,7 @@ void PrerenderTriggerBrowserTest::TestDuplicateTriggers(
// Navigate to a page that initiates prerendering for `kPrerenderingUrl1` // Navigate to a page that initiates prerendering for `kPrerenderingUrl1`
// twice. The second prerendering request should be ignored. // 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. // Wait until the completion of prerendering.
navigation_observer1.Wait(); navigation_observer1.Wait();
...@@ -304,29 +242,15 @@ void PrerenderTriggerBrowserTest::TestDuplicateTriggers( ...@@ -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. // 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"); 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`. // Add <link rel=prerender> that will prerender `kPrerenderingUrl`.
ASSERT_EQ(GetRequestCount(kPrerenderingUrl), 0); ASSERT_EQ(GetRequestCount(kPrerenderingUrl), 0);
AddPrerender(kPrerenderingUrl); AddPrerender(kPrerenderingUrl);
...@@ -350,9 +274,14 @@ IN_PROC_BROWSER_TEST_P(PrerenderActivationBrowserTest, iFrame) { ...@@ -350,9 +274,14 @@ IN_PROC_BROWSER_TEST_P(PrerenderActivationBrowserTest, iFrame) {
} }
// Makes sure that activations on navigations for pop-up windows don't happen. // 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"); 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`. // Add <link rel=prerender> that will prerender `kPrerenderingUrl`.
ASSERT_EQ(GetRequestCount(kPrerenderingUrl), 0); ASSERT_EQ(GetRequestCount(kPrerenderingUrl), 0);
AddPrerender(kPrerenderingUrl); AddPrerender(kPrerenderingUrl);
......
...@@ -12,15 +12,6 @@ function add_prerender(url) { ...@@ -12,15 +12,6 @@ function add_prerender(url) {
document.head.appendChild(link); 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. // Creates a new iframe with the URL.
async function add_iframe(url) { async function add_iframe(url) {
const frame = document.createElement('iframe'); 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> <!DOCTYPE html>
<html> <html>
<head> <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?1"> <link rel="prerender" href="/empty.html?1">
<link rel="prerender" href="/empty.html?2"> <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