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

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: More fixes 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 6cfde124bf88dae1953c116278c969821c314b58..a4256b24ebe8f683e8e7032b5bb4c83e63472584 100644
--- a/headless/lib/headless_browser_browsertest.cc
+++ b/headless/lib/headless_browser_browsertest.cc
@@ -19,28 +19,96 @@
#include "net/cookies/cookie_store.h"
#include "net/test/spawned_test_server/spawned_test_server.h"
#include "net/url_request/url_request_context.h"
+#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/geometry/size.h"
+using testing::UnorderedElementsAre;
+
namespace headless {
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_THAT(browser()->GetAllWebContents(),
+ UnorderedElementsAre(web_contents));
+ EXPECT_THAT(browser_context->GetAllWebContents(),
+ UnorderedElementsAre(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_THAT(browser()->GetAllWebContents(),
+ UnorderedElementsAre(web_contents));
+ EXPECT_THAT(browser_context->GetAllWebContents(),
+ UnorderedElementsAre(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_THAT(browser()->GetAllWebContents(),
+ UnorderedElementsAre(web_contents1));
+ EXPECT_THAT(browser_context1->GetAllWebContents(),
+ UnorderedElementsAre(web_contents1));
+
+ std::unique_ptr<HeadlessBrowserContext> browser_context2 =
+ browser()->CreateBrowserContextBuilder().Build();
+ HeadlessWebContents* web_contents2 =
+ browser_context2->CreateWebContentsBuilder().Build();
+
+ EXPECT_THAT(browser()->GetAllWebContents(),
+ UnorderedElementsAre(web_contents1, web_contents2));
+ EXPECT_THAT(browser_context1->GetAllWebContents(),
+ UnorderedElementsAre(web_contents1));
+ EXPECT_THAT(browser_context2->GetAllWebContents(),
+ UnorderedElementsAre(web_contents2));
+
+ browser_context1.reset();
+
+ EXPECT_THAT(browser()->GetAllWebContents(),
+ UnorderedElementsAre(web_contents2));
+ EXPECT_THAT(browser_context2->GetAllWebContents(),
+ UnorderedElementsAre(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());
}
@@ -70,9 +138,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.
@@ -80,32 +150,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_THAT(browser()->GetAllWebContents(),
+ UnorderedElementsAre(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));
}
@@ -115,15 +189,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));
@@ -142,15 +217,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));
@@ -164,8 +240,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(
@@ -179,8 +258,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();
@@ -316,13 +398,14 @@ IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, ReadCookiesInProtocolHandler) {
protocol_handlers[url::kHttpsScheme] =
base::WrapUnique(new ProtocolHandlerWithCookies(&sent_cookies));
- 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();
HeadlessWebContents* web_contents =
- browser()
- ->CreateWebContentsBuilder()
+ browser_context->CreateWebContentsBuilder()
.SetInitialURL(GURL("https://example.com/cookie.html"))
.Build();
EXPECT_TRUE(WaitForLoad(web_contents));

Powered by Google App Engine
This is Rietveld 408576698