File indexing completed on 2024-05-12 16:23:41
0001 // SPDX-FileCopyrightText: 2021 Jonah BrĂ¼chert <jbb@kaidan.im> 0002 // SPDX-FileCopyrightText: 2020 Rinigus <rinigus.git@gmail.com> 0003 // 0004 // SPDX-License-Identifier: GPL-2.0-or-later 0005 0006 #include "useragent.h" 0007 0008 #include <QQuickWebEngineProfile> 0009 0010 #include "settingshelper.h" 0011 0012 UserAgent::UserAgent(QObject *parent) 0013 : QObject(parent) 0014 , m_defaultProfile(QQuickWebEngineProfile::defaultProfile()) 0015 , m_defaultUserAgent(m_defaultProfile->httpUserAgent()) 0016 , m_chromeVersion(extractValueFromAgent(u"Chrome")) 0017 , m_appleWebKitVersion(extractValueFromAgent(u"AppleWebKit")) 0018 , m_webEngineVersion(extractValueFromAgent(u"QtWebEngine")) 0019 , m_safariVersion(extractValueFromAgent(u"Safari")) 0020 , m_isMobile(SettingsHelper::isMobile()) 0021 { 0022 } 0023 0024 QString UserAgent::userAgent() const 0025 { 0026 return QStringView( 0027 u"Mozilla/5.0 (%1) AppleWebKit/%2 (KHTML, like Gecko) QtWebEngine/%3 " 0028 u"Chrome/%4 %5 Safari/%6") 0029 .arg(m_isMobile ? u"Linux; Plasma Mobile, like Android 9.0" : u"X11; Linux x86_64", 0030 m_appleWebKitVersion, 0031 m_webEngineVersion, 0032 m_chromeVersion, 0033 m_isMobile ? u"Mobile" : u"Desktop", 0034 m_safariVersion); 0035 } 0036 0037 bool UserAgent::isMobile() const 0038 { 0039 return m_isMobile; 0040 } 0041 0042 void UserAgent::setIsMobile(bool value) 0043 { 0044 if (m_isMobile != value) { 0045 m_isMobile = value; 0046 0047 Q_EMIT isMobileChanged(); 0048 Q_EMIT userAgentChanged(); 0049 } 0050 } 0051 0052 QStringView UserAgent::extractValueFromAgent(const QStringView key) 0053 { 0054 const int index = m_defaultUserAgent.indexOf(key) + key.length() + 1; 0055 int endIndex = m_defaultUserAgent.indexOf(u' ', index); 0056 if (endIndex == -1) { 0057 endIndex = m_defaultUserAgent.size(); 0058 } 0059 return QStringView(m_defaultUserAgent).mid(index, endIndex - index); 0060 } 0061 0062 #include "moc_useragent.cpp"