summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKirill Burtsev <kirill.burtsev@qt.io>2020-07-31 16:11:17 +0200
committerKirill Burtsev <kirill.burtsev@qt.io>2020-08-31 10:05:20 +0200
commit9bd422add06df6d384eff4e4480ccda2fd27d60a (patch)
tree03e91f697fd945000d85e73e6432c89ebc5bc742
parentd25075fb681fa92fad1f9bdcb262a3e361e7659e (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.qml82
-rw-r--r--tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp8
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"));