From 7023f228b099c410081db5c697e2d69ed57558da Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Fri, 15 Apr 2016 14:05:08 +0200 Subject: Switch BrowserContextAdapter to QSharedPointer BrowserContextAdapter is not a form of shared data, and using QExplicitSharedDataPointer on it as always been a misuse of the class. Instead we should switch it to QSharedPointer, which also allows us to use QWeakPointer. Change-Id: I8eb489b4a12d3fdddcde55821be294814a156a9d Reviewed-by: Kai Koehne Reviewed-by: Michal Klocek --- src/core/browser_context_adapter.cpp | 2 +- src/core/browser_context_adapter.h | 6 +++--- src/core/browser_context_qt.cpp | 2 +- src/core/url_request_context_getter_qt.cpp | 4 ++-- src/core/url_request_context_getter_qt.h | 9 +++++---- src/core/web_contents_adapter_client.h | 2 +- src/core/web_contents_adapter_p.h | 4 ++-- src/core/web_engine_context.cpp | 8 ++++---- src/core/web_engine_context.h | 6 +++--- src/webengine/api/qquickwebengineprofile.cpp | 4 ++-- src/webengine/api/qquickwebengineprofile_p.h | 7 ++++--- src/webengine/api/qquickwebengineview.cpp | 2 +- src/webengine/api/qquickwebengineview_p_p.h | 2 +- src/webenginewidgets/api/qwebenginepage.cpp | 2 +- src/webenginewidgets/api/qwebenginepage_p.h | 2 +- src/webenginewidgets/api/qwebengineprofile.cpp | 6 +++--- src/webenginewidgets/api/qwebengineprofile_p.h | 7 ++++--- 17 files changed, 39 insertions(+), 36 deletions(-) diff --git a/src/core/browser_context_adapter.cpp b/src/core/browser_context_adapter.cpp index 7f9363c06..cde279eac 100644 --- a/src/core/browser_context_adapter.cpp +++ b/src/core/browser_context_adapter.cpp @@ -165,7 +165,7 @@ void BrowserContextAdapter::cancelDownload(quint32 downloadId) downloadManagerDelegate()->cancelDownload(downloadId); } -BrowserContextAdapter* BrowserContextAdapter::defaultContext() +QSharedPointer BrowserContextAdapter::defaultContext() { return WebEngineContext::current()->defaultBrowserContext(); } diff --git a/src/core/browser_context_adapter.h b/src/core/browser_context_adapter.h index a388e9a0c..7ec83983f 100644 --- a/src/core/browser_context_adapter.h +++ b/src/core/browser_context_adapter.h @@ -39,10 +39,10 @@ #include "qtwebenginecoreglobal.h" +#include #include #include #include -#include #include #include @@ -60,14 +60,14 @@ class DownloadManagerDelegateQt; class UserScriptControllerHost; class WebEngineVisitedLinksManager; -class QWEBENGINE_EXPORT BrowserContextAdapter : public QSharedData +class QWEBENGINE_EXPORT BrowserContextAdapter : public QEnableSharedFromThis { public: explicit BrowserContextAdapter(bool offTheRecord = false); explicit BrowserContextAdapter(const QString &storagePrefix); virtual ~BrowserContextAdapter(); - static BrowserContextAdapter* defaultContext(); + static QSharedPointer defaultContext(); static QObject* globalQObjectRoot(); WebEngineVisitedLinksManager *visitedLinksManager(); diff --git a/src/core/browser_context_qt.cpp b/src/core/browser_context_qt.cpp index 902af8af9..740f38237 100644 --- a/src/core/browser_context_qt.cpp +++ b/src/core/browser_context_qt.cpp @@ -152,7 +152,7 @@ content::PermissionManager *BrowserContextQt::GetPermissionManager() net::URLRequestContextGetter *BrowserContextQt::CreateRequestContext(content::ProtocolHandlerMap *protocol_handlers, content::URLRequestInterceptorScopedVector request_interceptors) { - url_request_getter_ = new URLRequestContextGetterQt(m_adapter, protocol_handlers, request_interceptors.Pass()); + url_request_getter_ = new URLRequestContextGetterQt(m_adapter->sharedFromThis(), protocol_handlers, request_interceptors.Pass()); return url_request_getter_.get(); } diff --git a/src/core/url_request_context_getter_qt.cpp b/src/core/url_request_context_getter_qt.cpp index fb4dc467e..daa07b54b 100644 --- a/src/core/url_request_context_getter_qt.cpp +++ b/src/core/url_request_context_getter_qt.cpp @@ -85,7 +85,7 @@ static const char kQrcSchemeQt[] = "qrc"; using content::BrowserThread; -URLRequestContextGetterQt::URLRequestContextGetterQt(BrowserContextAdapter *browserContext, content::ProtocolHandlerMap *protocolHandlers, content::URLRequestInterceptorScopedVector request_interceptors) +URLRequestContextGetterQt::URLRequestContextGetterQt(QSharedPointer browserContext, content::ProtocolHandlerMap *protocolHandlers, content::URLRequestInterceptorScopedVector request_interceptors) : m_ignoreCertificateErrors(false) , m_browserContext(browserContext) , m_cookieDelegate(new CookieMonsterDelegateQt()) @@ -293,7 +293,7 @@ void URLRequestContextGetterQt::generateUserAgent() Q_ASSERT(m_urlRequestContext); Q_ASSERT(m_storage); - m_storage->set_http_user_agent_settings(new HttpUserAgentSettingsQt(m_browserContext.constData())); + m_storage->set_http_user_agent_settings(new HttpUserAgentSettingsQt(m_browserContext.data())); } void URLRequestContextGetterQt::updateHttpCache() diff --git a/src/core/url_request_context_getter_qt.h b/src/core/url_request_context_getter_qt.h index 555d56784..8b0013208 100644 --- a/src/core/url_request_context_getter_qt.h +++ b/src/core/url_request_context_getter_qt.h @@ -53,8 +53,9 @@ #include "cookie_monster_delegate_qt.h" #include "network_delegate_qt.h" -#include "qglobal.h" -#include +#include +#include +#include namespace net { class MappedHostResolver; @@ -67,7 +68,7 @@ class BrowserContextAdapter; class URLRequestContextGetterQt : public net::URLRequestContextGetter { public: - explicit URLRequestContextGetterQt(BrowserContextAdapter *browserContext, content::ProtocolHandlerMap *protocolHandlers, content::URLRequestInterceptorScopedVector request_interceptors); + URLRequestContextGetterQt(QSharedPointer browserContext, content::ProtocolHandlerMap *protocolHandlers, content::URLRequestInterceptorScopedVector request_interceptors); virtual net::URLRequestContext *GetURLRequestContext() Q_DECL_OVERRIDE; virtual scoped_refptr GetNetworkTaskRunner() const Q_DECL_OVERRIDE; @@ -94,7 +95,7 @@ private: bool m_ignoreCertificateErrors; QAtomicInt m_updateCookieStore; QAtomicInt m_updateHttpCache; - QExplicitlySharedDataPointer m_browserContext; + QSharedPointer m_browserContext; content::ProtocolHandlerMap m_protocolHandlers; QAtomicPointer m_proxyConfigService; diff --git a/src/core/web_contents_adapter_client.h b/src/core/web_contents_adapter_client.h index 6902a202f..f32e797a5 100644 --- a/src/core/web_contents_adapter_client.h +++ b/src/core/web_contents_adapter_client.h @@ -240,7 +240,7 @@ public: virtual void requestGeometryChange(const QRect &geometry) = 0; virtual void allowCertificateError(const QSharedPointer &errorController) = 0; - virtual BrowserContextAdapter* browserContextAdapter() = 0; + virtual QSharedPointer browserContextAdapter() = 0; }; diff --git a/src/core/web_contents_adapter_p.h b/src/core/web_contents_adapter_p.h index 22f295b32..89a18fb02 100644 --- a/src/core/web_contents_adapter_p.h +++ b/src/core/web_contents_adapter_p.h @@ -53,7 +53,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" -#include +#include QT_FORWARD_DECLARE_CLASS(QWebChannel) @@ -73,7 +73,7 @@ public: WebContentsAdapterPrivate(); ~WebContentsAdapterPrivate(); scoped_refptr engineContext; - QExplicitlySharedDataPointer browserContextAdapter; + QSharedPointer browserContextAdapter; scoped_ptr webContents; scoped_ptr webContentsDelegate; scoped_ptr renderViewObserverHost; diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp index a3b12b742..4bd29dddf 100644 --- a/src/core/web_engine_context.cpp +++ b/src/core/web_engine_context.cpp @@ -148,7 +148,7 @@ bool usingQtQuick2DRenderer() void WebEngineContext::destroyBrowserContext() { - m_defaultBrowserContext = 0; + m_defaultBrowserContext.reset(); } void WebEngineContext::destroy() @@ -182,11 +182,11 @@ scoped_refptr WebEngineContext::current() return sContext; } -BrowserContextAdapter* WebEngineContext::defaultBrowserContext() +QSharedPointer WebEngineContext::defaultBrowserContext() { if (!m_defaultBrowserContext) - m_defaultBrowserContext = new BrowserContextAdapter(QStringLiteral("Default")); - return m_defaultBrowserContext.data(); + m_defaultBrowserContext = QSharedPointer::create(QStringLiteral("Default")); + return m_defaultBrowserContext; } QObject *WebEngineContext::globalQObject() diff --git a/src/core/web_engine_context.h b/src/core/web_engine_context.h index 8f034f18f..f9fae89f6 100644 --- a/src/core/web_engine_context.h +++ b/src/core/web_engine_context.h @@ -44,7 +44,7 @@ #include "base/values.h" #include "components/devtools_http_handler/devtools_http_handler.h" -#include +#include namespace base { class RunLoop; @@ -68,7 +68,7 @@ class WebEngineContext : public base::RefCounted { public: static scoped_refptr current(); - QtWebEngineCore::BrowserContextAdapter *defaultBrowserContext(); + QSharedPointer defaultBrowserContext(); QObject *globalQObject(); void destroyBrowserContext(); @@ -84,7 +84,7 @@ private: scoped_ptr m_contentRunner; scoped_ptr m_browserRunner; QObject* m_globalQObject; - QExplicitlySharedDataPointer m_defaultBrowserContext; + QSharedPointer m_defaultBrowserContext; scoped_ptr m_devtools; }; diff --git a/src/webengine/api/qquickwebengineprofile.cpp b/src/webengine/api/qquickwebengineprofile.cpp index c522ef1ea..c9d8cefed 100644 --- a/src/webengine/api/qquickwebengineprofile.cpp +++ b/src/webengine/api/qquickwebengineprofile.cpp @@ -125,7 +125,7 @@ QT_BEGIN_NAMESPACE The \a download argument holds the state of the finished download instance. */ -QQuickWebEngineProfilePrivate::QQuickWebEngineProfilePrivate(BrowserContextAdapter* browserContext) +QQuickWebEngineProfilePrivate::QQuickWebEngineProfilePrivate(QSharedPointer browserContext) : m_settings(new QQuickWebEngineSettings()) , m_browserContextRef(browserContext) { @@ -242,7 +242,7 @@ void QQuickWebEngineProfilePrivate::downloadUpdated(const DownloadItemInfo &info */ QQuickWebEngineProfile::QQuickWebEngineProfile(QObject *parent) : QObject(parent), - d_ptr(new QQuickWebEngineProfilePrivate(new BrowserContextAdapter(false))) + d_ptr(new QQuickWebEngineProfilePrivate(QSharedPointer::create(false))) { // Sets up the global WebEngineContext QQuickWebEngineProfile::defaultProfile(); diff --git a/src/webengine/api/qquickwebengineprofile_p.h b/src/webengine/api/qquickwebengineprofile_p.h index 8fb56a616..e405f1319 100644 --- a/src/webengine/api/qquickwebengineprofile_p.h +++ b/src/webengine/api/qquickwebengineprofile_p.h @@ -55,6 +55,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE @@ -64,10 +65,10 @@ class QQuickWebEngineSettings; class QQuickWebEngineProfilePrivate : public QtWebEngineCore::BrowserContextAdapterClient { public: Q_DECLARE_PUBLIC(QQuickWebEngineProfile) - QQuickWebEngineProfilePrivate(QtWebEngineCore::BrowserContextAdapter* browserContext); + QQuickWebEngineProfilePrivate(QSharedPointer browserContext); ~QQuickWebEngineProfilePrivate(); - QtWebEngineCore::BrowserContextAdapter *browserContext() const { return m_browserContextRef.data(); } + QSharedPointer browserContext() const { return m_browserContextRef; } QQuickWebEngineSettings *settings() const { return m_settings.data(); } void cancelDownload(quint32 downloadId); @@ -80,7 +81,7 @@ private: friend class QQuickWebEngineViewPrivate; QQuickWebEngineProfile *q_ptr; QScopedPointer m_settings; - QExplicitlySharedDataPointer m_browserContextRef; + QSharedPointer m_browserContextRef; QMap > m_ongoingDownloads; }; diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 1e3efd6c4..3768c3ac6 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -607,7 +607,7 @@ QObject *QQuickWebEngineViewPrivate::accessibilityParentObject() } #endif // QT_NO_ACCESSIBILITY -BrowserContextAdapter *QQuickWebEngineViewPrivate::browserContextAdapter() +QSharedPointer QQuickWebEngineViewPrivate::browserContextAdapter() { return m_profile->d_ptr->browserContext(); } diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h index 65059c837..65bf25e67 100644 --- a/src/webengine/api/qquickwebengineview_p_p.h +++ b/src/webengine/api/qquickwebengineview_p_p.h @@ -172,7 +172,7 @@ public: int exitCode) Q_DECL_OVERRIDE; virtual void requestGeometryChange(const QRect &geometry) Q_DECL_OVERRIDE { Q_UNUSED(geometry); } - virtual QtWebEngineCore::BrowserContextAdapter *browserContextAdapter() Q_DECL_OVERRIDE; + virtual QSharedPointer browserContextAdapter() Q_DECL_OVERRIDE; void setDevicePixelRatio(qreal); void adoptWebContents(QtWebEngineCore::WebContentsAdapter *webContents); diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index e4d89db3e..4bd1a17a3 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -435,7 +435,7 @@ void QWebEnginePagePrivate::setFullScreenMode(bool fullscreen) } } -BrowserContextAdapter *QWebEnginePagePrivate::browserContextAdapter() +QSharedPointer QWebEnginePagePrivate::browserContextAdapter() { return profile->d_ptr->browserContext(); } diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h index 18110d923..3738de3cf 100644 --- a/src/webenginewidgets/api/qwebenginepage_p.h +++ b/src/webenginewidgets/api/qwebenginepage_p.h @@ -125,7 +125,7 @@ public: int exitCode) Q_DECL_OVERRIDE; virtual void requestGeometryChange(const QRect &geometry) Q_DECL_OVERRIDE; - virtual QtWebEngineCore::BrowserContextAdapter *browserContextAdapter() Q_DECL_OVERRIDE; + virtual QSharedPointer browserContextAdapter() Q_DECL_OVERRIDE; void updateAction(QWebEnginePage::WebAction) const; void updateNavigationActions(); diff --git a/src/webenginewidgets/api/qwebengineprofile.cpp b/src/webenginewidgets/api/qwebengineprofile.cpp index aa6101450..535196ed8 100644 --- a/src/webenginewidgets/api/qwebengineprofile.cpp +++ b/src/webenginewidgets/api/qwebengineprofile.cpp @@ -130,7 +130,7 @@ using QtWebEngineCore::BrowserContextAdapter; \sa QWebEngineDownloadItem */ -QWebEngineProfilePrivate::QWebEngineProfilePrivate(BrowserContextAdapter* browserContext) +QWebEngineProfilePrivate::QWebEngineProfilePrivate(QSharedPointer browserContext) : m_settings(new QWebEngineSettings()) , m_scriptCollection(new QWebEngineScriptCollection(new QWebEngineScriptCollectionPrivate(browserContext->userScriptController()))) , m_browserContextRef(browserContext) @@ -222,7 +222,7 @@ void QWebEngineProfilePrivate::downloadUpdated(const DownloadItemInfo &info) */ QWebEngineProfile::QWebEngineProfile(QObject *parent) : QObject(parent) - , d_ptr(new QWebEngineProfilePrivate(new BrowserContextAdapter(true))) + , d_ptr(new QWebEngineProfilePrivate(QSharedPointer::create(true))) { d_ptr->q_ptr = this; } @@ -239,7 +239,7 @@ QWebEngineProfile::QWebEngineProfile(QObject *parent) */ QWebEngineProfile::QWebEngineProfile(const QString &storageName, QObject *parent) : QObject(parent) - , d_ptr(new QWebEngineProfilePrivate(new BrowserContextAdapter(storageName))) + , d_ptr(new QWebEngineProfilePrivate(QSharedPointer::create(storageName))) { d_ptr->q_ptr = this; } diff --git a/src/webenginewidgets/api/qwebengineprofile_p.h b/src/webenginewidgets/api/qwebengineprofile_p.h index 7dcc76598..0190d37d9 100644 --- a/src/webenginewidgets/api/qwebengineprofile_p.h +++ b/src/webenginewidgets/api/qwebengineprofile_p.h @@ -54,6 +54,7 @@ #include #include #include +#include namespace QtWebEngineCore { class BrowserContextAdapter; @@ -66,10 +67,10 @@ class QWebEngineSettings; class QWebEngineProfilePrivate : public QtWebEngineCore::BrowserContextAdapterClient { public: Q_DECLARE_PUBLIC(QWebEngineProfile) - QWebEngineProfilePrivate(QtWebEngineCore::BrowserContextAdapter* browserContext); + QWebEngineProfilePrivate(QSharedPointer browserContext); ~QWebEngineProfilePrivate(); - QtWebEngineCore::BrowserContextAdapter *browserContext() const { return m_browserContextRef.data(); } + QSharedPointer browserContext() const { return m_browserContextRef; } QWebEngineSettings *settings() const { return m_settings; } void cancelDownload(quint32 downloadId); @@ -82,7 +83,7 @@ private: QWebEngineProfile *q_ptr; QWebEngineSettings *m_settings; QScopedPointer m_scriptCollection; - QExplicitlySharedDataPointer m_browserContextRef; + QSharedPointer m_browserContextRef; QMap > m_ongoingDownloads; }; -- cgit v1.2.3