From 674662d37844d6c77388053168e7f7b8432e6f59 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCri=20Valdmann?= <juri.valdmann@qt.io>
Date: Fri, 2 Mar 2018 11:06:54 +0100
Subject: [PATCH] Use wrappers in QtWebEngineCore public interface

Stop exporting quota / RegisterProtocolHandler request controller classes, and
use the public wrapper classes in WebContentsAdapterClient instead.

Change-Id: Iaa380b6ceb4f9464fc05dd012ee5df219f11f189
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
---
 src/core/quota_permission_context_qt.cpp               |  6 ++++--
 src/core/quota_request_controller.h                    |  2 +-
 .../register_protocol_handler_request_controller.h     |  2 +-
 src/core/request_controller.h                          |  2 +-
 src/core/web_contents_adapter_client.h                 | 10 +++++-----
 src/core/web_contents_delegate_qt.cpp                  |  9 +++++----
 src/webengine/api/qquickwebengineview.cpp              |  6 ++----
 src/webengine/api/qquickwebengineview_p_p.h            |  4 ++--
 src/webenginewidgets/api/qwebenginepage.cpp            |  6 ++----
 src/webenginewidgets/api/qwebenginepage_p.h            |  4 ++--
 10 files changed, 25 insertions(+), 26 deletions(-)

diff --git a/src/core/quota_permission_context_qt.cpp b/src/core/quota_permission_context_qt.cpp
index 4e9293447..f00b2008a 100644
--- a/src/core/quota_permission_context_qt.cpp
+++ b/src/core/quota_permission_context_qt.cpp
@@ -43,6 +43,7 @@
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/web_contents.h"
 #include "quota_request_controller_impl.h"
+#include "qwebenginequotarequest.h"
 #include "web_contents_delegate_qt.h"
 #include "web_contents_view_qt.h"
 
@@ -82,8 +83,9 @@ void QuotaPermissionContextQt::RequestQuotaPermission(const StorageQuotaParams &
     if (!client)
         return;
 
-    QSharedPointer<QuotaRequestController> request(new QuotaRequestControllerImpl(this, params, callback));
-    client->runQuotaRequest(request);
+    QWebEngineQuotaRequest request(
+        QSharedPointer<QuotaRequestControllerImpl>::create(this, params, callback));
+    client->runQuotaRequest(std::move(request));
 }
 
 void QuotaPermissionContextQt::dispatchCallbackOnIOThread(const PermissionCallback &callback,
diff --git a/src/core/quota_request_controller.h b/src/core/quota_request_controller.h
index f5c7a3f04..0bb0cbff3 100644
--- a/src/core/quota_request_controller.h
+++ b/src/core/quota_request_controller.h
@@ -44,7 +44,7 @@
 
 namespace QtWebEngineCore {
 
-class QWEBENGINE_EXPORT QuotaRequestController : public RequestController {
+class QuotaRequestController : public RequestController {
 public:
     QuotaRequestController(QUrl origin, qint64 requestedSize)
         : RequestController(std::move(origin))
diff --git a/src/core/register_protocol_handler_request_controller.h b/src/core/register_protocol_handler_request_controller.h
index be60619f5..2f9c9fc49 100644
--- a/src/core/register_protocol_handler_request_controller.h
+++ b/src/core/register_protocol_handler_request_controller.h
@@ -44,7 +44,7 @@
 
 namespace QtWebEngineCore {
 
-class QWEBENGINE_EXPORT RegisterProtocolHandlerRequestController : public RequestController {
+class RegisterProtocolHandlerRequestController : public RequestController {
 public:
     RegisterProtocolHandlerRequestController(QUrl origin, QString scheme)
         : RequestController(std::move(origin))
diff --git a/src/core/request_controller.h b/src/core/request_controller.h
index 83827a888..5bd621282 100644
--- a/src/core/request_controller.h
+++ b/src/core/request_controller.h
@@ -45,7 +45,7 @@
 
 namespace QtWebEngineCore {
 
-class QWEBENGINE_EXPORT RequestController {
+class RequestController {
 public:
     RequestController(QUrl origin)
         : m_answered(false)
diff --git a/src/core/web_contents_adapter_client.h b/src/core/web_contents_adapter_client.h
index ad9c240e2..4c5133772 100644
--- a/src/core/web_contents_adapter_client.h
+++ b/src/core/web_contents_adapter_client.h
@@ -49,9 +49,11 @@
 #include <QStringList>
 #include <QUrl>
 
+QT_FORWARD_DECLARE_CLASS(CertificateErrorController)
 QT_FORWARD_DECLARE_CLASS(QKeyEvent)
 QT_FORWARD_DECLARE_CLASS(QVariant)
-QT_FORWARD_DECLARE_CLASS(CertificateErrorController)
+QT_FORWARD_DECLARE_CLASS(QWebEngineQuotaRequest)
+QT_FORWARD_DECLARE_CLASS(QWebEngineRegisterProtocolHandlerRequest)
 
 namespace content {
 struct DropData;
@@ -64,8 +66,6 @@ class BrowserContextAdapter;
 class ColorChooserController;
 class FilePickerController;
 class JavaScriptDialogController;
-class QuotaRequestController;
-class RegisterProtocolHandlerRequestController;
 class RenderWidgetHostViewQt;
 class RenderWidgetHostViewQtDelegate;
 class RenderWidgetHostViewQtDelegateClient;
@@ -438,8 +438,8 @@ public:
     virtual void runGeolocationPermissionRequest(const QUrl &securityOrigin) = 0;
     virtual void runMediaAccessPermissionRequest(const QUrl &securityOrigin, MediaRequestFlags requestFlags) = 0;
     virtual void runMouseLockPermissionRequest(const QUrl &securityOrigin) = 0;
-    virtual void runQuotaRequest(QSharedPointer<QuotaRequestController>) = 0;
-    virtual void runRegisterProtocolHandlerRequest(QSharedPointer<RegisterProtocolHandlerRequestController>) = 0;
+    virtual void runQuotaRequest(QWebEngineQuotaRequest) = 0;
+    virtual void runRegisterProtocolHandlerRequest(QWebEngineRegisterProtocolHandlerRequest) = 0;
     virtual WebEngineSettings *webEngineSettings() const = 0;
     RenderProcessTerminationStatus renderProcessExitStatus(int);
     virtual void renderProcessTerminated(RenderProcessTerminationStatus terminationStatus, int exitCode) = 0;
diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp
index ab398ec44..40fc0934d 100644
--- a/src/core/web_contents_delegate_qt.cpp
+++ b/src/core/web_contents_delegate_qt.cpp
@@ -51,6 +51,8 @@
 #include "file_picker_controller.h"
 #include "media_capture_devices_dispatcher.h"
 #include "net/network_delegate_qt.h"
+#include "qwebengineregisterprotocolhandlerrequest.h"
+#include "register_protocol_handler_request_controller_impl.h"
 #include "render_widget_host_view_qt.h"
 #include "type_conversion.h"
 #include "visited_links_manager_qt.h"
@@ -58,7 +60,6 @@
 #include "web_contents_adapter_p.h"
 #include "web_engine_context.h"
 #include "web_engine_settings.h"
-#include "register_protocol_handler_request_controller_impl.h"
 
 #include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h"
 #include "components/web_cache/browser/web_cache_manager.h"
@@ -638,9 +639,9 @@ void WebContentsDelegateQt::RegisterProtocolHandler(content::WebContents *webCon
     if (registry->SilentlyHandleRegisterHandlerRequest(handler))
         return;
 
-    QSharedPointer<RegisterProtocolHandlerRequestController> controller(
-        new RegisterProtocolHandlerRequestControllerImpl(webContents, handler));
-    m_viewClient->runRegisterProtocolHandlerRequest(std::move(controller));
+    QWebEngineRegisterProtocolHandlerRequest request(
+        QSharedPointer<RegisterProtocolHandlerRequestControllerImpl>::create(webContents, handler));
+    m_viewClient->runRegisterProtocolHandlerRequest(std::move(request));
 }
 
 void WebContentsDelegateQt::UnregisterProtocolHandler(content::WebContents *webContents, const std::string &protocol, const GURL &url, bool)
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index eeb3157a2..8d5a30016 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -590,17 +590,15 @@ void QQuickWebEngineViewPrivate::runMouseLockPermissionRequest(const QUrl &secur
     adapter->grantMouseLockPermission(false);
 }
 
-void QQuickWebEngineViewPrivate::runQuotaRequest(QSharedPointer<QtWebEngineCore::QuotaRequestController> controller)
+void QQuickWebEngineViewPrivate::runQuotaRequest(QWebEngineQuotaRequest request)
 {
     Q_Q(QQuickWebEngineView);
-    QWebEngineQuotaRequest request(std::move(controller));
     Q_EMIT q->quotaRequested(request);
 }
 
-void QQuickWebEngineViewPrivate::runRegisterProtocolHandlerRequest(QSharedPointer<RegisterProtocolHandlerRequestController> controller)
+void QQuickWebEngineViewPrivate::runRegisterProtocolHandlerRequest(QWebEngineRegisterProtocolHandlerRequest request)
 {
     Q_Q(QQuickWebEngineView);
-    QWebEngineRegisterProtocolHandlerRequest request(std::move(controller));
     Q_EMIT q->registerProtocolHandlerRequested(request);
 }
 
diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h
index 1af46f917..73607aa59 100644
--- a/src/webengine/api/qquickwebengineview_p_p.h
+++ b/src/webengine/api/qquickwebengineview_p_p.h
@@ -132,8 +132,8 @@ public:
     void authenticationRequired(QSharedPointer<QtWebEngineCore::AuthenticationDialogController>) override;
     void runMediaAccessPermissionRequest(const QUrl &securityOrigin, MediaRequestFlags requestFlags) override;
     void runMouseLockPermissionRequest(const QUrl &securityOrigin) override;
-    void runQuotaRequest(QSharedPointer<QtWebEngineCore::QuotaRequestController>) override;
-    void runRegisterProtocolHandlerRequest(QSharedPointer<QtWebEngineCore::RegisterProtocolHandlerRequestController>) override;
+    void runQuotaRequest(QWebEngineQuotaRequest) override;
+    void runRegisterProtocolHandlerRequest(QWebEngineRegisterProtocolHandlerRequest) override;
     QObject *accessibilityParentObject() override;
     QtWebEngineCore::WebEngineSettings *webEngineSettings() const override;
     void allowCertificateError(const QSharedPointer<CertificateErrorController> &errorController) override;
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
index 5f0238dc0..a8a860f16 100644
--- a/src/webenginewidgets/api/qwebenginepage.cpp
+++ b/src/webenginewidgets/api/qwebenginepage.cpp
@@ -588,17 +588,15 @@ void QWebEnginePagePrivate::runMouseLockPermissionRequest(const QUrl &securityOr
     Q_EMIT q->featurePermissionRequested(securityOrigin, QWebEnginePage::MouseLock);
 }
 
-void QWebEnginePagePrivate::runQuotaRequest(QSharedPointer<QtWebEngineCore::QuotaRequestController> controller)
+void QWebEnginePagePrivate::runQuotaRequest(QWebEngineQuotaRequest request)
 {
     Q_Q(QWebEnginePage);
-    QWebEngineQuotaRequest request(controller);
     Q_EMIT q->quotaRequested(request);
 }
 
-void QWebEnginePagePrivate::runRegisterProtocolHandlerRequest(QSharedPointer<RegisterProtocolHandlerRequestController> controller)
+void QWebEnginePagePrivate::runRegisterProtocolHandlerRequest(QWebEngineRegisterProtocolHandlerRequest request)
 {
     Q_Q(QWebEnginePage);
-    QWebEngineRegisterProtocolHandlerRequest request(std::move(controller));
     Q_EMIT q->registerProtocolHandlerRequested(request);
 }
 
diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h
index fcd7a2039..dc7d02b73 100644
--- a/src/webenginewidgets/api/qwebenginepage_p.h
+++ b/src/webenginewidgets/api/qwebenginepage_p.h
@@ -131,8 +131,8 @@ public:
     void runMediaAccessPermissionRequest(const QUrl &securityOrigin, MediaRequestFlags requestFlags) override;
     void runGeolocationPermissionRequest(const QUrl &securityOrigin) override;
     void runMouseLockPermissionRequest(const QUrl &securityOrigin) override;
-    void runQuotaRequest(QSharedPointer<QtWebEngineCore::QuotaRequestController>) override;
-    void runRegisterProtocolHandlerRequest(QSharedPointer<QtWebEngineCore::RegisterProtocolHandlerRequestController>) override;
+    void runQuotaRequest(QWebEngineQuotaRequest) override;
+    void runRegisterProtocolHandlerRequest(QWebEngineRegisterProtocolHandlerRequest) override;
     QObject *accessibilityParentObject() override;
     QtWebEngineCore::WebEngineSettings *webEngineSettings() const override;
     void allowCertificateError(const QSharedPointer<CertificateErrorController> &controller) override;
-- 
GitLab