summaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qmltests
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2019-05-15 10:33:07 +0200
committerPeter Varga <pvarga@inf.u-szeged.hu>2019-05-27 10:49:59 +0200
commit2c86c348d7a94f27d1e9e7a71c2435565cbe6fb5 (patch)
tree574dd43d6739aa975f8a40e150ff32946fca5899 /tests/auto/quick/qmltests
parente02bcb0855ebee0612cab0f3cd3f9fd494497336 (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/qmltests')
-rw-r--r--tests/auto/quick/qmltests/data/tst_action.qml54
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" });
+ }
}
}