summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2017-02-14 09:25:45 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-03-01 12:06:41 +0000
commit5c42809274288811b386b3cb3cd08000777e37c8 (patch)
tree2007a1e3228bbd1e9dc3ecd1dadb93332d27c8b7 /tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
parent70a76770763a4abd5cc9ce27659db16746dce06c (diff)
Rework unhandled key event propagation tests for 55-based Chromium
Since change https://codereview.chromium.org/2200833007 input elements are inappropriate for testing unconsumed key events. Test focus change on div elements instead. Change-Id: Ifa2f3e1bc9d6d9cb396fbad7caea907616d085b7 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp')
-rw-r--r--tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp43
1 files changed, 27 insertions, 16 deletions
diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
index 0451a8c0f..3b683e541 100644
--- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
+++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
@@ -378,29 +378,40 @@ void tst_QWebEngineView::unhandledKeyEventPropagation()
parentWidget.show();
QTest::qWaitForWindowExposed(&webView);
- QSignalSpy loadSpy(&webView, SIGNAL(loadFinished(bool)));
- webView.setHtml("<input type='text'/>");
- QTRY_COMPARE(loadSpy.count(), 1);
+ QSignalSpy loadFinishedSpy(&webView, SIGNAL(loadFinished(bool)));
+ webView.load(QUrl("qrc:///resources/keyboardEvents.html"));
+ QVERIFY(loadFinishedSpy.wait());
- evaluateJavaScriptSync(webView.page(), "document.body.firstChild.focus()");
+ evaluateJavaScriptSync(webView.page(), "document.getElementById('first_div').focus()");
+ QTRY_COMPARE(evaluateJavaScriptSync(webView.page(), "document.activeElement.id").toString(), QStringLiteral("first_div"));
+
+ QTest::sendKeyEvent(QTest::Press, webView.focusProxy(), Qt::Key_Right, QString(), Qt::NoModifier);
+ QTest::sendKeyEvent(QTest::Release, webView.focusProxy(), Qt::Key_Right, QString(), Qt::NoModifier);
+ // Right arrow key is unhandled thus focus is not changed
+ QTRY_COMPARE(parentWidget.releaseEvents.size(), 1);
+ QCOMPARE(evaluateJavaScriptSync(webView.page(), "document.activeElement.id").toString(), QStringLiteral("first_div"));
+
+ QTest::sendKeyEvent(QTest::Press, webView.focusProxy(), Qt::Key_Tab, QString(), Qt::NoModifier);
+ QTest::sendKeyEvent(QTest::Release, webView.focusProxy(), Qt::Key_Tab, QString(), Qt::NoModifier);
+ // Tab key is handled thus focus is changed
+ QTRY_COMPARE(parentWidget.releaseEvents.size(), 2);
+ QCOMPARE(evaluateJavaScriptSync(webView.page(), "document.activeElement.id").toString(), QStringLiteral("second_div"));
- QTest::sendKeyEvent(QTest::Press, webView.focusProxy(), Qt::Key_A, 'a', Qt::NoModifier);
- QTest::sendKeyEvent(QTest::Release, webView.focusProxy(), Qt::Key_A, 'a', Qt::NoModifier);
- QTest::sendKeyEvent(QTest::Press, webView.focusProxy(), Qt::Key_Left, QString(), Qt::NoModifier);
- QTest::sendKeyEvent(QTest::Release, webView.focusProxy(), Qt::Key_Left, QString(), Qt::NoModifier);
QTest::sendKeyEvent(QTest::Press, webView.focusProxy(), Qt::Key_Left, QString(), Qt::NoModifier);
QTest::sendKeyEvent(QTest::Release, webView.focusProxy(), Qt::Key_Left, QString(), Qt::NoModifier);
-
- // All this happens asychronously, wait for the last release event to know when we're done.
+ // Left arrow key is unhandled thus focus is not changed
QTRY_COMPARE(parentWidget.releaseEvents.size(), 3);
+ QCOMPARE(evaluateJavaScriptSync(webView.page(), "document.activeElement.id").toString(), QStringLiteral("second_div"));
+
+ // The page will consume the Tab key to change focus between elements while the arrow
+ // keys won't be used.
+ QCOMPARE(parentWidget.pressEvents.size(), 2);
+ QCOMPARE(parentWidget.pressEvents[0].key(), (int)Qt::Key_Right);
+ QCOMPARE(parentWidget.pressEvents[1].key(), (int)Qt::Key_Left);
- // The page will consume the 'a' and the first left key presses, the second left won't be
- // used since the cursor will already be at the left end of the text input.
// Key releases will all come back unconsumed.
- QCOMPARE(parentWidget.pressEvents.size(), 1);
- QCOMPARE(parentWidget.pressEvents[0].key(), (int)Qt::Key_Left);
- QCOMPARE(parentWidget.releaseEvents[0].key(), (int)Qt::Key_A);
- QCOMPARE(parentWidget.releaseEvents[1].key(), (int)Qt::Key_Left);
+ QCOMPARE(parentWidget.releaseEvents[0].key(), (int)Qt::Key_Right);
+ QCOMPARE(parentWidget.releaseEvents[1].key(), (int)Qt::Key_Tab);
QCOMPARE(parentWidget.releaseEvents[2].key(), (int)Qt::Key_Left);
}