summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/web_engine_settings.cpp81
-rw-r--r--src/core/web_engine_settings.h23
-rw-r--r--src/webengine/api/qquickwebengineprofile.cpp13
-rw-r--r--src/webengine/api/qquickwebengineprofile_p.h6
-rw-r--r--src/webengine/api/qquickwebengineprofile_p_p.h9
-rw-r--r--src/webengine/api/qquickwebenginesettings.cpp175
-rw-r--r--src/webengine/api/qquickwebenginesettings_p.h16
-rw-r--r--src/webengine/api/qquickwebenginesettings_p_p.h56
-rw-r--r--src/webengine/api/qquickwebenginesingleton.cpp2
-rw-r--r--src/webengine/api/qquickwebengineview.cpp9
-rw-r--r--src/webengine/webengine.pro1
-rw-r--r--src/webenginewidgets/api/qwebenginepage.cpp5
-rw-r--r--src/webenginewidgets/api/qwebengineprofile.cpp17
-rw-r--r--src/webenginewidgets/api/qwebengineprofile.h3
-rw-r--r--src/webenginewidgets/api/qwebengineprofile_p.h7
-rw-r--r--src/webenginewidgets/api/qwebenginesettings.cpp103
-rw-r--r--src/webenginewidgets/api/qwebenginesettings.h15
-rw-r--r--src/webenginewidgets/api/qwebenginesettings_p.h63
-rw-r--r--src/webenginewidgets/webenginewidgets.pro1
19 files changed, 222 insertions, 383 deletions
diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp
index b46775934..0aaa09814 100644
--- a/src/core/web_engine_settings.cpp
+++ b/src/core/web_engine_settings.cpp
@@ -67,7 +67,6 @@ private:
WebEngineSettings *m_settings;
};
-#include "web_engine_settings.moc"
static inline bool isTouchScreenAvailable() {
static bool initialized = false;
@@ -85,16 +84,23 @@ static inline bool isTouchScreenAvailable() {
}
-WebEngineSettings::WebEngineSettings(WebEngineSettingsDelegate *delegate)
+WebEngineSettings::WebEngineSettings(WebEngineSettings *_parentSettings)
: m_adapter(0)
- , m_delegate(delegate)
, m_batchTimer(new BatchTimer(this))
+ , parentSettings(_parentSettings)
{
- Q_ASSERT(delegate);
+ if (parentSettings)
+ parentSettings->childSettings.insert(this);
}
WebEngineSettings::~WebEngineSettings()
{
+ if (parentSettings)
+ parentSettings->childSettings.remove(this);
+ // In QML the profile and its settings may be garbage collected before the page and its settings.
+ Q_FOREACH (WebEngineSettings *settings, childSettings) {
+ settings->parentSettings = 0;
+ }
}
void WebEngineSettings::overrideWebPreferences(content::WebPreferences *prefs)
@@ -111,94 +117,86 @@ void WebEngineSettings::overrideWebPreferences(content::WebPreferences *prefs)
void WebEngineSettings::setAttribute(WebEngineSettings::Attribute attr, bool on)
{
m_attributes.insert(attr, on);
- m_delegate->apply();
+ scheduleApplyRecursively();
}
bool WebEngineSettings::testAttribute(WebEngineSettings::Attribute attr) const
{
- WebEngineSettings *fallback = m_delegate->fallbackSettings();
- Q_ASSERT(fallback);
- if (this == fallback) {
+ if (!parentSettings) {
Q_ASSERT(m_attributes.contains(attr));
return m_attributes.value(attr);
}
- return m_attributes.value(attr, fallback->testAttribute(attr));
+ return m_attributes.value(attr, parentSettings->testAttribute(attr));
}
void WebEngineSettings::resetAttribute(WebEngineSettings::Attribute attr)
{
- if (this == m_delegate->fallbackSettings())
+ if (!parentSettings) // FIXME: Set initial defaults.
return;
m_attributes.remove(attr);
- m_delegate->apply();
+ scheduleApplyRecursively();
}
void WebEngineSettings::setFontFamily(WebEngineSettings::FontFamily which, const QString &family)
{
m_fontFamilies.insert(which, family);
- m_delegate->apply();
+ scheduleApplyRecursively();
}
QString WebEngineSettings::fontFamily(WebEngineSettings::FontFamily which)
{
- WebEngineSettings *fallback = m_delegate->fallbackSettings();
- Q_ASSERT(fallback);
- if (this == fallback) {
+ if (!parentSettings) {
Q_ASSERT(m_fontFamilies.contains(which));
return m_fontFamilies.value(which);
}
- return m_fontFamilies.value(which, fallback->fontFamily(which));
+ return m_fontFamilies.value(which, parentSettings->fontFamily(which));
}
void WebEngineSettings::resetFontFamily(WebEngineSettings::FontFamily which)
{
- if (this == m_delegate->fallbackSettings())
+ if (!parentSettings) // FIXME: Set initial defaults.
return;
m_fontFamilies.remove(which);
- m_delegate->apply();
+ scheduleApplyRecursively();
}
void WebEngineSettings::setFontSize(WebEngineSettings::FontSize type, int size)
{
m_fontSizes.insert(type, size);
- m_delegate->apply();
+ scheduleApplyRecursively();
}
int WebEngineSettings::fontSize(WebEngineSettings::FontSize type) const
{
- WebEngineSettings *fallback = m_delegate->fallbackSettings();
- Q_ASSERT(fallback);
- if (this == fallback) {
+ if (!parentSettings) {
Q_ASSERT(m_fontSizes.contains(type));
return m_fontSizes.value(type);
}
- return m_fontSizes.value(type, fallback->fontSize(type));
+ return m_fontSizes.value(type, parentSettings->fontSize(type));
}
void WebEngineSettings::resetFontSize(WebEngineSettings::FontSize type)
{
- if (this == m_delegate->fallbackSettings())
+ if (!parentSettings) // FIXME: Set initial defaults.
return;
m_fontSizes.remove(type);
- m_delegate->apply();
+ scheduleApplyRecursively();
}
void WebEngineSettings::setDefaultTextEncoding(const QString &encoding)
{
m_defaultEncoding = encoding;
- m_delegate->apply();
+ scheduleApplyRecursively();
}
QString WebEngineSettings::defaultTextEncoding() const
{
- WebEngineSettings *fallback = m_delegate->fallbackSettings();
- Q_ASSERT(fallback);
- if (this == fallback)
+ if (!parentSettings)
return m_defaultEncoding;
- return m_defaultEncoding.isEmpty()? fallback->defaultTextEncoding() : m_defaultEncoding;
+ return m_defaultEncoding.isEmpty()? parentSettings->defaultTextEncoding() : m_defaultEncoding;
}
-void WebEngineSettings::initDefaults()
+void WebEngineSettings::initDefaults(bool offTheRecord)
{
// Initialize the default settings.
m_attributes.insert(AutoLoadImages, true);
@@ -206,7 +204,7 @@ void WebEngineSettings::initDefaults()
m_attributes.insert(JavascriptCanOpenWindows, true);
m_attributes.insert(JavascriptCanAccessClipboard, false);
m_attributes.insert(LinksIncludedInFocusChain, true);
- m_attributes.insert(LocalStorageEnabled, true);
+ m_attributes.insert(LocalStorageEnabled, !offTheRecord);
m_attributes.insert(LocalContentCanAccessRemoteUrls, false);
m_attributes.insert(XSSAuditingEnabled, false);
m_attributes.insert(SpatialNavigationEnabled, false);
@@ -294,3 +292,22 @@ void WebEngineSettings::applySettingsToWebPreferences(content::WebPreferences *p
prefs->minimum_logical_font_size = fontSize(MinimumLogicalFontSize);
prefs->default_encoding = defaultTextEncoding().toStdString();
}
+
+void WebEngineSettings::scheduleApplyRecursively()
+{
+ scheduleApply();
+ Q_FOREACH (WebEngineSettings *settings, childSettings) {
+ settings->scheduleApply();
+ }
+}
+
+void WebEngineSettings::setParentSettings(WebEngineSettings *_parentSettings)
+{
+ if (parentSettings)
+ parentSettings->childSettings.remove(this);
+ parentSettings = _parentSettings;
+ if (parentSettings)
+ parentSettings->childSettings.insert(this);
+}
+
+#include "web_engine_settings.moc"
diff --git a/src/core/web_engine_settings.h b/src/core/web_engine_settings.h
index 42dff4b3c..8ee7d8871 100644
--- a/src/core/web_engine_settings.h
+++ b/src/core/web_engine_settings.h
@@ -43,6 +43,7 @@
#include <QScopedPointer>
#include <QHash>
#include <QUrl>
+#include <QSet>
class BatchTimer;
class WebContentsAdapter;
@@ -52,14 +53,6 @@ namespace content {
struct WebPreferences;
}
-class QWEBENGINE_EXPORT WebEngineSettingsDelegate {
-public:
- virtual ~WebEngineSettingsDelegate() {}
- virtual void apply() = 0;
- // Needs to be a valid pointer, the last available fallback (ex: global settings) should return itself.
- virtual WebEngineSettings *fallbackSettings() const = 0;
-};
-
class QWEBENGINE_EXPORT WebEngineSettings {
public:
// Attributes. Names match the ones from the public widgets API.
@@ -98,8 +91,10 @@ public:
DefaultFixedFontSize
};
- WebEngineSettings(WebEngineSettingsDelegate*);
- virtual ~WebEngineSettings();
+ explicit WebEngineSettings(WebEngineSettings *parentSettings = 0);
+ ~WebEngineSettings();
+
+ void setParentSettings(WebEngineSettings *parentSettings);
void overrideWebPreferences(content::WebPreferences *prefs);
@@ -118,16 +113,17 @@ public:
void setDefaultTextEncoding(const QString &encoding);
QString defaultTextEncoding() const;
- void initDefaults();
+ void initDefaults(bool offTheRecord = false);
void scheduleApply();
+ void scheduleApplyRecursively();
+
private:
void doApply();
void applySettingsToWebPreferences(content::WebPreferences *);
void setWebContentsAdapter(WebContentsAdapter *adapter) { m_adapter = adapter; }
WebContentsAdapter* m_adapter;
- WebEngineSettingsDelegate* m_delegate;
QHash<Attribute, bool> m_attributes;
QHash<FontFamily, QString> m_fontFamilies;
QHash<FontSize, int> m_fontSizes;
@@ -135,6 +131,9 @@ private:
QScopedPointer<content::WebPreferences> webPreferences;
QScopedPointer<BatchTimer> m_batchTimer;
+ WebEngineSettings *parentSettings;
+ QSet<WebEngineSettings *> childSettings;
+
friend class BatchTimer;
friend class WebContentsAdapter;
};
diff --git a/src/webengine/api/qquickwebengineprofile.cpp b/src/webengine/api/qquickwebengineprofile.cpp
index faae850f7..791f39263 100644
--- a/src/webengine/api/qquickwebengineprofile.cpp
+++ b/src/webengine/api/qquickwebengineprofile.cpp
@@ -39,9 +39,12 @@
#include "qquickwebenginedownloaditem_p.h"
#include "qquickwebenginedownloaditem_p_p.h"
#include "qquickwebengineprofile_p_p.h"
+#include "qquickwebenginesettings_p.h"
+
#include <QQmlEngine>
#include "browser_context_adapter.h"
+#include "web_engine_settings.h"
QT_BEGIN_NAMESPACE
@@ -62,12 +65,14 @@ static inline QQuickWebEngineDownloadItem::DownloadState toDownloadState(int sta
}
QQuickWebEngineProfilePrivate::QQuickWebEngineProfilePrivate(BrowserContextAdapter* browserContext, bool ownsContext)
- : m_browserContext(browserContext)
+ : m_settings(new QQuickWebEngineSettings())
+ , m_browserContext(browserContext)
{
if (ownsContext)
m_browserContextRef = browserContext;
m_browserContext->setClient(this);
+ m_settings->d_ptr->initDefaults(browserContext->isOffTheRecord());
}
QQuickWebEngineProfilePrivate::~QQuickWebEngineProfilePrivate()
@@ -394,4 +399,10 @@ QQuickWebEngineProfile *QQuickWebEngineProfile::defaultProfile()
return &profile;
}
+QQuickWebEngineSettings *QQuickWebEngineProfile::settings() const
+{
+ const Q_D(QQuickWebEngineProfile);
+ return d->settings();
+}
+
QT_END_NAMESPACE
diff --git a/src/webengine/api/qquickwebengineprofile_p.h b/src/webengine/api/qquickwebengineprofile_p.h
index dd28d2e18..7a2ff08e1 100644
--- a/src/webengine/api/qquickwebengineprofile_p.h
+++ b/src/webengine/api/qquickwebengineprofile_p.h
@@ -47,6 +47,7 @@ QT_BEGIN_NAMESPACE
class QQuickWebEngineDownloadItem;
class QQuickWebEngineProfilePrivate;
+class QQuickWebEngineSettings;
class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineProfile : public QObject {
Q_OBJECT
@@ -115,9 +116,12 @@ signals:
void downloadFinished(QQuickWebEngineDownloadItem *download);
private:
- Q_DECLARE_PRIVATE(QQuickWebEngineProfile);
+ Q_DECLARE_PRIVATE(QQuickWebEngineProfile)
QQuickWebEngineProfile(QQuickWebEngineProfilePrivate *);
+ QQuickWebEngineSettings *settings() const;
+ friend class QQuickWebEngineSettings;
+ friend class QQuickWebEngineSingleton;
friend class QQuickWebEngineViewPrivate;
QScopedPointer<QQuickWebEngineProfilePrivate> d_ptr;
};
diff --git a/src/webengine/api/qquickwebengineprofile_p_p.h b/src/webengine/api/qquickwebengineprofile_p_p.h
index 359db6ede..6b6026abb 100644
--- a/src/webengine/api/qquickwebengineprofile_p_p.h
+++ b/src/webengine/api/qquickwebengineprofile_p_p.h
@@ -47,16 +47,18 @@ class BrowserContextAdapter;
#include <QPointer>
QT_BEGIN_NAMESPACE
+
class QQuickWebEngineDownloadItem;
-class QQuickWebEngineProfilePrivate
- : public BrowserContextAdapterClient
-{
+class QQuickWebEngineSettings;
+
+class QQuickWebEngineProfilePrivate : public BrowserContextAdapterClient {
public:
Q_DECLARE_PUBLIC(QQuickWebEngineProfile)
QQuickWebEngineProfilePrivate(BrowserContextAdapter* browserContext, bool ownsContext);
~QQuickWebEngineProfilePrivate();
BrowserContextAdapter *browserContext() const { return m_browserContext; }
+ QQuickWebEngineSettings *settings() const { return m_settings.data(); }
void cancelDownload(quint32 downloadId);
void downloadDestroyed(quint32 downloadId);
@@ -67,6 +69,7 @@ public:
private:
friend class QQuickWebEngineViewPrivate;
QQuickWebEngineProfile *q_ptr;
+ QScopedPointer<QQuickWebEngineSettings> m_settings;
BrowserContextAdapter *m_browserContext;
QExplicitlySharedDataPointer<BrowserContextAdapter> m_browserContextRef;
QMap<quint32, QPointer<QQuickWebEngineDownloadItem> > m_ongoingDownloads;
diff --git a/src/webengine/api/qquickwebenginesettings.cpp b/src/webengine/api/qquickwebenginesettings.cpp
index e46b1a80d..f4c9a656d 100644
--- a/src/webengine/api/qquickwebenginesettings.cpp
+++ b/src/webengine/api/qquickwebenginesettings.cpp
@@ -35,245 +35,184 @@
****************************************************************************/
#include "qquickwebenginesettings_p.h"
-#include "qquickwebenginesettings_p_p.h"
+
+#include "qquickwebengineprofile_p.h"
+#include "web_engine_settings.h"
#include <QtCore/QList>
QT_BEGIN_NAMESPACE
-Q_GLOBAL_STATIC(QList<QQuickWebEngineSettingsPrivate*>, allSettings)
-
-class QQuickWebEngineGlobalSettings {
- QQuickWebEngineSettings globalSettings;
-public:
- QQuickWebEngineGlobalSettings() {
- // globalSettings shouldn't be in that list.
- allSettings->removeAll(globalSettings.d_func());
- globalSettings.d_func()->coreSettings->initDefaults();
- }
-
- QQuickWebEngineSettings *data() { return &globalSettings; }
-};
-
-Q_GLOBAL_STATIC(QQuickWebEngineGlobalSettings, globalInstance)
-
-QQuickWebEngineSettingsPrivate::QQuickWebEngineSettingsPrivate()
- : coreSettings(new WebEngineSettings(this))
-{
- allSettings->append(this);
-}
-
-void QQuickWebEngineSettingsPrivate::apply()
-{
- coreSettings->scheduleApply();
- QQuickWebEngineSettingsPrivate *globals = QQuickWebEngineSettings::globalSettings()->d_func();
- Q_ASSERT((this == globals) != (allSettings->contains(this)));
- if (this == globals)
- Q_FOREACH (QQuickWebEngineSettingsPrivate *settings, *allSettings)
- settings->coreSettings->scheduleApply();
-}
-
-WebEngineSettings *QQuickWebEngineSettingsPrivate::fallbackSettings() const
-{
- return QQuickWebEngineSettings::globalSettings()->d_func()->coreSettings.data();
-}
-
-QQuickWebEngineSettings *QQuickWebEngineSettings::globalSettings()
-{
- return globalInstance()->data();
-}
+QQuickWebEngineSettings::QQuickWebEngineSettings(QQuickWebEngineSettings *parentSettings)
+ : d_ptr(new WebEngineSettings(parentSettings ? parentSettings->d_ptr.data() : 0))
+{ }
QQuickWebEngineSettings::~QQuickWebEngineSettings()
-{
- allSettings->removeAll(this->d_func());
-}
+{ }
bool QQuickWebEngineSettings::autoLoadImages() const
{
- Q_D(const QQuickWebEngineSettings);
- return d->coreSettings->testAttribute(WebEngineSettings::AutoLoadImages);
+ return d_ptr->testAttribute(WebEngineSettings::AutoLoadImages);
}
bool QQuickWebEngineSettings::javascriptEnabled() const
{
- Q_D(const QQuickWebEngineSettings);
- return d->coreSettings->testAttribute(WebEngineSettings::JavascriptEnabled);
+ return d_ptr->testAttribute(WebEngineSettings::JavascriptEnabled);
}
bool QQuickWebEngineSettings::javascriptCanOpenWindows() const
{
- Q_D(const QQuickWebEngineSettings);
- return d->coreSettings->testAttribute(WebEngineSettings::JavascriptCanOpenWindows);
+ return d_ptr->testAttribute(WebEngineSettings::JavascriptCanOpenWindows);
}
bool QQuickWebEngineSettings::javascriptCanAccessClipboard() const
{
- Q_D(const QQuickWebEngineSettings);
- return d->coreSettings->testAttribute(WebEngineSettings::JavascriptCanAccessClipboard);
+ return d_ptr->testAttribute(WebEngineSettings::JavascriptCanAccessClipboard);
}
bool QQuickWebEngineSettings::linksIncludedInFocusChain() const
{
- Q_D(const QQuickWebEngineSettings);
- return d->coreSettings->testAttribute(WebEngineSettings::LinksIncludedInFocusChain);
+ return d_ptr->testAttribute(WebEngineSettings::LinksIncludedInFocusChain);
}
bool QQuickWebEngineSettings::localStorageEnabled() const
{
- Q_D(const QQuickWebEngineSettings);
- return d->coreSettings->testAttribute(WebEngineSettings::LocalStorageEnabled);
+ return d_ptr->testAttribute(WebEngineSettings::LocalStorageEnabled);
}
bool QQuickWebEngineSettings::localContentCanAccessRemoteUrls() const
{
- Q_D(const QQuickWebEngineSettings);
- return d->coreSettings->testAttribute(WebEngineSettings::LocalContentCanAccessRemoteUrls);
+ return d_ptr->testAttribute(WebEngineSettings::LocalContentCanAccessRemoteUrls);
}
bool QQuickWebEngineSettings::spatialNavigationEnabled() const
{
- Q_D(const QQuickWebEngineSettings);
- return d->coreSettings->testAttribute(WebEngineSettings::SpatialNavigationEnabled);
+ return d_ptr->testAttribute(WebEngineSettings::SpatialNavigationEnabled);
}
bool QQuickWebEngineSettings::localContentCanAccessFileUrls() const
{
- Q_D(const QQuickWebEngineSettings);
- return d->coreSettings->testAttribute(WebEngineSettings::LocalContentCanAccessFileUrls);
+ return d_ptr->testAttribute(WebEngineSettings::LocalContentCanAccessFileUrls);
}
bool QQuickWebEngineSettings::hyperlinkAuditingEnabled() const
{
- Q_D(const QQuickWebEngineSettings);
- return d->coreSettings->testAttribute(WebEngineSettings::HyperlinkAuditingEnabled);
+ return d_ptr->testAttribute(WebEngineSettings::HyperlinkAuditingEnabled);
}
bool QQuickWebEngineSettings::errorPageEnabled() const
{
- Q_D(const QQuickWebEngineSettings);
- return d->coreSettings->testAttribute(WebEngineSettings::ErrorPageEnabled);
+ return d_ptr->testAttribute(WebEngineSettings::ErrorPageEnabled);
}
QString QQuickWebEngineSettings::defaultTextEncoding() const
{
- Q_D(const QQuickWebEngineSettings);
- return d->coreSettings->defaultTextEncoding();
+ return d_ptr->defaultTextEncoding();
}
void QQuickWebEngineSettings::setAutoLoadImages(bool on)
{
- Q_D(QQuickWebEngineSettings);
- bool wasOn = d->coreSettings->testAttribute(WebEngineSettings::AutoLoadImages);
+ bool wasOn = d_ptr->testAttribute(WebEngineSettings::AutoLoadImages);
// Set unconditionally as it sets the override for the current settings while the current setting
// could be from the fallback and is prone to changing later on.
- d->coreSettings->setAttribute(WebEngineSettings::AutoLoadImages, on);
- if (wasOn ^ on)
+ d_ptr->setAttribute(WebEngineSettings::AutoLoadImages, on);
+ if (wasOn != on)
Q_EMIT autoLoadImagesChanged();
}
void QQuickWebEngineSettings::setJavascriptEnabled(bool on)
{
- Q_D(QQuickWebEngineSettings);
- bool wasOn = d->coreSettings->testAttribute(WebEngineSettings::JavascriptEnabled);
- d->coreSettings->setAttribute(WebEngineSettings::JavascriptEnabled, on);
- if (wasOn ^ on)
+ bool wasOn = d_ptr->testAttribute(WebEngineSettings::JavascriptEnabled);
+ d_ptr->setAttribute(WebEngineSettings::JavascriptEnabled, on);
+ if (wasOn != on)
Q_EMIT javascriptEnabledChanged();
}
void QQuickWebEngineSettings::setJavascriptCanOpenWindows(bool on)
{
- Q_D(QQuickWebEngineSettings);
- bool wasOn = d->coreSettings->testAttribute(WebEngineSettings::JavascriptCanOpenWindows);
- d->coreSettings->setAttribute(WebEngineSettings::JavascriptCanOpenWindows, on);
- if (wasOn ^ on)
+ bool wasOn = d_ptr->testAttribute(WebEngineSettings::JavascriptCanOpenWindows);
+ d_ptr->setAttribute(WebEngineSettings::JavascriptCanOpenWindows, on);
+ if (wasOn != on)
Q_EMIT javascriptCanOpenWindowsChanged();
}
void QQuickWebEngineSettings::setJavascriptCanAccessClipboard(bool on)
{
- Q_D(QQuickWebEngineSettings);
- bool wasOn = d->coreSettings->testAttribute(WebEngineSettings::JavascriptCanAccessClipboard);
- d->coreSettings->setAttribute(WebEngineSettings::JavascriptCanAccessClipboard, on);
- if (wasOn ^ on)
+ bool wasOn = d_ptr->testAttribute(WebEngineSettings::JavascriptCanAccessClipboard);
+ d_ptr->setAttribute(WebEngineSettings::JavascriptCanAccessClipboard, on);
+ if (wasOn != on)
Q_EMIT javascriptCanAccessClipboardChanged();
}
void QQuickWebEngineSettings::setLinksIncludedInFocusChain(bool on)
{
- Q_D(QQuickWebEngineSettings);
- bool wasOn = d->coreSettings->testAttribute(WebEngineSettings::LinksIncludedInFocusChain);
- d->coreSettings->setAttribute(WebEngineSettings::LinksIncludedInFocusChain, on);
- if (wasOn ^ on)
+ bool wasOn = d_ptr->testAttribute(WebEngineSettings::LinksIncludedInFocusChain);
+ d_ptr->setAttribute(WebEngineSettings::LinksIncludedInFocusChain, on);
+ if (wasOn != on)
Q_EMIT linksIncludedInFocusChainChanged();
}
void QQuickWebEngineSettings::setLocalStorageEnabled(bool on)
{
- Q_D(QQuickWebEngineSettings);
- bool wasOn = d->coreSettings->testAttribute(WebEngineSettings::LocalStorageEnabled);
- d->coreSettings->setAttribute(WebEngineSettings::LocalStorageEnabled, on);
- if (wasOn ^ on)
+ bool wasOn = d_ptr->testAttribute(WebEngineSettings::LocalStorageEnabled);
+ d_ptr->setAttribute(WebEngineSettings::LocalStorageEnabled, on);
+ if (wasOn != on)
Q_EMIT localStorageEnabledChanged();
}
void QQuickWebEngineSettings::setLocalContentCanAccessRemoteUrls(bool on)
{
- Q_D(QQuickWebEngineSettings);
- bool wasOn = d->coreSettings->testAttribute(WebEngineSettings::LocalContentCanAccessRemoteUrls);
- d->coreSettings->setAttribute(WebEngineSettings::LocalContentCanAccessRemoteUrls, on);
- if (wasOn ^ on)
+ bool wasOn = d_ptr->testAttribute(WebEngineSettings::LocalContentCanAccessRemoteUrls);
+ d_ptr->setAttribute(WebEngineSettings::LocalContentCanAccessRemoteUrls, on);
+ if (wasOn != on)
Q_EMIT localContentCanAccessRemoteUrlsChanged();
}
void QQuickWebEngineSettings::setSpatialNavigationEnabled(bool on)
{
- Q_D(QQuickWebEngineSettings);
- bool wasOn = d->coreSettings->testAttribute(WebEngineSettings::SpatialNavigationEnabled);
- d->coreSettings->setAttribute(WebEngineSettings::SpatialNavigationEnabled, on);
- if (wasOn ^ on)
+ bool wasOn = d_ptr->testAttribute(WebEngineSettings::SpatialNavigationEnabled);
+ d_ptr->setAttribute(WebEngineSettings::SpatialNavigationEnabled, on);
+ if (wasOn != on)
Q_EMIT spatialNavigationEnabledChanged();
}
void QQuickWebEngineSettings::setLocalContentCanAccessFileUrls(bool on)
{
- Q_D(QQuickWebEngineSettings);
- bool wasOn = d->coreSettings->testAttribute(WebEngineSettings::LocalContentCanAccessFileUrls);
- d->coreSettings->setAttribute(WebEngineSettings::LocalContentCanAccessFileUrls, on);
- if (wasOn ^ on)
+ bool wasOn = d_ptr->testAttribute(WebEngineSettings::LocalContentCanAccessFileUrls);
+ d_ptr->setAttribute(WebEngineSettings::LocalContentCanAccessFileUrls, on);
+ if (wasOn != on)
Q_EMIT localContentCanAccessFileUrlsChanged();
}
void QQuickWebEngineSettings::setHyperlinkAuditingEnabled(bool on)
{
- Q_D(QQuickWebEngineSettings);
- bool wasOn = d->coreSettings->testAttribute(WebEngineSettings::HyperlinkAuditingEnabled);
- d->coreSettings->setAttribute(WebEngineSettings::HyperlinkAuditingEnabled, on);
- if (wasOn ^ on)
+ bool wasOn = d_ptr->testAttribute(WebEngineSettings::HyperlinkAuditingEnabled);
+ d_ptr->setAttribute(WebEngineSettings::HyperlinkAuditingEnabled, on);
+ if (wasOn != on)
Q_EMIT hyperlinkAuditingEnabledChanged();
}
void QQuickWebEngineSettings::setErrorPageEnabled(bool on)
{
- Q_D(QQuickWebEngineSettings);
- bool wasOn = d->coreSettings->testAttribute(WebEngineSettings::ErrorPageEnabled);
- d->coreSettings->setAttribute(WebEngineSettings::ErrorPageEnabled, on);
- if (wasOn ^ on)
+ bool wasOn = d_ptr->testAttribute(WebEngineSettings::ErrorPageEnabled);
+ d_ptr->setAttribute(WebEngineSettings::ErrorPageEnabled, on);
+ if (wasOn != on)
Q_EMIT errorPageEnabledChanged();
}
void QQuickWebEngineSettings::setDefaultTextEncoding(QString encoding)
{
- Q_D(QQuickWebEngineSettings);
- const QString oldDefaultTextEncoding = d->coreSettings->defaultTextEncoding();
- d->coreSettings->setDefaultTextEncoding(encoding);
+ const QString oldDefaultTextEncoding = d_ptr->defaultTextEncoding();
+ d_ptr->setDefaultTextEncoding(encoding);
if (oldDefaultTextEncoding.compare(encoding))
Q_EMIT defaultTextEncodingChanged();
}
-QQuickWebEngineSettings::QQuickWebEngineSettings()
- : d_ptr(new QQuickWebEngineSettingsPrivate)
+void QQuickWebEngineSettings::setParentSettings(QQuickWebEngineSettings *parentSettings)
{
+ d_ptr->setParentSettings(parentSettings->d_ptr.data());
+ d_ptr->scheduleApplyRecursively();
}
QT_END_NAMESPACE
diff --git a/src/webengine/api/qquickwebenginesettings_p.h b/src/webengine/api/qquickwebenginesettings_p.h
index 040a5f5fb..6e8bfa219 100644
--- a/src/webengine/api/qquickwebenginesettings_p.h
+++ b/src/webengine/api/qquickwebenginesettings_p.h
@@ -41,10 +41,9 @@
#include <QObject>
#include <QScopedPointer>
-QT_BEGIN_NAMESPACE
+class WebEngineSettings;
-class QQuickWebEngineSettingsPrivate;
-class QQuickWebEngineGlobalSettings;
+QT_BEGIN_NAMESPACE
class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineSettings : public QObject {
Q_OBJECT
@@ -62,8 +61,6 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineSettings : public QObject {
Q_PROPERTY(QString defaultTextEncoding READ defaultTextEncoding WRITE setDefaultTextEncoding NOTIFY defaultTextEncodingChanged)
public:
- static QQuickWebEngineSettings *globalSettings();
-
~QQuickWebEngineSettings();
bool autoLoadImages() const;
@@ -107,13 +104,14 @@ signals:
void defaultTextEncodingChanged();
private:
- QQuickWebEngineSettings();
+ explicit QQuickWebEngineSettings(QQuickWebEngineSettings *parentSettings = 0);
Q_DISABLE_COPY(QQuickWebEngineSettings)
- Q_DECLARE_PRIVATE(QQuickWebEngineSettings)
+ friend class QQuickWebEngineProfilePrivate;
friend class QQuickWebEngineViewPrivate;
- friend class QQuickWebEngineGlobalSettings;
- QScopedPointer<QQuickWebEngineSettingsPrivate> d_ptr;
+ void setParentSettings(QQuickWebEngineSettings *parentSettings);
+
+ QScopedPointer<WebEngineSettings> d_ptr;
};
QT_END_NAMESPACE
diff --git a/src/webengine/api/qquickwebenginesettings_p_p.h b/src/webengine/api/qquickwebenginesettings_p_p.h
deleted file mode 100644
index 05a163b92..000000000
--- a/src/webengine/api/qquickwebenginesettings_p_p.h
+++ /dev/null
@@ -1,56 +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 QQUICKWEBENGINESETTINGS_P_P_H
-#define QQUICKWEBENGINESETTINGS_P_P_H
-
-#include "web_engine_settings.h"
-
-QT_BEGIN_NAMESPACE
-
-class QQuickWebEngineSettingsPrivate : public WebEngineSettingsDelegate {
-public:
- QQuickWebEngineSettingsPrivate();
-
- void apply() Q_DECL_OVERRIDE;
- WebEngineSettings *fallbackSettings() const Q_DECL_OVERRIDE;
-
- QScopedPointer<WebEngineSettings> coreSettings;
-};
-
-QT_END_NAMESPACE
-
-#endif // QQUICKWEBENGINESETTINGS_P_P_H
diff --git a/src/webengine/api/qquickwebenginesingleton.cpp b/src/webengine/api/qquickwebenginesingleton.cpp
index 280f5b913..4f1bd32f2 100644
--- a/src/webengine/api/qquickwebenginesingleton.cpp
+++ b/src/webengine/api/qquickwebenginesingleton.cpp
@@ -43,7 +43,7 @@ QT_BEGIN_NAMESPACE
QQuickWebEngineSettings *QQuickWebEngineSingleton::settings() const
{
- return QQuickWebEngineSettings::globalSettings();
+ return defaultProfile()->settings();
}
QQuickWebEngineProfile *QQuickWebEngineSingleton::defaultProfile() const
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index 02d30af61..85a36df50 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -48,7 +48,6 @@
#include "qquickwebengineprofile_p.h"
#include "qquickwebengineprofile_p_p.h"
#include "qquickwebenginesettings_p.h"
-#include "qquickwebenginesettings_p_p.h"
#include "render_widget_host_view_qt_delegate_quick.h"
#include "render_widget_host_view_qt_delegate_quickwindow.h"
#include "ui_delegates_manager.h"
@@ -86,7 +85,7 @@ QQuickWebEngineViewPrivate::QQuickWebEngineViewPrivate()
, v(new QQuickWebEngineViewport(this))
, m_history(new QQuickWebEngineHistory(this))
, m_profile(QQuickWebEngineProfile::defaultProfile())
- , m_settings(new QQuickWebEngineSettings)
+ , m_settings(new QQuickWebEngineSettings(m_profile->settings()))
, contextMenuExtraItems(0)
, loadProgress(0)
, m_isFullScreen(false)
@@ -450,7 +449,7 @@ BrowserContextAdapter *QQuickWebEngineViewPrivate::browserContextAdapter()
WebEngineSettings *QQuickWebEngineViewPrivate::webEngineSettings() const
{
- return m_settings->d_func()->coreSettings.data();
+ return m_settings->d_ptr.data();
}
void QQuickWebEngineViewPrivate::setDevicePixelRatio(qreal devicePixelRatio)
@@ -664,7 +663,11 @@ void QQuickWebEngineView::setProfile(QQuickWebEngineProfile *profile)
void QQuickWebEngineViewPrivate::setProfile(QQuickWebEngineProfile *profile)
{
+ if (profile == m_profile)
+ return;
m_profile = profile;
+ m_settings->setParentSettings(profile->settings());
+
if (adapter && adapter->browserContext() != browserContextAdapter()->browserContext()) {
// When the profile changes we need to create a new WebContentAdapter and reload the active URL.
QUrl activeUrl = adapter->activeUrl();
diff --git a/src/webengine/webengine.pro b/src/webengine/webengine.pro
index 275867202..8a6d06c10 100644
--- a/src/webengine/webengine.pro
+++ b/src/webengine/webengine.pro
@@ -39,7 +39,6 @@ HEADERS = \
api/qquickwebengineprofile_p.h \
api/qquickwebengineprofile_p_p.h \
api/qquickwebenginesettings_p.h \
- api/qquickwebenginesettings_p_p.h \
api/qquickwebenginesingleton_p.h \
api/qquickwebengineview_p.h \
api/qquickwebengineview_p_p.h \
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