summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJüri Valdmann <juri.valdmann@qt.io>2019-10-29 16:22:40 +0100
committerJüri Valdmann <juri.valdmann@qt.io>2019-11-08 13:10:32 +0100
commit7f1a6eede94d448436d42691d76e4fd76190b5fc (patch)
tree298bc07b8cf92afaf21d49ec96d4b8e9f6be3c40
parenta935e06da0c0bd42be5b08a5ca871b75ee25d267 (diff)
Add tst_QWebEnginePage::setHtmlWithModuleImport
Try importing JS modules from a setHtml page. Fixes: QTBUG-77282 Change-Id: I925bd3239688117c380ed3ae404dcb9547d99cac Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-rw-r--r--tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
index 0a65d4c02..27aa7a1f7 100644
--- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
+++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
@@ -158,6 +158,7 @@ private Q_SLOTS:
void setHtmlWithStylesheetResource();
void setHtmlWithBaseURL();
void setHtmlWithJSAlert();
+ void setHtmlWithModuleImport();
void baseUrl_data();
void baseUrl();
void scrollPosition();
@@ -2283,6 +2284,41 @@ void tst_QWebEnginePage::setHtmlWithJSAlert()
QCOMPARE(toHtmlSync(&page), html);
}
+void tst_QWebEnginePage::setHtmlWithModuleImport()
+{
+ HttpServer server;
+ connect(&server, &HttpServer::newRequest, [&](HttpReqRep *rr) {
+ if (rr->requestMethod() == "GET" && rr->requestPath() == "/fibonacci.mjs") {
+ rr->setResponseBody("export function fib(n) {\n"
+ " return n < 2 ? n : fib(n-1) + fib(n-2)\n"
+ "}\n");
+ rr->setResponseHeader("Content-Type", "text/javascript");
+ rr->sendResponse();
+ } else {
+ rr->setResponseStatus(404);
+ rr->sendResponse();
+ }
+ });
+ QVERIFY(server.start());
+
+ QString html("<html>\n"
+ " <head>\n"
+ " <script type='module'>\n"
+ " import {fib} from './fibonacci.mjs'\n"
+ " window.fib7 = fib(7)\n"
+ " </script>\n"
+ " </head>\n"
+ " <body></body>\n"
+ "</html>\n");
+
+ QWebEnginePage page;
+ QSignalSpy spy(&page, &QWebEnginePage::loadFinished);
+ page.setHtml(html, server.url());
+ QVERIFY(spy.count() || spy.wait());
+
+ QCOMPARE(evaluateJavaScriptSync(&page, "fib7"), QVariant(13));
+}
+
void tst_QWebEnginePage::baseUrl_data()
{
QTest::addColumn<QString>("html");