diff options
Diffstat (limited to 'tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp')
-rw-r--r-- | tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp | 270 |
1 files changed, 177 insertions, 93 deletions
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp index 39a28759c..e7f2ce1cd 100644 --- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp +++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp @@ -72,6 +72,7 @@ #include <qwebengineurlscheme.h> #include <qwebengineurlschemehandler.h> #include <qwebengineview.h> +#include <qwebenginepermission.h> #include <qimagewriter.h> #include <QColorSpace> #include <QQuickRenderControl> @@ -117,6 +118,7 @@ private Q_SLOTS: void comboBoxPopupPositionAfterChildMove_data(); void comboBoxPopupPositionAfterChildMove(); void acceptNavigationRequest(); + void acceptNavigationRequestWithFormData(); void acceptNavigationRequestNavigationType(); void acceptNavigationRequestRelativeToNothing(); #ifndef Q_OS_MACOS @@ -450,12 +452,12 @@ public: return true; } public Q_SLOTS: - void requestPermission(const QUrl &origin, QWebEnginePage::Feature feature) + void requestPermission(QWebEnginePermission permission) { if (m_allowGeolocation) - setFeaturePermission(origin, feature, PermissionGrantedByUser); + permission.grant(); else - setFeaturePermission(origin, feature, PermissionDeniedByUser); + permission.deny(); } public: @@ -484,10 +486,11 @@ void tst_QWebEnginePage::geolocationRequestJS() QWebEngineView view; JSTestPage *newPage = new JSTestPage(&view); view.setPage(newPage); + newPage->profile()->setPersistentPermissionsPolicy(QWebEngineProfile::NoPersistentPermissions); newPage->setGeolocationPermission(allowed); - connect(newPage, SIGNAL(featurePermissionRequested(const QUrl&, QWebEnginePage::Feature)), - newPage, SLOT(requestPermission(const QUrl&, QWebEnginePage::Feature))); + connect(newPage, SIGNAL(permissionRequested(QWebEnginePermission)), + newPage, SLOT(requestPermission(QWebEnginePermission))); QSignalSpy spyLoadFinished(newPage, SIGNAL(loadFinished(bool))); newPage->setHtml(QString("<html><body>test</body></html>"), QUrl("qrc://secure/origin")); @@ -636,6 +639,7 @@ public: QWebEngineNavigationRequest::NavigationType type; QUrl url; bool isMainFrame; + bool hasFormData; }; QList<Navigation> navigations; @@ -653,6 +657,7 @@ private Q_SLOTS: n.url = request.url(); n.type = request.navigationType(); n.isMainFrame = request.isMainFrame(); + n.hasFormData = request.hasFormData(); navigations.append(n); request.accept(); } @@ -670,9 +675,33 @@ private Q_SLOTS: } }; -void tst_QWebEnginePage::acceptNavigationRequestNavigationType() +void tst_QWebEnginePage::acceptNavigationRequestWithFormData() { + QWebEngineProfile profile; + profile.installUrlSchemeHandler("echo", new EchoingUrlSchemeHandler(&profile)); + TestPage page(nullptr, &profile); + QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool))); + + page.setHtml(QString("<html><body><form name='tstform' action='foo' method='post'>" + "<input type='text'><input type='submit'></form></body></html>"), + QUrl("echo:/")); + QTRY_COMPARE_WITH_TIMEOUT(loadSpy.size(), 1, 20000); + QCOMPARE(page.navigations[0].type, QWebEngineNavigationRequest::TypedNavigation); + QVERIFY(!page.navigations[0].hasFormData); + + evaluateJavaScriptSync(&page, "tstform.submit();"); + QTRY_COMPARE(loadSpy.size(), 2); + QCOMPARE(page.navigations[1].type, QWebEngineNavigationRequest::FormSubmittedNavigation); + QVERIFY(page.navigations[1].hasFormData); + + page.triggerAction(QWebEnginePage::Reload); + QTRY_COMPARE(loadSpy.size(), 3); + QCOMPARE(page.navigations[2].type, QWebEngineNavigationRequest::ReloadNavigation); + QVERIFY(page.navigations[2].hasFormData); +} +void tst_QWebEnginePage::acceptNavigationRequestNavigationType() +{ TestPage page; QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool))); @@ -1628,11 +1657,13 @@ public: GetUserMediaTestPage() : m_gotRequest(false) , m_loadSucceeded(false) + , m_permission(nullptr) { - connect(this, &QWebEnginePage::featurePermissionRequested, this, &GetUserMediaTestPage::onFeaturePermissionRequested); + connect(this, &QWebEnginePage::permissionRequested, this, &GetUserMediaTestPage::onPermissionRequested); connect(this, &QWebEnginePage::loadFinished, [this](bool success){ m_loadSucceeded = success; }); + profile()->setPersistentPermissionsPolicy(QWebEngineProfile::NoPersistentPermissions); // We need to load content from a resource in order for the securityOrigin to be valid. load(QUrl("qrc:///resources/content.html")); } @@ -1666,18 +1697,20 @@ public: void rejectPendingRequest() { - setFeaturePermission(m_requestSecurityOrigin, m_requestedFeature, QWebEnginePage::PermissionDeniedByUser); + QVERIFY(m_permission); + m_permission->deny(); m_gotRequest = false; } void acceptPendingRequest() { - setFeaturePermission(m_requestSecurityOrigin, m_requestedFeature, QWebEnginePage::PermissionGrantedByUser); + QVERIFY(m_permission); + m_permission->grant(); m_gotRequest = false; } - bool gotFeatureRequest(QWebEnginePage::Feature feature) + bool gotFeatureRequest(QWebEnginePermission::Feature feature) { - return m_gotRequest && m_requestedFeature == feature; + return m_gotRequest && m_permission && m_permission->feature() == feature; } bool gotFeatureRequest() const @@ -1691,50 +1724,47 @@ public: } private Q_SLOTS: - void onFeaturePermissionRequested(const QUrl &securityOrigin, QWebEnginePage::Feature feature) + void onPermissionRequested(QWebEnginePermission permission) { - m_requestedFeature = feature; - m_requestSecurityOrigin = securityOrigin; + m_permission.reset(new QWebEnginePermission(permission)); m_gotRequest = true; } private: bool m_gotRequest; bool m_loadSucceeded; - QWebEnginePage::Feature m_requestedFeature; - QUrl m_requestSecurityOrigin; - + std::unique_ptr<QWebEnginePermission> m_permission; }; void tst_QWebEnginePage::getUserMediaRequest_data() { QTest::addColumn<QString>("call"); - QTest::addColumn<QWebEnginePage::Feature>("feature"); + QTest::addColumn<QWebEnginePermission::Feature>("feature"); QTest::addRow("device audio") - << "getUserMedia({audio: true})" << QWebEnginePage::MediaAudioCapture; + << "getUserMedia({audio: true})" << QWebEnginePermission::MediaAudioCapture; QTest::addRow("device video") - << "getUserMedia({video: true})" << QWebEnginePage::MediaVideoCapture; + << "getUserMedia({video: true})" << QWebEnginePermission::MediaVideoCapture; QTest::addRow("device audio+video") - << "getUserMedia({audio: true, video: true})" << QWebEnginePage::MediaAudioVideoCapture; + << "getUserMedia({audio: true, video: true})" << QWebEnginePermission::MediaAudioVideoCapture; QTest::addRow("desktop video") << "getUserMedia({video: { mandatory: { chromeMediaSource: 'desktop' }}})" - << QWebEnginePage::DesktopVideoCapture; + << QWebEnginePermission::DesktopVideoCapture; QTest::addRow("desktop audio+video") << "getUserMedia({audio: { mandatory: { chromeMediaSource: 'desktop' }}, video: { mandatory: { chromeMediaSource: 'desktop' }}})" - << QWebEnginePage::DesktopAudioVideoCapture; + << QWebEnginePermission::DesktopAudioVideoCapture; QTest::addRow("display video") - << "getDisplayMedia()" << QWebEnginePage::DesktopVideoCapture; + << "getDisplayMedia()" << QWebEnginePermission::DesktopVideoCapture; } void tst_QWebEnginePage::getUserMediaRequest() { QFETCH(QString, call); - QFETCH(QWebEnginePage::Feature, feature); + QFETCH(QWebEnginePermission::Feature, feature); GetUserMediaTestPage page; QWebEngineView view; - if (feature == QWebEnginePage::DesktopVideoCapture || feature == QWebEnginePage::DesktopAudioVideoCapture) { + if (feature == QWebEnginePermission::DesktopVideoCapture || feature == QWebEnginePermission::DesktopAudioVideoCapture) { // Desktop capture needs to be on a desktop. view.setPage(&page); view.resize(640, 480); @@ -1804,7 +1834,7 @@ void tst_QWebEnginePage::getUserMediaRequestSettingDisabled() void tst_QWebEnginePage::getUserMediaRequestDesktopVideoManyPages() { const QString constraints = QStringLiteral("{video: { mandatory: { chromeMediaSource: 'desktop' }}}"); - const QWebEnginePage::Feature feature = QWebEnginePage::DesktopVideoCapture; + const QWebEnginePermission::Feature feature = QWebEnginePermission::DesktopVideoCapture; std::vector<GetUserMediaTestPage> pages(10); // Desktop capture needs to be on a desktop @@ -1837,7 +1867,7 @@ void tst_QWebEnginePage::getUserMediaRequestDesktopVideoManyPages() void tst_QWebEnginePage::getUserMediaRequestDesktopVideoManyRequests() { const QString constraints = QStringLiteral("{video: { mandatory: { chromeMediaSource: 'desktop' }}}"); - const QWebEnginePage::Feature feature = QWebEnginePage::DesktopVideoCapture; + const QWebEnginePermission::Feature feature = QWebEnginePermission::DesktopVideoCapture; GetUserMediaTestPage page; // Desktop capture needs to be on a desktop @@ -3766,20 +3796,32 @@ void tst_QWebEnginePage::dynamicFrame() struct NotificationPage : ConsolePage { Q_OBJECT - const QWebEnginePage::PermissionPolicy policy; + const QWebEnginePermission::State policy; public: - NotificationPage(QWebEnginePage::PermissionPolicy ppolicy) : policy(ppolicy) { + NotificationPage(QWebEnginePermission::State ppolicy) : policy(ppolicy) { connect(this, &QWebEnginePage::loadFinished, [load = spyLoad.ref()] (bool result) mutable { load(result); }); - connect(this, &QWebEnginePage::featurePermissionRequested, - [this] (const QUrl &origin, QWebEnginePage::Feature feature) { - if (feature != QWebEnginePage::Notifications) + connect(this, &QWebEnginePage::permissionRequested, + [this] (QWebEnginePermission permission) { + if (permission.feature() != QWebEnginePermission::Notifications) return; if (spyRequest.wasCalled()) QFAIL("request executed twise!"); - setFeaturePermission(origin, feature, policy); - spyRequest.ref()(origin); + switch (policy) { + case QWebEnginePermission::Granted: + permission.grant(); + break; + case QWebEnginePermission::Denied: + permission.deny(); + break; + case QWebEnginePermission::Ask: + permission.reset(); + break; + default: + break; + } + spyRequest.ref()(permission.origin()); }); load(QStringLiteral("qrc:///shared/notification.html")); @@ -3799,40 +3841,50 @@ public: void tst_QWebEnginePage::notificationPermission_data() { QTest::addColumn<bool>("setOnInit"); - QTest::addColumn<QWebEnginePage::PermissionPolicy>("policy"); + QTest::addColumn<QWebEnginePermission::State>("policy"); QTest::addColumn<QString>("permission"); - QTest::newRow("denyOnInit") << true << QWebEnginePage::PermissionDeniedByUser << "denied"; - QTest::newRow("deny") << false << QWebEnginePage::PermissionDeniedByUser << "denied"; - QTest::newRow("grant") << false << QWebEnginePage::PermissionGrantedByUser << "granted"; - QTest::newRow("grantOnInit") << true << QWebEnginePage::PermissionGrantedByUser << "granted"; + QTest::newRow("denyOnInit") << true << QWebEnginePermission::Denied << "denied"; + QTest::newRow("deny") << false << QWebEnginePermission::Denied << "denied"; + QTest::newRow("grant") << false << QWebEnginePermission::Granted << "granted"; + QTest::newRow("grantOnInit") << true << QWebEnginePermission::Granted << "granted"; } void tst_QWebEnginePage::notificationPermission() { QFETCH(bool, setOnInit); - QFETCH(QWebEnginePage::PermissionPolicy, policy); + QFETCH(QWebEnginePermission::State, policy); QFETCH(QString, permission); QWebEngineProfile otr; + otr.setPersistentPermissionsPolicy(QWebEngineProfile::NoPersistentPermissions); QWebEnginePage page(&otr, nullptr); QUrl baseUrl("https://www.example.com/somepage.html"); bool permissionRequested = false, errorState = false; - connect(&page, &QWebEnginePage::featurePermissionRequested, &page, [&] (const QUrl &o, QWebEnginePage::Feature f) { - if (f != QWebEnginePage::Notifications) + connect(&page, &QWebEnginePage::permissionRequested, &page, [&] (QWebEnginePermission permission) { + if (permission.feature() != QWebEnginePermission::Notifications) return; - if (permissionRequested || o != baseUrl.url(QUrl::RemoveFilename)) { - qWarning() << "Unexpected case. Can't proceed." << setOnInit << permissionRequested << o; + if (permissionRequested || permission.origin() != baseUrl.url(QUrl::RemoveFilename)) { + qWarning() << "Unexpected case. Can't proceed." << setOnInit << permissionRequested << permission.origin(); errorState = true; return; } permissionRequested = true; - page.setFeaturePermission(o, f, policy); + + if (policy == QWebEnginePermission::Granted) + permission.grant(); + else + permission.deny(); }); - if (setOnInit) - page.setFeaturePermission(baseUrl, QWebEnginePage::Notifications, policy); + QWebEnginePermission permissionObject = otr.getPermission(baseUrl, QWebEnginePermission::Notifications); + if (setOnInit) { + if (policy == QWebEnginePermission::Granted) + permissionObject.grant(); + else + permissionObject.deny(); + } QSignalSpy spy(&page, &QWebEnginePage::loadFinished); page.setHtml(QString("<html><body>Test</body></html>"), baseUrl); @@ -3841,7 +3893,10 @@ void tst_QWebEnginePage::notificationPermission() QCOMPARE(evaluateJavaScriptSync(&page, QStringLiteral("Notification.permission")), setOnInit ? permission : QLatin1String("default")); if (!setOnInit) { - page.setFeaturePermission(baseUrl, QWebEnginePage::Notifications, policy); + if (policy == QWebEnginePermission::Granted) + permissionObject.grant(); + else + permissionObject.deny(); QTRY_COMPARE(evaluateJavaScriptSync(&page, QStringLiteral("Notification.permission")), permission); } @@ -3855,7 +3910,7 @@ void tst_QWebEnginePage::notificationPermission() void tst_QWebEnginePage::sendNotification() { - NotificationPage page(QWebEnginePage::PermissionGrantedByUser); + NotificationPage page(QWebEnginePermission::Granted); QVERIFY(page.spyLoad.waitForResult()); page.resetPermission(); @@ -3921,6 +3976,7 @@ void tst_QWebEnginePage::clipboardReadWritePermissionInitialState() QFETCH(QString, permission); QWebEngineProfile otr; + otr.setPersistentPermissionsPolicy(QWebEngineProfile::NoPersistentPermissions); QWebEngineView view(&otr); QWebEnginePage &page = *view.page(); view.settings()->setAttribute(QWebEngineSettings::FocusOnNavigationEnabled, true); @@ -3942,45 +3998,46 @@ void tst_QWebEnginePage::clipboardReadWritePermissionInitialState() void tst_QWebEnginePage::clipboardReadWritePermission_data() { QTest::addColumn<bool>("canAccessClipboard"); - QTest::addColumn<QWebEnginePage::PermissionPolicy>("initialPolicy"); + QTest::addColumn<QWebEnginePermission::State>("initialPolicy"); QTest::addColumn<QString>("initialPermission"); - QTest::addColumn<QWebEnginePage::PermissionPolicy>("requestPolicy"); + QTest::addColumn<QWebEnginePermission::State>("requestPolicy"); QTest::addColumn<QString>("finalPermission"); QTest::newRow("noAccessGrantGrant") - << false << QWebEnginePage::PermissionGrantedByUser << "granted" - << QWebEnginePage::PermissionGrantedByUser << "granted"; + << false << QWebEnginePermission::Granted << "granted" + << QWebEnginePermission::Granted << "granted"; QTest::newRow("noAccessGrantDeny") - << false << QWebEnginePage::PermissionGrantedByUser << "granted" - << QWebEnginePage::PermissionDeniedByUser << "denied"; + << false << QWebEnginePermission::Granted << "granted" + << QWebEnginePermission::Denied << "denied"; QTest::newRow("noAccessDenyGrant") - << false << QWebEnginePage::PermissionDeniedByUser << "denied" - << QWebEnginePage::PermissionGrantedByUser << "granted"; - QTest::newRow("noAccessDenyDeny") << false << QWebEnginePage::PermissionDeniedByUser << "denied" - << QWebEnginePage::PermissionDeniedByUser << "denied"; - QTest::newRow("noAccessAskGrant") << false << QWebEnginePage::PermissionUnknown << "prompt" - << QWebEnginePage::PermissionGrantedByUser << "granted"; + << false << QWebEnginePermission::Denied << "denied" + << QWebEnginePermission::Granted << "granted"; + QTest::newRow("noAccessDenyDeny") << false << QWebEnginePermission::Denied << "denied" + << QWebEnginePermission::Denied << "denied"; + QTest::newRow("noAccessAskGrant") << false << QWebEnginePermission::Ask << "prompt" + << QWebEnginePermission::Granted << "granted"; // All policies are ignored and overridden by setting JsCanAccessClipboard and JsCanPaste to // true QTest::newRow("accessGrantGrant") - << true << QWebEnginePage::PermissionGrantedByUser << "granted" - << QWebEnginePage::PermissionGrantedByUser << "granted"; - QTest::newRow("accessDenyDeny") << true << QWebEnginePage::PermissionDeniedByUser << "granted" - << QWebEnginePage::PermissionDeniedByUser << "granted"; - QTest::newRow("accessAskAsk") << true << QWebEnginePage::PermissionUnknown << "granted" - << QWebEnginePage::PermissionUnknown << "granted"; + << true << QWebEnginePermission::Granted << "granted" + << QWebEnginePermission::Granted << "granted"; + QTest::newRow("accessDenyDeny") << true << QWebEnginePermission::Denied << "granted" + << QWebEnginePermission::Denied << "granted"; + QTest::newRow("accessAskAsk") << true << QWebEnginePermission::Ask << "granted" + << QWebEnginePermission::Ask << "granted"; } void tst_QWebEnginePage::clipboardReadWritePermission() { QFETCH(bool, canAccessClipboard); - QFETCH(QWebEnginePage::PermissionPolicy, initialPolicy); + QFETCH(QWebEnginePermission::State, initialPolicy); QFETCH(QString, initialPermission); - QFETCH(QWebEnginePage::PermissionPolicy, requestPolicy); + QFETCH(QWebEnginePermission::State, requestPolicy); QFETCH(QString, finalPermission); QWebEngineProfile otr; + otr.setPersistentPermissionsPolicy(QWebEngineProfile::NoPersistentPermissions); QWebEngineView view(&otr); QWebEnginePage &page = *view.page(); view.settings()->setAttribute(QWebEngineSettings::FocusOnNavigationEnabled, true); @@ -3994,20 +4051,45 @@ void tst_QWebEnginePage::clipboardReadWritePermission() bool errorState = false; // if JavascriptCanAccessClipboard is true, this never fires - connect(&page, &QWebEnginePage::featurePermissionRequested, &page, - [&](const QUrl &o, QWebEnginePage::Feature f) { - if (f != QWebEnginePage::ClipboardReadWrite) + connect(&page, &QWebEnginePage::permissionRequested, &page, + [&](QWebEnginePermission permission) { + if (permission.feature() != QWebEnginePermission::ClipboardReadWrite) return; - if (o != baseUrl.url(QUrl::RemoveFilename)) { - qWarning() << "Unexpected case. Can't proceed." << o; + if (permission.origin() != baseUrl.url(QUrl::RemoveFilename)) { + qWarning() << "Unexpected case. Can't proceed." << permission.origin(); errorState = true; return; } permissionRequestCount++; - page.setFeaturePermission(o, f, requestPolicy); + switch (requestPolicy) { + case QWebEnginePermission::Granted: + permission.grant(); + break; + case QWebEnginePermission::Denied: + permission.deny(); + break; + case QWebEnginePermission::Ask: + permission.reset(); + break; + default: + break; + } }); - page.setFeaturePermission(baseUrl, QWebEnginePage::ClipboardReadWrite, initialPolicy); + QWebEnginePermission permissionObject = otr.getPermission(baseUrl, QWebEnginePermission::ClipboardReadWrite); + switch (initialPolicy) { + case QWebEnginePermission::Granted: + permissionObject.grant(); + break; + case QWebEnginePermission::Denied: + permissionObject.deny(); + break; + case QWebEnginePermission::Ask: + permissionObject.reset(); + break; + default: + break; + } QSignalSpy spy(&page, &QWebEnginePage::loadFinished); page.setHtml(QString("<html><body>Test</body></html>"), baseUrl); @@ -4067,30 +4149,35 @@ void tst_QWebEnginePage::contentsSize() void tst_QWebEnginePage::localFontAccessPermission_data() { - QTest::addColumn<QWebEnginePage::PermissionPolicy>("policy"); + QTest::addColumn<QWebEnginePermission::State>("policy"); QTest::addColumn<bool>("ignore"); QTest::addColumn<bool>("shouldBeEmpty"); - QTest::newRow("ignore") << QWebEnginePage::PermissionDeniedByUser << true << true; - QTest::newRow("setDeny") << QWebEnginePage::PermissionDeniedByUser << false << true; - QTest::newRow("setGrant") << QWebEnginePage::PermissionGrantedByUser << false << false; + QTest::newRow("ignore") << QWebEnginePermission::Denied << true << true; + QTest::newRow("setDeny") << QWebEnginePermission::Denied << false << true; + QTest::newRow("setGrant") << QWebEnginePermission::Granted << false << false; } void tst_QWebEnginePage::localFontAccessPermission() { - QFETCH(QWebEnginePage::PermissionPolicy, policy); + QFETCH(QWebEnginePermission::State, policy); QFETCH(bool, ignore); QFETCH(bool, shouldBeEmpty); QWebEngineView view; QWebEnginePage page(&view); + page.profile()->setPersistentPermissionsPolicy(QWebEngineProfile::NoPersistentPermissions); view.setPage(&page); - connect(&page, &QWebEnginePage::featurePermissionRequested, &page, [&] (const QUrl &o, QWebEnginePage::Feature f) { - if (f != QWebEnginePage::LocalFontsAccess) + connect(&page, &QWebEnginePage::permissionRequested, &page, [&] (QWebEnginePermission permission) { + if (permission.feature() != QWebEnginePermission::LocalFontsAccess) return; - if (!ignore) - page.setFeaturePermission(o, f, policy); + if (!ignore) { + if (policy == QWebEnginePermission::Granted) + permission.grant(); + else + permission.deny(); + } }); QSignalSpy spy(&page, &QWebEnginePage::loadFinished); @@ -4114,9 +4201,6 @@ void tst_QWebEnginePage::localFontAccessPermission() { QTRY_VERIFY_WITH_TIMEOUT(evaluateJavaScriptSync(&page, QStringLiteral("done")).toBool() == true, 1000); QVERIFY((evaluateJavaScriptSync(&page, QStringLiteral("fonts.length")).toInt() == 0) == shouldBeEmpty); } - - // Reset permission, since otherwise it will be stored between runs - page.setFeaturePermission(QUrl("qrc:///resources/fontaccess.html"), QWebEnginePage::LocalFontsAccess, QWebEnginePage::PermissionUnknown); } void tst_QWebEnginePage::setLifecycleState() @@ -5694,6 +5778,7 @@ void tst_QWebEnginePage::chooseDesktopMedia() QWebEnginePage page; QSignalSpy loadFinishedSpy(&page, SIGNAL(loadFinished(bool))); page.settings()->setAttribute(QWebEngineSettings::ScreenCaptureEnabled, true); + page.profile()->setPersistentPermissionsPolicy(QWebEngineProfile::NoPersistentPermissions); bool desktopMediaRequested = false; bool permissionRequested = false; @@ -5703,12 +5788,11 @@ void tst_QWebEnginePage::chooseDesktopMedia() desktopMediaRequested = true; }); - connect(&page, &QWebEnginePage::featurePermissionRequested, - [&](const QUrl &securityOrigin, QWebEnginePage::Feature feature) { + connect(&page, &QWebEnginePage::permissionRequested, + [&](QWebEnginePermission permission) { permissionRequested = true; // Handle permission to 'complete' the media request - page.setFeaturePermission(securityOrigin, feature, - QWebEnginePage::PermissionGrantedByUser); + permission.grant(); }); page.load(QUrl(server.url())); |