diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2019-10-29 16:22:40 +0100 |
---|---|---|
committer | Jüri Valdmann <juri.valdmann@qt.io> | 2019-11-08 13:10:32 +0100 |
commit | 7f1a6eede94d448436d42691d76e4fd76190b5fc (patch) | |
tree | 298bc07b8cf92afaf21d49ec96d4b8e9f6be3c40 | |
parent | a935e06da0c0bd42be5b08a5ca871b75ee25d267 (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.cpp | 36 |
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"); |