Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(453)

Unified Diff: headless/lib/headless_browser_browsertest.cc

Issue 2181413002: [headless] Remove default browser context. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixes according to Sami's comments Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: headless/lib/headless_browser_browsertest.cc
diff --git a/headless/lib/headless_browser_browsertest.cc b/headless/lib/headless_browser_browsertest.cc
index b40aa28665dc992991c9b17c678bf6f6db59f1ce..a3e46dff15095c81f86cfa12f6929fe8f875bf46 100644
--- a/headless/lib/headless_browser_browsertest.cc
+++ b/headless/lib/headless_browser_browsertest.cc
@@ -20,23 +20,101 @@
namespace headless {
+namespace {
+
+template <class T>
+std::vector<T> Sorted(std::vector<T> vector) {
+ std::sort(vector.begin(), vector.end());
+ return vector;
+}
+
+} // namespace
+
IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, CreateAndDestroyWebContents) {
+ std::unique_ptr<HeadlessBrowserContext> browser_context =
+ browser()->CreateBrowserContextBuilder().Build();
HeadlessWebContents* web_contents =
- browser()->CreateWebContentsBuilder().Build();
+ browser_context->CreateWebContentsBuilder().Build();
EXPECT_TRUE(web_contents);
- EXPECT_EQ(static_cast<size_t>(1), browser()->GetAllWebContents().size());
- EXPECT_EQ(web_contents, browser()->GetAllWebContents()[0]);
+ EXPECT_EQ(browser()->GetAllWebContents(),
+ std::vector<HeadlessWebContents*>({web_contents}));
+ EXPECT_EQ(browser_context->GetAllWebContents(),
+ std::vector<HeadlessWebContents*>({web_contents}));
+
// TODO(skyostil): Verify viewport dimensions once we can.
+
web_contents->Close();
EXPECT_TRUE(browser()->GetAllWebContents().empty());
+ EXPECT_TRUE(browser_context->GetAllWebContents().empty());
+}
+
+IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest,
+ WebContentsAreDestroyedWithContext) {
+ std::unique_ptr<HeadlessBrowserContext> browser_context =
+ browser()->CreateBrowserContextBuilder().Build();
+ HeadlessWebContents* web_contents =
+ browser_context->CreateWebContentsBuilder().Build();
+ EXPECT_TRUE(web_contents);
+
+ EXPECT_EQ(browser()->GetAllWebContents(),
+ std::vector<HeadlessWebContents*>({web_contents}));
+
+ EXPECT_EQ(browser_context->GetAllWebContents(),
+ std::vector<HeadlessWebContents*>({web_contents}));
+
+ browser_context.reset();
+
+ EXPECT_TRUE(browser()->GetAllWebContents().empty());
+}
+
+IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, DestroyAndCreateTwoWebContents) {
+ std::unique_ptr<HeadlessBrowserContext> browser_context1 =
+ browser()->CreateBrowserContextBuilder().Build();
+ HeadlessWebContents* web_contents1 =
+ browser_context1->CreateWebContentsBuilder().Build();
+
+ EXPECT_EQ(browser()->GetAllWebContents(),
+ std::vector<HeadlessWebContents*>({web_contents1}));
+ EXPECT_EQ(browser_context1->GetAllWebContents(),
+ std::vector<HeadlessWebContents*>({web_contents1}));
+
+ std::unique_ptr<HeadlessBrowserContext> browser_context2 =
+ browser()->CreateBrowserContextBuilder().Build();
+ HeadlessWebContents* web_contents2 =
+ browser_context2->CreateWebContentsBuilder().Build();
+
+ EXPECT_EQ(Sorted(browser()->GetAllWebContents()),
+ Sorted(std::vector<HeadlessWebContents*>(
+ {web_contents1, web_contents2})));
+ EXPECT_EQ(browser_context1->GetAllWebContents(),
+ std::vector<HeadlessWebContents*>({web_contents1}));
+ EXPECT_EQ(browser_context2->GetAllWebContents(),
+ std::vector<HeadlessWebContents*>({web_contents2}));
+
+ browser_context1.reset();
+
+ EXPECT_EQ(browser()->GetAllWebContents(),
+ std::vector<HeadlessWebContents*>({web_contents2}));
+ EXPECT_EQ(browser_context2->GetAllWebContents(),
+ std::vector<HeadlessWebContents*>({web_contents2}));
+
+ browser_context2.reset();
+
+ EXPECT_TRUE(browser()->GetAllWebContents().empty());
}
IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, CreateWithBadURL) {
GURL bad_url("not_valid");
+
+ std::unique_ptr<HeadlessBrowserContext> browser_context =
+ browser()->CreateBrowserContextBuilder().Build();
HeadlessWebContents* web_contents =
- browser()->CreateWebContentsBuilder().SetInitialURL(bad_url).Build();
+ browser_context->CreateWebContentsBuilder()
+ .SetInitialURL(bad_url)
+ .Build();
+
EXPECT_FALSE(web_contents);
EXPECT_TRUE(browser()->GetAllWebContents().empty());
}
@@ -66,9 +144,11 @@ class HeadlessBrowserTestWithProxy : public HeadlessBrowserTest {
};
IN_PROC_BROWSER_TEST_F(HeadlessBrowserTestWithProxy, SetProxyServer) {
- HeadlessBrowser::Options::Builder builder;
- builder.SetProxyServer(proxy_server()->host_port_pair());
- SetBrowserOptions(builder.Build());
+ std::unique_ptr<HeadlessBrowserContext> browser_context =
+ browser()
+ ->CreateBrowserContextBuilder()
+ .SetProxyServer(proxy_server()->host_port_pair())
+ .Build();
// Load a page which doesn't actually exist, but for which the our proxy
// returns valid content anyway.
@@ -76,32 +156,36 @@ IN_PROC_BROWSER_TEST_F(HeadlessBrowserTestWithProxy, SetProxyServer) {
// TODO(altimin): Currently this construction does not serve hello.html
// from headless/test/data as expected. We should fix this.
HeadlessWebContents* web_contents =
- browser()
- ->CreateWebContentsBuilder()
+ browser_context->CreateWebContentsBuilder()
.SetInitialURL(GURL("http://not-an-actual-domain.tld/hello.html"))
.Build();
EXPECT_TRUE(WaitForLoad(web_contents));
- EXPECT_EQ(static_cast<size_t>(1), browser()->GetAllWebContents().size());
- EXPECT_EQ(web_contents, browser()->GetAllWebContents()[0]);
+ EXPECT_EQ(browser()->GetAllWebContents(),
+ std::vector<HeadlessWebContents*>({web_contents}));
web_contents->Close();
EXPECT_TRUE(browser()->GetAllWebContents().empty());
}
IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, SetHostResolverRules) {
EXPECT_TRUE(embedded_test_server()->Start());
- HeadlessBrowser::Options::Builder builder;
- builder.SetHostResolverRules(
+
+ std::string host_resolver_rules =
base::StringPrintf("MAP not-an-actual-domain.tld 127.0.0.1:%d",
- embedded_test_server()->host_port_pair().port()));
- SetBrowserOptions(builder.Build());
+ embedded_test_server()->host_port_pair().port());
+
+ std::unique_ptr<HeadlessBrowserContext> browser_context =
+ browser()
+ ->CreateBrowserContextBuilder()
+ .SetHostResolverRules(host_resolver_rules)
+ .Build();
// Load a page which doesn't actually exist, but which is turned into a valid
// address by our host resolver rules.
HeadlessWebContents* web_contents =
- browser()
- ->CreateWebContentsBuilder()
+ browser_context->CreateWebContentsBuilder()
.SetInitialURL(GURL("http://not-an-actual-domain.tld/hello.html"))
.Build();
+
EXPECT_TRUE(WaitForLoad(web_contents));
}
@@ -111,15 +195,16 @@ IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, HttpProtocolHandler) {
protocol_handlers[url::kHttpScheme] =
base::WrapUnique(new TestProtocolHandler(kResponseBody));
- HeadlessBrowser::Options::Builder builder;
- builder.SetProtocolHandlers(std::move(protocol_handlers));
- SetBrowserOptions(builder.Build());
+ std::unique_ptr<HeadlessBrowserContext> browser_context =
+ browser()
+ ->CreateBrowserContextBuilder()
+ .SetProtocolHandlers(std::move(protocol_handlers))
+ .Build();
// Load a page which doesn't actually exist, but which is fetched by our
// custom protocol handler.
HeadlessWebContents* web_contents =
- browser()
- ->CreateWebContentsBuilder()
+ browser_context->CreateWebContentsBuilder()
.SetInitialURL(GURL("http://not-an-actual-domain.tld/hello.html"))
.Build();
EXPECT_TRUE(WaitForLoad(web_contents));
@@ -138,15 +223,16 @@ IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, HttpsProtocolHandler) {
protocol_handlers[url::kHttpsScheme] =
base::WrapUnique(new TestProtocolHandler(kResponseBody));
- HeadlessBrowser::Options::Builder builder;
- builder.SetProtocolHandlers(std::move(protocol_handlers));
- SetBrowserOptions(builder.Build());
+ std::unique_ptr<HeadlessBrowserContext> browser_context =
+ browser()
+ ->CreateBrowserContextBuilder()
+ .SetProtocolHandlers(std::move(protocol_handlers))
+ .Build();
// Load a page which doesn't actually exist, but which is fetched by our
// custom protocol handler.
HeadlessWebContents* web_contents =
- browser()
- ->CreateWebContentsBuilder()
+ browser_context->CreateWebContentsBuilder()
.SetInitialURL(GURL("https://not-an-actual-domain.tld/hello.html"))
.Build();
EXPECT_TRUE(WaitForLoad(web_contents));
@@ -160,8 +246,11 @@ IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, HttpsProtocolHandler) {
}
IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, WebGLSupported) {
+ std::unique_ptr<HeadlessBrowserContext> browser_context =
+ browser()->CreateBrowserContextBuilder().Build();
+
HeadlessWebContents* web_contents =
- browser()->CreateWebContentsBuilder().Build();
+ browser_context->CreateWebContentsBuilder().Build();
bool webgl_supported;
EXPECT_TRUE(
@@ -175,8 +264,11 @@ IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, WebGLSupported) {
}
IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, DefaultSizes) {
+ std::unique_ptr<HeadlessBrowserContext> browser_context =
+ browser()->CreateBrowserContextBuilder().Build();
+
HeadlessWebContents* web_contents =
- browser()->CreateWebContentsBuilder().Build();
+ browser_context->CreateWebContentsBuilder().Build();
HeadlessBrowser::Options::Builder builder;
const HeadlessBrowser::Options kDefaultOptions = builder.Build();

Powered by Google App Engine
This is Rietveld 408576698