summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-11-08 13:40:27 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-11-16 09:38:00 +0000
commite5bc5a6dbdd915e0b19cfc43e7af17e43c1a7878 (patch)
tree93e34da8a4f18376eb8735f3f404aa579d1d6854 /tests
parent8950f46d49f33767dc31770da517144e50fd27ff (diff)
Test-case for closing opener tab
Change-Id: Ib8b19335148ff71fa8817ce3d9a5d2af2fb9916e Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
index 92e281873..a0f8f11d2 100644
--- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
+++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
@@ -191,6 +191,7 @@ private Q_SLOTS:
void visibilityState();
void jsKeyboardEvent();
void deletePage();
+ void closeOpenerTab();
};
// This will be called before the first test function is executed.
@@ -2905,5 +2906,41 @@ void tst_QWebEngineView::deletePage()
QTRY_VERIFY(spy.count());
}
+class TestView : public QWebEngineView {
+ Q_OBJECT
+public:
+ TestView(QWidget *parent = nullptr) : QWebEngineView(parent)
+ {
+ }
+
+ QWebEngineView *createWindow(QWebEnginePage::WebWindowType) override
+ {
+ TestView *view = new TestView(parentWidget());
+ createdWindows.append(view);
+ return view;
+ }
+ QList<TestView *> createdWindows;
+};
+
+void tst_QWebEngineView::closeOpenerTab()
+{
+ QWidget rootWidget;
+ rootWidget.resize(600, 400);
+ auto *testView = new TestView(&rootWidget);
+ testView->settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true);
+ QSignalSpy loadFinishedSpy(testView, SIGNAL(loadFinished(bool)));
+ testView->setUrl(QStringLiteral("about:blank"));
+ QTRY_VERIFY(loadFinishedSpy.count());
+ testView->page()->runJavaScript(QStringLiteral("window.open('about:blank','_blank')"));
+ QTRY_COMPARE(testView->createdWindows.size(), 1);
+ auto *newView = testView->createdWindows.at(0);
+ newView->show();
+ rootWidget.show();
+ QVERIFY(QTest::qWaitForWindowExposed(newView));
+ QVERIFY(newView->focusProxy()->isVisible());
+ delete testView;
+ QVERIFY(newView->focusProxy()->isVisible());
+}
+
QTEST_MAIN(tst_QWebEngineView)
#include "tst_qwebengineview.moc"