| Index: headless/lib/headless_devtools_client_browsertest.cc
|
| diff --git a/headless/lib/headless_devtools_client_browsertest.cc b/headless/lib/headless_devtools_client_browsertest.cc
|
| index 161d8301af1400ee4f905734a3c53bea9ff7bac0..ab22e203028054522efada75f0bd8c0097e89e3e 100644
|
| --- a/headless/lib/headless_devtools_client_browsertest.cc
|
| +++ b/headless/lib/headless_devtools_client_browsertest.cc
|
| @@ -12,6 +12,7 @@
|
| #include "content/public/common/url_constants.h"
|
| #include "content/public/test/browser_test.h"
|
| #include "headless/lib/browser/headless_web_contents_impl.h"
|
| +#include "headless/public/devtools/domains/browser.h"
|
| #include "headless/public/devtools/domains/dom.h"
|
| #include "headless/public/devtools/domains/emulation.h"
|
| #include "headless/public/devtools/domains/inspector.h"
|
| @@ -86,6 +87,165 @@ class HeadlessDevToolsClientNavigationTest
|
|
|
| HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsClientNavigationTest);
|
|
|
| +class HeadlessDevToolsClientWindowManagementTest
|
| + : public HeadlessAsyncDevTooledBrowserTest {
|
| + public:
|
| + void SetWindowBounds(
|
| + const gfx::Rect& rect,
|
| + base::Callback<void(std::unique_ptr<browser::SetWindowBoundsResult>)>
|
| + callback) {
|
| + std::unique_ptr<headless::browser::Bounds> bounds =
|
| + headless::browser::Bounds::Builder()
|
| + .SetLeft(rect.x())
|
| + .SetTop(rect.y())
|
| + .SetWidth(rect.width())
|
| + .SetHeight(rect.height())
|
| + .SetWindowState(browser::WindowState::NORMAL)
|
| + .Build();
|
| + int window_id = HeadlessWebContentsImpl::From(web_contents_)->window_id();
|
| + std::unique_ptr<browser::SetWindowBoundsParams> params =
|
| + browser::SetWindowBoundsParams::Builder()
|
| + .SetWindowId(window_id)
|
| + .SetBounds(std::move(bounds))
|
| + .Build();
|
| + browser_devtools_client_->GetBrowser()->GetExperimental()->SetWindowBounds(
|
| + std::move(params), callback);
|
| + }
|
| +
|
| + void SetWindowState(
|
| + const browser::WindowState state,
|
| + base::Callback<void(std::unique_ptr<browser::SetWindowBoundsResult>)>
|
| + callback) {
|
| + std::unique_ptr<headless::browser::Bounds> bounds =
|
| + headless::browser::Bounds::Builder().SetWindowState(state).Build();
|
| + int window_id = HeadlessWebContentsImpl::From(web_contents_)->window_id();
|
| + std::unique_ptr<browser::SetWindowBoundsParams> params =
|
| + browser::SetWindowBoundsParams::Builder()
|
| + .SetWindowId(window_id)
|
| + .SetBounds(std::move(bounds))
|
| + .Build();
|
| + browser_devtools_client_->GetBrowser()->GetExperimental()->SetWindowBounds(
|
| + std::move(params), callback);
|
| + }
|
| +
|
| + void GetWindowBounds(
|
| + base::Callback<void(std::unique_ptr<browser::GetWindowBoundsResult>)>
|
| + callback) {
|
| + int window_id = HeadlessWebContentsImpl::From(web_contents_)->window_id();
|
| + std::unique_ptr<browser::GetWindowBoundsParams> params =
|
| + browser::GetWindowBoundsParams::Builder()
|
| + .SetWindowId(window_id)
|
| + .Build();
|
| +
|
| + browser_devtools_client_->GetBrowser()->GetExperimental()->GetWindowBounds(
|
| + std::move(params), callback);
|
| + }
|
| +
|
| + void CheckWindowBounds(
|
| + const gfx::Rect& bounds,
|
| + const browser::WindowState state,
|
| + std::unique_ptr<browser::GetWindowBoundsResult> result) {
|
| + const headless::browser::Bounds* actual_bounds = result->GetBounds();
|
| + EXPECT_EQ(bounds.x(), actual_bounds->GetLeft());
|
| + EXPECT_EQ(bounds.y(), actual_bounds->GetTop());
|
| + EXPECT_EQ(bounds.width(), actual_bounds->GetWidth());
|
| + EXPECT_EQ(bounds.height(), actual_bounds->GetHeight());
|
| + EXPECT_EQ(state, actual_bounds->GetWindowState());
|
| + }
|
| +};
|
| +
|
| +class HeadlessDevToolsClientChangeWindowBoundsTest
|
| + : public HeadlessDevToolsClientWindowManagementTest {
|
| + void RunDevTooledTest() override {
|
| + SetWindowBounds(
|
| + gfx::Rect(100, 200, 300, 400),
|
| + base::Bind(
|
| + &HeadlessDevToolsClientChangeWindowBoundsTest::OnSetWindowBounds,
|
| + base::Unretained(this)));
|
| + }
|
| +
|
| + void OnSetWindowBounds(
|
| + std::unique_ptr<browser::SetWindowBoundsResult> result) {
|
| + GetWindowBounds(base::Bind(
|
| + &HeadlessDevToolsClientChangeWindowBoundsTest::OnGetWindowBounds,
|
| + base::Unretained(this)));
|
| + }
|
| +
|
| + void OnGetWindowBounds(
|
| + std::unique_ptr<browser::GetWindowBoundsResult> result) {
|
| + CheckWindowBounds(gfx::Rect(100, 200, 300, 400),
|
| + browser::WindowState::NORMAL, std::move(result));
|
| + FinishAsynchronousTest();
|
| + }
|
| +};
|
| +
|
| +HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsClientChangeWindowBoundsTest);
|
| +
|
| +class HeadlessDevToolsClientChangeWindowStateTest
|
| + : public HeadlessDevToolsClientWindowManagementTest {
|
| + public:
|
| + explicit HeadlessDevToolsClientChangeWindowStateTest(
|
| + browser::WindowState state)
|
| + : state_(state){};
|
| +
|
| + void RunDevTooledTest() override {
|
| + SetWindowState(
|
| + state_,
|
| + base::Bind(
|
| + &HeadlessDevToolsClientChangeWindowStateTest::OnSetWindowState,
|
| + base::Unretained(this)));
|
| + }
|
| +
|
| + void OnSetWindowState(
|
| + std::unique_ptr<browser::SetWindowBoundsResult> result) {
|
| + GetWindowBounds(base::Bind(
|
| + &HeadlessDevToolsClientChangeWindowStateTest::OnGetWindowState,
|
| + base::Unretained(this)));
|
| + }
|
| +
|
| + void OnGetWindowState(
|
| + std::unique_ptr<browser::GetWindowBoundsResult> result) {
|
| + HeadlessBrowser::Options::Builder builder;
|
| + const HeadlessBrowser::Options kDefaultOptions = builder.Build();
|
| + CheckWindowBounds(gfx::Rect(kDefaultOptions.window_size), state_,
|
| + std::move(result));
|
| + FinishAsynchronousTest();
|
| + }
|
| +
|
| + protected:
|
| + browser::WindowState state_;
|
| +};
|
| +
|
| +class HeadlessDevToolsClientMinimizeWindowTest
|
| + : public HeadlessDevToolsClientChangeWindowStateTest {
|
| + public:
|
| + HeadlessDevToolsClientMinimizeWindowTest()
|
| + : HeadlessDevToolsClientChangeWindowStateTest(
|
| + browser::WindowState::MINIMIZED){};
|
| +};
|
| +
|
| +HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsClientMinimizeWindowTest);
|
| +
|
| +class HeadlessDevToolsClientMaximizeWindowTest
|
| + : public HeadlessDevToolsClientChangeWindowStateTest {
|
| + public:
|
| + HeadlessDevToolsClientMaximizeWindowTest()
|
| + : HeadlessDevToolsClientChangeWindowStateTest(
|
| + browser::WindowState::MAXIMIZED){};
|
| +};
|
| +
|
| +HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsClientMaximizeWindowTest);
|
| +
|
| +class HeadlessDevToolsClientFullscreenWindowTest
|
| + : public HeadlessDevToolsClientChangeWindowStateTest {
|
| + public:
|
| + HeadlessDevToolsClientFullscreenWindowTest()
|
| + : HeadlessDevToolsClientChangeWindowStateTest(
|
| + browser::WindowState::FULLSCREEN){};
|
| +};
|
| +
|
| +HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsClientFullscreenWindowTest);
|
| +
|
| class HeadlessDevToolsClientEvalTest
|
| : public HeadlessAsyncDevTooledBrowserTest {
|
| public:
|
|
|