diff options
author | Kirill Burtsev <kirill.burtsev@qt.io> | 2020-07-31 16:11:17 +0200 |
---|---|---|
committer | Kirill Burtsev <kirill.burtsev@qt.io> | 2020-08-31 10:05:20 +0200 |
commit | 9bd422add06df6d384eff4e4480ccda2fd27d60a (patch) | |
tree | 03e91f697fd945000d85e73e6432c89ebc5bc742 | |
parent | d25075fb681fa92fad1f9bdcb262a3e361e7659e (diff) |
Expand FullScreenRequest testing
Add qml test and check for widgets context menu item
Change-Id: I96ad15dd28f4b6bd9a7af1ed7f8ca1fda568ac81
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
-rw-r--r-- | tests/auto/quick/qmltests/data/tst_fullScreenRequest.qml | 82 | ||||
-rw-r--r-- | tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp | 8 |
2 files changed, 90 insertions, 0 deletions
diff --git a/tests/auto/quick/qmltests/data/tst_fullScreenRequest.qml b/tests/auto/quick/qmltests/data/tst_fullScreenRequest.qml new file mode 100644 index 000000000..2d9247b26 --- /dev/null +++ b/tests/auto/quick/qmltests/data/tst_fullScreenRequest.qml @@ -0,0 +1,82 @@ +import QtQuick 2.2 +import QtTest 1.0 +import QtWebEngine 1.9 + +TestWebEngineView { + id: view + width: 320 + height: 320 + + property bool acceptRequest: false + + onFullScreenRequested: function(request) { + view.acceptRequest ? request.accept() : request.reject() + } + + SignalSpy { + id: spyRequest + target: view + signalName: 'fullScreenRequested' + } + + TestCase { + name: 'FullScreenRequest' + when: windowShown + + function init() { + spyRequest.clear() + } + + function test_request_data() { + return [ + { tag: 'accept', accept: true }, + { tag: 'reject', accept: false }, + ] + } + + function test_request(data) { + view.acceptRequest = data.accept + view.settings.fullscreenSupportEnabled = true + + // full screen request is only allowed by user gesture, so emulate key press + view.loadHtml( + '<html><body onkeypress="onKeyPress()"><a id="a">WRYYYY</a><script>' + + 'function onKeyPress() {' + + ' document.webkitIsFullScreen'+ + ' ? document.webkitExitFullscreen()' + + ' : document.documentElement.webkitRequestFullScreen()' + + '} </script></body></html>') + view.waitForLoadSucceeded() + verify(!view.isFullScreen) + + let result = null + view.runJavaScript('document.webkitFullscreenEnabled', function(r) { result = r }) + tryVerify(function() { return result === true }) + + result = null + view.runJavaScript('document.webkitIsFullScreen', function(r) { result = r }) + tryVerify(function() { return result === false }) + + // will trigger full screen request through key press + keyClick(Qt.Key_Space) + spyRequest.wait() + compare(spyRequest.count, 1) + verify(spyRequest.signalArguments[0][0].toggleOn) + compare(data.accept, view.isFullScreen) + + view.runJavaScript('document.webkitIsFullScreen', function(r) { result = r }) + tryVerify(function() { return result === data.accept }) + + if (data.accept) { + // expected to toggle from current state + keyClick(Qt.Key_Space) + spyRequest.wait() + compare(spyRequest.count, 2) + verify(!spyRequest.signalArguments[1][0].toggleOn) + view.runJavaScript('document.webkitIsFullScreen', function(r) { result = r }) + tryVerify(function() { return result === false }) + verify(!view.isFullScreen) + } + } + } +} diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp index 99c749392..040114258 100644 --- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp +++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp @@ -1829,6 +1829,7 @@ void tst_QWebEnginePage::fullScreenRequested() { QWebEngineView view; QWebEnginePage* page = view.page(); + view.resize(640, 480); view.show(); page->settings()->setAttribute(QWebEngineSettings::FullScreenSupportEnabled, true); @@ -1849,6 +1850,13 @@ void tst_QWebEnginePage::fullScreenRequested() QTest::keyPress(view.focusProxy(), Qt::Key_Space); QTRY_VERIFY(isTrueJavaScriptResult(page, "document.webkitIsFullScreen")); + + QTest::mouseMove(view.windowHandle(), QPoint(10,10)); + QTest::mouseClick(view.windowHandle(), Qt::RightButton); + QTRY_COMPARE(view.findChildren<QMenu *>().count(), 1); + auto menu = view.findChildren<QMenu *>().first(); + QVERIFY(menu->actions().contains(page->action(QWebEnginePage::ExitFullScreen))); + page->runJavaScript("document.webkitExitFullscreen()"); QTRY_VERIFY(isFalseJavaScriptResult(page, "document.webkitIsFullScreen")); |