From 6a6fd71af52bcbffc4fccf58e1f35b7612d16a2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCri=20Valdmann?= <juri.valdmann@qt.io> Date: Mon, 15 Jan 2018 17:30:50 +0100 Subject: [PATCH] QuotaPermissionController: Use implementation subclass Try to separate quota-unrelated bookkeeping from quota-specific glue code. Task-number: QTBUG-62783 Change-Id: I0c7c3fd554a4b3a195a99ff4034f158f2547eecb Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> --- src/core/core_chromium.pri | 4 +- src/core/quota_permission_context_qt.cpp | 7 +-- src/core/quota_permission_controller.h | 39 ++++++++---- ...p => quota_permission_controller_impl.cpp} | 61 +++++-------------- ...p.h => quota_permission_controller_impl.h} | 26 ++++---- 5 files changed, 61 insertions(+), 76 deletions(-) rename src/core/{quota_permission_controller.cpp => quota_permission_controller_impl.cpp} (57%) rename src/core/{quota_permission_controller_p.h => quota_permission_controller_impl.h} (78%) diff --git a/src/core/core_chromium.pri b/src/core/core_chromium.pri index 08552800d..c81b661a6 100644 --- a/src/core/core_chromium.pri +++ b/src/core/core_chromium.pri @@ -78,7 +78,7 @@ SOURCES = \ proxy_config_service_qt.cpp \ qrc_protocol_handler_qt.cpp \ quota_permission_context_qt.cpp \ - quota_permission_controller.cpp \ + quota_permission_controller_impl.cpp \ render_view_context_menu_qt.cpp \ render_view_observer_host_qt.cpp \ render_widget_host_view_qt.cpp \ @@ -161,7 +161,7 @@ HEADERS = \ qrc_protocol_handler_qt.h \ quota_permission_context_qt.h \ quota_permission_controller.h \ - quota_permission_controller_p.h \ + quota_permission_controller_impl.h \ render_view_context_menu_qt.h \ render_view_observer_host_qt.h \ render_widget_host_view_qt.h \ diff --git a/src/core/quota_permission_context_qt.cpp b/src/core/quota_permission_context_qt.cpp index 10249bbf0..bb59512c0 100644 --- a/src/core/quota_permission_context_qt.cpp +++ b/src/core/quota_permission_context_qt.cpp @@ -42,8 +42,7 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/web_contents.h" -#include "quota_permission_controller.h" -#include "quota_permission_controller_p.h" +#include "quota_permission_controller_impl.h" #include "web_contents_delegate_qt.h" #include "web_contents_view_qt.h" @@ -83,8 +82,8 @@ void QuotaPermissionContextQt::RequestQuotaPermission(const StorageQuotaParams & if (!client) return; - QSharedPointer<QuotaPermissionController> controller(new QuotaPermissionController(new QuotaPermissionControllerPrivate(this, params, callback))); - client->runQuotaPermissionRequest(controller); + QSharedPointer<QuotaPermissionController> request(new QuotaPermissionControllerImpl(this, params, callback)); + client->runQuotaPermissionRequest(request); } void QuotaPermissionContextQt::dispatchCallbackOnIOThread(const PermissionCallback &callback, diff --git a/src/core/quota_permission_controller.h b/src/core/quota_permission_controller.h index e584d7b52..cdd5e226a 100644 --- a/src/core/quota_permission_controller.h +++ b/src/core/quota_permission_controller.h @@ -41,28 +41,45 @@ #define QUOTA_PERMISSION_CONTROLLER_H #include "qtwebenginecoreglobal.h" -#include <QtCore/qscopedpointer.h> #include <QtCore/qurl.h> namespace QtWebEngineCore { -class QuotaPermissionContextQt; -class QuotaPermissionControllerPrivate; - class QWEBENGINE_EXPORT QuotaPermissionController { public: - QuotaPermissionController(QuotaPermissionControllerPrivate *controllerPrivate); - ~QuotaPermissionController(); + QuotaPermissionController(QUrl origin, qint64 requestedSize) + : m_answered(false) + , m_origin(std::move(origin)) + , m_requestedSize(requestedSize) + {} + + QUrl origin() const { return m_origin; } + qint64 requestedSize() const { return m_requestedSize; } + + void accept() { + if (!m_answered) { + m_answered = true; + accepted(); + } + } + + void reject() { + if (!m_answered) { + m_answered = true; + rejected(); + } + } - void accept(); - void reject(); + virtual ~QuotaPermissionController() {} - QUrl origin(); - qint64 requestedSize(); +protected: + virtual void accepted() = 0; + virtual void rejected() = 0; private: - QScopedPointer<QuotaPermissionControllerPrivate> d; bool m_answered; + QUrl m_origin; + qint64 m_requestedSize; }; } // namespace QtWebEngineCore diff --git a/src/core/quota_permission_controller.cpp b/src/core/quota_permission_controller_impl.cpp similarity index 57% rename from src/core/quota_permission_controller.cpp rename to src/core/quota_permission_controller_impl.cpp index b874c0449..ebad4b2fb 100644 --- a/src/core/quota_permission_controller.cpp +++ b/src/core/quota_permission_controller_impl.cpp @@ -37,62 +37,31 @@ ** ****************************************************************************/ -#include "quota_permission_controller.h" -#include "quota_permission_controller_p.h" +#include "quota_permission_controller_impl.h" -#include "quota_permission_context_qt.h" #include "type_conversion.h" namespace QtWebEngineCore { -QuotaPermissionControllerPrivate::QuotaPermissionControllerPrivate(QuotaPermissionContextQt *context, - const content::StorageQuotaParams ¶ms, - const content::QuotaPermissionContext::PermissionCallback &callback) - : m_context(context), - m_originUrl(toQt(params.origin_url)), - m_requestedSize(params.requested_size), - m_callback(callback) -{ -} - -QuotaPermissionControllerPrivate::~QuotaPermissionControllerPrivate() -{ -} - -QuotaPermissionController::QuotaPermissionController(QuotaPermissionControllerPrivate *controllerPrivate) - : d(controllerPrivate) - , m_answered(false) -{ -} - -QuotaPermissionController::~QuotaPermissionController() -{ -} - -void QuotaPermissionController::accept() -{ - if (!m_answered) { - d->m_context->dispatchCallbackOnIOThread(d->m_callback, QuotaPermissionContextQt::QUOTA_PERMISSION_RESPONSE_ALLOW); - m_answered = true; - } -} - -void QuotaPermissionController::reject() -{ - if (!m_answered) { - d->m_context->dispatchCallbackOnIOThread(d->m_callback, QuotaPermissionContextQt::QUOTA_PERMISSION_RESPONSE_DISALLOW); - m_answered = true; - } -} +QuotaPermissionControllerImpl::QuotaPermissionControllerImpl( + QuotaPermissionContextQt *context, + const content::StorageQuotaParams ¶ms, + const content::QuotaPermissionContext::PermissionCallback &callback) + : QuotaPermissionController( + toQt(params.origin_url), + params.requested_size) + , m_context(context) + , m_callback(callback) +{} -QUrl QuotaPermissionController::origin() +void QuotaPermissionControllerImpl::accepted() { - return d->m_originUrl; + m_context->dispatchCallbackOnIOThread(m_callback, QuotaPermissionContextQt::QUOTA_PERMISSION_RESPONSE_ALLOW); } -qint64 QuotaPermissionController::requestedSize() +void QuotaPermissionControllerImpl::rejected() { - return d->m_requestedSize; + m_context->dispatchCallbackOnIOThread(m_callback, QuotaPermissionContextQt::QUOTA_PERMISSION_RESPONSE_DISALLOW); } } // namespace QtWebEngineCore diff --git a/src/core/quota_permission_controller_p.h b/src/core/quota_permission_controller_impl.h similarity index 78% rename from src/core/quota_permission_controller_p.h rename to src/core/quota_permission_controller_impl.h index c00ae42c9..297c6711b 100644 --- a/src/core/quota_permission_controller_p.h +++ b/src/core/quota_permission_controller_impl.h @@ -37,30 +37,30 @@ ** ****************************************************************************/ -#ifndef QUOTA_PERMISSION_CONTROLLER_P_H -#define QUOTA_PERMISSION_CONTROLLER_P_H +#ifndef QUOTA_PERMISSION_CONTROLLER_IMPL_H +#define QUOTA_PERMISSION_CONTROLLER_IMPL_H +#include "quota_permission_controller.h" #include "quota_permission_context_qt.h" -#include <QtCore/qurl.h> namespace QtWebEngineCore { -class QuotaPermissionControllerPrivate { +class QuotaPermissionControllerImpl final : public QuotaPermissionController { public: - QuotaPermissionControllerPrivate(QuotaPermissionContextQt *context, - const content::StorageQuotaParams ¶ms, - const content::QuotaPermissionContext::PermissionCallback &callback); - ~QuotaPermissionControllerPrivate(); + QuotaPermissionControllerImpl( + QuotaPermissionContextQt *context, + const content::StorageQuotaParams ¶ms, + const content::QuotaPermissionContext::PermissionCallback &callback); + +protected: + void accepted() override; + void rejected() override; private: scoped_refptr<QuotaPermissionContextQt> m_context; - QUrl m_originUrl; - qint64 m_requestedSize; content::QuotaPermissionContext::PermissionCallback m_callback; - - friend class QuotaPermissionController; }; } // namespace QtWebEngineCore -#endif // QUOTA_PERMISSION_CONTROLLER_P_H +#endif // QUOTA_PERMISSION_CONTROLLER_IMPL_H -- GitLab