summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2014-11-28 12:00:08 +0100
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-02-05 13:56:10 +0000
commit4ef5831a398280cc26cbf359dcbb9878e77ab7fb (patch)
treeadb8b7ac7a42b8130b178d1001a5c008c430d325 /src/webenginewidgets
parentfaec509a21b4700dbf271c4dcbb3a993f1c4042f (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.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
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