From 58fea877aa61cf0e7bc81d0c3c91f732c2791ff3 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:42:24 +0100
Subject: [PATCH] Register metatype of QWebEngineQuotaPermissionRequest

Declare and register metatype for QWebEngineQuotaPermissionRequest. Enables the
quotaPermissionRequested signal to be used with queued connections and
QSignalSpy. Needs a public default ctor.

Task-number: QTBUG-62783
Change-Id: Ibc2b57b1b47a668f7a1f6fe9f591952d5275c7e2
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
---
 .../api/qwebenginequotapermissionrequest.cpp           |  7 +++++++
 .../api/qwebenginequotapermissionrequest.h             | 10 ++++++----
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/webenginewidgets/api/qwebenginequotapermissionrequest.cpp b/src/webenginewidgets/api/qwebenginequotapermissionrequest.cpp
index 172c66995..f8f987e2c 100644
--- a/src/webenginewidgets/api/qwebenginequotapermissionrequest.cpp
+++ b/src/webenginewidgets/api/qwebenginequotapermissionrequest.cpp
@@ -54,6 +54,13 @@ QT_BEGIN_NAMESPACE
     \inmodule QtWebEngineWidgets
 */
 
+static void registerMetaTypes()
+{
+    qRegisterMetaType<QWebEngineQuotaPermissionRequest>();
+}
+
+Q_CONSTRUCTOR_FUNCTION(registerMetaTypes)
+
 QWebEngineQuotaPermissionRequest::QWebEngineQuotaPermissionRequest(QSharedPointer<QtWebEngineCore::QuotaPermissionController> controller)
     : d_ptr(controller)
 {
diff --git a/src/webenginewidgets/api/qwebenginequotapermissionrequest.h b/src/webenginewidgets/api/qwebenginequotapermissionrequest.h
index aa0184fad..ed6e9edc3 100644
--- a/src/webenginewidgets/api/qwebenginequotapermissionrequest.h
+++ b/src/webenginewidgets/api/qwebenginequotapermissionrequest.h
@@ -52,20 +52,22 @@ QT_BEGIN_NAMESPACE
 
 class QWEBENGINEWIDGETS_EXPORT QWebEngineQuotaPermissionRequest {
     Q_GADGET
-    Q_PROPERTY(QUrl origin READ origin)
-    Q_PROPERTY(qint64 requestedSize READ requestedSize)
+    Q_PROPERTY(QUrl origin READ origin CONSTANT FINAL)
+    Q_PROPERTY(qint64 requestedSize READ requestedSize CONSTANT FINAL)
 public:
+    explicit QWebEngineQuotaPermissionRequest() { Q_UNREACHABLE(); }
+    explicit QWebEngineQuotaPermissionRequest(QSharedPointer<QtWebEngineCore::QuotaPermissionController> controller);
     Q_INVOKABLE void accept();
     Q_INVOKABLE void reject();
     QUrl origin() const;
     qint64 requestedSize() const;
 
 private:
-    QWebEngineQuotaPermissionRequest(QSharedPointer<QtWebEngineCore::QuotaPermissionController> controller);
     QSharedPointer<QtWebEngineCore::QuotaPermissionController> d_ptr;
-    friend class QWebEnginePagePrivate;
 };
 
 QT_END_NAMESPACE
 
+Q_DECLARE_METATYPE(QWebEngineQuotaPermissionRequest)
+
 #endif // QWEBENGINEQUOTAPERMISSIONREQUEST_H
-- 
GitLab