summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets/api/qwebengineprofile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/webenginewidgets/api/qwebengineprofile.cpp')
-rw-r--r--src/webenginewidgets/api/qwebengineprofile.cpp50
1 files changed, 36 insertions, 14 deletions
diff --git a/src/webenginewidgets/api/qwebengineprofile.cpp b/src/webenginewidgets/api/qwebengineprofile.cpp
index 746fe55e8..96cc2bb94 100644
--- a/src/webenginewidgets/api/qwebengineprofile.cpp
+++ b/src/webenginewidgets/api/qwebengineprofile.cpp
@@ -46,13 +46,12 @@
#include "qwebengineprofile_p.h"
#include "qwebenginesettings.h"
#include "qwebenginescriptcollection_p.h"
-
-#include "qwebenginebrowsercontext_p.h"
#include "qtwebenginecoreglobal.h"
#include "browser_context_adapter.h"
#include "visited_links_manager_qt.h"
#include "web_engine_settings.h"
+
QT_BEGIN_NAMESPACE
ASSERT_ENUMS_MATCH(QWebEngineDownloadItem::UnknownSaveFormat, QtWebEngineCore::BrowserContextAdapterClient::UnknownSavePageFormat)
@@ -148,18 +147,38 @@ using QtWebEngineCore::BrowserContextAdapter;
\sa QWebEngineDownloadItem, QWebEnginePage::download()
*/
-QWebEngineProfilePrivate::QWebEngineProfilePrivate(QSharedPointer<QtWebEngineCore::BrowserContextAdapter> browserContext)
- : m_settings(new QWebEngineSettings())
- , m_scriptCollection(new QWebEngineScriptCollection(new QWebEngineScriptCollectionPrivate(browserContext->userResourceController())))
- , m_browserContext(new QWebEngineBrowserContext(browserContext, this))
+// Fixme: fix storage name setters and unify constructors here and in BrowserContextAdapter
+QWebEngineProfilePrivate::QWebEngineProfilePrivate(const QString &storageName)
+ : m_settings(new QWebEngineSettings())
+ , m_browserContextAdapter(storageName.isEmpty()?
+ new QtWebEngineCore::BrowserContextAdapter(true):
+ new QtWebEngineCore::BrowserContextAdapter(storageName))
+ , m_scriptCollection(new QWebEngineScriptCollection(
+ new QWebEngineScriptCollectionPrivate(m_browserContextAdapter->userResourceController())))
+{
+ m_browserContextAdapter->addClient(this);
+ m_settings->d_ptr->initDefaults();
+}
+
+// Fixme: fix storage name setters and unify constructors here and in BrowserContextAdapter
+QWebEngineProfilePrivate::QWebEngineProfilePrivate(BrowserContextAdapter* browserContextAdapter)
+ : m_settings(new QWebEngineSettings())
+ , m_browserContextAdapter(browserContextAdapter)
+ , m_scriptCollection(new QWebEngineScriptCollection(
+ new QWebEngineScriptCollectionPrivate(m_browserContextAdapter->userResourceController())))
{
+ m_browserContextAdapter->addClient(this);
m_settings->d_ptr->initDefaults();
}
QWebEngineProfilePrivate::~QWebEngineProfilePrivate()
{
- delete m_settings;
- m_settings = 0;
+ if (m_browserContextAdapter) {
+ // In the case the user sets this profile as the parent of the interceptor
+ // it can be deleted before the browser-context still referencing it is.
+ m_browserContextAdapter->setRequestInterceptor(nullptr);
+ m_browserContextAdapter->removeClient(this);
+ }
Q_FOREACH (QWebEngineDownloadItem* download, m_ongoingDownloads) {
if (download)
@@ -167,13 +186,16 @@ QWebEngineProfilePrivate::~QWebEngineProfilePrivate()
}
m_ongoingDownloads.clear();
- if (m_browserContext)
- m_browserContext->shutdown();
+
+ if (q_ptr != QWebEngineProfile::defaultProfile())
+ delete m_browserContextAdapter;
+
+ delete m_settings;
}
-QSharedPointer<QtWebEngineCore::BrowserContextAdapter> QWebEngineProfilePrivate::browserContext() const
+BrowserContextAdapter* QWebEngineProfilePrivate::browserContext() const
{
- return m_browserContext ? m_browserContext->browserContextRef : nullptr;
+ return m_browserContextAdapter;
}
void QWebEngineProfilePrivate::downloadDestroyed(quint32 downloadId)
@@ -245,7 +267,7 @@ void QWebEngineProfilePrivate::downloadUpdated(const DownloadItemInfo &info)
*/
QWebEngineProfile::QWebEngineProfile(QObject *parent)
: QObject(parent)
- , d_ptr(new QWebEngineProfilePrivate(QSharedPointer<BrowserContextAdapter>::create(true)))
+ , d_ptr(new QWebEngineProfilePrivate())
{
d_ptr->q_ptr = this;
}
@@ -262,7 +284,7 @@ QWebEngineProfile::QWebEngineProfile(QObject *parent)
*/
QWebEngineProfile::QWebEngineProfile(const QString &storageName, QObject *parent)
: QObject(parent)
- , d_ptr(new QWebEngineProfilePrivate(QSharedPointer<BrowserContextAdapter>::create(storageName)))
+ , d_ptr(new QWebEngineProfilePrivate(storageName))
{
d_ptr->q_ptr = this;
}