0

iwa: Remove kIsolatedAppOrigins from Direct Sockets browser tests

This CL makes the Direct Socket browser tests rely on overriding
ContentBrowserClient::ShouldUrlUseApplicationIsolationLevel rather
than setting the --isolated-app-origins flag, which we hope to remove
soon.

Bug: 1333966
Change-Id: Ie492365ec7b98fcebd738fd1f0f7816456379df2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4032715
Reviewed-by: Andrew Rayskiy <greengrape@google.com>
Commit-Queue: Robbie McElrath <rmcelrath@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1073118}
This commit is contained in:
Robbie McElrath
2022-11-17 23:49:18 +00:00
committed by Chromium LUCI CQ
parent 9c0c267811
commit 05953c2bc6
5 changed files with 48 additions and 33 deletions

@@ -12,11 +12,11 @@
#include "base/strings/stringprintf.h"
#include "base/task/sequenced_task_runner.h"
#include "base/test/metrics/histogram_tester.h"
#include "base/test/scoped_feature_list.h"
#include "content/browser/direct_sockets/direct_sockets_service_impl.h"
#include "content/browser/direct_sockets/direct_sockets_test_utils.h"
#include "content/public/browser/browser_context.h"
#include "content/public/common/content_features.h"
#include "content/public/common/content_switches.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/content_browser_test.h"
@@ -176,7 +176,13 @@ class DirectSocketsOpenBrowserTest : public ContentBrowserTest {
protected:
void SetUpOnMainThread() override {
ContentBrowserTest::SetUpOnMainThread();
EXPECT_TRUE(NavigateToURL(shell(), GetTestOpenPageURL()));
client_ = std::make_unique<test::IsolatedWebAppContentBrowserClient>(
url::Origin::Create(GetTestOpenPageURL()));
scoped_client_ =
std::make_unique<ScopedContentBrowserClientSetting>(client_.get());
ASSERT_TRUE(NavigateToURL(shell(), GetTestOpenPageURL()));
}
void SetUp() override {
@@ -186,12 +192,11 @@ class DirectSocketsOpenBrowserTest : public ContentBrowserTest {
ContentBrowserTest::SetUp();
}
void SetUpCommandLine(base::CommandLine* command_line) override {
ContentBrowserTest::SetUpCommandLine(command_line);
std::string origin_list = GetTestOpenPageURL().spec();
private:
base::test::ScopedFeatureList feature_list_{features::kIsolatedWebApps};
command_line->AppendSwitchASCII(switches::kIsolatedAppOrigins, origin_list);
}
std::unique_ptr<test::IsolatedWebAppContentBrowserClient> client_;
std::unique_ptr<ScopedContentBrowserClientSetting> scoped_client_;
};
IN_PROC_BROWSER_TEST_F(DirectSocketsOpenBrowserTest, OpenTcp_Success_Hostname) {

@@ -19,7 +19,6 @@
#include "content/public/browser/web_contents.h"
#include "content/public/common/content_client.h"
#include "content/public/common/content_features.h"
#include "content/public/common/content_switches.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/content_browser_test.h"
@@ -286,9 +285,15 @@ class DirectSocketsTcpBrowserTest : public ContentBrowserTest {
protected:
void SetUpOnMainThread() override {
ContentBrowserTest::SetUpOnMainThread();
ASSERT_TRUE(NavigateToURL(shell(), GetTestPageURL()));
client_ = std::make_unique<test::IsolatedWebAppContentBrowserClient>(
url::Origin::Create(GetTestPageURL()));
scoped_client_ =
std::make_unique<ScopedContentBrowserClientSetting>(client_.get());
runner_ =
std::make_unique<content::test::AsyncJsRunner>(shell()->web_contents());
ASSERT_TRUE(NavigateToURL(shell(), GetTestPageURL()));
}
void SetUp() override {
@@ -297,26 +302,18 @@ class DirectSocketsTcpBrowserTest : public ContentBrowserTest {
ContentBrowserTest::SetUp();
}
void SetUpCommandLine(base::CommandLine* command_line) override {
ContentBrowserTest::SetUpCommandLine(command_line);
std::string origin_list =
GetTestOpenPageURL().spec() + "," + GetTestPageURL().spec();
command_line->AppendSwitchASCII(switches::kIsolatedAppOrigins, origin_list);
}
private:
BrowserContext* browser_context() {
return shell()->web_contents()->GetBrowserContext();
}
private:
test::IsolatedWebAppContentBrowserClient client_;
ScopedContentBrowserClientSetting setting{&client_};
base::test::ScopedFeatureList feature_list_;
base::test::ScopedFeatureList feature_list_{features::kIsolatedWebApps};
mojo::Remote<network::mojom::MdnsResponder> mdns_responder_;
mojo::Remote<network::mojom::TCPServerSocket> tcp_server_socket_;
std::unique_ptr<test::IsolatedWebAppContentBrowserClient> client_;
std::unique_ptr<ScopedContentBrowserClientSetting> scoped_client_;
std::unique_ptr<content::test::AsyncJsRunner> runner_;
};

@@ -14,6 +14,7 @@
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/web_contents_tester.h"
#include "third_party/blink/public/common/permissions_policy/origin_with_possible_wildcards.h"
#include "url/origin.h"
namespace content::test {
@@ -206,11 +207,15 @@ std::string AsyncJsRunner::MakeScriptSendResultToDomQueue(
script.c_str(), token_.ToString().c_str()));
}
IsolatedWebAppContentBrowserClient::IsolatedWebAppContentBrowserClient(
const url::Origin& isolated_app_origin)
: isolated_app_origin_(isolated_app_origin) {}
bool IsolatedWebAppContentBrowserClient::ShouldUrlUseApplicationIsolationLevel(
BrowserContext* browser_context,
const GURL& url,
bool origin_matches_flag) {
return origin_matches_flag;
return isolated_app_origin_ == url::Origin::Create(url);
}
absl::optional<blink::ParsedPermissionsPolicy>

@@ -29,6 +29,10 @@
#include "services/network/test/test_udp_socket.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
namespace url {
class Origin;
} // namespace url
namespace content::test {
// Mock Host Resolver for Direct Sockets browsertests.
@@ -197,6 +201,9 @@ std::string WrapAsync(const std::string& script);
// for isolated apps.
class IsolatedWebAppContentBrowserClient : public ContentBrowserClient {
public:
explicit IsolatedWebAppContentBrowserClient(
const url::Origin& isolated_app_origin);
bool ShouldUrlUseApplicationIsolationLevel(BrowserContext* browser_context,
const GURL& url,
bool origin_matches_flag) override;
@@ -205,6 +212,9 @@ class IsolatedWebAppContentBrowserClient : public ContentBrowserClient {
GetPermissionsPolicyForIsolatedWebApp(
content::BrowserContext* browser_context,
const url::Origin& app_origin) override;
private:
url::Origin isolated_app_origin_;
};
} // namespace content::test

@@ -15,7 +15,6 @@
#include "content/public/browser/web_contents.h"
#include "content/public/common/content_client.h"
#include "content/public/common/content_features.h"
#include "content/public/common/content_switches.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/content_browser_test.h"
@@ -77,9 +76,15 @@ class DirectSocketsUdpBrowserTest : public ContentBrowserTest {
protected:
void SetUpOnMainThread() override {
ContentBrowserTest::SetUpOnMainThread();
EXPECT_TRUE(NavigateToURL(shell(), GetTestPageURL()));
client_ = std::make_unique<test::IsolatedWebAppContentBrowserClient>(
url::Origin::Create(GetTestPageURL()));
scoped_client_ =
std::make_unique<ScopedContentBrowserClientSetting>(client_.get());
runner_ =
std::make_unique<content::test::AsyncJsRunner>(shell()->web_contents());
ASSERT_TRUE(NavigateToURL(shell(), GetTestPageURL()));
}
void SetUp() override {
@@ -89,13 +94,6 @@ class DirectSocketsUdpBrowserTest : public ContentBrowserTest {
ContentBrowserTest::SetUp();
}
void SetUpCommandLine(base::CommandLine* command_line) override {
ContentBrowserTest::SetUpCommandLine(command_line);
std::string origin_list = GetTestPageURL().spec();
command_line->AppendSwitchASCII(switches::kIsolatedAppOrigins, origin_list);
}
std::pair<net::IPEndPoint, network::test::UDPSocketTestHelper>
CreateUDPServerSocket(mojo::PendingRemote<network::mojom::UDPSocketListener>
listener_receiver_remote) {
@@ -124,11 +122,11 @@ class DirectSocketsUdpBrowserTest : public ContentBrowserTest {
return shell()->web_contents()->GetBrowserContext();
}
test::IsolatedWebAppContentBrowserClient client_;
ScopedContentBrowserClientSetting setting{&client_};
base::test::ScopedFeatureList feature_list_;
base::test::ScopedFeatureList feature_list_{features::kIsolatedWebApps};
mojo::Remote<network::mojom::UDPSocket> server_socket_;
std::unique_ptr<test::IsolatedWebAppContentBrowserClient> client_;
std::unique_ptr<ScopedContentBrowserClientSetting> scoped_client_;
std::unique_ptr<content::test::AsyncJsRunner> runner_;
};