/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: https://neueland.iserlohn-fortress.net/smolbote.hg * * SPDX-License-Identifier: GPL-3.0 */ #include "webprofile.h" #include #include #include #include WebProfile *WebProfile::profile = nullptr; void loadProfile(WebProfile *profile, const QString &path) { // return if there is no config file if(!QFileInfo::exists(path)) return; #ifdef QT_DEBUG qDebug("Reading config for profile '%s': %s", qUtf8Printable(profile->name()), qUtf8Printable(path)); #endif QSettings config(path, QSettings::IniFormat); config.beginGroup("properties"); for(const QString &key : config.childKeys()) { profile->setProperty(qUtf8Printable(key), config.value(key)); } config.endGroup(); // properties // m_search = config.value("search", conf.value("profile.search")).toString(); // m_homepage = config.value("homepage", conf["profile.homepage"]).toUrl(); // m_newtab = config.value("newtab", conf["profile.newtab"]).toUrl(); // config.beginGroup("http"); // setHttpUserAgent(config.value("userAgent", httpUserAgent()).toString()); // setHttpAcceptLanguage(config.value("accept-lang", httpAcceptLanguage()).toString()); // { // QString cacheType = config.value("cacheType").toString(); // if(cacheType == "memory") { // setHttpCacheType(QWebEngineProfile::MemoryHttpCache); // } else if(cacheType == "disk") { // setHttpCacheType(QWebEngineProfile::DiskHttpCache); // } else if(cacheType == "disabled") { // setHttpCacheType(QWebEngineProfile::NoCache); // } // } // setHttpCacheMaximumSize(config.value("cacheSize", httpCacheMaximumSize()).toInt()); // config.endGroup(); // http // config.beginGroup("policy"); // { // QString cookies = config.value("cookies").toString(); // if(cookies == "disabled") { // setPersistentCookiesPolicy(QWebEngineProfile::NoPersistentCookies); // } else if(cookies == "allow") { // setPersistentCookiesPolicy(QWebEngineProfile::AllowPersistentCookies); // } else if(cookies == "force") { // setPersistentCookiesPolicy(QWebEngineProfile::ForcePersistentCookies); // } // } // config.endGroup(); // policy // config.beginGroup("attributes"); // QWebEngineSettings *s = settings(); // s->setAttribute(QWebEngineSettings::AutoLoadImages, // config.value("autoLoadImages", s->testAttribute(QWebEngineSettings::AutoLoadImages)).toBool()); // s->setAttribute(QWebEngineSettings::JavascriptEnabled, // config.value("javascriptEnabled", s->testAttribute(QWebEngineSettings::JavascriptEnabled)).toBool()); // s->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, // config.value("javascriptCanOpenWindows", s->testAttribute(QWebEngineSettings::JavascriptCanOpenWindows)).toBool()); // s->setAttribute(QWebEngineSettings::JavascriptCanAccessClipboard, // config.value("javascriptCanAccessClipboard", s->testAttribute(QWebEngineSettings::JavascriptCanAccessClipboard)).toBool()); // s->setAttribute(QWebEngineSettings::LinksIncludedInFocusChain, // config.value("linksIncludedInFocusChain", s->testAttribute(QWebEngineSettings::LinksIncludedInFocusChain)).toBool()); // s->setAttribute(QWebEngineSettings::LocalStorageEnabled, // config.value("localStorageEnabled", s->testAttribute(QWebEngineSettings::LocalStorageEnabled)).toBool()); // s->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, // config.value("localContentCanAccessRemoteUrls", s->testAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls)).toBool()); // s->setAttribute(QWebEngineSettings::XSSAuditingEnabled, // config.value("xssAuditingEnabled", s->testAttribute(QWebEngineSettings::XSSAuditingEnabled)).toBool()); // s->setAttribute(QWebEngineSettings::SpatialNavigationEnabled, // config.value("spatialNavigationEnabled", s->testAttribute(QWebEngineSettings::SpatialNavigationEnabled)).toBool()); // s->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls, // config.value("localContentCanAccessFileUrls", s->testAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls)).toBool()); // s->setAttribute(QWebEngineSettings::HyperlinkAuditingEnabled, // config.value("hyperlinkAuditingEnabled", s->testAttribute(QWebEngineSettings::HyperlinkAuditingEnabled)).toBool()); // s->setAttribute(QWebEngineSettings::ScrollAnimatorEnabled, // config.value("scrollAnimatorEnabled", s->testAttribute(QWebEngineSettings::ScrollAnimatorEnabled)).toBool()); // s->setAttribute(QWebEngineSettings::ErrorPageEnabled, // config.value("errorPageEnabled", s->testAttribute(QWebEngineSettings::ErrorPageEnabled)).toBool()); // s->setAttribute(QWebEngineSettings::PluginsEnabled, // config.value("pluginsEnabled", s->testAttribute(QWebEngineSettings::PluginsEnabled)).toBool()); // s->setAttribute(QWebEngineSettings::FullScreenSupportEnabled, // config.value("fullscreenSupportEnabled", s->testAttribute(QWebEngineSettings::FullScreenSupportEnabled)).toBool()); // s->setAttribute(QWebEngineSettings::ScreenCaptureEnabled, // config.value("screenCaptureEnabled", s->testAttribute(QWebEngineSettings::ScreenCaptureEnabled)).toBool()); // s->setAttribute(QWebEngineSettings::WebGLEnabled, // config.value("webglEnabled", s->testAttribute(QWebEngineSettings::WebGLEnabled)).toBool()); // s->setAttribute(QWebEngineSettings::Accelerated2dCanvasEnabled, // config.value("accelerated2dCanvasEnabled", s->testAttribute(QWebEngineSettings::Accelerated2dCanvasEnabled)).toBool()); // s->setAttribute(QWebEngineSettings::AutoLoadIconsForPage, // config.value("autoLoadIconsForPage", s->testAttribute(QWebEngineSettings::AutoLoadIconsForPage)).toBool()); // s->setAttribute(QWebEngineSettings::TouchIconsEnabled, // config.value("touchIconsEnabled", s->testAttribute(QWebEngineSettings::TouchIconsEnabled)).toBool()); // s->setAttribute(QWebEngineSettings::FocusOnNavigationEnabled, // config.value("focusOnNavigationEnabled", s->testAttribute(QWebEngineSettings::FocusOnNavigationEnabled)).toBool()); // s->setAttribute(QWebEngineSettings::PrintElementBackgrounds, // config.value("printElementBackgrounds", s->testAttribute(QWebEngineSettings::PrintElementBackgrounds)).toBool()); // s->setAttribute(QWebEngineSettings::AllowRunningInsecureContent, // config.value("allowRunningInsecureContent", s->testAttribute(QWebEngineSettings::AllowRunningInsecureContent)).toBool()); // config.endGroup(); // attributes } //void WebProfile::saveProfile(const QString &path) //{ // QSettings config(persistentStoragePath() + "/profile.ini", QSettings::IniFormat); // config.setValue("homepage", homepage().toString()); // config.setValue("newtab", newtab().toString()); // config.beginGroup("http"); // config.setValue("userAgent", httpUserAgent()); // config.setValue("accept-lang", httpAcceptLanguage()); // switch(httpCacheType()) { // case MemoryHttpCache: // config.setValue("cacheType", "memory"); // break; // case DiskHttpCache: // config.setValue("cacheType", "disk"); // break; // case NoCache: // config.setValue("cacheType", "disabled"); // break; // } // config.setValue("cacheSize", httpCacheMaximumSize()); // config.endGroup(); // http // config.beginGroup("policy"); // switch(persistentCookiesPolicy()) { // case NoPersistentCookies: // config.setValue("cookies", "disabled"); // break; // case AllowPersistentCookies: // config.setValue("cookies", "allow"); // break; // case ForcePersistentCookies: // config.setValue("cookies", "force"); // break; // } // config.endGroup(); // policy // QWebEngineSettings *s = settings(); // config.beginGroup("attributes"); // config.setValue("autoLoadImages", s->testAttribute(QWebEngineSettings::AutoLoadImages)); // config.setValue("javascriptEnabled", s->testAttribute(QWebEngineSettings::JavascriptEnabled)); // config.setValue("javascriptCanOpenWindows", s->testAttribute(QWebEngineSettings::JavascriptCanOpenWindows)); // config.setValue("javascriptCanAccessClipboard", s->testAttribute(QWebEngineSettings::JavascriptCanAccessClipboard)); // config.setValue("linksIncludedInFocusChain", s->testAttribute(QWebEngineSettings::LinksIncludedInFocusChain)); // config.setValue("localStorageEnabled", s->testAttribute(QWebEngineSettings::LocalStorageEnabled)); // config.setValue("localContentCanAccessRemoteUrls", s->testAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls)); // config.setValue("xssAuditingEnabled", s->testAttribute(QWebEngineSettings::XSSAuditingEnabled)); // config.setValue("spatialNavigationEnabled", s->testAttribute(QWebEngineSettings::SpatialNavigationEnabled)); // config.setValue("localContentCanAccessFileUrls", s->testAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls)); // config.setValue("hyperlinkAuditingEnabled", s->testAttribute(QWebEngineSettings::HyperlinkAuditingEnabled)); // config.setValue("scrollAnimatorEnabled", s->testAttribute(QWebEngineSettings::ScrollAnimatorEnabled)); // config.setValue("errorPageEnabled", s->testAttribute(QWebEngineSettings::ErrorPageEnabled)); // config.setValue("pluginsEnabled", s->testAttribute(QWebEngineSettings::PluginsEnabled)); // config.setValue("fullscreenSupportEnabled", s->testAttribute(QWebEngineSettings::FullScreenSupportEnabled)); // config.setValue("screenCaptureEnabled", s->testAttribute(QWebEngineSettings::ScreenCaptureEnabled)); // config.setValue("webglEnabled", s->testAttribute(QWebEngineSettings::WebGLEnabled)); // config.setValue("accelerated2dCanvasEnabled", s->testAttribute(QWebEngineSettings::Accelerated2dCanvasEnabled)); // config.setValue("autoLoadIconsForPage", s->testAttribute(QWebEngineSettings::AutoLoadIconsForPage)); // config.setValue("touchIconsEnabled", s->testAttribute(QWebEngineSettings::TouchIconsEnabled)); //#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0) // config.setValue("focusOnNavigationEnabled", s->testAttribute(QWebEngineSettings::FocusOnNavigationEnabled)); // config.setValue("printElementBackgrounds", s->testAttribute(QWebEngineSettings::PrintElementBackgrounds)); // config.setValue("allowRunningInsecureContent", s->testAttribute(QWebEngineSettings::AllowRunningInsecureContent)); //#endif // config.endGroup(); // attributes // config.sync(); //} WebProfile::WebProfile(const QHash &defaults, QObject *parent) : QWebEngineProfile(parent) { m_name = tr("Off-the-record"); #ifdef QT_DEBUG qDebug("Creating off-the-record profile"); #endif m_search = defaults.value("profile.search"); m_homepage = QUrl::fromUserInput(defaults.value("profile.homepage")); m_newtab = QUrl::fromUserInput(defaults.value("profile.newtab")); } WebProfile::WebProfile(const QString &name, QObject *parent) : QWebEngineProfile(name, parent) { m_name = name; #ifdef QT_DEBUG qDebug("Creating profile %s", qUtf8Printable(m_name)); #endif } WebProfile::~WebProfile() = default;