diff options
Diffstat (limited to 'tests/auto/widgets/qwebenginepage')
-rw-r--r-- | tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp | 72 |
1 files changed, 70 insertions, 2 deletions
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp index f0a89d9aa..85939a686 100644 --- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp +++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp @@ -191,6 +191,8 @@ private Q_SLOTS: void macCopyUnicodeToClipboard(); #endif + void runJavaScript(); + private: QWebEngineView* m_view; QWebEnginePage* m_page; @@ -3563,14 +3565,14 @@ void tst_QWebEnginePage::getUserMediaRequest() QVERIFY(evaluateJavaScriptSync(page, QStringLiteral("!!navigator.webkitGetUserMedia")).toBool()); evaluateJavaScriptSync(page, QStringLiteral("navigator.webkitGetUserMedia({audio: true}, function() {}, function(){})")); - QTRY_VERIFY_WITH_TIMEOUT(page->gotFeatureRequest(QWebEnginePage::MediaAudioDevices), 100); + QTRY_VERIFY_WITH_TIMEOUT(page->gotFeatureRequest(QWebEnginePage::MediaAudioCapture), 100); // Might end up failing due to the lack of physical media devices deeper in the content layer, so the JS callback is not guaranteed to be called, // but at least we go through that code path, potentially uncovering failing assertions. page->acceptPendingRequest(); page->runJavaScript(QStringLiteral("errorCallbackCalled = false;")); evaluateJavaScriptSync(page, QStringLiteral("navigator.webkitGetUserMedia({audio: true, video: true}, function() {}, function(){errorCallbackCalled = true;})")); - QTRY_VERIFY_WITH_TIMEOUT(page->gotFeatureRequest(QWebEnginePage::MediaAudioVideoDevices), 100); + QTRY_VERIFY_WITH_TIMEOUT(page->gotFeatureRequest(QWebEnginePage::MediaAudioVideoCapture), 100); page->rejectPendingRequest(); // Should always end up calling the error callback in JS. QTRY_VERIFY_WITH_TIMEOUT(evaluateJavaScriptSync(page, QStringLiteral("errorCallbackCalled;")).toBool(), 100); delete page; @@ -3666,5 +3668,71 @@ void tst_QWebEnginePage::cssMediaTypePageSetting() #endif } +class JavaScriptCallback +{ +public: + JavaScriptCallback() { } + JavaScriptCallback(const QVariant& _expected) : expected(_expected) { } + virtual void operator() (const QVariant& result) { + QVERIFY(result.isValid()); + QCOMPARE(result, expected); + } +private: + QVariant expected; +}; + +class JavaScriptCallbackNull +{ +public: + virtual void operator() (const QVariant& result) { + QVERIFY(result.isNull()); +// FIXME: Returned null values are currently invalid QVariants. +// QVERIFY(result.isValid()); + } +}; + +class JavaScriptCallbackUndefined +{ +public: + virtual void operator() (const QVariant& result) { + QVERIFY(result.isNull()); + QVERIFY(!result.isValid()); + } +}; + +void tst_QWebEnginePage::runJavaScript() +{ + TestPage page; + + JavaScriptCallback callbackBool(QVariant(false)); + page.runJavaScript("false", QWebEngineCallback<const QVariant&>(callbackBool)); + + JavaScriptCallback callbackInt(QVariant(2)); + page.runJavaScript("2", QWebEngineCallback<const QVariant&>(callbackInt)); + + JavaScriptCallback callbackDouble(QVariant(2.5)); + page.runJavaScript("2.5", QWebEngineCallback<const QVariant&>(callbackDouble)); + + JavaScriptCallback callbackString(QVariant(QStringLiteral("Test"))); + page.runJavaScript("\"Test\"", QWebEngineCallback<const QVariant&>(callbackString)); + + QVariantList list; + JavaScriptCallback callbackList(list); + page.runJavaScript("[]", QWebEngineCallback<const QVariant&>(callbackList)); + + QVariantMap map; + map.insert(QStringLiteral("test"), QVariant(2)); + JavaScriptCallback callbackMap(map); + page.runJavaScript("var el = {\"test\": 2}; el", QWebEngineCallback<const QVariant&>(callbackMap)); + + JavaScriptCallbackNull callbackNull; + page.runJavaScript("null", QWebEngineCallback<const QVariant&>(callbackNull)); + + JavaScriptCallbackNull callbackUndefined; + page.runJavaScript("undefined", QWebEngineCallback<const QVariant&>(callbackUndefined)); + + QTest::qWait(100); +} + QTEST_MAIN(tst_QWebEnginePage) #include "tst_qwebenginepage.moc" |