| 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();
|
|
|