summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp')
-rw-r--r--tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
index 6fd2a06ee..ee7f9b2c2 100644
--- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
+++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
@@ -217,6 +217,7 @@ private Q_SLOTS:
void registerProtocolHandler();
void dataURLFragment();
void devTools();
+ void openLinkInDifferentProfile();
private:
static QPoint elementCenter(QWebEnginePage *page, const QString &id);
@@ -4354,6 +4355,33 @@ void tst_QWebEnginePage::devTools()
QCOMPARE(devToolsPage.inspectedPage(), nullptr);
}
+void tst_QWebEnginePage::openLinkInDifferentProfile()
+{
+ class Page : public QWebEnginePage {
+ public:
+ QWebEnginePage *targetPage = nullptr;
+ Page(QWebEngineProfile *profile) : QWebEnginePage(profile) {}
+ private:
+ QWebEnginePage *createWindow(WebWindowType) override { return targetPage; }
+ };
+ QWebEngineProfile profile1, profile2;
+ Page page1(&profile1), page2(&profile2);
+ QWebEngineView view;
+ view.setPage(&page1);
+ view.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&view));
+ QSignalSpy spy1(&page1, &QWebEnginePage::loadFinished), spy2(&page2, &QWebEnginePage::loadFinished);
+ page1.setHtml("<html><body>"
+ "<a id='link' href='data:,hello'>link</a>"
+ "</body></html>");
+ QTRY_COMPARE(spy1.count(), 1);
+ QVERIFY(spy1.takeFirst().value(0).toBool());
+ page1.targetPage = &page2;
+ QTest::mouseClick(view.focusProxy(), Qt::MiddleButton, 0, elementCenter(&page1, "link"));
+ QTRY_COMPARE(spy2.count(), 1);
+ QVERIFY(spy2.takeFirst().value(0).toBool());
+}
+
static QByteArrayList params = {QByteArrayLiteral("--use-fake-device-for-media-stream")};
W_QTEST_MAIN(tst_QWebEnginePage, params)