diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2014-11-28 12:00:08 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2015-02-05 13:56:10 +0000 |
commit | 4ef5831a398280cc26cbf359dcbb9878e77ab7fb (patch) | |
tree | adb8b7ac7a42b8130b178d1001a5c008c430d325 /src/webenginewidgets | |
parent | faec509a21b4700dbf271c4dcbb3a993f1c4042f (diff) |
Add settings to WebEngineProfiles
This patch adds settings to profiles so common settings might be shared
among all pages in a profile. The former global settings are now replaced
by the settings of the default profile.
Change-Id: I544420e07beeb52ef29b2360bc7929402650cd07
Reviewed-by: Andras Becsi <andras.becsi@theqtcompany.com>
Diffstat (limited to 'src/webenginewidgets')
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.cpp | 5 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile.cpp | 17 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile.h | 3 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile_p.h | 7 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginesettings.cpp | 103 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginesettings.h | 15 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginesettings_p.h | 63 | ||||
-rw-r--r-- | src/webenginewidgets/webenginewidgets.pro | 1 |
8 files changed, 68 insertions, 146 deletions
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index aceac91e3..a59165e8b 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -31,7 +31,6 @@ #include "qwebengineprofile.h" #include "qwebengineprofile_p.h" #include "qwebenginesettings.h" -#include "qwebenginesettings_p.h" #include "qwebengineview.h" #include "qwebengineview_p.h" #include "render_widget_host_view_qt_delegate_widget.h" @@ -173,7 +172,7 @@ QWebEnginePagePrivate::QWebEnginePagePrivate(QWebEngineProfile *_profile) : adapter(new WebContentsAdapter) , history(new QWebEngineHistory(new QWebEngineHistoryPrivate(this))) , profile(_profile ? _profile : QWebEngineProfile::defaultProfile()) - , settings(new QWebEngineSettings) + , settings(new QWebEngineSettings(profile->settings())) , view(0) , isLoading(false) { @@ -857,7 +856,7 @@ void QWebEnginePagePrivate::runFileChooser(WebContentsAdapterClient::FileChooser WebEngineSettings *QWebEnginePagePrivate::webEngineSettings() const { - return settings->d_func()->coreSettings.data(); + return settings->d_func(); } void QWebEnginePage::load(const QUrl& url) diff --git a/src/webenginewidgets/api/qwebengineprofile.cpp b/src/webenginewidgets/api/qwebengineprofile.cpp index 8c4dcb59f..64876bf1a 100644 --- a/src/webenginewidgets/api/qwebengineprofile.cpp +++ b/src/webenginewidgets/api/qwebengineprofile.cpp @@ -40,9 +40,11 @@ #include "qwebenginedownloaditem_p.h" #include "qwebenginepage.h" #include "qwebengineprofile_p.h" +#include "qwebenginesettings.h" #include "browser_context_adapter.h" #include "web_engine_visited_links_manager.h" +#include "web_engine_settings.h" QT_BEGIN_NAMESPACE @@ -97,16 +99,20 @@ QT_BEGIN_NAMESPACE */ QWebEngineProfilePrivate::QWebEngineProfilePrivate(BrowserContextAdapter* browserContext, bool ownsContext) - : m_browserContext(browserContext) + : m_settings(new QWebEngineSettings()) + , m_browserContext(browserContext) { if (ownsContext) m_browserContextRef = browserContext; m_browserContext->setClient(this); + m_settings->d_ptr->initDefaults(browserContext->isOffTheRecord()); } QWebEngineProfilePrivate::~QWebEngineProfilePrivate() { + delete m_settings; + m_settings = 0; m_browserContext->setClient(0); Q_FOREACH (QWebEngineDownloadItem* download, m_ongoingDownloads) { @@ -438,4 +444,13 @@ QWebEngineProfile *QWebEngineProfile::defaultProfile() return &profile; } +/*! + Returns the default settings for all pages in this profile. +*/ +QWebEngineSettings *QWebEngineProfile::settings() const +{ + const Q_D(QWebEngineProfile); + return d->settings(); +} + QT_END_NAMESPACE diff --git a/src/webenginewidgets/api/qwebengineprofile.h b/src/webenginewidgets/api/qwebengineprofile.h index f06c4ef88..0908862e9 100644 --- a/src/webenginewidgets/api/qwebengineprofile.h +++ b/src/webenginewidgets/api/qwebengineprofile.h @@ -51,6 +51,7 @@ class QWebEngineDownloadItem; class QWebEnginePage; class QWebEnginePagePrivate; class QWebEngineProfilePrivate; +class QWebEngineSettings; class QWEBENGINEWIDGETS_EXPORT QWebEngineProfile : public QObject { Q_OBJECT @@ -95,6 +96,8 @@ public: void clearVisitedLinks(const QList<QUrl> &urls); bool visitedLinksContainsUrl(const QUrl &url) const; + QWebEngineSettings *settings() const; + static QWebEngineProfile *defaultProfile(); Q_SIGNALS: diff --git a/src/webenginewidgets/api/qwebengineprofile_p.h b/src/webenginewidgets/api/qwebengineprofile_p.h index d527f8f13..7c3d2a5e7 100644 --- a/src/webenginewidgets/api/qwebengineprofile_p.h +++ b/src/webenginewidgets/api/qwebengineprofile_p.h @@ -47,15 +47,15 @@ class BrowserContextAdapter; QT_BEGIN_NAMESPACE class QWebEngineSettings; -class QWebEngineProfilePrivate - : public BrowserContextAdapterClient -{ + +class QWebEngineProfilePrivate : public BrowserContextAdapterClient { public: Q_DECLARE_PUBLIC(QWebEngineProfile) QWebEngineProfilePrivate(BrowserContextAdapter* browserContext, bool ownsContext); ~QWebEngineProfilePrivate(); BrowserContextAdapter *browserContext() const { return m_browserContext; } + QWebEngineSettings *settings() const { return m_settings; } void cancelDownload(quint32 downloadId); void downloadDestroyed(quint32 downloadId); @@ -65,6 +65,7 @@ public: private: QWebEngineProfile *q_ptr; + QWebEngineSettings *m_settings; BrowserContextAdapter *m_browserContext; QExplicitlySharedDataPointer<BrowserContextAdapter> m_browserContextRef; QMap<quint32, QPointer<QWebEngineDownloadItem> > m_ongoingDownloads; diff --git a/src/webenginewidgets/api/qwebenginesettings.cpp b/src/webenginewidgets/api/qwebenginesettings.cpp index e24309153..e126a7e64 100644 --- a/src/webenginewidgets/api/qwebenginesettings.cpp +++ b/src/webenginewidgets/api/qwebenginesettings.cpp @@ -35,13 +35,14 @@ ****************************************************************************/ #include "qwebenginesettings.h" -#include "qwebenginesettings_p.h" -#include <QDebug> +#include "qwebengineprofile.h" +#include "web_engine_settings.h" QT_BEGIN_NAMESPACE -static WebEngineSettings::Attribute toWebEngineAttribute(QWebEngineSettings::WebAttribute attribute) { +static WebEngineSettings::Attribute toWebEngineAttribute(QWebEngineSettings::WebAttribute attribute) +{ switch (attribute) { case QWebEngineSettings::AutoLoadImages: return WebEngineSettings::AutoLoadImages; @@ -74,45 +75,27 @@ static WebEngineSettings::Attribute toWebEngineAttribute(QWebEngineSettings::Web } } -Q_GLOBAL_STATIC(QList<QWebEngineSettingsPrivate*>, allSettings) - -class QWebEngineGlobalSettings { - QWebEngineSettings globalSettings; -public: - QWebEngineGlobalSettings() { - // globalSettings shouldn't be in that list. - allSettings->removeAll(globalSettings.d_func()); - globalSettings.d_func()->coreSettings->initDefaults(); - } - - QWebEngineSettings *data() { return &globalSettings; } -}; - -Q_GLOBAL_STATIC(QWebEngineGlobalSettings, globalInstance) - -QWebEngineSettingsPrivate::QWebEngineSettingsPrivate() - : coreSettings(new WebEngineSettings(this)) +QWebEngineSettings::QWebEngineSettings(QWebEngineSettings *parentSettings) + : d_ptr(new WebEngineSettings(parentSettings ? parentSettings->d_func() : 0)) { + Q_D(QWebEngineSettings); + d->scheduleApplyRecursively(); } -void QWebEngineSettingsPrivate::apply() +QWebEngineSettings::~QWebEngineSettings() { - coreSettings->scheduleApply(); - QWebEngineSettingsPrivate *globals = QWebEngineSettings::globalSettings()->d_func(); - Q_ASSERT((this == globals) != (allSettings->contains(this))); - if (this == globals) { - Q_FOREACH (QWebEngineSettingsPrivate *settings, *allSettings) - settings->coreSettings->scheduleApply(); - } } -WebEngineSettings *QWebEngineSettingsPrivate::fallbackSettings() const { - return QWebEngineSettings::globalSettings()->d_func()->coreSettings.data(); +#if QT_DEPRECATED_SINCE(5, 5) +QWebEngineSettings *QWebEngineSettings::globalSettings() +{ + return defaultSettings(); } +#endif -QWebEngineSettings *QWebEngineSettings::globalSettings() +QWebEngineSettings *QWebEngineSettings::defaultSettings() { - return globalInstance()->data(); + return QWebEngineProfile::defaultProfile()->settings(); } ASSERT_ENUMS_MATCH(WebEngineSettings::StandardFont, QWebEngineSettings::StandardFont) @@ -125,19 +108,17 @@ ASSERT_ENUMS_MATCH(WebEngineSettings::FantasyFont, QWebEngineSettings::FantasyFo void QWebEngineSettings::setFontFamily(QWebEngineSettings::FontFamily which, const QString &family) { Q_D(QWebEngineSettings); - d->coreSettings->setFontFamily(static_cast<WebEngineSettings::FontFamily>(which), family); + d->setFontFamily(static_cast<WebEngineSettings::FontFamily>(which), family); } QString QWebEngineSettings::fontFamily(QWebEngineSettings::FontFamily which) const { - Q_D(const QWebEngineSettings); - return d->coreSettings->fontFamily(static_cast<WebEngineSettings::FontFamily>(which)); + return d_ptr->fontFamily(static_cast<WebEngineSettings::FontFamily>(which)); } void QWebEngineSettings::resetFontFamily(QWebEngineSettings::FontFamily which) { - Q_D(QWebEngineSettings); - d->coreSettings->resetFontFamily(static_cast<WebEngineSettings::FontFamily>(which)); + d_ptr->resetFontFamily(static_cast<WebEngineSettings::FontFamily>(which)); } ASSERT_ENUMS_MATCH(WebEngineSettings::DefaultFixedFontSize, QWebEngineSettings::DefaultFixedFontSize) @@ -147,75 +128,57 @@ ASSERT_ENUMS_MATCH(WebEngineSettings::MinimumLogicalFontSize, QWebEngineSettings void QWebEngineSettings::setFontSize(QWebEngineSettings::FontSize type, int size) { - Q_D(const QWebEngineSettings); - d->coreSettings->setFontSize(static_cast<WebEngineSettings::FontSize>(type), size); + Q_D(QWebEngineSettings); + d->setFontSize(static_cast<WebEngineSettings::FontSize>(type), size); } int QWebEngineSettings::fontSize(QWebEngineSettings::FontSize type) const { Q_D(const QWebEngineSettings); - return d->coreSettings->fontSize(static_cast<WebEngineSettings::FontSize>(type)); + return d->fontSize(static_cast<WebEngineSettings::FontSize>(type)); } void QWebEngineSettings::resetFontSize(QWebEngineSettings::FontSize type) { Q_D(QWebEngineSettings); - d->coreSettings->resetFontSize(static_cast<WebEngineSettings::FontSize>(type)); + d->resetFontSize(static_cast<WebEngineSettings::FontSize>(type)); } -QWebEngineSettings::QWebEngineSettings() - : d_ptr(new QWebEngineSettingsPrivate) -{ - Q_D(QWebEngineSettings); - allSettings->append(d); - d->coreSettings->scheduleApply(); -} - - -QWebEngineSettings::~QWebEngineSettings() -{ - Q_D(QWebEngineSettings); - allSettings->removeAll(d); -} - void QWebEngineSettings::setDefaultTextEncoding(const QString &encoding) { Q_D(QWebEngineSettings); - d->coreSettings->setDefaultTextEncoding(encoding); + d->setDefaultTextEncoding(encoding); } QString QWebEngineSettings::defaultTextEncoding() const { Q_D(const QWebEngineSettings); - return d->coreSettings->defaultTextEncoding(); + return d->defaultTextEncoding(); } void QWebEngineSettings::setAttribute(QWebEngineSettings::WebAttribute attr, bool on) { Q_D(QWebEngineSettings); WebEngineSettings::Attribute webEngineAttribute = toWebEngineAttribute(attr); - if (webEngineAttribute != WebEngineSettings::UnsupportedInCoreSettings) - return d->coreSettings->setAttribute(webEngineAttribute, on); - qDebug() << Q_FUNC_INFO << "Missing support for:" << attr; + Q_ASSERT(webEngineAttribute != WebEngineSettings::UnsupportedInCoreSettings); + d->setAttribute(webEngineAttribute, on); } bool QWebEngineSettings::testAttribute(QWebEngineSettings::WebAttribute attr) const { Q_D(const QWebEngineSettings); WebEngineSettings::Attribute webEngineAttribute = toWebEngineAttribute(attr); - if (webEngineAttribute != WebEngineSettings::UnsupportedInCoreSettings) - return d->coreSettings->testAttribute(webEngineAttribute); - - - - qDebug() << Q_FUNC_INFO << "Missing support for:" << attr; - return false; + Q_ASSERT(webEngineAttribute != WebEngineSettings::UnsupportedInCoreSettings); + return d->testAttribute(webEngineAttribute); } void QWebEngineSettings::resetAttribute(QWebEngineSettings::WebAttribute attr) { - setAttribute(attr, globalSettings()->testAttribute(attr)); + Q_D(QWebEngineSettings); + WebEngineSettings::Attribute webEngineAttribute = toWebEngineAttribute(attr); + Q_ASSERT(webEngineAttribute != WebEngineSettings::UnsupportedInCoreSettings); + d->resetAttribute(webEngineAttribute); } QT_END_NAMESPACE diff --git a/src/webenginewidgets/api/qwebenginesettings.h b/src/webenginewidgets/api/qwebenginesettings.h index 29825f5a4..48cc3107c 100644 --- a/src/webenginewidgets/api/qwebenginesettings.h +++ b/src/webenginewidgets/api/qwebenginesettings.h @@ -25,13 +25,13 @@ #include <QtCore/qscopedpointer.h> #include <QtCore/qstring.h> +class WebEngineSettings; + QT_BEGIN_NAMESPACE class QIcon; class QPixmap; class QUrl; -class QWebEngineSettingsPrivate; -class QWebEngineGlobalSettings; class QWEBENGINEWIDGETS_EXPORT QWebEngineSettings { public: @@ -66,7 +66,10 @@ public: DefaultFixedFontSize }; +#if QT_DEPRECATED_SINCE(5, 5) static QWebEngineSettings *globalSettings(); +#endif + static QWebEngineSettings *defaultSettings(); void setFontFamily(FontFamily which, const QString &family); QString fontFamily(FontFamily which) const; @@ -85,13 +88,15 @@ public: private: Q_DISABLE_COPY(QWebEngineSettings) - Q_DECLARE_PRIVATE(QWebEngineSettings); + typedef WebEngineSettings QWebEngineSettingsPrivate; + QWebEngineSettingsPrivate* d_func() { return d_ptr.data(); } + const QWebEngineSettingsPrivate* d_func() const { return d_ptr.data(); } QScopedPointer<QWebEngineSettingsPrivate> d_ptr; friend class QWebEnginePagePrivate; - friend class QWebEngineGlobalSettings; + friend class QWebEngineProfilePrivate; - QWebEngineSettings(); ~QWebEngineSettings(); + explicit QWebEngineSettings(QWebEngineSettings *parentSettings = 0); }; QT_END_NAMESPACE diff --git a/src/webenginewidgets/api/qwebenginesettings_p.h b/src/webenginewidgets/api/qwebenginesettings_p.h deleted file mode 100644 index 12464fa02..000000000 --- a/src/webenginewidgets/api/qwebenginesettings_p.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtWebEngine module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWEBENGINESETTINGS_P_H -#define QWEBENGINESETTINGS_P_H - -#include "web_engine_settings.h" -#include <QtCore/qcompilerdetection.h> -#include <QtCore/QScopedPointer> - -QT_BEGIN_NAMESPACE - -class QWebEngineSettingsPrivate : public WebEngineSettingsDelegate { - -public: - QWebEngineSettingsPrivate(); - - void apply() Q_DECL_OVERRIDE; - WebEngineSettings *fallbackSettings() const Q_DECL_OVERRIDE; - - QScopedPointer<WebEngineSettings> coreSettings; - - // This should only contain things specific to WebEngineWidgets which we don't want exposed to the core layer. - // For instance, the icon database would most likely be implemented at that level. - -}; - -QT_END_NAMESPACE - -#endif // QWEBENGINESETTINGS_P_H diff --git a/src/webenginewidgets/webenginewidgets.pro b/src/webenginewidgets/webenginewidgets.pro index 8d1930667..82908bfd0 100644 --- a/src/webenginewidgets/webenginewidgets.pro +++ b/src/webenginewidgets/webenginewidgets.pro @@ -32,7 +32,6 @@ HEADERS = \ api/qwebengineprofile.h \ api/qwebengineprofile_p.h \ api/qwebenginesettings.h \ - api/qwebenginesettings_p.h \ api/qwebengineview.h \ api/qwebengineview_p.h \ render_widget_host_view_qt_delegate_widget.h |