diff options
author | Peter Varga <pvarga@inf.u-szeged.hu> | 2019-05-15 10:33:07 +0200 |
---|---|---|
committer | Peter Varga <pvarga@inf.u-szeged.hu> | 2019-05-27 10:49:59 +0200 |
commit | 2c86c348d7a94f27d1e9e7a71c2435565cbe6fb5 (patch) | |
tree | 574dd43d6739aa975f8a40e150ff32946fca5899 /tests/auto/quick | |
parent | e02bcb0855ebee0612cab0f3cd3f9fd494497336 (diff) |
Disable edit actions when content has no focused frame
Task-number: QTBUG-75505
Change-Id: Ia1329ff554a86e307aa7995e9af1665ea6c5e64c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'tests/auto/quick')
-rw-r--r-- | tests/auto/quick/qmltests/data/tst_action.qml | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/auto/quick/qmltests/data/tst_action.qml b/tests/auto/quick/qmltests/data/tst_action.qml index f6d8669fe..56a91d8d0 100644 --- a/tests/auto/quick/qmltests/data/tst_action.qml +++ b/tests/auto/quick/qmltests/data/tst_action.qml @@ -127,5 +127,59 @@ TestWebEngineView { stopAction.trigger(); compare(stopTriggerSpy.count, 0); } + + function test_editActionsWithExplicitFocus() { + var webView = Qt.createQmlObject("TestWebEngineView { visible: false; }", webEngineView); + webView.settings.focusOnNavigationEnabled = false; + + // The view is hidden and no focus on the page. Edit actions should be disabled. + var selectAllAction = webView.action(WebEngineView.SelectAll); + verify(selectAllAction); + verify(!selectAllAction.enabled); + + var triggerSpy = createTemporaryObject(signalSpy, webEngineView, {target: selectAllAction, signalName: "triggered"}); + var enabledSpy = createTemporaryObject(signalSpy, webEngineView, {target: selectAllAction, signalName: "enabledChanged"}); + + webView.loadHtml("<html><body><div>foo bar</div></body></html>"); + verify(webView.waitForLoadSucceeded()); + + // Still no focus because focus on navigation is disabled. Edit actions don't do anything (should not crash). + verify(!selectAllAction.enabled); + compare(enabledSpy.count, 0); + selectAllAction.trigger(); + compare(triggerSpy.count, 0); + compare(getTextSelection(), ""); + + // Focus content by focusing window from JavaScript. Edit actions should be enabled and functional. + webView.runJavaScript("window.focus();"); + tryVerify(function() { return enabledSpy.count === 1 }); + verify(selectAllAction.enabled); + selectAllAction.trigger(); + compare(triggerSpy.count, 1); + tryVerify(function() { return webView.getTextSelection() === "foo bar" }); + } + + function test_editActionsWithInitialFocus() { + var webView = Qt.createQmlObject("TestWebEngineView { visible: false; }", webEngineView); + webView.settings.focusOnNavigationEnabled = true; + + // The view is hidden and no focus on the page. Edit actions should be disabled. + var selectAllAction = webView.action(WebEngineView.SelectAll); + verify(selectAllAction); + verify(!selectAllAction.enabled); + + var triggerSpy = createTemporaryObject(signalSpy, webEngineView, {target: selectAllAction, signalName: "triggered"}); + var enabledSpy = createTemporaryObject(signalSpy, webEngineView, {target: selectAllAction, signalName: "enabledChanged"}); + + webView.loadHtml("<html><body><div>foo bar</div></body></html>"); + verify(webView.waitForLoadSucceeded()); + + // Content gets initial focus. + tryVerify(function() { return enabledSpy.count === 1 }); + verify(selectAllAction.enabled); + selectAllAction.trigger(); + compare(triggerSpy.count, 1); + tryVerify(function() { return webView.getTextSelection() === "foo bar" }); + } } } |