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

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: Small 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 75ae5133006aef82ba6f7c8568817cf9c256f47c..84be35b373e570ec523372d4b24d1383435df1b8 100644
--- a/headless/lib/headless_browser_browsertest.cc
+++ b/headless/lib/headless_browser_browsertest.cc
@@ -20,23 +20,103 @@
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(),
Sami 2016/08/03 11:20:31 Should we change this to GetAllBrowserContexts to
altimin 2016/08/03 11:54:10 The problem is that we do not own browser contexts
Sami 2016/08/03 13:46:14 Sure, we don't own them but we can tell when they
altimin 2016/08/03 14:18:51 I was planning to do it in a next patch today or t
Sami 2016/08/03 14:25:49 Sounds good.
+ 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(),
Sami 2016/08/03 11:20:31 nit: I'm happy with this but another alternative w
altimin 2016/08/03 11:54:10 Acknowledged.
alex clarke (OOO till 29th) 2016/08/03 11:55:19 I'd prefer that, it has better error message on fa
altimin 2016/08/03 12:46:18 Vox Populi, Vox Dei. Done.
+ std::vector<HeadlessWebContents*>({web_contents}));
+
+ EXPECT_EQ(browser_context->GetAllWebContents(),
+ std::vector<HeadlessWebContents*>({web_contents}));
+
+ // TODO(skyostil): Verify viewport dimensions once we can.
Sami 2016/08/03 11:20:31 No need to do this in every test :)
altimin 2016/08/03 11:54:10 Amongst our weaponry are such diverse elements as:
+
+ 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 +146,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 +158,37 @@ 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 +198,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 +226,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 +249,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(EvaluateScript(

Powered by Google App Engine
This is Rietveld 408576698