diff options
author | Peter Varga <pvarga@inf.u-szeged.hu> | 2017-09-05 16:10:41 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-09-17 00:39:59 +0000 |
commit | a12a811026baa86d7d8e4728d893114c76feec20 (patch) | |
tree | 102b3893f438dad2a48ebe3454ede5a2b2c218f0 /tests/auto/quick/shared/util.h | |
parent | a6d3799cf34569f5618e4b95f56a42f0e350e403 (diff) |
Commit the done-so-far IME composition on touch event
Fix is based on afc9e2d9674f7ab5800df4803cc68c71d1ae691a
Moreover, new quick auto test has been added to check that the commit
happens in case mouse and touch input events.
Task-number: QTBUG-62942
Change-Id: Ie9d55e0bb5b3bbc34c099502e735b94f37c5d5f8
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'tests/auto/quick/shared/util.h')
-rw-r--r-- | tests/auto/quick/shared/util.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/tests/auto/quick/shared/util.h b/tests/auto/quick/shared/util.h index dce0afb8e..8e7169be7 100644 --- a/tests/auto/quick/shared/util.h +++ b/tests/auto/quick/shared/util.h @@ -142,4 +142,81 @@ inline QString bodyInnerText(QQuickWebEngineView *webEngineView) return arguments.at(1).toString(); } +inline QString activeElementId(QQuickWebEngineView *webEngineView) +{ + qRegisterMetaType<QQuickWebEngineView::JavaScriptConsoleMessageLevel>("JavaScriptConsoleMessageLevel"); + QSignalSpy consoleMessageSpy(webEngineView, &QQuickWebEngineView::javaScriptConsoleMessage); + + webEngineView->runJavaScript( + "if (document.activeElement == null)" + " console.log('');" + "else" + " console.log(document.activeElement.id);" + ); + + if (!consoleMessageSpy.wait()) + return QString(); + + QList<QVariant> arguments = consoleMessageSpy.takeFirst(); + if (static_cast<QQuickWebEngineView::JavaScriptConsoleMessageLevel>(arguments.at(0).toInt()) != QQuickWebEngineView::InfoMessageLevel) + return QString(); + + return arguments.at(1).toString(); +} + +inline QString elementValue(QQuickWebEngineView *webEngineView, const QString &id) +{ + qRegisterMetaType<QQuickWebEngineView::JavaScriptConsoleMessageLevel>("JavaScriptConsoleMessageLevel"); + QSignalSpy consoleMessageSpy(webEngineView, &QQuickWebEngineView::javaScriptConsoleMessage); + + webEngineView->runJavaScript(QString( + "var element = document.getElementById('" + id + "');" + "if (element == null)" + " console.log('');" + "else" + " console.log(element.value);") + ); + + if (!consoleMessageSpy.wait()) + return QString(); + + QList<QVariant> arguments = consoleMessageSpy.takeFirst(); + if (static_cast<QQuickWebEngineView::JavaScriptConsoleMessageLevel>(arguments.at(0).toInt()) != QQuickWebEngineView::InfoMessageLevel) + return QString(); + + return arguments.at(1).toString(); +} + +inline QPoint elementCenter(QQuickWebEngineView *webEngineView, const QString &id) +{ + qRegisterMetaType<QQuickWebEngineView::JavaScriptConsoleMessageLevel>("JavaScriptConsoleMessageLevel"); + QSignalSpy consoleMessageSpy(webEngineView, &QQuickWebEngineView::javaScriptConsoleMessage); + + webEngineView->runJavaScript(QString( + "var element = document.getElementById('" + id + "');" + "var rect = element.getBoundingClientRect();" + "console.log((rect.left + rect.right) / 2);" + "console.log((rect.top + rect.bottom) / 2);") + ); + + QTRY_LOOP_IMPL(consoleMessageSpy.count() == 2, 5000, 50); + if (consoleMessageSpy.count() != 2) + return QPoint(); + + QList<QVariant> arguments; + double x, y; + + arguments = consoleMessageSpy.takeFirst(); + if (static_cast<QQuickWebEngineView::JavaScriptConsoleMessageLevel>(arguments.at(0).toInt()) != QQuickWebEngineView::InfoMessageLevel) + return QPoint(); + x = arguments.at(1).toDouble(); + + arguments = consoleMessageSpy.takeLast(); + if (static_cast<QQuickWebEngineView::JavaScriptConsoleMessageLevel>(arguments.at(0).toInt()) != QQuickWebEngineView::InfoMessageLevel) + return QPoint(); + y = arguments.at(1).toDouble(); + + return QPoint(x, y); +} + #endif /* UTIL_H */ |