summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
diff options
context:
space:
mode:
authorJüri Valdmann <juri.valdmann@qt.io>2018-07-30 12:52:00 +0200
committerJüri Valdmann <juri.valdmann@qt.io>2018-08-27 14:30:13 +0000
commit088df145283d32d671f2c7d58193b684cc0d4e1f (patch)
tree1c6511ce82d8ebc339ef9688627d4684ef2ed4f1 /tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
parente9e79c3f90eed42843b9fc5f7c9dfa40f4cb46a7 (diff)
WebEventFactory: Fallback for WebKeyboardEvent::dom_code
Usually this field should be computed from the native scan code, but sometimes we do not have a native scan code (in tests, for example). Add a fallback case to compute this field from windows_key_code, with test. Task-number: QTBUG-69442 Change-Id: I046094032576f4215cc8b3a6ced699a86ea148a9 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Diffstat (limited to 'tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp')
-rw-r--r--tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp26
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"