1
mirror of https://invent.kde.org/network/falkon.git synced 2024-11-11 09:32:12 +01:00

Fix build with latest QtWebEngine 5.6

This commit is contained in:
David Rosca 2015-10-22 14:44:41 +02:00
parent 37f32021df
commit de20021f10
7 changed files with 75 additions and 45 deletions

View File

@ -23,15 +23,25 @@
#include "qztools.h" #include "qztools.h"
#include <QNetworkCookie> #include <QNetworkCookie>
#include <QWebEngineProfile>
#include <QWebEngineSettings> #include <QWebEngineSettings>
#include <QDateTime> #include <QDateTime>
//#define COOKIE_DEBUG //#define COOKIE_DEBUG
CookieJar::CookieJar(QObject* parent) CookieJar::CookieJar(QObject* parent)
: QWebEngineCookieStoreClient(parent) : QObject(parent)
, m_client(mApp->webProfile()->cookieStoreClient())
{ {
loadSettings(); loadSettings();
connect(m_client, &QWebEngineCookieStoreClient::cookieAdded, this, &CookieJar::cookieAdded);
connect(m_client, &QWebEngineCookieStoreClient::cookieRemoved, this, &CookieJar::cookieRemoved);
m_client->setCookieFilter([this](const QWebEngineCookieStoreClient::FilterRequest &req) {
QWebEngineCookieStoreClient::FilterRequest &r = const_cast<QWebEngineCookieStoreClient::FilterRequest&>(req);
r.accepted = acceptCookie(r.firstPartyUrl, r.cookieLine, r.cookieSource);
});
} }
void CookieJar::loadSettings() void CookieJar::loadSettings()
@ -51,7 +61,44 @@ void CookieJar::setAllowCookies(bool allow)
m_allowCookies = allow; m_allowCookies = allow;
} }
bool CookieJar::acceptCookie(const QUrl &firstPartyUrl, const QByteArray &cookieLine, const QUrl &cookieSource) void CookieJar::getAllCookies(const QWebEngineCallback<const QByteArray &> callback)
{
m_client->getAllCookies(callback);
}
void CookieJar::deleteAllCookies()
{
m_client->deleteAllCookies();
}
bool CookieJar::matchDomain(QString cookieDomain, QString siteDomain) const
{
// According to RFC 6265
// Remove leading dot
if (cookieDomain.startsWith(QLatin1Char('.'))) {
cookieDomain = cookieDomain.mid(1);
}
if (siteDomain.startsWith(QLatin1Char('.'))) {
siteDomain = siteDomain.mid(1);
}
return QzTools::matchDomain(cookieDomain, siteDomain);
}
bool CookieJar::listMatchesDomain(const QStringList &list, const QString &cookieDomain) const
{
foreach (const QString &d, list) {
if (matchDomain(d, cookieDomain)) {
return true;
}
}
return false;
}
bool CookieJar::acceptCookie(const QUrl &firstPartyUrl, const QByteArray &cookieLine, const QUrl &cookieSource) const
{ {
const QList<QNetworkCookie> cookies = QNetworkCookie::parseCookies(cookieLine); const QList<QNetworkCookie> cookies = QNetworkCookie::parseCookies(cookieLine);
Q_ASSERT(cookies.size() == 1); Q_ASSERT(cookies.size() == 1);
@ -101,30 +148,3 @@ bool CookieJar::rejectCookie(const QString &domain, const QNetworkCookie &cookie
return false; return false;
} }
bool CookieJar::matchDomain(QString cookieDomain, QString siteDomain) const
{
// According to RFC 6265
// Remove leading dot
if (cookieDomain.startsWith(QLatin1Char('.'))) {
cookieDomain = cookieDomain.mid(1);
}
if (siteDomain.startsWith(QLatin1Char('.'))) {
siteDomain = siteDomain.mid(1);
}
return QzTools::matchDomain(cookieDomain, siteDomain);
}
bool CookieJar::listMatchesDomain(const QStringList &list, const QString &cookieDomain) const
{
foreach (const QString &d, list) {
if (matchDomain(d, cookieDomain)) {
return true;
}
}
return false;
}

View File

@ -26,7 +26,7 @@
class AutoSaver; class AutoSaver;
class QUPZILLA_EXPORT CookieJar : public QWebEngineCookieStoreClient class QUPZILLA_EXPORT CookieJar : public QObject
{ {
Q_OBJECT Q_OBJECT
@ -36,13 +36,20 @@ public:
void loadSettings(); void loadSettings();
void setAllowCookies(bool allow); void setAllowCookies(bool allow);
bool acceptCookie(const QUrl &firstPartyUrl, const QByteArray &cookieLine, const QUrl &cookieSource) Q_DECL_OVERRIDE;
void getAllCookies(const QWebEngineCallback<const QByteArray&> callback);
void deleteAllCookies();
signals:
void cookieAdded(const QNetworkCookie &cookie);
void cookieRemoved(const QNetworkCookie &cookie);
protected: protected:
bool matchDomain(QString cookieDomain, QString siteDomain) const; bool matchDomain(QString cookieDomain, QString siteDomain) const;
bool listMatchesDomain(const QStringList &list, const QString &cookieDomain) const; bool listMatchesDomain(const QStringList &list, const QString &cookieDomain) const;
private: private:
bool acceptCookie(const QUrl &firstPartyUrl, const QByteArray &cookieLine, const QUrl &cookieSource) const;
bool rejectCookie(const QString &domain, const QNetworkCookie &cookie, const QString &cookieDomain) const; bool rejectCookie(const QString &domain, const QNetworkCookie &cookie, const QString &cookieDomain) const;
bool m_allowCookies; bool m_allowCookies;
@ -51,6 +58,7 @@ private:
QStringList m_whitelist; QStringList m_whitelist;
QStringList m_blacklist; QStringList m_blacklist;
QWebEngineCookieStoreClient *m_client;
}; };
#endif // COOKIEJAR_H #endif // COOKIEJAR_H

View File

@ -84,8 +84,8 @@ CookieManager::CookieManager()
connect(removeShortcut, SIGNAL(activated()), this, SLOT(deletePressed())); connect(removeShortcut, SIGNAL(activated()), this, SLOT(deletePressed()));
connect(ui->search, SIGNAL(textChanged(QString)), this, SLOT(filterString(QString))); connect(ui->search, SIGNAL(textChanged(QString)), this, SLOT(filterString(QString)));
connect (mApp->cookieJar(), &CookieJar::cookieAdded, this, &CookieManager::addCookie); connect(mApp->cookieJar(), &CookieJar::cookieAdded, this, &CookieManager::addCookie);
connect (mApp->cookieJar(), &CookieJar::cookieRemoved, this, &CookieManager::removeCookie); connect(mApp->cookieJar(), &CookieJar::cookieRemoved, this, &CookieManager::removeCookie);
// Load cookies // Load cookies
mApp->cookieJar()->getAllCookies([this](const QByteArray &res) { mApp->cookieJar()->getAllCookies([this](const QByteArray &res) {

View File

@ -43,14 +43,14 @@ NetworkManager::NetworkManager(QObject *parent)
: QNetworkAccessManager(parent) : QNetworkAccessManager(parent)
{ {
// Create scheme handlers // Create scheme handlers
mApp->webProfile()->installUrlSchemeHandler(new QupZillaSchemeHandler(this)); mApp->webProfile()->installUrlSchemeHandler(QByteArrayLiteral("qupzilla"), new QupZillaSchemeHandler(this));
// Create url interceptor // Create url interceptor
m_urlInterceptor = new NetworkUrlInterceptor(this); m_urlInterceptor = new NetworkUrlInterceptor(this);
mApp->webProfile()->setRequestInterceptor(m_urlInterceptor); mApp->webProfile()->setRequestInterceptor(m_urlInterceptor);
// Create cookie jar // Create cookie jar
mApp->webProfile()->setCookieStoreClient(mApp->cookieJar()); mApp->cookieJar();
connect(this, &QNetworkAccessManager::authenticationRequired, this, [this](QNetworkReply *reply, QAuthenticator *auth) { connect(this, &QNetworkAccessManager::authenticationRequired, this, [this](QNetworkReply *reply, QAuthenticator *auth) {
authentication(reply->url(), auth); authentication(reply->url(), auth);

View File

@ -39,7 +39,7 @@ static QString authorString(const char* name, const QString &mail)
} }
QupZillaSchemeHandler::QupZillaSchemeHandler(QObject *parent) QupZillaSchemeHandler::QupZillaSchemeHandler(QObject *parent)
: QWebEngineUrlSchemeHandler(QByteArrayLiteral("qupzilla"), parent) : QWebEngineUrlSchemeHandler(parent)
{ {
} }

View File

@ -54,6 +54,7 @@
#include <QWebChannel> #include <QWebChannel>
#include <QWebEngineHistory> #include <QWebEngineHistory>
#include <QWebEngineSettings> #include <QWebEngineSettings>
#include <QWebEngineFullScreenRequest>
#include <QTimer> #include <QTimer>
#include <QDesktopServices> #include <QDesktopServices>
#include <QMessageBox> #include <QMessageBox>
@ -316,9 +317,16 @@ void WebPage::windowCloseRequested()
view()->closeView(); view()->closeView();
} }
void WebPage::fullScreenRequested(bool fullScreen) void WebPage::fullScreenRequested(const QWebEngineFullScreenRequest &fullScreenRequest)
{ {
view()->requestFullScreen(fullScreen); view()->requestFullScreen(fullScreenRequest.toggleOn());
const bool accepted = fullScreenRequest.toggleOn() == view()->isFullScreen();
if (accepted)
fullScreenRequest.accept();
else
fullScreenRequest.reject();
} }
void WebPage::featurePermissionRequested(const QUrl &origin, const QWebEnginePage::Feature &feature) void WebPage::featurePermissionRequested(const QUrl &origin, const QWebEnginePage::Feature &feature)
@ -351,11 +359,6 @@ void WebPage::renderProcessTerminated(QWebEnginePage::RenderProcessTerminationSt
}); });
} }
bool WebPage::isFullScreen()
{
return view()->isFullScreen();
}
bool WebPage::acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) bool WebPage::acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame)
{ {
if (!mApp->plugins()->acceptNavigationRequest(this, url, type, isMainFrame)) if (!mApp->plugins()->acceptNavigationRequest(this, url, type, isMainFrame))

View File

@ -74,12 +74,11 @@ private slots:
void urlChanged(const QUrl &url); void urlChanged(const QUrl &url);
void watchedFileChanged(const QString &file); void watchedFileChanged(const QString &file);
void windowCloseRequested(); void windowCloseRequested();
void fullScreenRequested(bool fullScreen); void fullScreenRequested(const QWebEngineFullScreenRequest &fullScreenRequest);
void featurePermissionRequested(const QUrl &origin, const QWebEnginePage::Feature &feature); void featurePermissionRequested(const QUrl &origin, const QWebEnginePage::Feature &feature);
void renderProcessTerminated(RenderProcessTerminationStatus terminationStatus, int exitCode); void renderProcessTerminated(RenderProcessTerminationStatus terminationStatus, int exitCode);
private: private:
bool isFullScreen() Q_DECL_OVERRIDE;
bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame) Q_DECL_OVERRIDE; bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame) Q_DECL_OVERRIDE;
bool certificateError(const QWebEngineCertificateError &error) Q_DECL_OVERRIDE; bool certificateError(const QWebEngineCertificateError &error) Q_DECL_OVERRIDE;
QStringList chooseFiles(FileSelectionMode mode, const QStringList &oldFiles, const QStringList &acceptedMimeTypes) Q_DECL_OVERRIDE; QStringList chooseFiles(FileSelectionMode mode, const QStringList &oldFiles, const QStringList &acceptedMimeTypes) Q_DECL_OVERRIDE;