summaryrefslogtreecommitdiffstats
path: root/tests/auto/core/devtools
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/core/devtools')
-rw-r--r--tests/auto/core/devtools/CMakeLists.txt10
-rw-r--r--tests/auto/core/devtools/tst_devtools.cpp69
2 files changed, 79 insertions, 0 deletions
diff --git a/tests/auto/core/devtools/CMakeLists.txt b/tests/auto/core/devtools/CMakeLists.txt
new file mode 100644
index 000000000..efde75240
--- /dev/null
+++ b/tests/auto/core/devtools/CMakeLists.txt
@@ -0,0 +1,10 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(tst_devtools
+ SOURCES
+ tst_devtools.cpp
+ LIBRARIES
+ Qt::WebEngineCore
+)
+
diff --git a/tests/auto/core/devtools/tst_devtools.cpp b/tests/auto/core/devtools/tst_devtools.cpp
new file mode 100644
index 000000000..7284f0d51
--- /dev/null
+++ b/tests/auto/core/devtools/tst_devtools.cpp
@@ -0,0 +1,69 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#include <QtTest/QtTest>
+
+#include <qwebenginepage.h>
+
+class tst_DevTools : public QObject {
+ Q_OBJECT
+
+private Q_SLOTS:
+ void attachAndDestroyPageFirst();
+ void attachAndDestroyInspectorFirst();
+};
+
+void tst_DevTools::attachAndDestroyPageFirst()
+{
+ // External inspector + manual destruction of page first
+ QWebEnginePage* page = new QWebEnginePage();
+ QWebEnginePage* inspector = new QWebEnginePage();
+
+ QSignalSpy spy(page, &QWebEnginePage::loadFinished);
+ page->load(QUrl("data:text/plain,foobarbaz"));
+ QTRY_COMPARE_WITH_TIMEOUT(spy.size(), 1, 12000);
+
+ // shouldn't do anything until page is set
+ page->triggerAction(QWebEnginePage::InspectElement);
+
+ inspector->setInspectedPage(page);
+ page->triggerAction(QWebEnginePage::InspectElement);
+
+ // This is deliberately racy:
+ QTest::qWait(10);
+
+ delete page;
+ delete inspector;
+}
+
+void tst_DevTools::attachAndDestroyInspectorFirst()
+{
+ // External inspector + manual destruction of inspector first
+ QWebEnginePage* page = new QWebEnginePage();
+
+ // shouldn't do anything until page is set
+ page->triggerAction(QWebEnginePage::InspectElement);
+
+ QWebEnginePage* inspector = new QWebEnginePage();
+ inspector->setInspectedPage(page);
+
+ QSignalSpy spy(page, &QWebEnginePage::loadFinished);
+ page->setHtml(QStringLiteral("<body><h1>FOO BAR!</h1></body>"));
+ QTRY_COMPARE_WITH_TIMEOUT(spy.size(), 1, 12000);
+
+ page->triggerAction(QWebEnginePage::InspectElement);
+
+ delete inspector;
+
+ page->triggerAction(QWebEnginePage::InspectElement);
+
+ // This is deliberately racy:
+ QTest::qWait(10);
+
+ delete page;
+}
+
+
+QTEST_MAIN(tst_DevTools)
+
+#include "tst_devtools.moc"