diff --git a/src/lib/tools/html5permissions/html5permissionsdialog.cpp b/src/lib/tools/html5permissions/html5permissionsdialog.cpp index 5464d4797..f5b414357 100644 --- a/src/lib/tools/html5permissions/html5permissionsdialog.cpp +++ b/src/lib/tools/html5permissions/html5permissionsdialog.cpp @@ -21,6 +21,9 @@ #include "mainapplication.h" #include "html5permissionsmanager.h" +#include + + HTML5PermissionsDialog::HTML5PermissionsDialog(QWidget* parent) : QDialog(parent) , ui(new Ui::HTML5PermissionsDialog) @@ -37,6 +40,12 @@ HTML5PermissionsDialog::HTML5PermissionsDialog(QWidget* parent) connect(ui->feature, SIGNAL(currentIndexChanged(int)), this, SLOT(featureIndexChanged())); connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &HTML5PermissionsDialog::saveSettings); +/* Hide unsupported HTML5 permissions */ +#if QTWEBENGINEWIDGETS_VERSION < QT_VERSION_CHECK(5, 10, 0) + ui->feature->removeItem(7); + ui->feature->removeItem(6); +#endif + showFeaturePermissions(currentFeature()); } @@ -110,6 +119,12 @@ QWebEnginePage::Feature HTML5PermissionsDialog::currentFeature() const return QWebEnginePage::MediaAudioVideoCapture; case 5: return QWebEnginePage::MouseLock; +#if QTWEBENGINEWIDGETS_VERSION >= QT_VERSION_CHECK(5, 10, 0) + case 6: + return QWebEnginePage::DesktopVideoCapture; + case 7: + return QWebEnginePage::DesktopAudioVideoCapture; +#endif default: Q_UNREACHABLE(); return QWebEnginePage::Notifications; @@ -139,6 +154,14 @@ void HTML5PermissionsDialog::loadSettings() m_granted[QWebEnginePage::MouseLock] = settings.value("MouseLockGranted", QStringList()).toStringList(); m_denied[QWebEnginePage::MouseLock] = settings.value("MouseLockDenied", QStringList()).toStringList(); +#if QTWEBENGINEWIDGETS_VERSION >= QT_VERSION_CHECK(5, 10, 0) + m_granted[QWebEnginePage::DesktopVideoCapture] = settings.value("DesktopVideoCaptureGranted", QStringList()).toStringList(); + m_denied[QWebEnginePage::DesktopVideoCapture] = settings.value("DesktopVideoCaptureDenied", QStringList()).toStringList(); + + m_granted[QWebEnginePage::DesktopAudioVideoCapture] = settings.value("DesktopAudioVideoCaptureGranted", QStringList()).toStringList(); + m_denied[QWebEnginePage::DesktopAudioVideoCapture] = settings.value("DesktopAudioVideoCaptureDenied", QStringList()).toStringList(); +#endif + settings.endGroup(); } @@ -165,6 +188,14 @@ void HTML5PermissionsDialog::saveSettings() settings.setValue("MouseLockGranted", m_granted[QWebEnginePage::MouseLock]); settings.setValue("MouseLockDenied", m_denied[QWebEnginePage::MouseLock]); +#if QTWEBENGINEWIDGETS_VERSION >= QT_VERSION_CHECK(5, 10, 0) + settings.setValue("DesktopVideoCaptureGranted", m_granted[QWebEnginePage::DesktopVideoCapture]); + settings.setValue("DesktopVideoCaptureDenied", m_denied[QWebEnginePage::DesktopVideoCapture]); + + settings.setValue("DesktopAudioVideoCaptureGranted", m_granted[QWebEnginePage::DesktopAudioVideoCapture]); + settings.setValue("DesktopAudioVideoCaptureDenied", m_denied[QWebEnginePage::DesktopAudioVideoCapture]); +#endif + settings.endGroup(); mApp->html5PermissionsManager()->loadSettings(); diff --git a/src/lib/tools/html5permissions/html5permissionsdialog.ui b/src/lib/tools/html5permissions/html5permissionsdialog.ui index 46d5e07d6..bd0b0d785 100644 --- a/src/lib/tools/html5permissions/html5permissionsdialog.ui +++ b/src/lib/tools/html5permissions/html5permissionsdialog.ui @@ -112,6 +112,16 @@ Hide Pointer + + + Display Capture + + + + + Display and Audio Capture + + diff --git a/src/lib/tools/html5permissions/html5permissionsmanager.cpp b/src/lib/tools/html5permissions/html5permissionsmanager.cpp index fc3bec16f..21563dd01 100644 --- a/src/lib/tools/html5permissions/html5permissionsmanager.cpp +++ b/src/lib/tools/html5permissions/html5permissionsmanager.cpp @@ -20,6 +20,8 @@ #include "settings.h" #include "webview.h" +#include + HTML5PermissionsManager::HTML5PermissionsManager(QObject* parent) : QObject(parent) @@ -95,6 +97,14 @@ void HTML5PermissionsManager::loadSettings() m_granted[QWebEnginePage::MouseLock] = settings.value("MouseLockGranted", QStringList()).toStringList(); m_denied[QWebEnginePage::MouseLock] = settings.value("MouseLockDenied", QStringList()).toStringList(); +#if QTWEBENGINEWIDGETS_VERSION >= QT_VERSION_CHECK(5, 10, 0) + m_granted[QWebEnginePage::DesktopVideoCapture] = settings.value("DesktopVideoCaptureGranted", QStringList()).toStringList(); + m_denied[QWebEnginePage::DesktopVideoCapture] = settings.value("DesktopVideoCaptureDenied", QStringList()).toStringList(); + + m_granted[QWebEnginePage::DesktopAudioVideoCapture] = settings.value("DesktopAudioVideoCaptureGranted", QStringList()).toStringList(); + m_denied[QWebEnginePage::DesktopAudioVideoCapture] = settings.value("DesktopAudioVideoCaptureDenied", QStringList()).toStringList(); +#endif + settings.endGroup(); } @@ -121,5 +131,13 @@ void HTML5PermissionsManager::saveSettings() settings.setValue("MouseLockGranted", m_granted[QWebEnginePage::MouseLock]); settings.setValue("MouseLockDenied", m_denied[QWebEnginePage::MouseLock]); +#if QTWEBENGINEWIDGETS_VERSION >= QT_VERSION_CHECK(5, 10, 0) + settings.setValue("DesktopVideoCaptureGranted", m_granted[QWebEnginePage::DesktopVideoCapture]); + settings.setValue("DesktopVideoCaptureDenied", m_denied[QWebEnginePage::DesktopVideoCapture]); + + settings.setValue("DesktopAudioVideoCaptureGranted", m_granted[QWebEnginePage::DesktopAudioVideoCapture]); + settings.setValue("DesktopAudioVideoCaptureDenied", m_denied[QWebEnginePage::DesktopAudioVideoCapture]); +#endif + settings.endGroup(); } diff --git a/src/lib/tools/html5permissions/html5permissionsnotification.cpp b/src/lib/tools/html5permissions/html5permissionsnotification.cpp index 7ada0bd9f..d7433634d 100644 --- a/src/lib/tools/html5permissions/html5permissionsnotification.cpp +++ b/src/lib/tools/html5permissions/html5permissionsnotification.cpp @@ -23,6 +23,8 @@ #include #include +#include + HTML5PermissionsNotification::HTML5PermissionsNotification(const QUrl &origin, QWebEnginePage* page, const QWebEnginePage::Feature &feature) : AnimatedWidget(AnimatedWidget::Down, 300, 0) @@ -63,6 +65,15 @@ HTML5PermissionsNotification::HTML5PermissionsNotification(const QUrl &origin, Q ui->textLabel->setText(tr("Allow %1 to hide your pointer?").arg(site)); break; +#if QTWEBENGINEWIDGETS_VERSION >= QT_VERSION_CHECK(5, 10, 0) + case QWebEnginePage::DesktopVideoCapture: + ui->textLabel->setText(tr("Allow %1 to capture your screen?").arg(site)); + break; + + case QWebEnginePage::DesktopAudioVideoCapture: + ui->textLabel->setText(tr("Allow %1 to capture your screen and audio?").arg(site)); + break; +#endif default: qWarning() << "Unknown feature" << feature; break;