summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/qwebengineview
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2018-11-19 13:43:54 +0100
committerPeter Varga <pvarga@inf.u-szeged.hu>2018-11-22 13:16:12 +0000
commit44abfea789b8677a741530c44a0cd35e5276ddf3 (patch)
tree6648c696d2c70d3b141dc69faca724ec2e67d97f /tests/auto/widgets/qwebengineview
parent5fac32e6653e713f6e3e65e02e5c1b81df56c075 (diff)
Fix IME with negative start position
Change-Id: I64a39975788cc40c5e0595c1a0c5db9000889bfd Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'tests/auto/widgets/qwebengineview')
-rw-r--r--tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
index a0f8f11d2..a6487d19a 100644
--- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
+++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
@@ -2292,6 +2292,48 @@ void tst_QWebEngineView::imeComposition()
QTRY_COMPARE(view.focusProxy()->inputMethodQuery(Qt::ImAnchorPosition).toInt(), 15);
QTRY_COMPARE(view.focusProxy()->inputMethodQuery(Qt::ImCurrentSelection).toString(), QString(""));
QCOMPARE(selectionChangedSpy.count(), 2);
+ selectionChangedSpy.clear();
+
+
+ // 5. Mimic behavior of QtVirtualKeyboard with enabled text prediction.
+ evaluateJavaScriptSync(view.page(), "document.getElementById('input1').value='QtWebEngine';");
+ QTRY_COMPARE(evaluateJavaScriptSync(view.page(), "document.getElementById('input1').value").toString(), QString("QtWebEngine"));
+
+ // Move cursor into position.
+ QTest::keyClick(view.focusProxy(), Qt::Key_Home);
+ for (int j = 0; j < 2; ++j)
+ QTest::keyClick(view.focusProxy(), Qt::Key_Right);
+ QTRY_COMPARE(view.focusProxy()->inputMethodQuery(Qt::ImCursorPosition).toInt(), 2);
+
+ // Turn text into composition by using negative start position.
+ {
+ int replaceFrom = -1 * view.focusProxy()->inputMethodQuery(Qt::ImCursorPosition).toInt();
+ int replaceLength = view.focusProxy()->inputMethodQuery(Qt::ImSurroundingText).toString().size();
+
+ QList<QInputMethodEvent::Attribute> attributes;
+ QInputMethodEvent event("QtWebEngine", attributes);
+ event.setCommitString(QString(), replaceFrom, replaceLength);
+ QApplication::sendEvent(view.focusProxy(), &event);
+ }
+ QTRY_COMPARE(view.focusProxy()->inputMethodQuery(Qt::ImSurroundingText).toString(), QString(""));
+ QCOMPARE(view.focusProxy()->inputMethodQuery(Qt::ImCursorPosition).toInt(), 11);
+ QCOMPARE(view.focusProxy()->inputMethodQuery(Qt::ImAnchorPosition).toInt(), 11);
+ QCOMPARE(view.focusProxy()->inputMethodQuery(Qt::ImCurrentSelection).toString(), QString(""));
+ QCOMPARE(evaluateJavaScriptSync(view.page(), "document.getElementById('input1').value").toString(), QString("QtWebEngine"));
+
+ // Commit.
+ {
+ QList<QInputMethodEvent::Attribute> attributes;
+ QInputMethodEvent event(QString(), attributes);
+ event.setCommitString("QtWebEngine", 0, 0);
+ QApplication::sendEvent(view.focusProxy(), &event);
+ }
+ QTRY_COMPARE(view.focusProxy()->inputMethodQuery(Qt::ImSurroundingText).toString(), QString("QtWebEngine"));
+ QCOMPARE(view.focusProxy()->inputMethodQuery(Qt::ImCursorPosition).toInt(), 11);
+ QCOMPARE(view.focusProxy()->inputMethodQuery(Qt::ImAnchorPosition).toInt(), 11);
+ QCOMPARE(view.focusProxy()->inputMethodQuery(Qt::ImCurrentSelection).toString(), QString(""));
+ QCOMPARE(evaluateJavaScriptSync(view.page(), "document.getElementById('input1').value").toString(), QString("QtWebEngine"));
+ QCOMPARE(selectionChangedSpy.count(), 0);
}
void tst_QWebEngineView::newlineInTextarea()