aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar keshavbhatt <keshavnrj@gmail.com>2021-04-10 21:55:43 +0530
committerLibravatar keshavbhatt <keshavnrj@gmail.com>2021-04-10 21:55:43 +0530
commit278aefb57859f56cea18d4d4917244172e2154d4 (patch)
tree58f26ae4dce8e58e26a82fdcc0e9796df0eb5c5c
parent7bc9214b73a3b593233d87e17b9d8bf1a82155c9 (diff)
downloadwhatsie-278aefb57859f56cea18d4d4917244172e2154d4.tar.gz
whatsie-278aefb57859f56cea18d4d4917244172e2154d4.zip
follow set permission in page
-rw-r--r--src/webenginepage.cpp76
-rw-r--r--src/webenginepage.h4
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;