Falkon Develop
Cross-platform Qt-based web browser
html5permissionsmanager.cpp
Go to the documentation of this file.
1/* ============================================================
2* Falkon - Qt web browser
3* Copyright (C) 2013-2015 David Rosca <nowrep@gmail.com>
4*
5* This program is free software: you can redistribute it and/or modify
6* it under the terms of the GNU General Public License as published by
7* the Free Software Foundation, either version 3 of the License, or
8* (at your option) any later version.
9*
10* This program is distributed in the hope that it will be useful,
11* but WITHOUT ANY WARRANTY; without even the implied warranty of
12* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13* GNU General Public License for more details.
14*
15* You should have received a copy of the GNU General Public License
16* along with this program. If not, see <http://www.gnu.org/licenses/>.
17* ============================================================ */
20#include "settings.h"
21#include "webview.h"
22#include "mainapplication.h"
23#include "sitesettingsmanager.h"
24
25#include <QtWebEngineWidgetsVersion>
26
27
29 : QObject(parent)
30{
31}
32
33void HTML5PermissionsManager::requestPermissions(WebPage* page, const QUrl &origin, const QWebEnginePage::Feature &feature)
34{
35 if (!page) {
36 return;
37 }
38
39 if (!mApp->siteSettingsManager()->getSupportedFeatures().contains(feature)) {
40 qWarning() << "HTML5PermissionsManager: Unknown feature" << feature;
41 return;
42 }
43
44 auto permission = mApp->siteSettingsManager()->getPermission(feature, origin);
45 if (permission == SiteSettingsManager::Default) {
46 permission = mApp->siteSettingsManager()->getDefaultPermission(feature);
47 }
48
49 if (permission == SiteSettingsManager::Allow) {
50 page->setFeaturePermission(origin, feature, QWebEnginePage::PermissionGrantedByUser);
51 }
52 else if (permission == SiteSettingsManager::Deny) {
53 page->setFeaturePermission(origin, feature, QWebEnginePage::PermissionDeniedByUser);
54 }
55 else {
56 auto* notif = new HTML5PermissionsNotification(origin, page, feature);
57 page->view()->addNotification(notif);
58 }
59}
60
61void HTML5PermissionsManager::rememberPermissions(const QUrl &origin, const QWebEnginePage::Feature &feature,
62 const QWebEnginePage::PermissionPolicy &policy)
63{
64 if (origin.isEmpty()) {
65 return;
66 }
67
68 if (policy == QWebEnginePage::PermissionGrantedByUser) {
69 mApp->siteSettingsManager()->setOption(feature, origin, SiteSettingsManager::Allow);
70 }
71 else {
72 mApp->siteSettingsManager()->setOption(feature, origin, SiteSettingsManager::Deny);
73 }
74}
void rememberPermissions(const QUrl &origin, const QWebEnginePage::Feature &feature, const QWebEnginePage::PermissionPolicy &policy)
void requestPermissions(WebPage *page, const QUrl &origin, const QWebEnginePage::Feature &feature)
HTML5PermissionsManager(QObject *parent)
WebView * view() const
Definition: webpage.cpp:140
void addNotification(QWidget *notif)
Definition: webview.cpp:286
#define mApp