summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorValentin Fokin <fokinv@inf.u-szeged.hu>2017-10-18 12:48:04 +0200
committerValentin Fokin <fokinv@inf.u-szeged.hu>2017-10-24 07:54:46 +0000
commitcc6a4199225f034075751580fd5fd816cbfee6ea (patch)
treefeded5247484f5e2a5919a602550f8bcfc2047c9 /tests
parent42ba71bdc66a2228b027f9367da25bef10e269dc (diff)
Fix Qt::NoContextMenu policy handling in QWebEngineView
Task-number: QTBUG-62345 Change-Id: I4846e15f007c6792ad02fc49179a6e30deafa4c7 Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
index a7f8adaf5..f46d9f455 100644
--- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
+++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
@@ -37,6 +37,7 @@
#include <QCompleter>
#include <QLineEdit>
#include <QHBoxLayout>
+#include <QMenu>
#include <QQuickItem>
#include <QQuickWidget>
#include <QtWebEngineCore/qwebenginehttprequest.h>
@@ -174,6 +175,9 @@ private Q_SLOTS:
#ifndef QT_NO_CLIPBOARD
void globalMouseSelection();
#endif
+ void noContextMenu();
+ void contextMenu_data();
+ void contextMenu();
};
// This will be called before the first test function is executed.
@@ -2354,5 +2358,64 @@ void tst_QWebEngineView::globalMouseSelection()
}
#endif
+void tst_QWebEngineView::noContextMenu()
+{
+ QWidget wrapper;
+ wrapper.setContextMenuPolicy(Qt::CustomContextMenu);
+
+ connect(&wrapper, &QWidget::customContextMenuRequested, [&wrapper](const QPoint &pt) {
+ QMenu* menu = new QMenu(&wrapper);
+ menu->addAction("Action1");
+ menu->addAction("Action2");
+ menu->popup(pt);
+ });
+
+ QWebEngineView view(&wrapper);
+ view.setContextMenuPolicy(Qt::NoContextMenu);
+ wrapper.show();
+
+ QVERIFY(view.findChildren<QMenu *>().isEmpty());
+ QVERIFY(wrapper.findChildren<QMenu *>().isEmpty());
+ QTest::mouseMove(wrapper.windowHandle(), QPoint(10,10));
+ QTest::mouseClick(wrapper.windowHandle(), Qt::RightButton);
+
+ QTRY_COMPARE(wrapper.findChildren<QMenu *>().count(), 1);
+ QVERIFY(view.findChildren<QMenu *>().isEmpty());
+}
+
+void tst_QWebEngineView::contextMenu_data()
+{
+ QTest::addColumn<int>("childrenCount");
+ QTest::addColumn<Qt::ContextMenuPolicy>("contextMenuPolicy");
+ QTest::newRow("defaultContextMenu") << 1 << Qt::DefaultContextMenu;
+ QTest::newRow("customContextMenu") << 1 << Qt::CustomContextMenu;
+ QTest::newRow("preventContextMenu") << 0 << Qt::PreventContextMenu;
+}
+
+void tst_QWebEngineView::contextMenu()
+{
+ QFETCH(int, childrenCount);
+ QFETCH(Qt::ContextMenuPolicy, contextMenuPolicy);
+
+ QWebEngineView view;
+
+ if (contextMenuPolicy == Qt::CustomContextMenu) {
+ connect(&view, &QWebEngineView::customContextMenuRequested, [&view](const QPoint &pt) {
+ QMenu* menu = new QMenu(&view);
+ menu->addAction("Action1");
+ menu->addAction("Action2");
+ menu->popup(pt);
+ });
+ }
+
+ view.setContextMenuPolicy(contextMenuPolicy);
+ view.show();
+
+ QVERIFY(view.findChildren<QMenu *>().isEmpty());
+ QTest::mouseMove(view.windowHandle(), QPoint(10,10));
+ QTest::mouseClick(view.windowHandle(), Qt::RightButton);
+ QTRY_COMPARE(view.findChildren<QMenu *>().count(), childrenCount);
+}
+
QTEST_MAIN(tst_QWebEngineView)
#include "tst_qwebengineview.moc"