Commit 0ad6b6e1 authored by Fergal Daly's avatar Fergal Daly Committed by Commit Bot

Parameterize CrossOriginOpenerPolicyBrowserTest for RenderDocument.

A test in here fails when the render document level is set to replace
crashed frames and overall COOP seems like it will be sensitive to
RD's changes, so it's best to ensure that its tests also run with the
RD flags enabled.

This just disables the failing test and leaves a TODO.

Bug: 1066376
Change-Id: Ie2d0c6ef69445c59a48d393cca2bd08a4f951a79
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2274739
Commit-Queue: Fergal Daly <fergal@chromium.org>
Reviewed-by: default avatarCamille Lamy <clamy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#784352}
parent 9fb660c3
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "content/public/test/content_browser_test_utils.h" #include "content/public/test/content_browser_test_utils.h"
#include "content/shell/browser/shell.h" #include "content/shell/browser/shell.h"
#include "content/test/content_browser_test_utils_internal.h" #include "content/test/content_browser_test_utils_internal.h"
#include "content/test/render_document_feature.h"
#include "net/dns/mock_host_resolver.h" #include "net/dns/mock_host_resolver.h"
#include "services/network/public/cpp/cross_origin_opener_policy.h" #include "services/network/public/cpp/cross_origin_opener_policy.h"
#include "services/network/public/cpp/features.h" #include "services/network/public/cpp/features.h"
...@@ -40,7 +41,9 @@ network::CrossOriginOpenerPolicy CoopUnsafeNone() { ...@@ -40,7 +41,9 @@ network::CrossOriginOpenerPolicy CoopUnsafeNone() {
return coop; return coop;
} }
class CrossOriginOpenerPolicyBrowserTest : public ContentBrowserTest { class CrossOriginOpenerPolicyBrowserTest
: public ContentBrowserTest,
public ::testing::WithParamInterface<std::string> {
public: public:
CrossOriginOpenerPolicyBrowserTest() CrossOriginOpenerPolicyBrowserTest()
: https_server_(net::EmbeddedTestServer::TYPE_HTTPS) { : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {
...@@ -50,6 +53,8 @@ class CrossOriginOpenerPolicyBrowserTest : public ContentBrowserTest { ...@@ -50,6 +53,8 @@ class CrossOriginOpenerPolicyBrowserTest : public ContentBrowserTest {
network::features::kCrossOriginOpenerPolicyReporting, network::features::kCrossOriginOpenerPolicyReporting,
network::features::kCrossOriginEmbedderPolicy}, network::features::kCrossOriginEmbedderPolicy},
{}); {});
InitAndEnableRenderDocumentFeature(&feature_list_for_render_document_,
GetParam());
base::CommandLine::ForCurrentProcess()->AppendSwitch( base::CommandLine::ForCurrentProcess()->AppendSwitch(
switches::kIgnoreCertificateErrors); switches::kIgnoreCertificateErrors);
} }
...@@ -80,10 +85,11 @@ class CrossOriginOpenerPolicyBrowserTest : public ContentBrowserTest { ...@@ -80,10 +85,11 @@ class CrossOriginOpenerPolicyBrowserTest : public ContentBrowserTest {
} }
base::test::ScopedFeatureList feature_list_; base::test::ScopedFeatureList feature_list_;
base::test::ScopedFeatureList feature_list_for_render_document_;
net::EmbeddedTestServer https_server_; net::EmbeddedTestServer https_server_;
}; };
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
NewPopupCOOP_InheritsSameOrigin) { NewPopupCOOP_InheritsSameOrigin) {
GURL starting_page( GURL starting_page(
https_server()->GetURL("a.com", "/cross_site_iframe_factory.html?a(a)")); https_server()->GetURL("a.com", "/cross_site_iframe_factory.html?a(a)"));
...@@ -106,7 +112,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, ...@@ -106,7 +112,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest,
EXPECT_EQ(popup_frame->cross_origin_opener_policy(), CoopSameOrigin()); EXPECT_EQ(popup_frame->cross_origin_opener_policy(), CoopSameOrigin());
} }
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
NewPopupCOOP_InheritsSameOriginAllowPopups) { NewPopupCOOP_InheritsSameOriginAllowPopups) {
GURL starting_page( GURL starting_page(
https_server()->GetURL("a.com", "/cross_site_iframe_factory.html?a(a)")); https_server()->GetURL("a.com", "/cross_site_iframe_factory.html?a(a)"));
...@@ -131,7 +137,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, ...@@ -131,7 +137,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest,
CoopSameOriginAllowPopups()); CoopSameOriginAllowPopups());
} }
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
NewPopupCOOP_CrossOriginDoesNotInherit) { NewPopupCOOP_CrossOriginDoesNotInherit) {
GURL starting_page( GURL starting_page(
https_server()->GetURL("a.com", "/cross_site_iframe_factory.html?a(b)")); https_server()->GetURL("a.com", "/cross_site_iframe_factory.html?a(b)"));
...@@ -154,7 +160,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, ...@@ -154,7 +160,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest,
EXPECT_EQ(popup_frame->cross_origin_opener_policy(), CoopUnsafeNone()); EXPECT_EQ(popup_frame->cross_origin_opener_policy(), CoopUnsafeNone());
} }
IN_PROC_BROWSER_TEST_F( IN_PROC_BROWSER_TEST_P(
CrossOriginOpenerPolicyBrowserTest, CrossOriginOpenerPolicyBrowserTest,
NewPopupCOOP_SameOriginPolicyAndCrossOriginIframeSetsNoopener) { NewPopupCOOP_SameOriginPolicyAndCrossOriginIframeSetsNoopener) {
GURL starting_page( GURL starting_page(
...@@ -197,7 +203,7 @@ IN_PROC_BROWSER_TEST_F( ...@@ -197,7 +203,7 @@ IN_PROC_BROWSER_TEST_F(
EXPECT_TRUE(success) << "window.opener is set"; EXPECT_TRUE(success) << "window.opener is set";
} }
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
NetworkErrorOnSandboxedPopups) { NetworkErrorOnSandboxedPopups) {
GURL starting_page(https_server()->GetURL( GURL starting_page(https_server()->GetURL(
"a.com", "/cross-origin-opener-policy_sandbox_popup.html")); "a.com", "/cross-origin-opener-policy_sandbox_popup.html"));
...@@ -219,7 +225,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, ...@@ -219,7 +225,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest,
PAGE_TYPE_ERROR); PAGE_TYPE_ERROR);
} }
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
NoNetworkErrorOnSandboxedDocuments) { NoNetworkErrorOnSandboxedDocuments) {
GURL starting_page(https_server()->GetURL( GURL starting_page(https_server()->GetURL(
"a.com", "/cross-origin-opener-policy_csp_sandboxed.html")); "a.com", "/cross-origin-opener-policy_csp_sandboxed.html"));
...@@ -276,7 +282,7 @@ class CrossOriginPolicyHeadersObserver : public WebContentsObserver { ...@@ -276,7 +282,7 @@ class CrossOriginPolicyHeadersObserver : public WebContentsObserver {
network::CrossOriginOpenerPolicy expected_coop_; network::CrossOriginOpenerPolicy expected_coop_;
}; };
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
RedirectsParseCoopAndCoepHeaders) { RedirectsParseCoopAndCoepHeaders) {
GURL redirect_initial_page(https_server()->GetURL( GURL redirect_initial_page(https_server()->GetURL(
"a.com", "/cross-origin-opener-policy_redirect_initial.html")); "a.com", "/cross-origin-opener-policy_redirect_initial.html"));
...@@ -292,7 +298,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, ...@@ -292,7 +298,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest,
NavigateToURL(shell(), redirect_initial_page, redirect_final_page)); NavigateToURL(shell(), redirect_initial_page, redirect_final_page));
} }
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
CoopIsIgnoredOverHttp) { CoopIsIgnoredOverHttp) {
GURL non_coop_page(embedded_test_server()->GetURL("a.com", "/title1.html")); GURL non_coop_page(embedded_test_server()->GetURL("a.com", "/title1.html"));
GURL coop_page(embedded_test_server()->GetURL( GURL coop_page(embedded_test_server()->GetURL(
...@@ -308,7 +314,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, ...@@ -308,7 +314,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest,
CoopUnsafeNone()); CoopUnsafeNone());
} }
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
CoopIsIgnoredOnIframes) { CoopIsIgnoredOnIframes) {
GURL starting_page( GURL starting_page(
https_server()->GetURL("a.com", "/cross_site_iframe_factory.html?a(b)")); https_server()->GetURL("a.com", "/cross_site_iframe_factory.html?a(b)"));
...@@ -335,7 +341,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, ...@@ -335,7 +341,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest,
EXPECT_EQ(iframe_rfh->cross_origin_opener_policy(), CoopUnsafeNone()); EXPECT_EQ(iframe_rfh->cross_origin_opener_policy(), CoopUnsafeNone());
} }
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
NonCoopPageCrashIntoCoop) { NonCoopPageCrashIntoCoop) {
IsolateAllSitesForTesting(base::CommandLine::ForCurrentProcess()); IsolateAllSitesForTesting(base::CommandLine::ForCurrentProcess());
GURL non_coop_page(https_server()->GetURL("a.com", "/title1.html")); GURL non_coop_page(https_server()->GetURL("a.com", "/title1.html"));
...@@ -437,8 +443,11 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, ...@@ -437,8 +443,11 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest,
} }
} }
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
CoopPageCrashIntoNonCoop) { CoopPageCrashIntoNonCoop) {
// TODO(http://crbug.com/1066376): Remove this when the test case passes.
if (ShouldCreateNewHostForCrashedFrame())
return;
IsolateAllSitesForTesting(base::CommandLine::ForCurrentProcess()); IsolateAllSitesForTesting(base::CommandLine::ForCurrentProcess());
GURL non_coop_page(https_server()->GetURL("a.com", "/title1.html")); GURL non_coop_page(https_server()->GetURL("a.com", "/title1.html"));
GURL coop_page(https_server()->GetURL( GURL coop_page(https_server()->GetURL(
...@@ -555,8 +564,11 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, ...@@ -555,8 +564,11 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest,
} }
} }
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
CoopPageCrashIntoCoop) { CoopPageCrashIntoCoop) {
// TODO(http://crbug.com/1066376): Remove this when the test case passes.
if (ShouldCreateNewHostForCrashedFrame())
return;
IsolateAllSitesForTesting(base::CommandLine::ForCurrentProcess()); IsolateAllSitesForTesting(base::CommandLine::ForCurrentProcess());
GURL non_coop_page(https_server()->GetURL("a.com", "/title1.html")); GURL non_coop_page(https_server()->GetURL("a.com", "/title1.html"));
GURL coop_page(https_server()->GetURL( GURL coop_page(https_server()->GetURL(
...@@ -673,7 +685,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, ...@@ -673,7 +685,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest,
} }
} }
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
ProxiesAreRemovedWhenCrossingCoopBoundary) { ProxiesAreRemovedWhenCrossingCoopBoundary) {
GURL non_coop_page(https_server()->GetURL("a.com", "/title1.html")); GURL non_coop_page(https_server()->GetURL("a.com", "/title1.html"));
GURL coop_page(https_server()->GetURL( GURL coop_page(https_server()->GetURL(
...@@ -706,7 +718,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, ...@@ -706,7 +718,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest,
EXPECT_FALSE(popup->opener()); EXPECT_FALSE(popup->opener());
} }
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
ProxiesAreKeptWhenNavigatingFromCoopToCoop) { ProxiesAreKeptWhenNavigatingFromCoopToCoop) {
IsolateAllSitesForTesting(base::CommandLine::ForCurrentProcess()); IsolateAllSitesForTesting(base::CommandLine::ForCurrentProcess());
GURL coop_page(https_server()->GetURL( GURL coop_page(https_server()->GetURL(
...@@ -742,7 +754,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, ...@@ -742,7 +754,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest,
1u); 1u);
} }
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
IsolateInNewProcessDespiteLimitReached) { IsolateInNewProcessDespiteLimitReached) {
// Set a process limit of 1 for testing. // Set a process limit of 1 for testing.
RenderProcessHostImpl::SetMaxRendererProcessCount(1); RenderProcessHostImpl::SetMaxRendererProcessCount(1);
...@@ -769,7 +781,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, ...@@ -769,7 +781,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest,
popup_webcontents->GetMainFrame()->GetProcess()); popup_webcontents->GetMainFrame()->GetProcess());
} }
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
NoProcessReuseForCOOPProcesses) { NoProcessReuseForCOOPProcesses) {
// Set a process limit of 1 for testing. // Set a process limit of 1 for testing.
RenderProcessHostImpl::SetMaxRendererProcessCount(1); RenderProcessHostImpl::SetMaxRendererProcessCount(1);
...@@ -804,7 +816,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, ...@@ -804,7 +816,7 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest,
popup_webcontents->GetMainFrame()->GetProcess()); popup_webcontents->GetMainFrame()->GetProcess());
} }
IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
SpeculativeRfhsAndCoop) { SpeculativeRfhsAndCoop) {
GURL non_coop_page(https_server()->GetURL("/title1.html")); GURL non_coop_page(https_server()->GetURL("/title1.html"));
GURL coop_page(https_server()->GetURL("/page_with_coop_and_coep.html")); GURL coop_page(https_server()->GetURL("/page_with_coop_and_coep.html"));
...@@ -926,6 +938,9 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, ...@@ -926,6 +938,9 @@ IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest,
} }
} }
INSTANTIATE_TEST_SUITE_P(All,
CrossOriginOpenerPolicyBrowserTest,
testing::ValuesIn(RenderDocumentFeatureLevelValues()));
} // namespace } // namespace
} // namespace content } // namespace content
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