diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2019-07-02 12:36:34 +0200 |
---|---|---|
committer | Jüri Valdmann <juri.valdmann@qt.io> | 2019-07-08 09:34:06 +0200 |
commit | 3c34f95ad4a96737f66ab4933edb9e00abecdc24 (patch) | |
tree | 3249d3d1680a0f63e684a9564edff85cc51cc3dd /tests | |
parent | 76846a183e956abfa1ae950a6fe9e58edfeb2a56 (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.qml | 16 | ||||
-rw-r--r-- | tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp | 39 |
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) |