blob: 7865c77b56b9c7e22e5de22556940d5dc2cc7f12 [file] [log] [blame]
skyostilfe116162016-02-26 20:53:331// Copyright 2016 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
mostynbc3d183b2016-04-04 11:02:455#include <memory>
eseckler9ef54762016-06-03 17:28:386#include <string>
7#include <vector>
mostynbc3d183b2016-04-04 11:02:458
skyostilfe116162016-02-26 20:53:339#include "content/public/test/browser_test.h"
altimineaffa8e02016-11-08 23:56:3110#include "headless/public/devtools/domains/page.h"
skyostilfe116162016-02-26 20:53:3311#include "headless/public/headless_browser.h"
eseckler9ef54762016-06-03 17:28:3812#include "headless/public/headless_devtools_client.h"
skyostilfe116162016-02-26 20:53:3313#include "headless/public/headless_web_contents.h"
14#include "headless/test/headless_browser_test.h"
altiminbf875c92016-08-04 17:09:0715#include "testing/gmock/include/gmock/gmock.h"
skyostilfe116162016-02-26 20:53:3316#include "testing/gtest/include/gtest/gtest.h"
17#include "ui/gfx/geometry/size.h"
18#include "url/gurl.h"
19
altiminbf875c92016-08-04 17:09:0720using testing::UnorderedElementsAre;
21
skyostilfe116162016-02-26 20:53:3322namespace headless {
23
24class HeadlessWebContentsTest : public HeadlessBrowserTest {};
25
skyostilfe116162016-02-26 20:53:3326IN_PROC_BROWSER_TEST_F(HeadlessWebContentsTest, Navigation) {
27 EXPECT_TRUE(embedded_test_server()->Start());
eseckler9ef54762016-06-03 17:28:3828
altiminbf875c92016-08-04 17:09:0729 HeadlessBrowserContext* browser_context =
altimin93a02402016-08-03 16:26:4330 browser()->CreateBrowserContextBuilder().Build();
31
skyostil25c2c0122016-06-09 12:54:1232 HeadlessWebContents* web_contents =
altimin93a02402016-08-03 16:26:4333 browser_context->CreateWebContentsBuilder()
skyostil25c2c0122016-06-09 12:54:1234 .SetInitialURL(embedded_test_server()->GetURL("/hello.html"))
35 .Build();
skyostil585fa602016-04-25 16:07:5636 EXPECT_TRUE(WaitForLoad(web_contents));
altiminb6d2d1fc2016-04-21 15:23:2237
altiminbf875c92016-08-04 17:09:0738 EXPECT_THAT(browser_context->GetAllWebContents(),
39 UnorderedElementsAre(web_contents));
altiminb6d2d1fc2016-04-21 15:23:2240}
41
42IN_PROC_BROWSER_TEST_F(HeadlessWebContentsTest, WindowOpen) {
43 EXPECT_TRUE(embedded_test_server()->Start());
44
altiminbf875c92016-08-04 17:09:0745 HeadlessBrowserContext* browser_context =
altimin93a02402016-08-03 16:26:4346 browser()->CreateBrowserContextBuilder().Build();
47
skyostil25c2c0122016-06-09 12:54:1248 HeadlessWebContents* web_contents =
altimin93a02402016-08-03 16:26:4349 browser_context->CreateWebContentsBuilder()
skyostil25c2c0122016-06-09 12:54:1250 .SetInitialURL(embedded_test_server()->GetURL("/window_open.html"))
51 .Build();
skyostil585fa602016-04-25 16:07:5652 EXPECT_TRUE(WaitForLoad(web_contents));
altiminb6d2d1fc2016-04-21 15:23:2253
altiminbf875c92016-08-04 17:09:0754 EXPECT_EQ(static_cast<size_t>(2),
55 browser_context->GetAllWebContents().size());
skyostilfe116162016-02-26 20:53:3356}
57
eseckler9ef54762016-06-03 17:28:3858class HeadlessWebContentsScreenshotTest
59 : public HeadlessAsyncDevTooledBrowserTest {
60 public:
61 void RunDevTooledTest() override {
62 devtools_client_->GetPage()->GetExperimental()->CaptureScreenshot(
63 page::CaptureScreenshotParams::Builder().Build(),
64 base::Bind(&HeadlessWebContentsScreenshotTest::OnScreenshotCaptured,
65 base::Unretained(this)));
66 }
67
68 void OnScreenshotCaptured(
69 std::unique_ptr<page::CaptureScreenshotResult> result) {
70 EXPECT_LT(0U, result->GetData().length());
71 FinishAsynchronousTest();
72 }
73};
74
75HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessWebContentsScreenshotTest);
76
skyostilfe116162016-02-26 20:53:3377} // namespace headless