18#include "ui_html5permissionsnotification.h"
25#include <QWebEnginePage>
26#include <QWebEngineView>
27#include <QtWebEngineWidgetsVersion>
37 setAutoFillBackground(
true);
42 const QString site = m_origin.host().isEmpty() ? tr(
"this site") :
QSL(
"<b>%1</b>").arg(m_origin.host());
45 case QWebEnginePage::Notifications:
46 ui->textLabel->setText(tr(
"Allow %1 to show desktop notifications?").arg(site));
49 case QWebEnginePage::Geolocation:
50 ui->textLabel->setText(tr(
"Allow %1 to locate your position?").arg(site));
53 case QWebEnginePage::MediaAudioCapture:
54 ui->textLabel->setText(tr(
"Allow %1 to use your microphone?").arg(site));
57 case QWebEnginePage::MediaVideoCapture:
58 ui->textLabel->setText(tr(
"Allow %1 to use your camera?").arg(site));
61 case QWebEnginePage::MediaAudioVideoCapture:
62 ui->textLabel->setText(tr(
"Allow %1 to use your microphone and camera?").arg(site));
65 case QWebEnginePage::MouseLock:
66 ui->textLabel->setText(tr(
"Allow %1 to hide your pointer?").arg(site));
69 case QWebEnginePage::DesktopVideoCapture:
70 ui->textLabel->setText(tr(
"Allow %1 to capture your screen?").arg(site));
73 case QWebEnginePage::DesktopAudioVideoCapture:
74 ui->textLabel->setText(tr(
"Allow %1 to capture your screen and audio?").arg(site));
77 qWarning() <<
"Unknown feature" << feature;
81 connect(ui->allow, &QAbstractButton::clicked,
this, &HTML5PermissionsNotification::grantPermissions);
82 connect(ui->deny, &QAbstractButton::clicked,
this, &HTML5PermissionsNotification::denyPermissions);
83 connect(ui->close, &QAbstractButton::clicked,
this, &HTML5PermissionsNotification::denyPermissions);
85 connect(m_page.data(), &QWebEnginePage::loadStarted,
this, &QObject::deleteLater);
86 connect(m_page.data(), &QWebEnginePage::featurePermissionRequestCanceled,
this, [
this](
const QUrl &origin, QWebEnginePage::Feature feature) {
87 if (origin == m_origin && feature == m_feature) {
95void HTML5PermissionsNotification::grantPermissions()
101 QTimer::singleShot(0,
this, [
this]() {
103 if (m_feature == QWebEnginePage::MouseLock) {
104 QWidget *view = QWebEngineView::forPage(m_page);
105 QCursor::setPos(view->mapToGlobal(view->rect().center()));
108 m_page->setFeaturePermission(m_origin, m_feature, QWebEnginePage::PermissionGrantedByUser);
111 if (ui->remember->isChecked()) {
112 mApp->html5PermissionsManager()->rememberPermissions(m_origin, m_feature, QWebEnginePage::PermissionGrantedByUser);
118void HTML5PermissionsNotification::denyPermissions()
124 m_page->setFeaturePermission(m_origin, m_feature, QWebEnginePage::PermissionDeniedByUser);
126 if (ui->remember->isChecked()) {
127 mApp->html5PermissionsManager()->rememberPermissions(m_origin, m_feature, QWebEnginePage::PermissionDeniedByUser);
HTML5PermissionsNotification(const QUrl &origin, QWebEnginePage *page, const QWebEnginePage::Feature &feature)
~HTML5PermissionsNotification()
static QIcon standardIcon(QStyle::StandardPixmap icon)