diff options
author | 2021-04-10 21:55:43 +0530 | |
---|---|---|
committer | 2021-04-10 21:55:43 +0530 | |
commit | 278aefb57859f56cea18d4d4917244172e2154d4 (patch) | |
tree | 58f26ae4dce8e58e26a82fdcc0e9796df0eb5c5c /src | |
parent | 7bc9214b73a3b593233d87e17b9d8bf1a82155c9 (diff) | |
download | whatsie-278aefb57859f56cea18d4d4917244172e2154d4.tar.gz whatsie-278aefb57859f56cea18d4d4917244172e2154d4.zip |
follow set permission in page
Diffstat (limited to 'src')
-rw-r--r-- | src/webenginepage.cpp | 76 | ||||
-rw-r--r-- | src/webenginepage.h | 4 |
2 files changed, 52 insertions, 28 deletions
diff --git a/src/webenginepage.cpp b/src/webenginepage.cpp index 4478d6d..33c89f9 100644 --- a/src/webenginepage.cpp +++ b/src/webenginepage.cpp @@ -2,17 +2,15 @@ #include <QIcon> #include <QStyle> +#include <QWebEngineSettings> WebEnginePage::WebEnginePage(QWebEngineProfile *profile, QObject *parent) : QWebEnginePage(profile, parent) { // Connect signals and slots - connect(this, &QWebEnginePage::featurePermissionRequested, - this, &WebEnginePage::handleFeaturePermissionRequested); - connect(this, &QWebEnginePage::loadFinished, - this, &WebEnginePage::handleLoadFinished); profile->setHttpUserAgent(profile->httpUserAgent().replace("QtWebEngine/5.13.0","")); + connect(this, &QWebEnginePage::loadFinished,this, &WebEnginePage::handleLoadFinished); connect(this, &QWebEnginePage::authenticationRequired, this, &WebEnginePage::handleAuthenticationRequired); connect(this, &QWebEnginePage::featurePermissionRequested, this, &WebEnginePage::handleFeaturePermissionRequested); connect(this, &QWebEnginePage::proxyAuthenticationRequired, this, &WebEnginePage::handleProxyAuthenticationRequired); @@ -68,37 +66,59 @@ inline QString questionForFeature(QWebEnginePage::Feature feature) void WebEnginePage::handleFeaturePermissionRequested(const QUrl &securityOrigin, Feature feature) { + bool autoPlay = true; + if(settings.value("autoPlayMedia").isValid()) + autoPlay = settings.value("autoPlayMedia",false).toBool(); + if( autoPlay && (feature == QWebEnginePage::MediaVideoCapture || feature == QWebEnginePage::MediaAudioVideoCapture)) + { + QWebEngineProfile *defProfile = QWebEngineProfile::defaultProfile(); + auto* webSettings = defProfile->settings(); + webSettings->setAttribute(QWebEngineSettings::PlaybackRequiresUserGesture,false); + + profile()->settings()->setAttribute(QWebEngineSettings::PlaybackRequiresUserGesture,false); + } + QString title = tr("Permission Request"); QString question = questionForFeature(feature).arg(securityOrigin.host()); - if (!question.isEmpty() && QMessageBox::question(view()->window(), title, question) == QMessageBox::Yes) - setFeaturePermission(securityOrigin, feature, PermissionGrantedByUser); - else - setFeaturePermission(securityOrigin, feature, PermissionDeniedByUser); + + QString featureStr = QVariant::fromValue(feature).toString(); + settings.beginGroup("permissions"); + if(settings.value(featureStr,false).toBool()){ + setFeaturePermission(securityOrigin, feature, QWebEnginePage::PermissionPolicy::PermissionGrantedByUser); + }else{ + if (!question.isEmpty() && QMessageBox::question(view()->window(), title, question) == QMessageBox::Yes) + { + setFeaturePermission(securityOrigin, feature, QWebEnginePage::PermissionPolicy::PermissionGrantedByUser); + settings.setValue(featureStr,true); + }else{ + setFeaturePermission(securityOrigin, feature, QWebEnginePage::PermissionPolicy::PermissionDeniedByUser); + settings.setValue(featureStr,false); + } + } + settings.endGroup(); } void WebEnginePage::handleLoadFinished(bool ok) { Q_UNUSED(ok); - setFeaturePermission( - QUrl("https://web.whatsapp.com/"), - QWebEnginePage::Feature::Notifications, - QWebEnginePage::PermissionPolicy::PermissionGrantedByUser - ); - setFeaturePermission( - QUrl("https://web.whatsapp.com/"), - QWebEnginePage::Feature::MediaAudioCapture, - QWebEnginePage::PermissionPolicy::PermissionGrantedByUser - ); - setFeaturePermission( - QUrl("https://web.whatsapp.com/"), - QWebEnginePage::Feature::MediaVideoCapture, - QWebEnginePage::PermissionPolicy::PermissionGrantedByUser - ); - setFeaturePermission( - QUrl("https://web.whatsapp.com/"), - QWebEnginePage::Feature::MediaAudioVideoCapture, - QWebEnginePage::PermissionPolicy::PermissionGrantedByUser - ); + //turn on Notification settings by default + if(settings.value("permissions/Notifications").isValid()==false) + { + settings.beginGroup("permissions"); + settings.setValue("Notifications",true); + setFeaturePermission( + QUrl("https://web.whatsapp.com/"), + QWebEnginePage::Feature::Notifications, + QWebEnginePage::PermissionPolicy::PermissionGrantedByUser + ); + settings.endGroup(); + } else if (settings.value("permissions/Notifications",true).toBool()) { + setFeaturePermission( + QUrl("https://web.whatsapp.com/"), + QWebEnginePage::Feature::Notifications, + QWebEnginePage::PermissionPolicy::PermissionGrantedByUser + ); + } } void WebEnginePage::fullScreenRequestedByPage(QWebEngineFullScreenRequest request) diff --git a/src/webenginepage.h b/src/webenginepage.h index 7ec1a69..a8241d0 100644 --- a/src/webenginepage.h +++ b/src/webenginepage.h @@ -17,6 +17,8 @@ #include <QWebEngineRegisterProtocolHandlerRequest> #include <QWebEngineFullScreenRequest> +#include <QSettings> + #include "ui_certificateerrordialog.h" #include "ui_passworddialog.h" @@ -26,6 +28,8 @@ class WebEnginePage : public QWebEnginePage public: WebEnginePage(QWebEngineProfile *profile, QObject *parent = nullptr); +private: + QSettings settings; protected: bool acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) override; QWebEnginePage* createWindow(QWebEnginePage::WebWindowType type) override; |