1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
// SPDX-FileCopyrightText: 2021 Jonah BrĂ¼chert <jbb@kaidan.im>
// SPDX-FileCopyrightText: 2020 Rinigus <rinigus.git@gmail.com>
//
// SPDX-License-Identifier: GPL-2.0-or-later
#include "useragent.h"
#include <QQuickWebEngineProfile>
#include "settingshelper.h"
UserAgent::UserAgent(QObject *parent)
: QObject(parent)
, m_defaultProfile(QQuickWebEngineProfile::defaultProfile())
, m_defaultUserAgent(m_defaultProfile->httpUserAgent())
, m_chromeVersion(extractValueFromAgent(u"Chrome"))
, m_appleWebKitVersion(extractValueFromAgent(u"AppleWebKit"))
, m_webEngineVersion(extractValueFromAgent(u"QtWebEngine"))
, m_safariVersion(extractValueFromAgent(u"Safari"))
, m_isMobile(SettingsHelper::isMobile())
{
}
QString UserAgent::userAgent() const
{
return QStringView(
u"Mozilla/5.0 (%1) AppleWebKit/%2 (KHTML, like Gecko) QtWebEngine/%3 "
u"Chrome/%4 %5 Safari/%6")
.arg(m_isMobile ? u"Linux; Plasma Mobile, like Android 9.0" : u"X11; Linux x86_64",
m_appleWebKitVersion,
m_webEngineVersion,
m_chromeVersion,
m_isMobile ? u"Mobile" : u"Desktop",
m_safariVersion);
}
bool UserAgent::isMobile() const
{
return m_isMobile;
}
void UserAgent::setIsMobile(bool value)
{
if (m_isMobile != value) {
m_isMobile = value;
Q_EMIT isMobileChanged();
Q_EMIT userAgentChanged();
}
}
QStringView UserAgent::extractValueFromAgent(const QStringView key)
{
const int index = m_defaultUserAgent.indexOf(key) + key.length() + 1;
int endIndex = m_defaultUserAgent.indexOf(u' ', index);
if (endIndex == -1) {
endIndex = m_defaultUserAgent.size();
}
return QStringView(m_defaultUserAgent).mid(index, endIndex - index);
}
#include "moc_useragent.cpp"
|