Falkon Develop
Cross-platform Qt-based web browser
useragentmanager.cpp
Go to the documentation of this file.
1/* ============================================================
2* Falkon - Qt web browser
3* Copyright (C) 2010-2018 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* ============================================================ */
18#include "useragentmanager.h"
19#include "browserwindow.h"
20#include "qztools.h"
21#include "settings.h"
22#include "mainapplication.h"
23
24#include <QWebEngineProfile>
25#include <QRegularExpression>
26
28 : QObject(parent)
29 , m_usePerDomainUserAgent(false)
30{
31 m_defaultUserAgent = mApp->webProfile()->httpUserAgent();
32 m_defaultUserAgent.replace(QRegularExpression(QSL("(QtWebEngine/[^\\s]+)")), QSL("Falkon/%1 \\1").arg(QString::fromLatin1(Qz::VERSION)));
33}
34
36{
37 Settings settings;
38 settings.beginGroup(QSL("Web-Browser-Settings"));
39 m_globalUserAgent = settings.value(QSL("UserAgent"), QString()).toString();
40 settings.endGroup();
41
42 settings.beginGroup(QSL("User-Agent-Settings"));
43 m_usePerDomainUserAgent = settings.value(QSL("UsePerDomainUA"), false).toBool();
44 QStringList domainList = settings.value(QSL("DomainList"), QStringList()).toStringList();
45 QStringList userAgentsList = settings.value(QSL("UserAgentsList"), QStringList()).toStringList();
46 settings.endGroup();
47
48 m_usePerDomainUserAgent = (m_usePerDomainUserAgent && domainList.count() == userAgentsList.count());
49
50 if (m_usePerDomainUserAgent) {
51 for (int i = 0; i < domainList.count(); ++i) {
52 m_userAgentsList[domainList.at(i)] = userAgentsList.at(i);
53 }
54 }
55
56 const QString userAgent = m_globalUserAgent.isEmpty() ? m_defaultUserAgent : m_globalUserAgent;
57 mApp->webProfile()->setHttpUserAgent(userAgent);
58}
59
61{
62 return m_globalUserAgent;
63}
64
66{
67 return m_defaultUserAgent;
68}
69
71{
72 return m_usePerDomainUserAgent;
73}
74
75QHash<QString, QString> UserAgentManager::perDomainUserAgentsList() const
76{
77 return m_userAgentsList;
78}
void beginGroup(const QString &prefix)
Definition: settings.cpp:79
void endGroup()
Definition: settings.cpp:84
QVariant value(const QString &key, const QVariant &defaultValue=QVariant())
Definition: settings.cpp:74
bool usePerDomainUserAgents() const
QString defaultUserAgent() const
UserAgentManager(QObject *parent=nullptr)
QHash< QString, QString > perDomainUserAgentsList() const
QString globalUserAgent() const
#define mApp
FALKON_EXPORT const char * VERSION
Definition: qzcommon.cpp:26
i
Definition: i18n.py:23
#define QSL(x)
Definition: qzcommon.h:40