File indexing completed on 2024-05-12 05:00:23
0001 /* This file is part of the KDE project 0002 SPDX-FileCopyrightText: 2023 Stefano Crocco <stefano.crocco@alice.it> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "implementations/konqbrowser.h" 0008 #include "interfaces/cookiejar.h" 0009 #include "konqapplication.h" 0010 #include "konqmainwindow.h" 0011 #include "konqview.h" 0012 0013 #include <konqdebug.h> 0014 0015 #include <KSharedConfig> 0016 #include <KConfigGroup> 0017 #include <KParts/ReadOnlyPart> 0018 0019 using namespace KonqInterfaces; 0020 0021 #if QT_VERSION_MAJOR == 6 0022 #define CHROME_VERSION "108.0.5359.220" 0023 #else 0024 #define CHROME_VERSION "87.0.4280.144" 0025 #endif 0026 0027 QString KonqBrowser::konquerorUserAgent() { 0028 QString s_konqUserAgent{QStringLiteral("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/%1 Chrome/%2 Safari/537.36 Konqueror (WebEngine)").arg(qVersion()).arg(CHROME_VERSION)}; 0029 return s_konqUserAgent; 0030 } 0031 0032 KonqBrowser::KonqBrowser(QObject* parent) : Browser(parent), m_cookieJar(nullptr) 0033 { 0034 applyConfiguration(); 0035 } 0036 0037 KonqBrowser::~KonqBrowser() 0038 { 0039 } 0040 0041 void KonqBrowser::setCookieJar(CookieJar* jar) 0042 { 0043 m_cookieJar = jar; 0044 } 0045 0046 CookieJar* KonqBrowser::cookieJar() const 0047 { 0048 return m_cookieJar; 0049 } 0050 0051 QString KonqBrowser::konqUserAgent() const 0052 { 0053 return konquerorUserAgent(); 0054 } 0055 0056 QString KonqBrowser::defaultUserAgent() const 0057 { 0058 return m_userAgent.defaultUA; 0059 } 0060 0061 QString KonqBrowser::userAgent() const 0062 { 0063 return m_userAgent.currentUserAgent(); 0064 } 0065 0066 void KonqBrowser::readDefaultUserAgent() 0067 { 0068 const QString oldUA = m_userAgent.currentUserAgent(); 0069 KConfigGroup grp = KSharedConfig::openConfig()->group("UserAgent"); 0070 if (grp.readEntry("UseDefaultUserAgent", true)) { 0071 m_userAgent.defaultUA = konquerorUserAgent(); 0072 } else { 0073 m_userAgent.defaultUA = grp.readEntry("CustomUserAgent", konquerorUserAgent()); 0074 } 0075 if (m_userAgent.usingDefaultUA && m_userAgent.defaultUA != oldUA) { 0076 emit userAgentChanged(m_userAgent.defaultUA); 0077 } 0078 } 0079 0080 void KonqBrowser::applyConfiguration() 0081 { 0082 readDefaultUserAgent(); 0083 } 0084 0085 void KonqBrowser::setTemporaryUserAgent(const QString& newUA) 0086 { 0087 const QString oldUA = userAgent(); 0088 m_userAgent.usingDefaultUA = false; 0089 m_userAgent.temporaryUA = newUA; 0090 if (oldUA != newUA) { 0091 emit userAgentChanged(newUA); 0092 } 0093 } 0094 0095 void KonqBrowser::clearTemporaryUserAgent() 0096 { 0097 const QString oldUA = m_userAgent.currentUserAgent(); 0098 m_userAgent.usingDefaultUA = true; 0099 m_userAgent.temporaryUA.clear(); 0100 const QString newUA = m_userAgent.currentUserAgent(); 0101 if (oldUA != newUA) { 0102 emit userAgentChanged(newUA); 0103 } 0104 } 0105 0106 bool KonqBrowser::canNavigateTo(KParts::ReadOnlyPart* part, const QUrl &url) const 0107 { 0108 if (!part || !part->widget()) { 0109 return true; 0110 } 0111 KonqMainWindow *mw = qobject_cast<KonqMainWindow*>(part->widget()->window()); 0112 if (!mw) { 0113 qCDebug(KONQUEROR_LOG()) << "Part window is not a KonqMainWindow. This shouldn't happen"; 0114 return true; 0115 } 0116 KonqView *v = mw->childView(part); 0117 return v ? v->canNavigateTo(url) : true; 0118 }