summaryrefslogtreecommitdiffstats
path: root/src/webenginequick/api/qquickwebengineview.cpp
diff options
context:
space:
mode:
authorKaloyan Chehlarski <[email protected]>2024-06-20 16:35:13 +0200
committerKaloyan Chehlarski <[email protected]>2024-07-03 20:02:32 +0200
commit85ff9e35fdec602f71c66e9c93eefd2c6d911512 (patch)
tree1e6e73c03e68bc26aa15296c3b832f1493a2fcef /src/webenginequick/api/qquickwebengineview.cpp
parent21a9add47def34322b799683e1e1daff88dc4a06 (diff)
QWebEnginePermission: Post-API review
This commit contains fixes for the issues found during the API review of the new permissions API. In particular: - All new enums are now scoped - Replaced isTransient with its opposite, isPersistent - Renamed Feature to PermissionType - Made origin() return a non-const QUrl - Renamed PersistentPermissionsPolicy members to be more concise - Fixed a couple of bugs in the implementation - Updated documentation Change-Id: Idf84e1c9ba3ae803ef4686e1caa7f3e6c198c87d Reviewed-by: Michal Klocek <[email protected]>
Diffstat (limited to 'src/webenginequick/api/qquickwebengineview.cpp')
-rw-r--r--src/webenginequick/api/qquickwebengineview.cpp91
1 files changed, 41 insertions, 50 deletions
diff --git a/src/webenginequick/api/qquickwebengineview.cpp b/src/webenginequick/api/qquickwebengineview.cpp
index 852d00c76..56b5963f6 100644
--- a/src/webenginequick/api/qquickwebengineview.cpp
+++ b/src/webenginequick/api/qquickwebengineview.cpp
@@ -489,29 +489,29 @@ void QQuickWebEngineViewPrivate::selectClientCert(
#if QT_DEPRECATED_SINCE(6, 8)
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
-static QQuickWebEngineView::Feature toDeprecatedFeature(QWebEnginePermission::Feature feature)
+static QQuickWebEngineView::Feature toDeprecatedFeature(QWebEnginePermission::PermissionType permissionType)
{
- switch (feature) {
- case QWebEnginePermission::Feature::Notifications:
+ switch (permissionType) {
+ case QWebEnginePermission::PermissionType::Notifications:
return QQuickWebEngineView::Notifications;
- case QWebEnginePermission::Feature::Geolocation:
+ case QWebEnginePermission::PermissionType::Geolocation:
return QQuickWebEngineView::Geolocation;
- case QWebEnginePermission::Feature::ClipboardReadWrite:
+ case QWebEnginePermission::PermissionType::ClipboardReadWrite:
return QQuickWebEngineView::ClipboardReadWrite;
- case QWebEnginePermission::Feature::LocalFontsAccess:
+ case QWebEnginePermission::PermissionType::LocalFontsAccess:
return QQuickWebEngineView::LocalFontsAccess;
- case QWebEnginePermission::Feature::MediaAudioCapture:
+ case QWebEnginePermission::PermissionType::MediaAudioCapture:
return QQuickWebEngineView::MediaAudioCapture;
- case QWebEnginePermission::Feature::MediaVideoCapture:
+ case QWebEnginePermission::PermissionType::MediaVideoCapture:
return QQuickWebEngineView::MediaVideoCapture;
- case QWebEnginePermission::Feature::MediaAudioVideoCapture:
+ case QWebEnginePermission::PermissionType::MediaAudioVideoCapture:
return QQuickWebEngineView::MediaAudioVideoCapture;
- case QWebEnginePermission::Feature::DesktopVideoCapture:
+ case QWebEnginePermission::PermissionType::DesktopVideoCapture:
return QQuickWebEngineView::DesktopVideoCapture;
- case QWebEnginePermission::Feature::DesktopAudioVideoCapture:
+ case QWebEnginePermission::PermissionType::DesktopAudioVideoCapture:
return QQuickWebEngineView::DesktopAudioVideoCapture;
- case QWebEnginePermission::Feature::MouseLock:
- case QWebEnginePermission::Feature::Unsupported:
+ case QWebEnginePermission::PermissionType::MouseLock:
+ case QWebEnginePermission::PermissionType::Unsupported:
break;
}
@@ -521,32 +521,22 @@ static QQuickWebEngineView::Feature toDeprecatedFeature(QWebEnginePermission::Fe
QT_WARNING_POP
#endif // QT_DEPRECATED_SINCE(6, 8)
-void QQuickWebEngineViewPrivate::runFeaturePermissionRequest(QWebEnginePermission::Feature feature, const QUrl &url)
+void QQuickWebEngineViewPrivate::runFeaturePermissionRequest(QWebEnginePermission::PermissionType permissionType, const QUrl &securityOrigin)
{
Q_Q(QQuickWebEngineView);
- switch (feature) {
- case QWebEnginePermission::Notifications:
- case QWebEnginePermission::Geolocation:
- case QWebEnginePermission::ClipboardReadWrite:
- case QWebEnginePermission::LocalFontsAccess:
- Q_EMIT q->permissionRequested(createFeaturePermissionObject(url, feature));
+
+ if (QWebEnginePermission::isPersistent(permissionType)) {
+ Q_EMIT q->permissionRequested(createFeaturePermissionObject(securityOrigin, permissionType));
#if QT_DEPRECATED_SINCE(6, 8)
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
- Q_EMIT q->featurePermissionRequested(url, toDeprecatedFeature(feature));
+ Q_EMIT q->featurePermissionRequested(securityOrigin, toDeprecatedFeature(permissionType));
QT_WARNING_POP
#endif // QT_DEPRECATED_SINCE(6, 8)
return;
- case QWebEnginePermission::MouseLock:
- case QWebEnginePermission::MediaAudioCapture:
- case QWebEnginePermission::MediaVideoCapture:
- case QWebEnginePermission::MediaAudioVideoCapture:
- case QWebEnginePermission::DesktopAudioVideoCapture:
- case QWebEnginePermission::DesktopVideoCapture:
- case QWebEnginePermission::Unsupported:
- Q_UNREACHABLE();
- return;
}
+
+ Q_UNREACHABLE();
}
void QQuickWebEngineViewPrivate::showColorDialog(QSharedPointer<ColorChooserController> controller)
@@ -824,19 +814,19 @@ void QQuickWebEngineViewPrivate::runMediaAccessPermissionRequest(const QUrl &sec
Q_Q(QQuickWebEngineView);
if (!requestFlags)
return;
- QWebEnginePermission::Feature feature;
+ QWebEnginePermission::PermissionType permissionType;
if (requestFlags.testFlag(WebContentsAdapterClient::MediaAudioCapture) && requestFlags.testFlag(WebContentsAdapterClient::MediaVideoCapture))
- feature = QWebEnginePermission::MediaAudioVideoCapture;
+ permissionType = QWebEnginePermission::PermissionType::MediaAudioVideoCapture;
else if (requestFlags.testFlag(WebContentsAdapterClient::MediaAudioCapture))
- feature = QWebEnginePermission::MediaAudioCapture;
+ permissionType = QWebEnginePermission::PermissionType::MediaAudioCapture;
else if (requestFlags.testFlag(WebContentsAdapterClient::MediaVideoCapture))
- feature = QWebEnginePermission::MediaVideoCapture;
+ permissionType = QWebEnginePermission::PermissionType::MediaVideoCapture;
else if (requestFlags.testFlag(WebContentsAdapterClient::MediaDesktopAudioCapture) &&
requestFlags.testFlag(WebContentsAdapterClient::MediaDesktopVideoCapture))
- feature = QWebEnginePermission::DesktopAudioVideoCapture;
+ permissionType = QWebEnginePermission::PermissionType::DesktopAudioVideoCapture;
else // if (requestFlags.testFlag(WebContentsAdapterClient::MediaDesktopVideoCapture))
- feature = QWebEnginePermission::DesktopVideoCapture;
- Q_EMIT q->permissionRequested(createFeaturePermissionObject(securityOrigin, feature));
+ permissionType = QWebEnginePermission::PermissionType::DesktopVideoCapture;
+ Q_EMIT q->permissionRequested(createFeaturePermissionObject(securityOrigin, permissionType));
#if QT_DEPRECATED_SINCE(6, 8)
QT_WARNING_PUSH
@@ -1528,9 +1518,9 @@ void QQuickWebEngineViewPrivate::showWebAuthDialog(QWebEngineWebAuthUxRequest *r
Q_EMIT q->webAuthUxRequested(request);
}
-QWebEnginePermission QQuickWebEngineViewPrivate::createFeaturePermissionObject(const QUrl &securityOrigin, QWebEnginePermission::Feature feature)
+QWebEnginePermission QQuickWebEngineViewPrivate::createFeaturePermissionObject(const QUrl &securityOrigin, QWebEnginePermission::PermissionType permissionType)
{
- auto *returnPrivate = new QWebEnginePermissionPrivate(securityOrigin, feature, adapter, profileAdapter());
+ auto *returnPrivate = new QWebEnginePermissionPrivate(securityOrigin, permissionType, adapter, profileAdapter());
return QWebEnginePermission(returnPrivate);
}
@@ -1834,41 +1824,42 @@ QT_WARNING_PUSH QT_WARNING_DISABLE_DEPRECATED
void QQuickWebEngineView::grantFeaturePermission(const QUrl &securityOrigin, QQuickWebEngineView::Feature feature, bool granted)
{
Q_D(QQuickWebEngineView);
- QWebEnginePermission::Feature f;
+ QWebEnginePermission::PermissionType permissionType;
switch (feature) {
case QQuickWebEngineView::Notifications:
- f = QWebEnginePermission::Notifications;
+ permissionType = QWebEnginePermission::PermissionType::Notifications;
break;
case QQuickWebEngineView::Geolocation:
- f = QWebEnginePermission::Geolocation;
+ permissionType = QWebEnginePermission::PermissionType::Geolocation;
break;
case QQuickWebEngineView::MediaAudioCapture:
- f = QWebEnginePermission::MediaAudioCapture;
+ permissionType = QWebEnginePermission::PermissionType::MediaAudioCapture;
break;
case QQuickWebEngineView::MediaVideoCapture:
- f = QWebEnginePermission::MediaVideoCapture;
+ permissionType = QWebEnginePermission::PermissionType::MediaVideoCapture;
break;
case QQuickWebEngineView::MediaAudioVideoCapture:
- f = QWebEnginePermission::MediaAudioVideoCapture;
+ permissionType = QWebEnginePermission::PermissionType::MediaAudioVideoCapture;
break;
case QQuickWebEngineView::DesktopVideoCapture:
- f = QWebEnginePermission::DesktopVideoCapture;
+ permissionType = QWebEnginePermission::PermissionType::DesktopVideoCapture;
break;
case QQuickWebEngineView::DesktopAudioVideoCapture:
- f = QWebEnginePermission::DesktopAudioVideoCapture;
+ permissionType = QWebEnginePermission::PermissionType::DesktopAudioVideoCapture;
break;
case QQuickWebEngineView::ClipboardReadWrite:
- f = QWebEnginePermission::ClipboardReadWrite;
+ permissionType = QWebEnginePermission::PermissionType::ClipboardReadWrite;
break;
case QQuickWebEngineView::LocalFontsAccess:
- f = QWebEnginePermission::LocalFontsAccess;
+ permissionType = QWebEnginePermission::PermissionType::LocalFontsAccess;
break;
default:
Q_UNREACHABLE();
}
- d->adapter->setFeaturePermission(securityOrigin, f, granted ? QWebEnginePermission::Granted : QWebEnginePermission::Denied);
+ d->adapter->setPermission(securityOrigin, permissionType,
+ granted ? QWebEnginePermission::State::Granted : QWebEnginePermission::State::Denied);
}
QT_WARNING_POP
#endif // QT_DEPRECATED_SINCE(6, 8)