diff options
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp index d01a5365f..5f30fa6b9 100644 --- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp +++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp @@ -187,6 +187,7 @@ private Q_SLOTS: void webUIURLs_data(); void webUIURLs(); void visibilityState(); + void jsKeyboardEvent(); }; // This will be called before the first test function is executed. @@ -2767,5 +2768,30 @@ void tst_QWebEngineView::visibilityState() QCOMPARE(evaluateJavaScriptSync(view.page(), "document.visibilityState").toString(), QStringLiteral("visible")); } +void tst_QWebEngineView::jsKeyboardEvent() +{ + QWebEngineView view; + evaluateJavaScriptSync( + view.page(), + "var log = '';" + "addEventListener('keydown', (ev) => {" + " log += [ev.keyCode, ev.code, ev.key, ev.ctrlKey, ev.shiftKey, ev.altKey].join(',') + ';';" + "});"); + // Note that this only tests the fallback code path where native scan codes are not used. +#if defined(Q_OS_MACOS) + // See Qt::AA_MacDontSwapCtrlAndMeta + QTest::keyClick(view.focusProxy(), 'A', Qt::MetaModifier | Qt::ShiftModifier); +#else + QTest::keyClick(view.focusProxy(), 'A', Qt::ControlModifier | Qt::ShiftModifier); +#endif + QString expected = QStringLiteral( + "16,ShiftLeft,Shift,false,true,false;" + "17,ControlLeft,Control,true,true,false;" + "65,KeyA,A,true,true,false;" + ); + QTRY_VERIFY(evaluateJavaScriptSync(view.page(), "log") != QVariant(QString())); + QCOMPARE(evaluateJavaScriptSync(view.page(), "log"), expected); +} + QTEST_MAIN(tst_QWebEngineView) #include "tst_qwebengineview.moc" |