summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJüri Valdmann <juri.valdmann@qt.io>2019-07-02 12:36:34 +0200
committerJüri Valdmann <juri.valdmann@qt.io>2019-07-08 09:34:06 +0200
commit3c34f95ad4a96737f66ab4933edb9e00abecdc24 (patch)
tree3249d3d1680a0f63e684a9564edff85cc51cc3dd /tests
parent76846a183e956abfa1ae950a6fe9e58edfeb2a56 (diff)
Disable Cut/Copy/Unselect actions when there's no selection
Fixes: QTBUG-76666 Change-Id: I74b9a26cd7be9a830f4eecd36db69777412ab316 Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/quick/qmltests/data/tst_action.qml16
-rw-r--r--tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp39
2 files changed, 47 insertions, 8 deletions
diff --git a/tests/auto/quick/qmltests/data/tst_action.qml b/tests/auto/quick/qmltests/data/tst_action.qml
index 56a91d8d0..852d4145a 100644
--- a/tests/auto/quick/qmltests/data/tst_action.qml
+++ b/tests/auto/quick/qmltests/data/tst_action.qml
@@ -51,8 +51,8 @@ TestWebEngineView {
{ webAction: WebEngineView.Forward, text: "Forward", iconName: "go-next", enabled: false },
{ webAction: WebEngineView.Stop, text: "Stop", iconName: "", enabled: false },
{ webAction: WebEngineView.Reload, text: "Reload", iconName: "view-refresh", enabled: true },
- { webAction: WebEngineView.Cut, text: "Cut", iconName: "Cut", enabled: true },
- { webAction: WebEngineView.Copy, text: "Copy", iconName: "", enabled: true },
+ { webAction: WebEngineView.Cut, text: "Cut", iconName: "Cut", enabled: false },
+ { webAction: WebEngineView.Copy, text: "Copy", iconName: "", enabled: false },
{ webAction: WebEngineView.Paste, text: "Paste", iconName: "", enabled: true },
{ webAction: WebEngineView.Undo, text: "Undo", iconName: "", enabled: true },
{ webAction: WebEngineView.Redo, text: "Redo", iconName: "", enabled: true },
@@ -76,7 +76,7 @@ TestWebEngineView {
{ webAction: WebEngineView.InspectElement, text: "Inspect", iconName: "", enabled: true },
{ webAction: WebEngineView.ExitFullScreen, text: "Exit full screen", iconName: "", enabled: true },
{ webAction: WebEngineView.RequestClose, text: "Close Page", iconName: "", enabled: true },
- { webAction: WebEngineView.Unselect, text: "Unselect", iconName: "", enabled: true },
+ { webAction: WebEngineView.Unselect, text: "Unselect", iconName: "", enabled: false },
{ webAction: WebEngineView.SavePage, text: "Save page", iconName: "", enabled: true },
{ webAction: WebEngineView.ViewSource, text: "View page source", iconName: "view-source", enabled: true },
{ webAction: WebEngineView.ToggleBold, text: "&Bold", iconName: "", enabled: true },
@@ -110,17 +110,17 @@ TestWebEngineView {
webEngineView.url = Qt.resolvedUrl("test1.html");
verify(webEngineView.waitForLoadSucceeded());
- var copyAction = webEngineView.action(WebEngineView.Copy);
- verify(copyAction);
+ var selectAction = webEngineView.action(WebEngineView.SelectAll);
+ verify(selectAction);
var stopAction = webEngineView.action(WebEngineView.Stop);
verify(stopAction);
- var triggerSpy = createTemporaryObject(signalSpy, actionTests, {target: copyAction, signalName: "triggered"});
+ var triggerSpy = createTemporaryObject(signalSpy, actionTests, {target: selectAction, signalName: "triggered"});
var stopTriggerSpy = createTemporaryObject(signalSpy, actionTests, {target: stopAction, signalName: "triggered"});
- verify(copyAction.enabled);
- copyAction.trigger();
+ verify(selectAction.enabled);
+ selectAction.trigger();
compare(triggerSpy.count, 1);
verify(!stopAction.enabled);
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
index e579879f4..1c9e6c7b1 100644
--- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
+++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
@@ -218,6 +218,7 @@ private Q_SLOTS:
void editActionsWithExplicitFocus();
void editActionsWithInitialFocus();
void editActionsWithFocusOnIframe();
+ void editActionsWithoutSelection();
private:
static QPoint elementCenter(QWebEnginePage *page, const QString &id);
@@ -4141,6 +4142,44 @@ void tst_QWebEnginePage::editActionsWithFocusOnIframe()
QCOMPARE(page->selectedText(), QStringLiteral("inner"));
}
+void tst_QWebEnginePage::editActionsWithoutSelection()
+{
+ QWebEngineView view;
+ QWebEnginePage *page = view.page();
+ view.settings()->setAttribute(QWebEngineSettings::FocusOnNavigationEnabled, true);
+
+ QSignalSpy loadFinishedSpy(page, &QWebEnginePage::loadFinished);
+ QSignalSpy selectionChangedSpy(page, &QWebEnginePage::selectionChanged);
+ QSignalSpy actionChangedSpy(page->action(QWebEnginePage::SelectAll), &QAction::changed);
+
+ page->setHtml(QString("<html><body><div>foo bar</div></body></html>"));
+ QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE(actionChangedSpy.count(), 1);
+
+ QVERIFY(!page->action(QWebEnginePage::Cut)->isEnabled());
+ QVERIFY(!page->action(QWebEnginePage::Copy)->isEnabled());
+ QVERIFY(page->action(QWebEnginePage::Paste)->isEnabled());
+ QVERIFY(page->action(QWebEnginePage::Undo)->isEnabled());
+ QVERIFY(page->action(QWebEnginePage::Redo)->isEnabled());
+ QVERIFY(page->action(QWebEnginePage::SelectAll)->isEnabled());
+ QVERIFY(page->action(QWebEnginePage::PasteAndMatchStyle)->isEnabled());
+ QVERIFY(!page->action(QWebEnginePage::Unselect)->isEnabled());
+
+ page->triggerAction(QWebEnginePage::SelectAll);
+ QTRY_COMPARE(selectionChangedSpy.count(), 1);
+ QCOMPARE(page->hasSelection(), true);
+ QCOMPARE(page->selectedText(), QStringLiteral("foo bar"));
+
+ QVERIFY(page->action(QWebEnginePage::Cut)->isEnabled());
+ QVERIFY(page->action(QWebEnginePage::Copy)->isEnabled());
+ QVERIFY(page->action(QWebEnginePage::Paste)->isEnabled());
+ QVERIFY(page->action(QWebEnginePage::Undo)->isEnabled());
+ QVERIFY(page->action(QWebEnginePage::Redo)->isEnabled());
+ QVERIFY(page->action(QWebEnginePage::SelectAll)->isEnabled());
+ QVERIFY(page->action(QWebEnginePage::PasteAndMatchStyle)->isEnabled());
+ QVERIFY(page->action(QWebEnginePage::Unselect)->isEnabled());
+}
+
static QByteArrayList params = {QByteArrayLiteral("--use-fake-device-for-media-stream")};
W_QTEST_MAIN(tst_QWebEnginePage, params)