Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package qt6-webchannel for openSUSE:Factory 
checked in at 2022-04-20 16:56:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qt6-webchannel (Old)
 and      /work/SRC/openSUSE:Factory/.qt6-webchannel.new.1941 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "qt6-webchannel"

Wed Apr 20 16:56:11 2022 rev:6 rq:970815 version:6.3.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/qt6-webchannel/qt6-webchannel.changes    
2022-03-29 18:15:13.787120876 +0200
+++ /work/SRC/openSUSE:Factory/.qt6-webchannel.new.1941/qt6-webchannel.changes  
2022-04-20 16:56:32.978579311 +0200
@@ -1,0 +2,11 @@
+Fri Apr  8 11:57:03 UTC 2022 - Christophe Giboudeaux <[email protected]>
+
+- Update to 6.3.0:
+  * https://www.qt.io/blog/qt-6.3-released
+
+-------------------------------------------------------------------
+Tue Mar 29 12:28:44 UTC 2022 - Christophe Giboudeaux <[email protected]>
+
+- Update to 6.3.0-rc
+
+-------------------------------------------------------------------

Old:
----
  qtwebchannel-everywhere-src-6.2.4.tar.xz

New:
----
  qtwebchannel-everywhere-src-6.3.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ qt6-webchannel.spec ++++++
--- /var/tmp/diff_new_pack.0cYJoL/_old  2022-04-20 16:56:33.642579931 +0200
+++ /var/tmp/diff_new_pack.0cYJoL/_new  2022-04-20 16:56:33.646579935 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package qt6-webchannel
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,8 +16,8 @@
 #
 
 
-%define real_version 6.2.4
-%define short_version 6.2
+%define real_version 6.3.0
+%define short_version 6.3
 %define tar_name qtwebchannel-everywhere-src
 %define tar_suffix %{nil}
 #
@@ -27,7 +27,7 @@
 %endif
 #
 Name:           qt6-webchannel%{?pkg_suffix}
-Version:        6.2.4
+Version:        6.3.0
 Release:        0
 Summary:        Qt 6 WebChannel library
 License:        LGPL-3.0-only OR (GPL-2.0-only OR GPL-3.0-or-later)
@@ -36,6 +36,7 @@
 Source99:       qt6-webchannel-rpmlintrc
 BuildRequires:  fdupes
 BuildRequires:  qt6-core-private-devel
+BuildRequires:  cmake(Qt6Concurrent)
 BuildRequires:  cmake(Qt6Core)
 BuildRequires:  cmake(Qt6Gui)
 BuildRequires:  cmake(Qt6Qml)

++++++ qtwebchannel-everywhere-src-6.2.4.tar.xz -> 
qtwebchannel-everywhere-src-6.3.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/.QT-ENTERPRISE-LICENSE-AGREEMENT 
new/qtwebchannel-everywhere-src-6.3.0/.QT-ENTERPRISE-LICENSE-AGREEMENT
--- old/qtwebchannel-everywhere-src-6.2.4/.QT-ENTERPRISE-LICENSE-AGREEMENT      
2022-03-10 11:21:31.748042600 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/.QT-ENTERPRISE-LICENSE-AGREEMENT      
2022-04-06 19:56:41.233723000 +0200
@@ -1,5 +1,5 @@
 QT LICENSE AGREEMENT
-Agreement version 4.4
+Agreement version 4.4.1
 
 This Qt License Agreement ("Agreement") is a legal agreement for the licensing
 of Licensed Software (as defined below) between The Qt Company (as defined
@@ -233,7 +233,7 @@
         United States or a legal entity incorporated outside of the United
         States or having its registered office outside of the United States,
         The Qt Company Ltd., a Finnish company with its registered office at
-        Bertel Jungin aukio D3A, 02600 Espoo, Finland.
+        Miestentie 7, 02150 Espoo, Finland.
 
 "Third-Party Software" shall have the meaning set forth in Section 4.
 
@@ -1054,8 +1054,8 @@
 - Appendix 1: Licensed Software details
 - Appendix 2: Pricing
 - Appendix 3: Add-on Software details (optional)
-- Appendix 4: Non-commercial and educational Licenses (optional)
-- Appendix 5: Small business and startup Licenses (optional)
+- Appendix 4: Small business and startup Licenses (optional)
+- Appendix 5: Non-commercial and educational Licenses (optional)
 - Appendix 6: License Reporting (optional)
 - Appendix 7: Marketing Rights (optional)
 - Appendix 8: Intentionally left blank (optional)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtwebchannel-everywhere-src-6.2.4/.cmake.conf 
new/qtwebchannel-everywhere-src-6.3.0/.cmake.conf
--- old/qtwebchannel-everywhere-src-6.2.4/.cmake.conf   2022-03-04 
14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/.cmake.conf   2022-04-06 
00:48:10.000000000 +0200
@@ -1,2 +1,2 @@
-set(QT_REPO_MODULE_VERSION "6.2.4")
-set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "")
+set(QT_REPO_MODULE_VERSION "6.3.0")
+set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtwebchannel-everywhere-src-6.2.4/.qmake.conf 
new/qtwebchannel-everywhere-src-6.3.0/.qmake.conf
--- old/qtwebchannel-everywhere-src-6.2.4/.qmake.conf   2022-03-04 
14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/.qmake.conf   1970-01-01 
01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-load(qt_build_config)
-CONFIG += warning_clean
-
-MODULE_VERSION = 6.2.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtwebchannel-everywhere-src-6.2.4/.tag 
new/qtwebchannel-everywhere-src-6.3.0/.tag
--- old/qtwebchannel-everywhere-src-6.2.4/.tag  2022-03-04 14:41:21.000000000 
+0100
+++ new/qtwebchannel-everywhere-src-6.3.0/.tag  2022-04-06 00:48:10.000000000 
+0200
@@ -1 +1 @@
-d6c00c7be359fe25846ed3d95f96afa36c4d11b1
+00b8395603060f46b11a3b5b486a35b3d98b23b2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtwebchannel-everywhere-src-6.2.4/CMakeLists.txt 
new/qtwebchannel-everywhere-src-6.3.0/CMakeLists.txt
--- old/qtwebchannel-everywhere-src-6.2.4/CMakeLists.txt        2022-03-04 
14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/CMakeLists.txt        2022-04-06 
00:48:10.000000000 +0200
@@ -14,7 +14,7 @@
 set(QT_USE_FIXED_QT_ADD_RESOURCE_BASE TRUE)
 
 find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS BuildInternals 
Core) # special case
-find_package(Qt6 ${PROJECT_VERSION} CONFIG OPTIONAL_COMPONENTS Quick Test 
QuickTest WebSockets) # special case
+find_package(Qt6 ${PROJECT_VERSION} CONFIG OPTIONAL_COMPONENTS Concurrent 
Quick Test QuickTest WebSockets) # special case
 
 if(INTEGRITY)
     message(NOTICE "Skipping the build as the condition \"NOT INTEGRITY\" is 
not met.")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtwebchannel-everywhere-src-6.2.4/dependencies.yaml 
new/qtwebchannel-everywhere-src-6.3.0/dependencies.yaml
--- old/qtwebchannel-everywhere-src-6.2.4/dependencies.yaml     2022-03-04 
14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/dependencies.yaml     2022-04-06 
00:48:10.000000000 +0200
@@ -1,10 +1,10 @@
 dependencies:
   ../qtbase:
-    ref: d3b5353380797f3b67599ccebc5dc916057681e5
+    ref: 9554d315aa74eaba1726405ee09117e2ebc6111f
     required: true
   ../qtdeclarative:
-    ref: 26140891b4b77e2e8292f75e9d20f5798a2bd247
+    ref: 2a45651292f45eca3d1f9fa518a8ebfcac647f18
     required: false
   ../qtwebsockets:
-    ref: 6dd991743fbd5b997392ac24997f97822df82053
+    ref: d70576339842499c76c86444667500fa7244aa1a
     required: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/examples/CMakeLists.txt 
new/qtwebchannel-everywhere-src-6.3.0/examples/CMakeLists.txt
--- old/qtwebchannel-everywhere-src-6.2.4/examples/CMakeLists.txt       
2022-03-04 14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/examples/CMakeLists.txt       
2022-04-06 00:48:10.000000000 +0200
@@ -1,5 +1,3 @@
-# Generated from examples.pro.
-
 qt_examples_build_begin(EXTERNAL_BUILD)
 
 add_subdirectory(webchannel)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/examples/webchannel/CMakeLists.txt 
new/qtwebchannel-everywhere-src-6.3.0/examples/webchannel/CMakeLists.txt
--- old/qtwebchannel-everywhere-src-6.2.4/examples/webchannel/CMakeLists.txt    
2022-03-04 14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/examples/webchannel/CMakeLists.txt    
2022-04-06 00:48:10.000000000 +0200
@@ -1,17 +1,14 @@
-# Generated from webchannel.pro.
-
-# special case begin
 # These are all TEMPLATE = aux
 #qt_internal_add_example(nodejs)
 #qt_internal_add_example(qwclient)
 #qt_internal_add_example(chatclient-html)
-# special case end
+
 if(TARGET Qt::WebSockets)
     qt_internal_add_example(chatserver-cpp)
-    # special case begin
+
     # This one is TEMPLATE = aux too
     #qt_internal_add_example(chatclient-qml)
-    # special case end
+
 endif()
 if(TARGET Qt::WebSockets AND TARGET Qt::Widgets)
     qt_internal_add_example(standalone)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/examples/webchannel/chatserver-cpp/CMakeLists.txt
 
new/qtwebchannel-everywhere-src-6.3.0/examples/webchannel/chatserver-cpp/CMakeLists.txt
--- 
old/qtwebchannel-everywhere-src-6.2.4/examples/webchannel/chatserver-cpp/CMakeLists.txt
     2022-03-04 14:41:21.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/examples/webchannel/chatserver-cpp/CMakeLists.txt
     2022-04-06 00:48:10.000000000 +0200
@@ -1,23 +1,15 @@
-# Generated from chatserver-cpp.pro.
-
 cmake_minimum_required(VERSION 3.16)
 project(chatserver LANGUAGES CXX)
 
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
 set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
 
 if(NOT DEFINED INSTALL_EXAMPLESDIR)
-  set(INSTALL_EXAMPLESDIR "examples")
+    set(INSTALL_EXAMPLESDIR "examples")
 endif()
 
 set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/webchannel/chatserver-cpp")
 
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS WebSockets)
-find_package(Qt6 COMPONENTS WebChannel)
+find_package(Qt6 REQUIRED COMPONENTS Core WebChannel WebSockets)
 
 qt_add_executable(chatserver
     ../shared/websocketclientwrapper.cpp ../shared/websocketclientwrapper.h
@@ -25,10 +17,12 @@
     chatserver.cpp chatserver.h
     main.cpp
 )
+
 set_target_properties(chatserver PROPERTIES
     WIN32_EXECUTABLE FALSE
     MACOSX_BUNDLE TRUE
 )
+
 target_link_libraries(chatserver PUBLIC
     Qt::Core
     Qt::WebChannel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/examples/webchannel/standalone/CMakeLists.txt
 
new/qtwebchannel-everywhere-src-6.3.0/examples/webchannel/standalone/CMakeLists.txt
--- 
old/qtwebchannel-everywhere-src-6.2.4/examples/webchannel/standalone/CMakeLists.txt
 2022-03-04 14:41:21.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/examples/webchannel/standalone/CMakeLists.txt
 2022-04-06 00:48:10.000000000 +0200
@@ -1,25 +1,16 @@
-# Generated from standalone.pro.
-
 cmake_minimum_required(VERSION 3.16)
 project(standalone LANGUAGES CXX)
 
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
 set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
 set(CMAKE_AUTOUIC ON)
 
 if(NOT DEFINED INSTALL_EXAMPLESDIR)
-  set(INSTALL_EXAMPLESDIR "examples")
+    set(INSTALL_EXAMPLESDIR "examples")
 endif()
 
 set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/webchannel/standalone")
 
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS WebChannel)
-find_package(Qt6 COMPONENTS Widgets)
-find_package(Qt6 COMPONENTS WebSockets)
+find_package(Qt6 REQUIRED COMPONENTS Core Gui WebChannel WebSockets Widgets)
 
 qt_add_executable(standalone
     ../shared/websocketclientwrapper.cpp ../shared/websocketclientwrapper.h
@@ -28,16 +19,17 @@
     dialog.cpp dialog.h dialog.ui
     main.cpp
 )
+
 set_target_properties(standalone PROPERTIES
     WIN32_EXECUTABLE TRUE
     MACOSX_BUNDLE TRUE
 )
-# special case begin
+
 # pro2cmake generates invalid cmake syntax here
 target_compile_definitions(standalone PUBLIC
     "BUILD_DIR=\"${CMAKE_CURRENT_BINARY_DIR}\""
 )
-# special case end
+
 target_link_libraries(standalone PUBLIC
     Qt::Core
     Qt::Gui
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.2.4/QtWebChannel/private/qmetaobjectpublisher_p.h
 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.2.4/QtWebChannel/private/qmetaobjectpublisher_p.h
--- 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.2.4/QtWebChannel/private/qmetaobjectpublisher_p.h
      2022-03-04 14:41:21.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.2.4/QtWebChannel/private/qmetaobjectpublisher_p.h
      1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-#include "../../../../../src/webchannel/qmetaobjectpublisher_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.2.4/QtWebChannel/private/qqmlwebchannelattached_p.h
 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.2.4/QtWebChannel/private/qqmlwebchannelattached_p.h
--- 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.2.4/QtWebChannel/private/qqmlwebchannelattached_p.h
    2022-03-04 14:41:21.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.2.4/QtWebChannel/private/qqmlwebchannelattached_p.h
    1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-#include "../../../../../src/webchannel/qqmlwebchannelattached_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.2.4/QtWebChannel/private/qwebchannel_p.h
 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.2.4/QtWebChannel/private/qwebchannel_p.h
--- 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.2.4/QtWebChannel/private/qwebchannel_p.h
       2022-03-04 14:41:21.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.2.4/QtWebChannel/private/qwebchannel_p.h
       1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-#include "../../../../../src/webchannel/qwebchannel_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.2.4/QtWebChannel/private/signalhandler_p.h
 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.2.4/QtWebChannel/private/signalhandler_p.h
--- 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.2.4/QtWebChannel/private/signalhandler_p.h
     2022-03-04 14:41:21.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.2.4/QtWebChannel/private/signalhandler_p.h
     1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-#include "../../../../../src/webchannel/signalhandler_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.2.4/QtWebChannel/private/variantargument_p.h
 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.2.4/QtWebChannel/private/variantargument_p.h
--- 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.2.4/QtWebChannel/private/variantargument_p.h
   2022-03-04 14:41:21.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.2.4/QtWebChannel/private/variantargument_p.h
   1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-#include "../../../../../src/webchannel/variantargument_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.3.0/QtWebChannel/private/qmetaobjectpublisher_p.h
 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.3.0/QtWebChannel/private/qmetaobjectpublisher_p.h
--- 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.3.0/QtWebChannel/private/qmetaobjectpublisher_p.h
      1970-01-01 01:00:00.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.3.0/QtWebChannel/private/qmetaobjectpublisher_p.h
      2022-04-06 00:48:10.000000000 +0200
@@ -0,0 +1 @@
+#include "../../../../../src/webchannel/qmetaobjectpublisher_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.3.0/QtWebChannel/private/qqmlwebchannelattached_p.h
 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.3.0/QtWebChannel/private/qqmlwebchannelattached_p.h
--- 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.3.0/QtWebChannel/private/qqmlwebchannelattached_p.h
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.3.0/QtWebChannel/private/qqmlwebchannelattached_p.h
    2022-04-06 00:48:10.000000000 +0200
@@ -0,0 +1 @@
+#include "../../../../../src/webchannel/qqmlwebchannelattached_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.3.0/QtWebChannel/private/qwebchannel_p.h
 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.3.0/QtWebChannel/private/qwebchannel_p.h
--- 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.3.0/QtWebChannel/private/qwebchannel_p.h
       1970-01-01 01:00:00.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.3.0/QtWebChannel/private/qwebchannel_p.h
       2022-04-06 00:48:10.000000000 +0200
@@ -0,0 +1 @@
+#include "../../../../../src/webchannel/qwebchannel_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.3.0/QtWebChannel/private/signalhandler_p.h
 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.3.0/QtWebChannel/private/signalhandler_p.h
--- 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.3.0/QtWebChannel/private/signalhandler_p.h
     1970-01-01 01:00:00.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.3.0/QtWebChannel/private/signalhandler_p.h
     2022-04-06 00:48:10.000000000 +0200
@@ -0,0 +1 @@
+#include "../../../../../src/webchannel/signalhandler_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.3.0/QtWebChannel/private/variantargument_p.h
 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.3.0/QtWebChannel/private/variantargument_p.h
--- 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/6.3.0/QtWebChannel/private/variantargument_p.h
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/6.3.0/QtWebChannel/private/variantargument_p.h
   2022-04-06 00:48:10.000000000 +0200
@@ -0,0 +1 @@
+#include "../../../../../src/webchannel/variantargument_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/qtwebchannelversion.h
 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/qtwebchannelversion.h
--- 
old/qtwebchannel-everywhere-src-6.2.4/include/QtWebChannel/qtwebchannelversion.h
    2022-03-10 11:21:31.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/include/QtWebChannel/qtwebchannelversion.h
    2022-04-06 19:56:41.000000000 +0200
@@ -2,8 +2,8 @@
 #ifndef QT_QTWEBCHANNEL_VERSION_H
 #define QT_QTWEBCHANNEL_VERSION_H
 
-#define QTWEBCHANNEL_VERSION_STR "6.2.4"
+#define QTWEBCHANNEL_VERSION_STR "6.3.0"
 
-#define QTWEBCHANNEL_VERSION 0x060204
+#define QTWEBCHANNEL_VERSION 0x060300
 
 #endif // QT_QTWEBCHANNEL_VERSION_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtwebchannel-everywhere-src-6.2.4/qtwebchannel.pro 
new/qtwebchannel-everywhere-src-6.3.0/qtwebchannel.pro
--- old/qtwebchannel-everywhere-src-6.2.4/qtwebchannel.pro      2022-03-04 
14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/qtwebchannel.pro      1970-01-01 
01:00:00.000000000 +0100
@@ -1,9 +0,0 @@
-requires(!integrity)
-
-load(qt_parts)
-
-OTHER_FILES += \
-    sync.profile \
-    .qmake.conf \
-    dependencies.yaml \
-    coin/module_config.yaml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/src/imports/imports.pro 
new/qtwebchannel-everywhere-src-6.3.0/src/imports/imports.pro
--- old/qtwebchannel-everywhere-src-6.2.4/src/imports/imports.pro       
2022-03-04 14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/src/imports/imports.pro       
1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-TEMPLATE = subdirs
-
-SUBDIRS += webchannel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/src/imports/webchannel/webchannel.pro 
new/qtwebchannel-everywhere-src-6.3.0/src/imports/webchannel/webchannel.pro
--- old/qtwebchannel-everywhere-src-6.2.4/src/imports/webchannel/webchannel.pro 
2022-03-04 14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/src/imports/webchannel/webchannel.pro 
1970-01-01 01:00:00.000000000 +0100
@@ -1,12 +0,0 @@
-QT = core quick webchannel-private
-
-INCLUDEPATH += ../../webchannel
-VPATH += ../../webchannel
-
-IMPORT_VERSION = 1.$$QT_MINOR_VERSION
-TARGETPATH = QtWebChannel
-
-SOURCES += \
-    plugin.cpp
-
-load(qml_plugin)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtwebchannel-everywhere-src-6.2.4/src/src.pro 
new/qtwebchannel-everywhere-src-6.3.0/src/src.pro
--- old/qtwebchannel-everywhere-src-6.2.4/src/src.pro   2022-03-04 
14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/src/src.pro   1970-01-01 
01:00:00.000000000 +0100
@@ -1,8 +0,0 @@
-TEMPLATE = subdirs
-
-SUBDIRS += webchannel
-
-qtHaveModule(quick) {
-    SUBDIRS += imports
-    imports.depends = webchannel
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/src/webchannel/CMakeLists.txt 
new/qtwebchannel-everywhere-src-6.3.0/src/webchannel/CMakeLists.txt
--- old/qtwebchannel-everywhere-src-6.2.4/src/webchannel/CMakeLists.txt 
2022-03-04 14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/src/webchannel/CMakeLists.txt 
2022-04-06 00:48:10.000000000 +0200
@@ -17,6 +17,7 @@
         Qt::Core
     PRIVATE_MODULE_INTERFACE
         Qt::CorePrivate
+    GENERATE_CPP_EXPORTS
 )
 
 # Resources:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/src/webchannel/doc/qtwebchannel.qdocconf 
new/qtwebchannel-everywhere-src-6.3.0/src/webchannel/doc/qtwebchannel.qdocconf
--- 
old/qtwebchannel-everywhere-src-6.2.4/src/webchannel/doc/qtwebchannel.qdocconf  
    2022-03-04 14:41:21.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/src/webchannel/doc/qtwebchannel.qdocconf  
    2022-04-06 00:48:10.000000000 +0200
@@ -15,10 +15,6 @@
 qhp.QtWebChannel.indexTitle                         = Qt WebChannel
 qhp.QtWebChannel.indexRoot                          =
 
-qhp.QtWebChannel.filterAttributes                   = qtwebchannel $QT_VERSION 
qtrefdoc
-qhp.QtWebChannel.customFilters.Qt.name              = QtWebChannel $QT_VERSION
-qhp.QtWebChannel.customFilters.Qt.filterAttributes  = qtwebchannel $QT_VERSION
-
 qhp.QtWebChannel.subprojects                        = classes qml examples 
javascript
 
 qhp.QtWebChannel.subprojects.classes.title          = C++ Classes
@@ -57,5 +53,3 @@
 navigation.landingpage                              = "Qt WebChannel"
 navigation.cppclassespage                           = "Qt WebChannel C++ 
Classes"
 navigation.qmltypespage                             = "Qt WebChannel QML Types"
-
-manifestmeta.highlighted.names                      += "QtWebChannel/Qt 
WebChannel Standalone Example"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/src/webchannel/doc/src/index.qdoc 
new/qtwebchannel-everywhere-src-6.3.0/src/webchannel/doc/src/index.qdoc
--- old/qtwebchannel-everywhere-src-6.2.4/src/webchannel/doc/src/index.qdoc     
2022-03-04 14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/src/webchannel/doc/src/index.qdoc     
2022-04-06 00:48:10.000000000 +0200
@@ -33,56 +33,55 @@
 
     Qt WebChannel enables peer-to-peer communication between a server (QML/C++
     application) and a client (HTML/JavaScript or QML application). It is
-    supported out of the box by \l{Qt WebEngine}. In addition it can work on 
all
-    browsers that support \l{Qt WebSockets}{WebSockets}, enabling Qt WebChannel
-    clients to run in any JavaScript environment (including QML). This requires
-    the implementation of a custom transport based on Qt WebSockets.
-
-    The module provides a JavaScript library for seamless integration of C++
-    and QML applications with HTML/JavaScript and QML clients. The clients 
must use the
-    JavaScript library to access the serialized QObjects published by the host
-    applications.
-
-    \section1 Getting Started
-
-    To use these classes in your application, use the following include
-    statement:
-
-    \code
-    #include <QtWebChannel/QtWebChannel>
-    \endcode
-
-    To link against the module, add this line to your \l qmake \c .pro file:
-
-    \code
-    QT += webchannel
-    \endcode
-
-    The QML types are accessed by using:
-    \qml \QtMinorVersion
-    import QtWebChannel 1.\1
-    \endqml
+    supported out of the box by \l{Qt WebEngine}. In addition, it can work on
+    all browsers that support \l{Qt WebSockets}{WebSockets}, enabling Qt
+    WebChannel clients to run in any JavaScript environment (including QML).
+    This requires implementing a custom transport based on Qt WebSockets.
 
-    \section1 Licenses
+    The module provides a JavaScript library for seamless integration of C++ 
and
+    QML applications with HTML/JavaScript and QML clients. The clients must use
+    the JavaScript library to access the serialized QObjects published by the
+    host applications.
 
-    Qt WebChannel is available under commercial licenses from \l{The Qt 
Company}.
-    In addition, it is available under free software licenses.
-    These free software licenses are
-    \l{GNU Lesser General Public License, version 3}, or
-    the \l{GNU General Public License, version 2}.
-    See \l{Qt Licensing} for further details.
+    \section1 Using the Module
+
+    \section2 QML API
+
+    \include {module-use.qdocinc} {using the qml api} {QtWebChannel}
+
+    \section2 C++ API
+
+    \include {module-use.qdocinc} {using the c++ api}
+
+    \section3 Building with CMake
+
+    \include {module-use.qdocinc} {building with cmake} {WebChannel}
 
-    \section1 API Reference
+    \section3 Building with qmake
+
+    \include {module-use.qdocinc} {building_with_qmake} {webchannel}
+
+    \section1 Examples
 
     \list
-    \li \l{Qt WebChannel JavaScript API}{JavaScript API}
-    \li \l{Qt WebChannel C++ Classes}{C++ API}
-    \li \l{Qt WebChannel QML Types}{QML API}
+        \li \l {Qt WebChannel Examples} {Examples}
     \endlist
 
-    \section1 Examples
+    \section1 Reference
 
     \list
-    \li \l{Qt WebChannel Examples}{Examples}
+        \li \l {Qt WebChannel JavaScript API} {JavaScript API}
+        \li \l {Qt WebChannel C++ Classes} {C++ API}
+        \li \l {Qt WebChannel QML Types} {QML API}
     \endlist
+
+    \section1 Licenses
+
+    Qt WebChannel is available under commercial licenses from
+    \l{The Qt Company}.
+    In addition, it is available under free software licenses.
+    These free software licenses are
+    \l{GNU Lesser General Public License, version 3}, or
+    the \l{GNU General Public License, version 2}.
+    See \l{Qt Licensing} for further details.
 */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/src/webchannel/qmetaobjectpublisher.cpp 
new/qtwebchannel-everywhere-src-6.3.0/src/webchannel/qmetaobjectpublisher.cpp
--- 
old/qtwebchannel-everywhere-src-6.2.4/src/webchannel/qmetaobjectpublisher.cpp   
    2022-03-04 14:41:21.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/src/webchannel/qmetaobjectpublisher.cpp   
    2022-04-06 00:48:10.000000000 +0200
@@ -44,6 +44,9 @@
 #include "qwebchannelabstracttransport.h"
 
 #include <QEvent>
+#if QT_CONFIG(future)
+#include <QFuture>
+#endif
 #include <QJsonDocument>
 #include <QDebug>
 #include <QJsonObject>
@@ -177,9 +180,83 @@
     return response;
 }
 
+#if QT_CONFIG(future)
+QMetaType resultTypeOfQFuture(QByteArrayView typeName)
+{
+    if (!typeName.startsWith("QFuture<") || !typeName.endsWith('>'))
+        return {};
+
+    return QMetaType::fromName(typeName.sliced(8, typeName.length() - 9));
 }
 
-Q_DECLARE_TYPEINFO(OverloadResolutionCandidate, Q_MOVABLE_TYPE);
+template<typename Func>
+void attachContinuationToFutureInVariant(const QVariant &result, 
QPointer<QObject> contextObject,
+                                         Func continuation)
+{
+    Q_ASSERT(result.canConvert<QFuture<void>>());
+
+    // QMetaObject::invokeMethod() indirection to work around an issue with 
passing
+    // a context object to QFuture::then(). See below.
+    const auto safeContinuation = [contextObject, 
continuation=std::move(continuation)]
+            (const QVariant &result)
+    {
+        if (!contextObject)
+            return;
+
+        QMetaObject::invokeMethod(contextObject.get(), [continuation, result] {
+            continuation(result);
+        });
+    };
+
+    auto f = result.value<QFuture<void>>();
+
+    // Be explicit about what we capture so that we don't accidentally run into
+    // threading issues.
+    f.then([resultType=resultTypeOfQFuture(result.typeName()), f, 
continuation=safeContinuation]
+    {
+        if (!resultType.isValid() || resultType == 
QMetaType::fromType<void>()) {
+            continuation(QVariant{});
+            return;
+        }
+
+        auto iface = QFutureInterfaceBase::get(f);
+        // If we pass a context object to f.then() and the future originates 
in a
+        // different thread, this assertions fails. Why?
+        // For the time being, work around that with 
QMetaObject::invokeMethod()
+        // in safeSendResponse().
+        Q_ASSERT(iface.resultCount() > 0);
+
+        QMutexLocker<QMutex> locker(&iface.mutex());
+        if (iface.resultStoreBase().resultAt(0).isVector()) {
+            locker.unlock();
+            // This won't work because we cannot generically get a QList<T> 
into
+            // a QVariant with T only known at runtime.
+            // TBH, I don't know how to trigger this.
+            qWarning() << "Result lists in a QFuture return value are not 
supported!";
+            continuation(QVariant{});
+            return;
+        }
+
+        // pointer<void>() wouldn't compile because of the isVector-codepath
+        // using QList<T> in that method. We're not taking that path anyway 
(see the
+        // above check), so we can use char instead to not break strict 
aliasing
+        // requirements.
+        const auto data = iface.resultStoreBase().resultAt(0).pointer<char>();
+        locker.unlock();
+
+        const QVariant result(resultType, data);
+        continuation(result);
+    }).onCanceled([continuation=safeContinuation] {
+        // Will catch both failure and cancellation.
+        // Maybe send something more meaningful?
+        continuation(QVariant{});
+    });
+}
+#endif
+
+}
+
+Q_DECLARE_TYPEINFO(OverloadResolutionCandidate, Q_RELOCATABLE_TYPE);
 
 void QWebChannelPropertyChangeNotifier::notify(
         QPropertyObserver *self, QUntypedPropertyData *)
@@ -1055,9 +1132,29 @@
                                       method.toInt(-1),
                                       message.value(KEY_ARGS).toArray());
             }
-            if (!publisherExists || !transportExists)
-                return;
-            transport->sendMessage(createResponse(message.value(KEY_ID), 
wrapResult(result, transport)));
+
+            auto sendResponse = [publisherExists, transportExists, 
id=message.value(KEY_ID)]
+                    (const QVariant &result)
+            {
+                if (!publisherExists || !transportExists)
+                    return;
+
+                Q_ASSERT(QThread::currentThread() == 
publisherExists->thread());
+
+                const auto wrappedResult =
+                        publisherExists->wrapResult(result, 
transportExists.get());
+                transportExists->sendMessage(createResponse(id, 
wrappedResult));
+            };
+
+#if QT_CONFIG(future)
+            if (result.canConvert<QFuture<void>>()) {
+                attachContinuationToFutureInVariant(result, 
publisherExists.get(), sendResponse);
+            } else {
+                sendResponse(result);
+            }
+#else
+            sendResponse(result);
+#endif
         } else if (type == TypeConnectToSignal) {
             signalHandlerFor(object)->connectTo(object, 
message.value(KEY_SIGNAL).toInt(-1));
         } else if (type == TypeDisconnectFromSignal) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/src/webchannel/qwebchannel.cpp 
new/qtwebchannel-everywhere-src-6.3.0/src/webchannel/qwebchannel.cpp
--- old/qtwebchannel-everywhere-src-6.2.4/src/webchannel/qwebchannel.cpp        
2022-03-04 14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/src/webchannel/qwebchannel.cpp        
2022-04-06 00:48:10.000000000 +0200
@@ -66,6 +66,9 @@
     On the client side, a JavaScript object will be created for any published 
C++ QObject. It mirrors the
     C++ object's API and thus is intuitively useable.
 
+    QWebChannel transparently supports QFuture. When a client calls a method 
that returns a QFuture,
+    QWebChannel will send a response with the QFuture result only after the 
QFuture has finished.
+
     The C++ QWebChannel API makes it possible to talk to any HTML client, 
which could run on a local
     or even remote machine. The only limitation is that the HTML client 
supports the JavaScript
     features used by \c{qwebchannel.js}. As such, one can interact
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/src/webchannel/qwebchannelglobal.h 
new/qtwebchannel-everywhere-src-6.3.0/src/webchannel/qwebchannelglobal.h
--- old/qtwebchannel-everywhere-src-6.2.4/src/webchannel/qwebchannelglobal.h    
2022-03-04 14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/src/webchannel/qwebchannelglobal.h    
2022-04-06 00:48:10.000000000 +0200
@@ -41,19 +41,6 @@
 #define QTWEBCHANNEL_H
 
 #include <QtCore/qglobal.h>
-
-QT_BEGIN_NAMESPACE
-
-#ifndef QT_STATIC
-#    if defined(QT_BUILD_WEBCHANNEL_LIB)
-#      define Q_WEBCHANNEL_EXPORT Q_DECL_EXPORT
-#    else
-#      define Q_WEBCHANNEL_EXPORT Q_DECL_IMPORT
-#    endif
-#else
-#    define Q_WEBCHANNEL_EXPORT
-#endif
-
-QT_END_NAMESPACE
+#include <QtWebChannel/qtwebchannelexports.h>
 
 #endif // QTWEBCHANNEL_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/src/webchannel/webchannel.pro 
new/qtwebchannel-everywhere-src-6.3.0/src/webchannel/webchannel.pro
--- old/qtwebchannel-everywhere-src-6.2.4/src/webchannel/webchannel.pro 
2022-03-04 14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/src/webchannel/webchannel.pro 
1970-01-01 01:00:00.000000000 +0100
@@ -1,49 +0,0 @@
-TARGET = QtWebChannel
-QT = core-private
-CONFIG += warn_on strict_flags
-
-QMAKE_DOCS = $$PWD/doc/qtwebchannel.qdocconf
-
-RESOURCES += \
-    resources.qrc
-
-QTQUICK_COMPILER_SKIPPED_RESOURCES += \
-    resources.qrc
-
-OTHER_FILES = \
-    qwebchannel.js
-
-PUBLIC_HEADERS += \
-    qwebchannel.h \
-    qwebchannelabstracttransport.h
-
-PRIVATE_HEADERS += \
-    qwebchannel_p.h \
-    qmetaobjectpublisher_p.h \
-    variantargument_p.h \
-    signalhandler_p.h
-
-SOURCES += \
-    qwebchannel.cpp \
-    qmetaobjectpublisher.cpp \
-    qwebchannelabstracttransport.cpp
-
-qtHaveModule(qml) {
-    QT += qml
-
-    SOURCES += \
-        qqmlwebchannel.cpp \
-        qqmlwebchannelattached.cpp
-
-    PUBLIC_HEADERS += \
-        qqmlwebchannel.h
-
-    PRIVATE_HEADERS += \
-        qqmlwebchannelattached_p.h
-} else {
-    DEFINES += QT_NO_JSVALUE
-}
-
-HEADERS += $$PUBLIC_HEADERS $$PRIVATE_HEADERS
-
-load(qt_module)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/tests/auto/auto.pro 
new/qtwebchannel-everywhere-src-6.3.0/tests/auto/auto.pro
--- old/qtwebchannel-everywhere-src-6.2.4/tests/auto/auto.pro   2022-03-04 
14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/tests/auto/auto.pro   1970-01-01 
01:00:00.000000000 +0100
@@ -1,7 +0,0 @@
-TEMPLATE = subdirs
-
-SUBDIRS += cmake webchannel
-
-qtHaveModule(quick) {
-    SUBDIRS += qml
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/tests/auto/cmake/cmake.pro 
new/qtwebchannel-everywhere-src-6.3.0/tests/auto/cmake/cmake.pro
--- old/qtwebchannel-everywhere-src-6.2.4/tests/auto/cmake/cmake.pro    
2022-03-04 14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/tests/auto/cmake/cmake.pro    
1970-01-01 01:00:00.000000000 +0100
@@ -1,7 +0,0 @@
-
-# Cause make to do nothing.
-TEMPLATE = subdirs
-
-CMAKE_QT_MODULES_UNDER_TEST = webchannel
-
-CONFIG += ctest_testcase
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/tests/auto/qml/BLACKLIST 
new/qtwebchannel-everywhere-src-6.3.0/tests/auto/qml/BLACKLIST
--- old/qtwebchannel-everywhere-src-6.2.4/tests/auto/qml/BLACKLIST      
1970-01-01 01:00:00.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/tests/auto/qml/BLACKLIST      
2022-04-06 00:48:10.000000000 +0200
@@ -0,0 +1,13 @@
+# See qtbase/src/testlib/qtestblacklist.cpp for format
+#QTBUG-101521
+[tst_multiclient::compile]
+qnx
+#QTBUG-101521
+[tst_bench::compile]
+qnx
+#QTBUG-101521
+[tst_webchannel::compile]
+qnx
+#QTBUG-101521
+[tst_webchannelseparation::compile]
+qnx
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/tests/auto/qml/qml.pro 
new/qtwebchannel-everywhere-src-6.3.0/tests/auto/qml/qml.pro
--- old/qtwebchannel-everywhere-src-6.2.4/tests/auto/qml/qml.pro        
2022-03-04 14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/tests/auto/qml/qml.pro        
1970-01-01 01:00:00.000000000 +0100
@@ -1,32 +0,0 @@
-QT += testlib core-private webchannel-private
-TEMPLATE = app
-TARGET = qml
-
-CONFIG += warn_on qmltestcase
-
-# TODO: running tests without requiring make install
-IMPORTPATH += $$OUT_PWD/../../../qml $$PWD
-
-SOURCES += \
-    qml.cpp \
-    testtransport.cpp \
-    testwebchannel.cpp \
-    testobject.cpp
-
-HEADERS += \
-    testtransport.h \
-    testwebchannel.h \
-    testobject.h
-
-OTHER_FILES += \
-    Client.qml \
-    WebChannelTest.qml \
-    tst_webchannel.qml \
-    tst_metaobjectpublisher.qml \
-    tst_bench.qml \
-    tst_multiclient.qml
-
-TESTDATA = data/*
-
-DISTFILES += \
-    tst_webchannelseparation.qml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/tests/auto/webchannel/CMakeLists.txt 
new/qtwebchannel-everywhere-src-6.3.0/tests/auto/webchannel/CMakeLists.txt
--- old/qtwebchannel-everywhere-src-6.2.4/tests/auto/webchannel/CMakeLists.txt  
2022-03-04 14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/tests/auto/webchannel/CMakeLists.txt  
2022-04-06 00:48:10.000000000 +0200
@@ -23,3 +23,10 @@
     PUBLIC_LIBRARIES
         Qt::Qml
 )
+
+qt_internal_extend_target(tst_webchannel CONDITION TARGET Qt::Concurrent
+    DEFINES
+        WEBCHANNEL_TESTS_CAN_USE_CONCURRENT
+    PUBLIC_LIBRARIES
+        Qt::Concurrent
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/tests/auto/webchannel/tst_webchannel.cpp 
new/qtwebchannel-everywhere-src-6.3.0/tests/auto/webchannel/tst_webchannel.cpp
--- 
old/qtwebchannel-everywhere-src-6.2.4/tests/auto/webchannel/tst_webchannel.cpp  
    2022-03-04 14:41:21.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/tests/auto/webchannel/tst_webchannel.cpp  
    2022-04-06 00:48:10.000000000 +0200
@@ -38,6 +38,13 @@
 #include <QJSEngine>
 #endif
 
+#include <QPromise>
+#include <QTimer>
+
+#ifdef WEBCHANNEL_TESTS_CAN_USE_CONCURRENT
+#include <QtConcurrent>
+#endif
+
 QT_USE_NAMESPACE
 
 #ifdef WEBCHANNEL_TESTS_CAN_USE_JS_ENGINE
@@ -198,6 +205,59 @@
 }
 }
 
+#if QT_CONFIG(future)
+QFuture<int> TestObject::futureIntResult() const
+{
+    return QtFuture::makeReadyFuture(42);
+}
+
+QFuture<int> TestObject::futureDelayedIntResult() const
+{
+    QPromise<int> p;
+    const auto f = p.future();
+    p.start();
+    QTimer::singleShot(10, this, [p=std::move(p)]() mutable {
+        p.addResult(7);
+        p.finish();
+    });
+    return f;
+}
+
+#ifdef WEBCHANNEL_TESTS_CAN_USE_CONCURRENT
+QFuture<int> TestObject::futureIntResultFromThread() const
+{
+    return QtConcurrent::run([] {
+        return 1337;
+    });
+}
+#endif
+
+QFuture<void> TestObject::futureVoidResult() const
+{
+    return QtFuture::makeReadyFuture();
+}
+
+QFuture<QString> TestObject::futureStringResult() const
+{
+    return QtFuture::makeReadyFuture<QString>("foo");
+}
+
+QFuture<int> TestObject::cancelledFuture() const
+{
+    QPromise<int> p;
+    auto f = p.future();
+    p.start();
+    f.cancel();
+    Q_ASSERT(f.isCanceled());
+    return f;
+}
+
+QFuture<int> TestObject::failedFuture() const
+{
+    return QtFuture::makeExceptionalFuture<int>(QException{});
+}
+#endif
+
 TestWebChannel::TestWebChannel(QObject *parent)
     : QObject(parent)
     , m_dummyTransport(new DummyTransport(this))
@@ -412,6 +472,17 @@
         addMethod(QStringLiteral("bindStringPropertyToStringProperty2"), 
"bindStringPropertyToStringProperty2()");
         addMethod(QStringLiteral("setStringProperty2"), 
"setStringProperty2(QString)");
         addMethod(QStringLiteral("method1"), "method1()");
+#if QT_CONFIG(future)
+        addMethod(QStringLiteral("futureIntResult"), "futureIntResult()");
+        addMethod(QStringLiteral("futureDelayedIntResult"), 
"futureDelayedIntResult()");
+#ifdef WEBCHANNEL_TESTS_CAN_USE_CONCURRENT
+        addMethod(QStringLiteral("futureIntResultFromThread"), 
"futureIntResultFromThread()");
+#endif
+        addMethod(QStringLiteral("futureVoidResult"), "futureVoidResult()");
+        addMethod(QStringLiteral("futureStringResult"), 
"futureStringResult()");
+        addMethod(QStringLiteral("cancelledFuture"), "cancelledFuture()");
+        addMethod(QStringLiteral("failedFuture"), "failedFuture()");
+#endif
         QCOMPARE(info["methods"].toArray(), expected);
     }
 
@@ -1309,6 +1380,48 @@
         QCOMPARE(transport->messagesSent().size(), deleteChannel ? 0 : 1);
 }
 
+#if QT_CONFIG(future)
+void TestWebChannel::testAsyncMethodReturningFuture_data()
+{
+    QTest::addColumn<QString>("methodName");
+    QTest::addColumn<QJsonValue>("result");
+
+    QTest::addRow("int") << "futureIntResult" << QJsonValue{42};
+    QTest::addRow("int-delayed") << "futureDelayedIntResult" << QJsonValue{7};
+#ifdef WEBCHANNEL_TESTS_CAN_USE_CONCURRENT
+    QTest::addRow("int-thread") << "futureIntResultFromThread" << 
QJsonValue{1337};
+#endif
+    QTest::addRow("void") << "futureVoidResult" << QJsonValue{};
+    QTest::addRow("QString") << "futureStringResult" << QJsonValue{"foo"};
+
+    QTest::addRow("cancelled") << "cancelledFuture" << QJsonValue{};
+    QTest::addRow("failed")    << "failedFuture"    << QJsonValue{};
+}
+
+void TestWebChannel::testAsyncMethodReturningFuture()
+{
+    QFETCH(QString, methodName);
+    QFETCH(QJsonValue, result);
+
+    QWebChannel channel;
+    TestObject obj;
+    channel.registerObject("testObject", &obj);
+
+    DummyTransport transport;
+    channel.connectTo(&transport);
+
+    transport.emitMessageReceived({
+        {"type", TypeInvokeMethod},
+        {"object", "testObject"},
+        {"method", methodName},
+        {"id", 1}
+    });
+
+    QTRY_COMPARE(transport.messagesSent().size(), 1);
+    QCOMPARE(transport.messagesSent().first().value("data"), result);
+}
+#endif
+
 static QHash<QString, QObject*> createObjects(QObject *parent)
 {
     const int num = 100;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/tests/auto/webchannel/tst_webchannel.h 
new/qtwebchannel-everywhere-src-6.3.0/tests/auto/webchannel/tst_webchannel.h
--- 
old/qtwebchannel-everywhere-src-6.2.4/tests/auto/webchannel/tst_webchannel.h    
    2022-03-04 14:41:21.000000000 +0100
+++ 
new/qtwebchannel-everywhere-src-6.3.0/tests/auto/webchannel/tst_webchannel.h    
    2022-04-06 00:48:10.000000000 +0200
@@ -37,6 +37,9 @@
 #include <QJsonValue>
 #include <QJsonObject>
 #include <QJsonArray>
+#if QT_CONFIG(future)
+#include <QFuture>
+#endif
 
 #include <QtWebChannel/QWebChannelAbstractTransport>
 
@@ -135,6 +138,18 @@
 
     Q_INVOKABLE void method1() {}
 
+#if QT_CONFIG(future)
+    Q_INVOKABLE QFuture<int> futureIntResult() const;
+    Q_INVOKABLE QFuture<int> futureDelayedIntResult() const;
+#ifdef WEBCHANNEL_TESTS_CAN_USE_CONCURRENT
+    Q_INVOKABLE QFuture<int> futureIntResultFromThread() const;
+#endif
+    Q_INVOKABLE QFuture<void> futureVoidResult() const;
+    Q_INVOKABLE QFuture<QString> futureStringResult() const;
+    Q_INVOKABLE QFuture<int> cancelledFuture() const;
+    Q_INVOKABLE QFuture<int> failedFuture() const;
+#endif
+
 protected:
     Q_INVOKABLE void method2() {}
 
@@ -365,6 +380,11 @@
     void testDeletionDuringMethodInvocation_data();
     void testDeletionDuringMethodInvocation();
 
+#if QT_CONFIG(future)
+    void testAsyncMethodReturningFuture_data();
+    void testAsyncMethodReturningFuture();
+#endif
+
     void benchClassInfo();
     void benchInitializeClients();
     void benchPropertyUpdates();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtwebchannel-everywhere-src-6.2.4/tests/auto/webchannel/webchannel.pro 
new/qtwebchannel-everywhere-src-6.3.0/tests/auto/webchannel/webchannel.pro
--- old/qtwebchannel-everywhere-src-6.2.4/tests/auto/webchannel/webchannel.pro  
2022-03-04 14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/tests/auto/webchannel/webchannel.pro  
1970-01-01 01:00:00.000000000 +0100
@@ -1,19 +0,0 @@
-QT = core-private webchannel-private testlib
-
-CONFIG += testcase strict_flags warn_on
-
-INCLUDEPATH += ../../../src/webchannel
-VPATH += ../../../src/webchannel
-
-TARGET = tst_webchannel
-
-SOURCES += \
-    tst_webchannel.cpp
-
-HEADERS += \
-    tst_webchannel.h
-
-qtHaveModule(qml) {
-    DEFINES += WEBCHANNEL_TESTS_CAN_USE_JS_ENGINE
-    QT += qml
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtwebchannel-everywhere-src-6.2.4/tests/tests.pro 
new/qtwebchannel-everywhere-src-6.3.0/tests/tests.pro
--- old/qtwebchannel-everywhere-src-6.2.4/tests/tests.pro       2022-03-04 
14:41:21.000000000 +0100
+++ new/qtwebchannel-everywhere-src-6.3.0/tests/tests.pro       1970-01-01 
01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-TEMPLATE = subdirs
-
-SUBDIRS += auto

Reply via email to