aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason E. Hale <jhale@FreeBSD.org>2024-03-31 11:55:32 +0000
committerJason E. Hale <jhale@FreeBSD.org>2024-03-31 12:03:10 +0000
commit9793a1e61a74f5a89b970454e9a76104bb9f51b2 (patch)
tree267476d41468501c9f3364be76b8512ae5084e8e
parentfb534c46caa0e12824715605c40fc8de8d565d51 (diff)
downloadports-9793a1e61a74f5a89b970454e9a76104bb9f51b2.tar.gz
ports-9793a1e61a74f5a89b970454e9a76104bb9f51b2.zip
Qt5: Update to 5.15.13
Update devel/pyside2* and devel/shiboken to 5.15.13 Update www/qt5-webengine to latest commit. Python 3.x support has been integrated upstream, so local patches have been removed. Release note: https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/5.15.13/release-note.md
-rw-r--r--Mk/Uses/qt-dist.mk10
-rw-r--r--Mk/Uses/qt.mk2
-rw-r--r--accessibility/qt5-speech/distinfo6
-rw-r--r--comms/qt5-connectivity/distinfo6
-rw-r--r--comms/qt5-sensors/distinfo6
-rw-r--r--comms/qt5-serialbus/distinfo6
-rw-r--r--comms/qt5-serialport/distinfo6
-rw-r--r--databases/qt5-sql/distinfo6
-rw-r--r--databases/qt5-sqldrivers-mysql/distinfo6
-rw-r--r--databases/qt5-sqldrivers-odbc/distinfo6
-rw-r--r--databases/qt5-sqldrivers-pgsql/distinfo6
-rw-r--r--databases/qt5-sqldrivers-sqlite2/distinfo6
-rw-r--r--databases/qt5-sqldrivers-sqlite3/distinfo6
-rw-r--r--databases/qt5-sqldrivers-tds/distinfo6
-rw-r--r--devel/pyside2-tools/Makefile1
-rw-r--r--devel/pyside2-tools/distinfo6
-rw-r--r--devel/pyside2/distinfo6
-rw-r--r--devel/qt5-assistant/distinfo6
-rw-r--r--devel/qt5-buildtools/distinfo6
-rw-r--r--devel/qt5-concurrent/distinfo6
-rw-r--r--devel/qt5-core/distinfo6
-rw-r--r--devel/qt5-dbus/distinfo6
-rw-r--r--devel/qt5-designer/Makefile1
-rw-r--r--devel/qt5-designer/distinfo6
-rw-r--r--devel/qt5-help/distinfo6
-rw-r--r--devel/qt5-linguist/distinfo6
-rw-r--r--devel/qt5-linguisttools/distinfo6
-rw-r--r--devel/qt5-location/distinfo6
-rw-r--r--devel/qt5-qdbus/distinfo6
-rw-r--r--devel/qt5-qdbusviewer/distinfo6
-rw-r--r--devel/qt5-qdoc-data/distinfo6
-rw-r--r--devel/qt5-qdoc/distinfo6
-rw-r--r--devel/qt5-qmake/distinfo6
-rw-r--r--devel/qt5-remoteobjects/distinfo6
-rw-r--r--devel/qt5-scxml/distinfo6
-rw-r--r--devel/qt5-testlib/distinfo6
-rw-r--r--devel/qt5-uitools/distinfo6
-rw-r--r--devel/shiboken2/distinfo6
-rw-r--r--graphics/qt5-3d/distinfo6
-rw-r--r--graphics/qt5-graphicaleffects/distinfo6
-rw-r--r--graphics/qt5-imageformats/distinfo6
-rw-r--r--graphics/qt5-opengl/distinfo6
-rw-r--r--graphics/qt5-pixeltool/distinfo6
-rw-r--r--graphics/qt5-svg/distinfo6
-rw-r--r--graphics/qt5-wayland/distinfo6
-rw-r--r--misc/qt5-examples/distinfo6
-rw-r--r--misc/qt5-l10n/distinfo6
-rw-r--r--multimedia/qt5-multimedia/distinfo6
-rw-r--r--net/qt5-network/Makefile1
-rw-r--r--net/qt5-network/distinfo6
-rw-r--r--net/qt5-network/files/patch-security-rollup165
-rw-r--r--net/qt5-networkauth/distinfo6
-rw-r--r--print/qt5-printsupport/distinfo6
-rw-r--r--sysutils/qt5-qtdiag/distinfo6
-rw-r--r--sysutils/qt5-qtpaths/distinfo6
-rw-r--r--sysutils/qt5-qtplugininfo/distinfo6
-rw-r--r--textproc/qt5-xml/distinfo6
-rw-r--r--textproc/qt5-xmlpatterns/distinfo6
-rw-r--r--www/qt5-webchannel/distinfo6
-rw-r--r--www/qt5-webengine/Makefile4
-rw-r--r--www/qt5-webengine/distinfo6
-rw-r--r--www/qt5-webengine/files/patch-configure.pri65
-rw-r--r--www/qt5-webengine/files/patch-mkspecs_features_functions.prf22
-rw-r--r--www/qt5-webengine/files/patch-python3-chromium2140
-rw-r--r--www/qt5-webengine/files/patch-security-rollup2509
-rw-r--r--www/qt5-webengine/files/patch-src_buildtools_config_support.pri40
-rw-r--r--www/qt5-webengine/files/patch-src_buildtools_configure.json56
-rw-r--r--www/qt5-webglplugin/distinfo6
-rw-r--r--www/qt5-websockets-qml/distinfo6
-rw-r--r--www/qt5-websockets/distinfo6
-rw-r--r--www/qt5-webview/distinfo6
-rw-r--r--x11-toolkits/qt5-charts/distinfo6
-rw-r--r--x11-toolkits/qt5-datavis3d/distinfo6
-rw-r--r--x11-toolkits/qt5-declarative-test/distinfo6
-rw-r--r--x11-toolkits/qt5-declarative/distinfo6
-rw-r--r--x11-toolkits/qt5-gamepad/distinfo6
-rw-r--r--x11-toolkits/qt5-gui/distinfo6
-rw-r--r--x11-toolkits/qt5-quick3d/distinfo6
-rw-r--r--x11-toolkits/qt5-quickcontrols/distinfo6
-rw-r--r--x11-toolkits/qt5-quickcontrols2/distinfo6
-rw-r--r--x11-toolkits/qt5-quicktimeline/distinfo6
-rw-r--r--x11-toolkits/qt5-uiplugin/distinfo6
-rw-r--r--x11-toolkits/qt5-virtualkeyboard/distinfo6
-rw-r--r--x11-toolkits/qt5-widgets/distinfo6
-rw-r--r--x11/qt5-qev/distinfo6
-rw-r--r--x11/qt5-x11extras/distinfo6
86 files changed, 247 insertions, 5207 deletions
diff --git a/Mk/Uses/qt-dist.mk b/Mk/Uses/qt-dist.mk
index 1d16f2f5371f..9b0b4d5ee08e 100644
--- a/Mk/Uses/qt-dist.mk
+++ b/Mk/Uses/qt-dist.mk
@@ -108,14 +108,14 @@ DIST_SUBDIR= KDE/Qt/${_QT_VERSION}
. if ${_QT_VER:M5}
# KDE maintains a repository with a patched Qt5 distribution.
_KDE_3d= 0
-_KDE_base= 148
+_KDE_base= 142
_KDE_charts= 0
-_KDE_connectivity= 6
+_KDE_connectivity= 4
_KDE_datavis3d= 0
-_KDE_declarative= 32
+_KDE_declarative= 30
_KDE_gamepad= 0
_KDE_graphicaleffects= 0
-_KDE_imageformats= 12
+_KDE_imageformats= 7
_KDE_location= 6
_KDE_multimedia= 2
_KDE_networkauth= 0
@@ -138,7 +138,7 @@ _KDE_translations= 0
_KDE_virtualkeyboard= 0
_KDE_wayland= 60
_KDE_webchannel= 3
-_KDE_webengine= 5
+_KDE_webengine= 9
_KDE_webengine_BRANCH= 5.15
_KDE_webengine_ORIGIN_TAG= v5.15.16-lts
_KDE_webengine_VERSION= 5.15.16
diff --git a/Mk/Uses/qt.mk b/Mk/Uses/qt.mk
index 91b8597788db..1a6178b62d1b 100644
--- a/Mk/Uses/qt.mk
+++ b/Mk/Uses/qt.mk
@@ -22,7 +22,7 @@ _QT_MK_INCLUDED= qt.mk
# Qt versions currently supported by the framework.
_QT_SUPPORTED?= 5 6
-QT5_VERSION?= 5.15.12
+QT5_VERSION?= 5.15.13
QT6_VERSION?= 6.6.3
PYSIDE6_VERSION?= 6.6.2
diff --git a/accessibility/qt5-speech/distinfo b/accessibility/qt5-speech/distinfo
index 24a2b2d99b85..935a50ebfc1e 100644
--- a/accessibility/qt5-speech/distinfo
+++ b/accessibility/qt5-speech/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809502
-SHA256 (KDE/Qt/5.15.12/kde-qtspeech-5.15.12p1.tar.xz) = 2441a418e16adb6ba53ce182b9da921e732975dc38aec8ce22d865d3051e55b6
-SIZE (KDE/Qt/5.15.12/kde-qtspeech-5.15.12p1.tar.xz) = 80284
+TIMESTAMP = 1711770875
+SHA256 (KDE/Qt/5.15.13/kde-qtspeech-5.15.13p1.tar.xz) = c03c480f2aae225a577ce8145c036fbc2699dd507dad76497ae58999cf286cce
+SIZE (KDE/Qt/5.15.13/kde-qtspeech-5.15.13p1.tar.xz) = 80304
diff --git a/comms/qt5-connectivity/distinfo b/comms/qt5-connectivity/distinfo
index 8e61a2e9a1fa..a535f10c20d4 100644
--- a/comms/qt5-connectivity/distinfo
+++ b/comms/qt5-connectivity/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809506
-SHA256 (KDE/Qt/5.15.12/kde-qtconnectivity-5.15.12p6.tar.xz) = 058e7491b94c075058e6eee9d467efacd28c32888c729a8445e3af8480716887
-SIZE (KDE/Qt/5.15.12/kde-qtconnectivity-5.15.12p6.tar.xz) = 2796256
+TIMESTAMP = 1711770876
+SHA256 (KDE/Qt/5.15.13/kde-qtconnectivity-5.15.13p4.tar.xz) = d8dedba477db25517164187596a0feb3ba16503a97cb6d0f9cd2cf37b1555f8d
+SIZE (KDE/Qt/5.15.13/kde-qtconnectivity-5.15.13p4.tar.xz) = 2796540
diff --git a/comms/qt5-sensors/distinfo b/comms/qt5-sensors/distinfo
index 942566538d96..0dc8075d94e3 100644
--- a/comms/qt5-sensors/distinfo
+++ b/comms/qt5-sensors/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809510
-SHA256 (KDE/Qt/5.15.12/kde-qtsensors-5.15.12p0.tar.xz) = 47f3880a330c3034fea2ca2218c63246656a62e54161fc7c885c38f732125f3d
-SIZE (KDE/Qt/5.15.12/kde-qtsensors-5.15.12p0.tar.xz) = 2030988
+TIMESTAMP = 1711770877
+SHA256 (KDE/Qt/5.15.13/kde-qtsensors-5.15.13p0.tar.xz) = 9f7c55b7a12b52f75151e5945a38618362060e90d2c463ecfa88d4b6196af2de
+SIZE (KDE/Qt/5.15.13/kde-qtsensors-5.15.13p0.tar.xz) = 2030780
diff --git a/comms/qt5-serialbus/distinfo b/comms/qt5-serialbus/distinfo
index 4d7db0816dd2..6db6efe5e716 100644
--- a/comms/qt5-serialbus/distinfo
+++ b/comms/qt5-serialbus/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809509
-SHA256 (KDE/Qt/5.15.12/kde-qtserialbus-5.15.12p0.tar.xz) = 408494515dd515860465ad1525c23a6f452ab220f10afb51f59dadae97a302d6
-SIZE (KDE/Qt/5.15.12/kde-qtserialbus-5.15.12p0.tar.xz) = 333780
+TIMESTAMP = 1711770878
+SHA256 (KDE/Qt/5.15.13/kde-qtserialbus-5.15.13p0.tar.xz) = b0c17a00015f6c6f8d547a1fb620483b529b4112eac45d77c75f04e79345c76b
+SIZE (KDE/Qt/5.15.13/kde-qtserialbus-5.15.13p0.tar.xz) = 333820
diff --git a/comms/qt5-serialport/distinfo b/comms/qt5-serialport/distinfo
index 341ab883ae1e..61646ed79aff 100644
--- a/comms/qt5-serialport/distinfo
+++ b/comms/qt5-serialport/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809507
-SHA256 (KDE/Qt/5.15.12/kde-qtserialport-5.15.12p0.tar.xz) = 6e46c4f422e9963f007cb8888a6272a1eef757b69f102a7e7ac0b11e942468c4
-SIZE (KDE/Qt/5.15.12/kde-qtserialport-5.15.12p0.tar.xz) = 299364
+TIMESTAMP = 1711770880
+SHA256 (KDE/Qt/5.15.13/kde-qtserialport-5.15.13p0.tar.xz) = c98804aaa07e683fadc39c19367ececcf8e898defafab159f5f2a160c01425d3
+SIZE (KDE/Qt/5.15.13/kde-qtserialport-5.15.13p0.tar.xz) = 299600
diff --git a/databases/qt5-sql/distinfo b/databases/qt5-sql/distinfo
index 431476c1bbe3..a0c66832e9c4 100644
--- a/databases/qt5-sql/distinfo
+++ b/databases/qt5-sql/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809474
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711770881
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/databases/qt5-sqldrivers-mysql/distinfo b/databases/qt5-sqldrivers-mysql/distinfo
index 10bc5a25fe2e..a8355a2cc064 100644
--- a/databases/qt5-sqldrivers-mysql/distinfo
+++ b/databases/qt5-sqldrivers-mysql/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809481
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711770882
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/databases/qt5-sqldrivers-odbc/distinfo b/databases/qt5-sqldrivers-odbc/distinfo
index f9c30b09fb28..8127d099b6db 100644
--- a/databases/qt5-sqldrivers-odbc/distinfo
+++ b/databases/qt5-sqldrivers-odbc/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703841276
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711770883
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/databases/qt5-sqldrivers-pgsql/distinfo b/databases/qt5-sqldrivers-pgsql/distinfo
index 7b006872a6ac..cba7e145d64b 100644
--- a/databases/qt5-sqldrivers-pgsql/distinfo
+++ b/databases/qt5-sqldrivers-pgsql/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703841277
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711770885
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/databases/qt5-sqldrivers-sqlite2/distinfo b/databases/qt5-sqldrivers-sqlite2/distinfo
index f809584de06a..18d2a9818741 100644
--- a/databases/qt5-sqldrivers-sqlite2/distinfo
+++ b/databases/qt5-sqldrivers-sqlite2/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703841279
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711770886
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/databases/qt5-sqldrivers-sqlite3/distinfo b/databases/qt5-sqldrivers-sqlite3/distinfo
index 54356b69e85a..4ba56d2ed9b5 100644
--- a/databases/qt5-sqldrivers-sqlite3/distinfo
+++ b/databases/qt5-sqldrivers-sqlite3/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809479
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711770887
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/databases/qt5-sqldrivers-tds/distinfo b/databases/qt5-sqldrivers-tds/distinfo
index e07725062760..d5543e8e55b5 100644
--- a/databases/qt5-sqldrivers-tds/distinfo
+++ b/databases/qt5-sqldrivers-tds/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703841282
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711770889
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/devel/pyside2-tools/Makefile b/devel/pyside2-tools/Makefile
index 243fb678c953..9dbe4130b616 100644
--- a/devel/pyside2-tools/Makefile
+++ b/devel/pyside2-tools/Makefile
@@ -1,6 +1,5 @@
PORTNAME= pyside2-tools
DISTVERSION= ${QT5_VERSION}
-PORTREVISION= 1
CATEGORIES= devel
MASTER_SITES= QT/official_releases/QtForPython/shiboken2/PySide2-${DISTVERSION}-src
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/devel/pyside2-tools/distinfo b/devel/pyside2-tools/distinfo
index 18178c164dde..1e66f2fd1b52 100644
--- a/devel/pyside2-tools/distinfo
+++ b/devel/pyside2-tools/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703885634
-SHA256 (pyside-setup-opensource-src-5.15.12.tar.xz) = 9c53a111ca5779064593e690db0da43ce0d5dad25369931b7a4f593886259ff4
-SIZE (pyside-setup-opensource-src-5.15.12.tar.xz) = 3585204
+TIMESTAMP = 1711882482
+SHA256 (pyside-setup-opensource-src-5.15.13.tar.xz) = 7a57797b20268d6ebcb39deba48c754a69abf9221aee03e1f3dca6f6565b7da9
+SIZE (pyside-setup-opensource-src-5.15.13.tar.xz) = 3585684
diff --git a/devel/pyside2/distinfo b/devel/pyside2/distinfo
index 807adc1b9571..0524e5230876 100644
--- a/devel/pyside2/distinfo
+++ b/devel/pyside2/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703882377
-SHA256 (pyside-setup-opensource-src-5.15.12.tar.xz) = 9c53a111ca5779064593e690db0da43ce0d5dad25369931b7a4f593886259ff4
-SIZE (pyside-setup-opensource-src-5.15.12.tar.xz) = 3585204
+TIMESTAMP = 1711882453
+SHA256 (pyside-setup-opensource-src-5.15.13.tar.xz) = 7a57797b20268d6ebcb39deba48c754a69abf9221aee03e1f3dca6f6565b7da9
+SIZE (pyside-setup-opensource-src-5.15.13.tar.xz) = 3585684
diff --git a/devel/qt5-assistant/distinfo b/devel/qt5-assistant/distinfo
index 7277f93fd1ae..5e6df02e00e7 100644
--- a/devel/qt5-assistant/distinfo
+++ b/devel/qt5-assistant/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809492
-SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c
-SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464
+TIMESTAMP = 1711770890
+SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7
+SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980
diff --git a/devel/qt5-buildtools/distinfo b/devel/qt5-buildtools/distinfo
index d37cc2cb962f..22c65d153aa9 100644
--- a/devel/qt5-buildtools/distinfo
+++ b/devel/qt5-buildtools/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809648
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711770891
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/devel/qt5-concurrent/distinfo b/devel/qt5-concurrent/distinfo
index d5c892f4ea23..351295e7b9c3 100644
--- a/devel/qt5-concurrent/distinfo
+++ b/devel/qt5-concurrent/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809465
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711770892
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/devel/qt5-core/distinfo b/devel/qt5-core/distinfo
index ae1683edf333..526504917fa3 100644
--- a/devel/qt5-core/distinfo
+++ b/devel/qt5-core/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809650
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711770894
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/devel/qt5-dbus/distinfo b/devel/qt5-dbus/distinfo
index 5cb981dd67d8..9e3ab78c7514 100644
--- a/devel/qt5-dbus/distinfo
+++ b/devel/qt5-dbus/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809653
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711770895
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/devel/qt5-designer/Makefile b/devel/qt5-designer/Makefile
index c367bbe08002..e7132a956fef 100644
--- a/devel/qt5-designer/Makefile
+++ b/devel/qt5-designer/Makefile
@@ -1,6 +1,5 @@
PORTNAME= designer
PORTVERSION= ${QT5_VERSION}${QT5_KDE_PATCH}
-PORTREVISION= 1
CATEGORIES= devel
PKGNAMEPREFIX= qt5-
diff --git a/devel/qt5-designer/distinfo b/devel/qt5-designer/distinfo
index eebf51e04098..4c416907af7f 100644
--- a/devel/qt5-designer/distinfo
+++ b/devel/qt5-designer/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809490
-SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c
-SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464
+TIMESTAMP = 1711770896
+SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7
+SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980
diff --git a/devel/qt5-help/distinfo b/devel/qt5-help/distinfo
index 3e86607fa3cc..6136553eca8e 100644
--- a/devel/qt5-help/distinfo
+++ b/devel/qt5-help/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809488
-SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c
-SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464
+TIMESTAMP = 1711770897
+SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7
+SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980
diff --git a/devel/qt5-linguist/distinfo b/devel/qt5-linguist/distinfo
index 46ca194bc618..ddfcb0412b19 100644
--- a/devel/qt5-linguist/distinfo
+++ b/devel/qt5-linguist/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809495
-SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c
-SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464
+TIMESTAMP = 1711770898
+SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7
+SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980
diff --git a/devel/qt5-linguisttools/distinfo b/devel/qt5-linguisttools/distinfo
index 53186f72e624..cd01b7902a04 100644
--- a/devel/qt5-linguisttools/distinfo
+++ b/devel/qt5-linguisttools/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809493
-SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c
-SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464
+TIMESTAMP = 1711770900
+SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7
+SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980
diff --git a/devel/qt5-location/distinfo b/devel/qt5-location/distinfo
index 29e0d66d6803..70d824b57c9e 100644
--- a/devel/qt5-location/distinfo
+++ b/devel/qt5-location/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809511
-SHA256 (KDE/Qt/5.15.12/kde-qtlocation-5.15.12p6.tar.xz) = 648f7f114ca029125ecf2bbf3be5fa138e4a38ba533c8f3f06ff1f9fc2784fbb
-SIZE (KDE/Qt/5.15.12/kde-qtlocation-5.15.12p6.tar.xz) = 6477604
+TIMESTAMP = 1711770901
+SHA256 (KDE/Qt/5.15.13/kde-qtlocation-5.15.13p6.tar.xz) = 5b61bfccc1e98ce4acfdaad0069b68dff2f8501fe0aa053567d33d1bbdfc4d03
+SIZE (KDE/Qt/5.15.13/kde-qtlocation-5.15.13p6.tar.xz) = 6479492
diff --git a/devel/qt5-qdbus/distinfo b/devel/qt5-qdbus/distinfo
index 82fab429a4bc..61caa8277a7f 100644
--- a/devel/qt5-qdbus/distinfo
+++ b/devel/qt5-qdbus/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809498
-SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c
-SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464
+TIMESTAMP = 1711770902
+SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7
+SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980
diff --git a/devel/qt5-qdbusviewer/distinfo b/devel/qt5-qdbusviewer/distinfo
index 60d0f42e1e6f..ce8a459c54ab 100644
--- a/devel/qt5-qdbusviewer/distinfo
+++ b/devel/qt5-qdbusviewer/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703841302
-SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c
-SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464
+TIMESTAMP = 1711770903
+SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7
+SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980
diff --git a/devel/qt5-qdoc-data/distinfo b/devel/qt5-qdoc-data/distinfo
index f7fc2ffd521e..838309ab304d 100644
--- a/devel/qt5-qdoc-data/distinfo
+++ b/devel/qt5-qdoc-data/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703840875
-SHA256 (KDE/Qt/5.15.12/qtbase-everywhere-opensource-src-5.15.12.tar.xz) = 4c01b7b0f1f3c1e05ae6bf53c66e49c65c6b3872475bac26b0fb228136914af0
-SIZE (KDE/Qt/5.15.12/qtbase-everywhere-opensource-src-5.15.12.tar.xz) = 50840192
+TIMESTAMP = 1711771112
+SHA256 (KDE/Qt/5.15.13/qtbase-everywhere-opensource-src-5.15.13.tar.xz) = 4cca51dcc1f22ceeee6b3e33cd1c3a60b14e85e24644dca3af89a2c2989ab809
+SIZE (KDE/Qt/5.15.13/qtbase-everywhere-opensource-src-5.15.13.tar.xz) = 50862768
diff --git a/devel/qt5-qdoc/distinfo b/devel/qt5-qdoc/distinfo
index d32ea9de1f88..df3d8f01af42 100644
--- a/devel/qt5-qdoc/distinfo
+++ b/devel/qt5-qdoc/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703840809
-SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c
-SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464
+TIMESTAMP = 1711771113
+SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7
+SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980
diff --git a/devel/qt5-qmake/distinfo b/devel/qt5-qmake/distinfo
index 9aba089a7fd3..2278f2291cc1 100644
--- a/devel/qt5-qmake/distinfo
+++ b/devel/qt5-qmake/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809647
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711771115
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/devel/qt5-remoteobjects/distinfo b/devel/qt5-remoteobjects/distinfo
index 453bceb77b26..cadd24a1f2bc 100644
--- a/devel/qt5-remoteobjects/distinfo
+++ b/devel/qt5-remoteobjects/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809513
-SHA256 (KDE/Qt/5.15.12/kde-qtremoteobjects-5.15.12p0.tar.xz) = 3f209fc085caa2d01e0b660362d3649af66695564312b6f5dc1a670ff7fd37c4
-SIZE (KDE/Qt/5.15.12/kde-qtremoteobjects-5.15.12p0.tar.xz) = 352436
+TIMESTAMP = 1711771116
+SHA256 (KDE/Qt/5.15.13/kde-qtremoteobjects-5.15.13p0.tar.xz) = fb7ae95bf8a296f71e542355dc8941937b05e8f416c18c4b9ef3b798d6e3a2ae
+SIZE (KDE/Qt/5.15.13/kde-qtremoteobjects-5.15.13p0.tar.xz) = 352492
diff --git a/devel/qt5-scxml/distinfo b/devel/qt5-scxml/distinfo
index 9b70c835b690..39339f2ab2d9 100644
--- a/devel/qt5-scxml/distinfo
+++ b/devel/qt5-scxml/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809514
-SHA256 (KDE/Qt/5.15.12/kde-qtscxml-5.15.12p0.tar.xz) = 2bb04c33ad95632e48a8c9492b48e99dc11a815c48ed56b0d82fb0dc3163f974
-SIZE (KDE/Qt/5.15.12/kde-qtscxml-5.15.12p0.tar.xz) = 409156
+TIMESTAMP = 1711771117
+SHA256 (KDE/Qt/5.15.13/kde-qtscxml-5.15.13p0.tar.xz) = d3df8c1feac458cda23d1dc77c5b289f1c5ea0a153fea44bcbda940e568ed660
+SIZE (KDE/Qt/5.15.13/kde-qtscxml-5.15.13p0.tar.xz) = 409712
diff --git a/devel/qt5-testlib/distinfo b/devel/qt5-testlib/distinfo
index df62dfe407e6..0852c383e9c5 100644
--- a/devel/qt5-testlib/distinfo
+++ b/devel/qt5-testlib/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809467
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711771118
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/devel/qt5-uitools/distinfo b/devel/qt5-uitools/distinfo
index d0da77d96d01..f731be872b22 100644
--- a/devel/qt5-uitools/distinfo
+++ b/devel/qt5-uitools/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809487
-SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c
-SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464
+TIMESTAMP = 1711771119
+SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7
+SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980
diff --git a/devel/shiboken2/distinfo b/devel/shiboken2/distinfo
index 86f560a12c75..68e263563016 100644
--- a/devel/shiboken2/distinfo
+++ b/devel/shiboken2/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703882362
-SHA256 (pyside-setup-opensource-src-5.15.12.tar.xz) = 9c53a111ca5779064593e690db0da43ce0d5dad25369931b7a4f593886259ff4
-SIZE (pyside-setup-opensource-src-5.15.12.tar.xz) = 3585204
+TIMESTAMP = 1711882465
+SHA256 (pyside-setup-opensource-src-5.15.13.tar.xz) = 7a57797b20268d6ebcb39deba48c754a69abf9221aee03e1f3dca6f6565b7da9
+SIZE (pyside-setup-opensource-src-5.15.13.tar.xz) = 3585684
diff --git a/graphics/qt5-3d/distinfo b/graphics/qt5-3d/distinfo
index 2d1c49aac8d8..fb7296e9da8a 100644
--- a/graphics/qt5-3d/distinfo
+++ b/graphics/qt5-3d/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809516
-SHA256 (KDE/Qt/5.15.12/kde-qt3d-5.15.12p0.tar.xz) = 61956654dc03b825c64aeae03336414d34a3bf3a36b1c27b54f1bd26517e78a6
-SIZE (KDE/Qt/5.15.12/kde-qt3d-5.15.12p0.tar.xz) = 118199508
+TIMESTAMP = 1711771121
+SHA256 (KDE/Qt/5.15.13/kde-qt3d-5.15.13p0.tar.xz) = 84f76816d5d8c838d7c681a7280f4a1a2519ec69ab886d894d1b33f1cc246b80
+SIZE (KDE/Qt/5.15.13/kde-qt3d-5.15.13p0.tar.xz) = 118183168
diff --git a/graphics/qt5-graphicaleffects/distinfo b/graphics/qt5-graphicaleffects/distinfo
index 71e8ce3bc558..62eadb4c86ff 100644
--- a/graphics/qt5-graphicaleffects/distinfo
+++ b/graphics/qt5-graphicaleffects/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809518
-SHA256 (KDE/Qt/5.15.12/kde-qtgraphicaleffects-5.15.12p0.tar.xz) = 4328935b2baba386fbe544c412b585fefe9beaedca6ea15bd302721615ce14d7
-SIZE (KDE/Qt/5.15.12/kde-qtgraphicaleffects-5.15.12p0.tar.xz) = 14018708
+TIMESTAMP = 1711771122
+SHA256 (KDE/Qt/5.15.13/kde-qtgraphicaleffects-5.15.13p0.tar.xz) = 6ac895b75f7d8c236d6057cf68b7053c7148dbd128f9cb6771a8730db271097e
+SIZE (KDE/Qt/5.15.13/kde-qtgraphicaleffects-5.15.13p0.tar.xz) = 14018768
diff --git a/graphics/qt5-imageformats/distinfo b/graphics/qt5-imageformats/distinfo
index e08d155b63c8..38fb7679845b 100644
--- a/graphics/qt5-imageformats/distinfo
+++ b/graphics/qt5-imageformats/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809519
-SHA256 (KDE/Qt/5.15.12/kde-qtimageformats-5.15.12p12.tar.xz) = 2a9cf714a8a48c71b41bfb45686ce307ff6cb8f5d943c9c5d5bc8f21eecbf33d
-SIZE (KDE/Qt/5.15.12/kde-qtimageformats-5.15.12p12.tar.xz) = 1876684
+TIMESTAMP = 1711771123
+SHA256 (KDE/Qt/5.15.13/kde-qtimageformats-5.15.13p7.tar.xz) = 0d8766fc99e8b0cb189d729c3e3b814c3e728487c9c2109d69db2c65a0bfd185
+SIZE (KDE/Qt/5.15.13/kde-qtimageformats-5.15.13p7.tar.xz) = 1872288
diff --git a/graphics/qt5-opengl/distinfo b/graphics/qt5-opengl/distinfo
index 48024e43efce..e548ed14d7d8 100644
--- a/graphics/qt5-opengl/distinfo
+++ b/graphics/qt5-opengl/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809499
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711771124
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/graphics/qt5-pixeltool/distinfo b/graphics/qt5-pixeltool/distinfo
index f8e00da78981..b6fe17f6dbdc 100644
--- a/graphics/qt5-pixeltool/distinfo
+++ b/graphics/qt5-pixeltool/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809521
-SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c
-SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464
+TIMESTAMP = 1711771126
+SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7
+SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980
diff --git a/graphics/qt5-svg/distinfo b/graphics/qt5-svg/distinfo
index 2d2c71e403a0..da070780b900 100644
--- a/graphics/qt5-svg/distinfo
+++ b/graphics/qt5-svg/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809477
-SHA256 (KDE/Qt/5.15.12/kde-qtsvg-5.15.12p6.tar.xz) = 6f35c873f21e31aa895a6583969ec72fd759f5d34b2878b43914dbf3d0519363
-SIZE (KDE/Qt/5.15.12/kde-qtsvg-5.15.12p6.tar.xz) = 1865368
+TIMESTAMP = 1711771127
+SHA256 (KDE/Qt/5.15.13/kde-qtsvg-5.15.13p6.tar.xz) = 500586c7b3d35afad1fb6288cf5304a3c828c040992d5387272dc4c102291b9d
+SIZE (KDE/Qt/5.15.13/kde-qtsvg-5.15.13p6.tar.xz) = 1865428
diff --git a/graphics/qt5-wayland/distinfo b/graphics/qt5-wayland/distinfo
index 47f2d0a59d5e..bc3390441707 100644
--- a/graphics/qt5-wayland/distinfo
+++ b/graphics/qt5-wayland/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809522
-SHA256 (KDE/Qt/5.15.12/kde-qtwayland-5.15.12p60.tar.xz) = 31108e496caa885c6c39f4d84c37166d9330ddbf88c79afe562ecc0d3f0a7ac0
-SIZE (KDE/Qt/5.15.12/kde-qtwayland-5.15.12p60.tar.xz) = 538284
+TIMESTAMP = 1711771128
+SHA256 (KDE/Qt/5.15.13/kde-qtwayland-5.15.13p60.tar.xz) = 7b8c1a09544ec5daab6920896111aca5acfb375729fbece21f13ef3edad4be0e
+SIZE (KDE/Qt/5.15.13/kde-qtwayland-5.15.13p60.tar.xz) = 538528
diff --git a/misc/qt5-examples/distinfo b/misc/qt5-examples/distinfo
index 0f5c6a937d25..d91a7f4aa725 100644
--- a/misc/qt5-examples/distinfo
+++ b/misc/qt5-examples/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703840992
-SHA256 (KDE/Qt/5.15.12/qt-everywhere-opensource-src-5.15.12.tar.xz) = 93f2c0889ee2e9cdf30c170d353c3f829de5f29ba21c119167dee5995e48ccce
-SIZE (KDE/Qt/5.15.12/qt-everywhere-opensource-src-5.15.12.tar.xz) = 660649996
+TIMESTAMP = 1711771501
+SHA256 (KDE/Qt/5.15.13/qt-everywhere-opensource-src-5.15.13.tar.xz) = 9550ec8fc758d3d8d9090e261329700ddcd712e2dda97e5fcfeabfac22bea2ca
+SIZE (KDE/Qt/5.15.13/qt-everywhere-opensource-src-5.15.13.tar.xz) = 660785400
diff --git a/misc/qt5-l10n/distinfo b/misc/qt5-l10n/distinfo
index 11a5b07912b4..508340b1c6b6 100644
--- a/misc/qt5-l10n/distinfo
+++ b/misc/qt5-l10n/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809503
-SHA256 (KDE/Qt/5.15.12/kde-qttranslations-5.15.12p0.tar.xz) = 00b24c93f2e965c47ae5df5f0c523605501379571754434643075cf10bbd3746
-SIZE (KDE/Qt/5.15.12/kde-qttranslations-5.15.12p0.tar.xz) = 1610860
+TIMESTAMP = 1711771151
+SHA256 (KDE/Qt/5.15.13/kde-qttranslations-5.15.13p0.tar.xz) = 99e7862038b82782e8627526c3ad0b1bd0be0471ddb46266f6ba5aefbc26958b
+SIZE (KDE/Qt/5.15.13/kde-qttranslations-5.15.13p0.tar.xz) = 1610776
diff --git a/multimedia/qt5-multimedia/distinfo b/multimedia/qt5-multimedia/distinfo
index 9078f2424ced..bf4069fad925 100644
--- a/multimedia/qt5-multimedia/distinfo
+++ b/multimedia/qt5-multimedia/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809501
-SHA256 (KDE/Qt/5.15.12/kde-qtmultimedia-5.15.12p2.tar.xz) = 69c4d903b038e44daec0bd03c2c318858e7ae4e3985f9c4d231817f5e6832ce6
-SIZE (KDE/Qt/5.15.12/kde-qtmultimedia-5.15.12p2.tar.xz) = 3788896
+TIMESTAMP = 1711771152
+SHA256 (KDE/Qt/5.15.13/kde-qtmultimedia-5.15.13p2.tar.xz) = 13effe1bdd58a6cb1f9e03972aca2ede3116cb08ff31eff27510298ac2704a13
+SIZE (KDE/Qt/5.15.13/kde-qtmultimedia-5.15.13p2.tar.xz) = 3789940
diff --git a/net/qt5-network/Makefile b/net/qt5-network/Makefile
index c0ec67874b8c..c92c8074b1f0 100644
--- a/net/qt5-network/Makefile
+++ b/net/qt5-network/Makefile
@@ -1,6 +1,5 @@
PORTNAME= network
PORTVERSION= ${QT5_VERSION}${QT5_KDE_PATCH}
-PORTREVISION= 1
CATEGORIES= net
PKGNAMEPREFIX= qt5-
diff --git a/net/qt5-network/distinfo b/net/qt5-network/distinfo
index fe7534db9127..6dd26aff108e 100644
--- a/net/qt5-network/distinfo
+++ b/net/qt5-network/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809652
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711771153
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/net/qt5-network/files/patch-security-rollup b/net/qt5-network/files/patch-security-rollup
deleted file mode 100644
index 09cf34ef8b34..000000000000
--- a/net/qt5-network/files/patch-security-rollup
+++ /dev/null
@@ -1,165 +0,0 @@
-From a4d20b51de320a5da2d5f1bf277af8293adc5398 Mon Sep 17 00:00:00 2001
-From: Marc Mutz <marc.mutz@qt.io>
-Date: Tue, 12 Dec 2023 20:51:56 +0100
-Subject: [PATCH] HPack: fix a Yoda Condition
-
-Putting the variable on the LHS of a relational operation makes the
-expression easier to read. In this case, we find that the whole
-expression is nonsensical as an overflow protection, because if
-name.size() + value.size() overflows, the result will exactly _not_
-be > max() - 32, because UB will have happened.
-
-To be fixed in a follow-up commit.
-
-As a drive-by, add parentheses around the RHS.
-
-Change-Id: I35ce598884c37c51b74756b3bd2734b9aad63c09
-Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-(cherry picked from commit 658607a34ead214fbacbc2cca44915655c318ea9)
-Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-(cherry picked from commit 4f7efd41740107f90960116700e3134f5e433867)
-(cherry picked from commit 13c16b756900fe524f6d9534e8a07aa003c05e0c)
-(cherry picked from commit 1d4788a39668fb2dc5912a8d9c4272dc40e99f92)
-(cherry picked from commit 87de75b5cc946d196decaa6aef4792a6cac0b6db)
----
- src/network/access/http2/hpacktable.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/network/access/http2/hpacktable.cpp b/src/network/access/http2/hpacktable.cpp
-index fddb5feca56..3d88cb66f51 100644
---- src/network/access/http2/hpacktable.cpp.orig
-+++ src/network/access/http2/hpacktable.cpp
-@@ -63,7 +63,7 @@ HeaderSize entry_size(const QByteArray &name, const QByteArray &value)
- // 32 octets of overhead."
-
- const unsigned sum = unsigned(name.size() + value.size());
-- if (std::numeric_limits<unsigned>::max() - 32 < sum)
-+ if (sum > (std::numeric_limits<unsigned>::max() - 32))
- return HeaderSize();
- return HeaderSize(true, quint32(sum + 32));
- }
-From c379f4ef587d61c9a5b61b5ada57fdadcc8145eb Mon Sep 17 00:00:00 2001
-From: Marc Mutz <marc.mutz@qt.io>
-Date: Tue, 12 Dec 2023 22:08:07 +0100
-Subject: [PATCH] HPack: fix incorrect integer overflow check
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This code never worked:
-
-For the comparison with max() - 32 to trigger, on 32-bit platforms (or
-Qt 5) signed interger overflow would have had to happen in the
-addition of the two sizes. The compiler can therefore remove the
-overflow check as dead code.
-
-On Qt 6 and 64-bit platforms, the signed integer addition would be
-very unlikely to overflow, but the following truncation to uint32
-would yield the correct result only in a narrow 32-value window just
-below UINT_MAX, if even that.
-
-Fix by using the proper tool, qAddOverflow.
-
-Manual conflict resolutions:
- - qAddOverflow doesn't exist in Qt 5, use private add_overflow
- predecessor API instead
-
-Change-Id: I7599f2e75ff7f488077b0c60b81022591005661c
-Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-(cherry picked from commit ee5da1f2eaf8932aeca02ffea6e4c618585e29e3)
-Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-(cherry picked from commit debeb8878da2dc706ead04b6072ecbe7e5313860)
-Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-Reviewed-by: Marc Mutz <marc.mutz@qt.io>
-(cherry picked from commit 811b9eef6d08d929af8708adbf2a5effb0eb62d7)
-(cherry picked from commit f931facd077ce945f1e42eaa3bead208822d3e00)
-(cherry picked from commit 9ef4ca5ecfed771dab890856130e93ef5ceabef5)
-Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
----
- src/network/access/http2/hpacktable.cpp | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/src/network/access/http2/hpacktable.cpp b/src/network/access/http2/hpacktable.cpp
-index 3d88cb66f51..315f3e23440 100644
---- src/network/access/http2/hpacktable.cpp.orig
-+++ src/network/access/http2/hpacktable.cpp
-@@ -40,6 +40,7 @@
- #include "hpacktable_p.h"
-
- #include <QtCore/qdebug.h>
-+#include <QtCore/private/qnumeric_p.h>
-
- #include <algorithm>
- #include <cstddef>
-@@ -62,7 +63,9 @@ HeaderSize entry_size(const QByteArray &name, const QByteArray &value)
- // for counting the number of references to the name and value would have
- // 32 octets of overhead."
-
-- const unsigned sum = unsigned(name.size() + value.size());
-+ size_t sum;
-+ if (add_overflow(size_t(name.size()), size_t(value.size()), &sum))
-+ return HeaderSize();
- if (sum > (std::numeric_limits<unsigned>::max() - 32))
- return HeaderSize();
- return HeaderSize(true, quint32(sum + 32));
-From 8907dedc858cc344d770a2e826d6acc516429540 Mon Sep 17 00:00:00 2001
-From: Marc Mutz <marc.mutz@qt.io>
-Date: Tue, 19 Dec 2023 14:22:37 +0100
-Subject: [PATCH] Http2: fix potential overflow in assemble_hpack_block()
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The function is given a vector of Http2::Frame's and flattens it into
-a vector<uchar>. While each Frame can contain a maximum of 16GiB of
-data (24-bit size field), one "only" needs 257 of them to overflow the
-quint32 variable's range.
-
-So make sure any overflow does not go undetected.
-
-Keep the limited uint32_t range for now, as we don't know whether all
-consumers of the result can deal with more than 4GiB of data.
-
-Since all these frames must be in memory, this cannot overflow in
-practice on 32-bit machines.
-
-Pick-to: 6.7 6.6 6.5 6.2 5.15
-Change-Id: Iafaa7d1c870cba9100e75065db11d95934f86213
-Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
-(cherry picked from commit 1e6bb61af3ae29755f93b92f157df026f934ae61)
-
-* asturmlechner 2024-01-02: Use correct include for 5.15
----
- src/network/access/qhttp2protocolhandler.cpp | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/src/network/access/qhttp2protocolhandler.cpp b/src/network/access/qhttp2protocolhandler.cpp
-index 39dd460881a..ead88d781ae 100644
---- src/network/access/qhttp2protocolhandler.cpp.orig
-+++ src/network/access/qhttp2protocolhandler.cpp
-@@ -46,10 +46,12 @@
- #include <private/qnoncontiguousbytedevice_p.h>
-
- #include <QtNetwork/qabstractsocket.h>
-+
- #include <QtCore/qloggingcategory.h>
- #include <QtCore/qendian.h>
- #include <QtCore/qdebug.h>
- #include <QtCore/qlist.h>
-+#include <QtCore/private/qnumeric_p.h>
- #include <QtCore/qurl.h>
-
- #include <qhttp2configuration.h>
-@@ -124,8 +126,10 @@ std::vector<uchar> assemble_hpack_block(const std::vector<Http2::Frame> &frames)
- std::vector<uchar> hpackBlock;
-
- quint32 total = 0;
-- for (const auto &frame : frames)
-- total += frame.hpackBlockSize();
-+ for (const auto &frame : frames) {
-+ if (add_overflow(total, frame.hpackBlockSize(), &total))
-+ return hpackBlock;
-+ }
-
- if (!total)
- return hpackBlock;
diff --git a/net/qt5-networkauth/distinfo b/net/qt5-networkauth/distinfo
index 91b02fea90bf..ce5eb6b35692 100644
--- a/net/qt5-networkauth/distinfo
+++ b/net/qt5-networkauth/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809504
-SHA256 (KDE/Qt/5.15.12/kde-qtnetworkauth-5.15.12p0.tar.xz) = 36c143525b7b72546703c6055fbdf6cc109aa87b5b73dba19361630e2b8ad581
-SIZE (KDE/Qt/5.15.12/kde-qtnetworkauth-5.15.12p0.tar.xz) = 120012
+TIMESTAMP = 1711771154
+SHA256 (KDE/Qt/5.15.13/kde-qtnetworkauth-5.15.13p0.tar.xz) = ff183120c28b0cc211f9e0577e18e03f0c3a6aca12e79fefceb121409a946546
+SIZE (KDE/Qt/5.15.13/kde-qtnetworkauth-5.15.13p0.tar.xz) = 120076
diff --git a/print/qt5-printsupport/distinfo b/print/qt5-printsupport/distinfo
index 7cc7e61a2be9..ef4a41be04d7 100644
--- a/print/qt5-printsupport/distinfo
+++ b/print/qt5-printsupport/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809472
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711771156
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/sysutils/qt5-qtdiag/distinfo b/sysutils/qt5-qtdiag/distinfo
index bc754ce2c9cf..fa8018a31e16 100644
--- a/sysutils/qt5-qtdiag/distinfo
+++ b/sysutils/qt5-qtdiag/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703841356
-SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c
-SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464
+TIMESTAMP = 1711771157
+SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7
+SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980
diff --git a/sysutils/qt5-qtpaths/distinfo b/sysutils/qt5-qtpaths/distinfo
index f369a93d5ed5..a9d52829b13b 100644
--- a/sysutils/qt5-qtpaths/distinfo
+++ b/sysutils/qt5-qtpaths/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809524
-SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c
-SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464
+TIMESTAMP = 1711771158
+SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7
+SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980
diff --git a/sysutils/qt5-qtplugininfo/distinfo b/sysutils/qt5-qtplugininfo/distinfo
index 3a33797a445f..c802921ed5db 100644
--- a/sysutils/qt5-qtplugininfo/distinfo
+++ b/sysutils/qt5-qtplugininfo/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703841359
-SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c
-SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464
+TIMESTAMP = 1711771159
+SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7
+SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980
diff --git a/textproc/qt5-xml/distinfo b/textproc/qt5-xml/distinfo
index 7163ce129a97..975f9cc8dc61 100644
--- a/textproc/qt5-xml/distinfo
+++ b/textproc/qt5-xml/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809483
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711771160
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/textproc/qt5-xmlpatterns/distinfo b/textproc/qt5-xmlpatterns/distinfo
index be313bb347e4..e14991b6fce3 100644
--- a/textproc/qt5-xmlpatterns/distinfo
+++ b/textproc/qt5-xmlpatterns/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809484
-SHA256 (KDE/Qt/5.15.12/kde-qtxmlpatterns-5.15.12p0.tar.xz) = c5f08e672ea200230eff68a84ce7738d53eb2c5bbd194041a4ab29006086da9c
-SIZE (KDE/Qt/5.15.12/kde-qtxmlpatterns-5.15.12p0.tar.xz) = 5100640
+TIMESTAMP = 1711771161
+SHA256 (KDE/Qt/5.15.13/kde-qtxmlpatterns-5.15.13p0.tar.xz) = 1f8443a8ab491f13a4f25a3681d95cced775e6ba661ddf73ec9a72d6a679596d
+SIZE (KDE/Qt/5.15.13/kde-qtxmlpatterns-5.15.13p0.tar.xz) = 5097184
diff --git a/www/qt5-webchannel/distinfo b/www/qt5-webchannel/distinfo
index 0d7631438bb8..c63115acb4b4 100644
--- a/www/qt5-webchannel/distinfo
+++ b/www/qt5-webchannel/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809539
-SHA256 (KDE/Qt/5.15.12/kde-qtwebchannel-5.15.12p3.tar.xz) = 376af944d4dbf4c67154257d541f526d858044cacafef8e665e47a84b72d826e
-SIZE (KDE/Qt/5.15.12/kde-qtwebchannel-5.15.12p3.tar.xz) = 188660
+TIMESTAMP = 1711771162
+SHA256 (KDE/Qt/5.15.13/kde-qtwebchannel-5.15.13p3.tar.xz) = 5e23ef005b3afc2010edd1ede739eaae760be2bc49b0ee4e8777133521806a97
+SIZE (KDE/Qt/5.15.13/kde-qtwebchannel-5.15.13p3.tar.xz) = 188476
diff --git a/www/qt5-webengine/Makefile b/www/qt5-webengine/Makefile
index 527e33418bf4..261a0f2559f3 100644
--- a/www/qt5-webengine/Makefile
+++ b/www/qt5-webengine/Makefile
@@ -19,7 +19,6 @@
PORTNAME= webengine
DISTVERSION= ${QT5_VERSION}${QT5_KDE_PATCH}
-PORTREVISION= 5
CATEGORIES= www
PKGNAMEPREFIX= qt5-
@@ -28,7 +27,8 @@ COMMENT= Qt 5 library to render web content
BUILD_DEPENDS= bison:devel/bison \
${LOCALBASE}/include/linux/input.h:devel/evdev-proto \
- ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat
+ ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \
+ ${PYTHON_PKGNAMEPREFIX}html5lib>0:www/py-html5lib@${PY_FLAVOR}
LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg \
libdbus-1.so:devel/dbus \
libdouble-conversion.so:devel/double-conversion \
diff --git a/www/qt5-webengine/distinfo b/www/qt5-webengine/distinfo
index 289817511e76..43b30ce42d06 100644
--- a/www/qt5-webengine/distinfo
+++ b/www/qt5-webengine/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1700946456
-SHA256 (KDE/Qt/5.15.16/kde-qtwebengine-5.15.16p5.tar.xz) = a35887269d3e060859d00f399aa19dfb9e004d6bbf0dbb6daf1c60708c9dee78
-SIZE (KDE/Qt/5.15.16/kde-qtwebengine-5.15.16p5.tar.xz) = 314965924
+TIMESTAMP = 1711846408
+SHA256 (KDE/Qt/5.15.16/kde-qtwebengine-5.15.16p9.tar.xz) = 99313b8f20786e6624536a0f209c7f8dde3555fe0c8688355463b32b0a54232a
+SIZE (KDE/Qt/5.15.16/kde-qtwebengine-5.15.16p9.tar.xz) = 317545680
diff --git a/www/qt5-webengine/files/patch-configure.pri b/www/qt5-webengine/files/patch-configure.pri
index 32fe11de92cd..e0bccf8d94bd 100644
--- a/www/qt5-webengine/files/patch-configure.pri
+++ b/www/qt5-webengine/files/patch-configure.pri
@@ -1,69 +1,14 @@
-* Remove checks for Python2 [1]
* Add support for FreeBSD
-[1] Obtained from:
-
-https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/main/qt5-webengine-python3.patch?ref_type=heads
-
---- configure.pri.orig 2023-07-20 09:52:10 UTC
+--- configure.pri.orig 2024-03-27 11:26:34 UTC
+++ configure.pri
-@@ -7,20 +7,7 @@ defineTest(isPythonVersionSupported) {
- equals(QMAKE_HOST.os, Windows): EXE_SUFFIX = .exe
-
- defineTest(isPythonVersionSupported) {
-- python = $$system_quote($$system_path($$1))
-- python_version = $$system('$$python -c "import sys; print(sys.version_info[0:3])"')
-- python_version ~= s/[()]//g
-- python_version = $$split(python_version, ',')
-- python_major_version = $$first(python_version)
-- greaterThan(python_major_version, 2) {
-- qtLog("Python version 3 is not supported by Chromium.")
-- return(false)
-- }
-- python_minor_version = $$member(python_version, 1)
-- python_patch_version = $$member(python_version, 2)
-- greaterThan(python_major_version, 1): greaterThan(python_minor_version, 6): greaterThan(python_patch_version, 4): return(true)
-- qtLog("Unsupported python version: $${python_major_version}.$${python_minor_version}.$${python_patch_version}.")
-- return(false)
-+ return(true)
- }
-
- defineTest(qtConfTest_detectJumboBuild) {
-@@ -52,10 +39,10 @@ defineTest(qtConfReport_jumboBuild) {
- qtConfReportPadded($${1}, $$mergeLimit)
- }
-
--defineTest(qtConfTest_detectPython2) {
-- python = $$qtConfFindInPath("python2$$EXE_SUFFIX")
-+defineTest(qtConfTest_detectPython) {
-+ python = $$qtConfFindInPath("python$$EXE_SUFFIX")
- isEmpty(python) {
-- qtLog("'python2$$EXE_SUFFIX' not found in PATH. Checking for 'python$$EXE_SUFFIX'.")
-+ qtLog("'python$$EXE_SUFFIX' not found in PATH. Checking for 'python$$EXE_SUFFIX'.")
- python = $$qtConfFindInPath("python$$EXE_SUFFIX")
- }
- isEmpty(python) {
-@@ -63,11 +50,11 @@ defineTest(qtConfTest_detectPython2) {
- return(false)
- }
- !isPythonVersionSupported($$python) {
-- qtLog("A suitable Python 2 executable could not be located.")
-+ qtLog("A suitable Python executable could not be located.")
- return(false)
- }
-
-- # Make tests.python2.location available in configure.json.
-+ # Make tests.python.location available in configure.json.
- $${1}.location = $$clean_path($$python)
- export($${1}.location)
- $${1}.cache += location
-@@ -122,6 +109,9 @@ defineTest(qtConfTest_detectPlatform) {
- }
+@@ -136,6 +136,9 @@ defineTest(qtConfTest_detectPlatform) {
macos:qtwebengine_isMacOsPlatformSupported() {
$${1}.platform = "macos"
-+ }
+ }
+ unix:qtwebengine_isLinuxPlatformSupported() {
+ $${1}.platform = "linux"
- }
++ }
ios:qtwebengine_isMacOsPlatformSupported() {
$${1}.platform = "ios"
+ }
diff --git a/www/qt5-webengine/files/patch-mkspecs_features_functions.prf b/www/qt5-webengine/files/patch-mkspecs_features_functions.prf
index b8ac1d14ef88..357bb5e2a61f 100644
--- a/www/qt5-webengine/files/patch-mkspecs_features_functions.prf
+++ b/www/qt5-webengine/files/patch-mkspecs_features_functions.prf
@@ -1,28 +1,8 @@
-* Rename Python2 related functions to Python generic ones [1]
* Add support for FreeBSD
* Add detection for PowerPC64
-[1] Obtained from:
-
-https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/main/qt5-webengine-python3.patch?ref_type=heads
-
---- mkspecs/features/functions.prf.orig 2023-07-20 09:52:10 UTC
+--- mkspecs/features/functions.prf.orig 2024-03-27 11:26:34 UTC
+++ mkspecs/features/functions.prf
-@@ -44,11 +44,11 @@ defineReplace(pythonPath) {
-
- # Returns the unquoted path to the python executable.
- defineReplace(pythonPath) {
-- isEmpty(QMAKE_PYTHON2) {
-+ isEmpty(QMAKE_PYTHON) {
- # Fallback for building QtWebEngine with Qt < 5.8
-- QMAKE_PYTHON2 = python
-+ QMAKE_PYTHON = python
- }
-- return($$QMAKE_PYTHON2)
-+ return($$QMAKE_PYTHON)
- }
-
- # Returns the python executable for use with shell / make targets.
@@ -89,6 +89,10 @@ defineReplace(gnWebEngineArgs) {
include($$QTWEBENGINE_ROOT/src/buildtools/config/windows.pri)
include($$QTWEBENGINE_ROOT/src/core/config/windows.pri)
diff --git a/www/qt5-webengine/files/patch-python3-chromium b/www/qt5-webengine/files/patch-python3-chromium
deleted file mode 100644
index b9b730755db2..000000000000
--- a/www/qt5-webengine/files/patch-python3-chromium
+++ /dev/null
@@ -1,2140 +0,0 @@
-* Convert to newer Python and remove Python2 related artifacts
-
-Obtained from:
-
-https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/main/qt5-webengine-chromium-python3.patch?ref_type=heads
-
---- src/3rdparty/chromium/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/BUILD.gn
-@@ -239,7 +239,6 @@ group("gn_all") {
- "//media/capture:capture_unittests",
- "//media/cast:cast_unittests",
- "//third_party/angle/src/tests:angle_white_box_tests",
-- "//third_party/catapult/telemetry:bitmaptools($host_toolchain)",
- ]
- } else if (is_ios && !use_qt) {
- deps += [
-@@ -354,7 +353,6 @@ group("gn_all") {
- "//net/android:net_junit_tests",
- "//services:services_junit_tests",
- "//testing/android/junit:junit_unit_tests",
-- "//third_party/catapult/devil",
- "//third_party/smhasher:murmurhash3",
- "//tools/android:android_tools",
- "//tools/android:memconsumer",
-@@ -959,7 +957,6 @@ if (is_chromeos) {
- "//third_party/dawn/src/tests:dawn_unittests",
-
- # Blocked on https://github.com/catapult-project/catapult/issues/2297
-- #"//third_party/catapult/telemetry:bitmaptools",
- "//tools/perf/clear_system_cache",
- "//ui/ozone/gl:ozone_gl_unittests",
- ]
-@@ -1037,7 +1034,6 @@ if (!is_ios && !use_qt) {
- data_deps = [
- "//chrome:chrome",
- "//chrome/test/chromedriver",
-- "//third_party/catapult/third_party/typ",
- ]
- if (is_win) {
- data_deps += [ "//build/win:copy_cdb_to_output" ]
-@@ -1084,7 +1080,6 @@ if (!is_ios && !use_qt) {
- "//third_party/blink/public:blink_devtools_inspector_resources",
- "//third_party/blink/public/mojom:mojom_platform_js_data_deps",
- "//third_party/blink/renderer/core/html:js_files_for_form_controls_web_tests",
-- "//third_party/catapult/third_party/typ",
- "//third_party/mesa_headers",
- "//tools/imagediff",
- ]
-@@ -1152,7 +1147,6 @@ if (!is_ios && !use_qt) {
-
- if (is_android) {
- data += [
-- "//third_party/catapult/",
- "//build/android/",
- ]
- }
-@@ -1259,11 +1253,6 @@ if (!is_ios && !use_qt) {
- "//third_party/blink/web_tests/StaleTestExpectations",
- "//third_party/blink/web_tests/TestExpectations",
- "//third_party/blink/web_tests/VirtualTestSuites",
-- "//third_party/catapult/common/py_utils/",
-- "//third_party/catapult/devil/",
-- "//third_party/catapult/dependency_manager/",
-- "//third_party/catapult/third_party/zipfile/",
-- "//third_party/catapult/third_party/typ/",
- "//third_party/depot_tools/pylint",
- "//third_party/depot_tools/pylint-1.5",
- "//third_party/depot_tools/pylint_main.py",
---- src/3rdparty/chromium/build/print_python_deps.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/build/print_python_deps.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python2.7
-+#!/usr/bin/python
- # Copyright 2016 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-@@ -80,7 +80,7 @@ def _GetTargetPythonVersion(module):
- if shebang.startswith('#!'):
- # Examples:
- # '#!/usr/bin/python'
-- # '#!/usr/bin/python2.7'
-+ # '#!/usr/bin/python'
- # '#!/usr/bin/python3'
- # '#!/usr/bin/env python3'
- # '#!/usr/bin/env vpython'
-@@ -152,7 +152,7 @@ def main():
-
- # Trybots run with vpython as default Python, but with a different config
- # from //.vpython. To make the is_vpython test work, and to match the behavior
-- # of dev machines, the shebang line must be run with python2.7.
-+ # of dev machines, the shebang line must be run with python.
- #
- # E.g. $HOME/.vpython-root/dd50d3/bin/python
- # E.g. /b/s/w/ir/cache/vpython/ab5c79/bin/python
---- src/3rdparty/chromium/chrome/chrome_paks.gni.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/chrome/chrome_paks.gni
-@@ -94,7 +94,6 @@ template("chrome_extra_paks") {
- "$root_gen_dir/chrome/common_resources.pak",
- "$root_gen_dir/components/autofill/core/browser/autofill_address_rewriter_resources.pak",
- "$root_gen_dir/components/components_resources.pak",
-- "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
- "$root_gen_dir/content/content_resources.pak",
- "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
- "$root_gen_dir/net/net_resources.pak",
-@@ -110,7 +109,6 @@ template("chrome_extra_paks") {
- "//components/autofill/core/browser:autofill_address_rewriter_resources",
- "//components/resources",
- "//content:content_resources",
-- "//content/browser/tracing:resources",
- "//mojo/public/js:resources",
- "//net:net_resources",
- "//skia:skia_resources",
---- src/3rdparty/chromium/chrome/test/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/chrome/test/BUILD.gn
-@@ -7103,8 +7103,6 @@ if (!is_fuchsia && !is_android) {
- "//chrome/test/data/password/captured_sites/",
- "//chrome/test/data/web_page_replay_go_helper_scripts/automation_helper.js",
- "//components/test/data/autofill/web_page_replay_support_files/",
-- "//third_party/catapult/telemetry/telemetry/bin/",
-- "//third_party/catapult/web_page_replay_go/deterministic.js",
- ]
-
- if (is_linux || is_chromeos || is_win) {
-@@ -7141,7 +7139,6 @@ if (!is_fuchsia && !is_android) {
-
- # TODO(uwyiming@chromium.org) create a gn target for Web Page Replay Go (WPR Go) and only WPR Go.
- # So that test targets requiring WPR Go does not pull down the whole telemetry tool chain.
-- "//third_party/catapult:telemetry_chrome_test_support",
- "//third_party/hunspell",
- "//third_party/icu",
- "//third_party/libpng",
-@@ -7171,7 +7168,6 @@ if (!is_fuchsia && !is_android) {
- deps = [ "//tools/perf/chrome_telemetry_build:telemetry_chrome_test" ]
-
- data = [
-- "//third_party/catapult/telemetry/telemetry/internal/bin/",
- "//tools/perf/run_telemetry_tests",
-
- # For isolate contract.
-@@ -7189,7 +7185,6 @@ if (!is_fuchsia && !is_android) {
- group("telemetry_gpu_unittests") {
- testonly = true
- deps = [
-- "//third_party/catapult:telemetry_chrome_test_support",
- "//tools/metrics:metrics_python_tests",
- ]
- data = [
-@@ -7313,7 +7308,6 @@ if (is_mac || is_win || is_android) {
- "//testing/scripts",
- "//testing/test_env.py",
- "//testing/xvfb.py",
-- "//third_party/catapult",
- "//tools",
- ]
- }
---- src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
-@@ -7,7 +7,7 @@
- Converts a given ASCII proto into a binary resource.
-
- """
--
-+from __future__ import print_function
- import abc
- import imp
- import optparse
-@@ -196,12 +196,12 @@ class BinaryProtoGenerator:
- self._ImportProtoModules(opts.path)
-
- if not self.VerifyArgs(opts):
-- print "Wrong arguments"
-+ print("Wrong arguments")
- return 1
-
- try:
- self._GenerateBinaryProtos(opts)
- except Exception as e:
-- print "ERROR: Failed to render binary version of %s:\n %s\n%s" % (
-- opts.infile, str(e), traceback.format_exc())
-+ print("ERROR: Failed to render binary version of %s:\n %s\n%s" %
-+ (opts.infile, str(e), traceback.format_exc()))
- return 1
---- src/3rdparty/chromium/content/browser/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/content/browser/BUILD.gn
-@@ -2169,7 +2169,6 @@ jumbo_static_library("browser") {
- if (!is_android) {
- deps += [
- "//components/vector_icons",
-- "//content/browser/tracing:resources",
- ]
- }
-
---- src/3rdparty/chromium/content/browser/tracing/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/content/browser/tracing/BUILD.gn
-@@ -1,51 +0,0 @@
--# Copyright 2014 The Chromium Authors. All rights reserved.
--# Use of this source code is governed by a BSD-style license that can be
--# found in the LICENSE file.
--
--import("//tools/grit/grit_rule.gni")
--
--# generate_about_tracing puts its files in this directory
--tracing_gen_dir = "$root_gen_dir/content/browser/tracing"
--
--# The script just writes filename with no dirs to the .grd, so we always need
--# this file to be in the same directory as the inputs.
--tracing_grd = "$tracing_gen_dir/tracing_resources.grd"
--
--action("generate_tracing_grd") {
-- visibility = [ ":*" ] # Depend on ":resources" to get this.
-- script = "generate_trace_viewer_grd.py"
--
-- input_pages = [
-- "$tracing_gen_dir/about_tracing.html",
-- "$tracing_gen_dir/about_tracing.js",
-- ]
-- inputs = input_pages
-- outputs = [ tracing_grd ]
--
-- args = rebase_path(input_pages, target_gen_dir) + [
-- "--output",
-- rebase_path(tracing_grd, root_build_dir),
-- ]
--
-- deps = [ "//third_party/catapult/tracing:generate_about_tracing" ]
--}
--
--grit("resources") {
-- source = tracing_grd
--
-- # Required because the .grd is generated.
-- enable_input_discovery_for_gn_analyze = false
--
-- outputs = [
-- "grit/tracing_resources.h",
-- "tracing_resources.pak",
-- ]
--
-- # resource_ids has an entry for our .grd file that looks like:
-- # "<(SHARED_INTERMEDIATE_DIR)/content/browser/tracing/tracing_resources.grd"
-- # and what we pass here should make that resolve to our .grd file.
-- defines =
-- [ "SHARED_INTERMEDIATE_DIR=" + rebase_path(root_gen_dir, root_build_dir) ]
--
-- deps = [ ":generate_tracing_grd" ]
--}
---- src/3rdparty/chromium/content/browser/tracing/generate_trace_viewer_grd.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/content/browser/tracing/generate_trace_viewer_grd.py
-@@ -74,7 +74,7 @@ def main(argv):
- for filename in parsed_args.source_files:
- add_file_to_grd(doc, os.path.basename(filename))
-
-- with open(parsed_args.output_filename, 'w') as output_file:
-+ with open(parsed_args.output_filename, 'wb') as output_file:
- output_file.write(doc.toxml(encoding='UTF-8'))
-
-
---- src/3rdparty/chromium/content/browser/tracing/tracing_ui.cc.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/content/browser/tracing/tracing_ui.cc
-@@ -27,7 +27,6 @@
- #include "base/strings/stringprintf.h"
- #include "base/trace_event/trace_event.h"
- #include "base/values.h"
--#include "content/browser/tracing/grit/tracing_resources.h"
- #include "content/browser/tracing/tracing_controller_impl.h"
- #include "content/public/browser/browser_context.h"
- #include "content/public/browser/browser_thread.h"
-@@ -242,8 +241,6 @@ TracingUI::TracingUI(WebUI* web_ui)
- WebUIDataSource* source = WebUIDataSource::Create(kChromeUITracingHost);
- source->DisableTrustedTypesCSP();
- source->UseStringsJs();
-- source->SetDefaultResource(IDR_TRACING_HTML);
-- source->AddResourcePath("tracing.js", IDR_TRACING_JS);
- source->SetRequestFilter(base::BindRepeating(OnShouldHandleRequest),
- base::BindRepeating(OnTracingRequest));
- WebUIDataSource::Add(browser_context, source);
---- src/3rdparty/chromium/content/shell/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/content/shell/BUILD.gn
-@@ -390,7 +390,6 @@ repack("pak") {
- sources = [
- "$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
- "$root_gen_dir/content/browser/resources/media/media_internals_resources.pak",
-- "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
- "$root_gen_dir/content/browser/webrtc/resources/webrtc_internals_resources.pak",
- "$root_gen_dir/content/content_resources.pak",
- "$root_gen_dir/content/dev_ui_content_resources.pak",
-@@ -413,7 +412,6 @@ repack("pak") {
- "//content:dev_ui_content_resources",
- "//content/app/resources",
- "//content/browser/resources/media:media_internals_resources",
-- "//content/browser/tracing:resources",
- "//content/browser/webrtc/resources",
- "//mojo/public/js:resources",
- "//net:net_resources",
---- src/3rdparty/chromium/fuchsia/engine/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/fuchsia/engine/BUILD.gn
-@@ -43,7 +43,6 @@ repack("web_engine_pak") {
- "$root_gen_dir/components/components_resources.pak",
- "$root_gen_dir/components/strings/components_strings_en-US.pak",
- "$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
-- "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
- "$root_gen_dir/content/content_resources.pak",
- "$root_gen_dir/content/dev_ui_content_resources.pak",
- "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
-@@ -66,7 +65,6 @@ repack("web_engine_pak") {
- "//content:content_resources",
- "//content:dev_ui_content_resources",
- "//content/app/resources",
-- "//content/browser/tracing:resources",
- "//gpu/command_buffer/service",
- "//mojo/public/js:resources",
- "//net:net_resources",
---- src/3rdparty/chromium/headless/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/headless/BUILD.gn
-@@ -37,7 +37,6 @@ repack("pak") {
- "$root_gen_dir/components/components_resources.pak",
- "$root_gen_dir/components/strings/components_strings_en-US.pak",
- "$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
-- "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
- "$root_gen_dir/content/content_resources.pak",
- "$root_gen_dir/content/dev_ui_content_resources.pak",
- "$root_gen_dir/headless/headless_lib_resources.pak",
-@@ -65,7 +64,6 @@ repack("pak") {
- "//content:content_resources",
- "//content:dev_ui_content_resources",
- "//content/app/resources",
-- "//content/browser/tracing:resources",
- "//mojo/public/js:resources",
- "//net:net_resources",
- "//third_party/blink/public:resources",
---- src/3rdparty/chromium/mojo/public/tools/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/mojo/public/tools/BUILD.gn
-@@ -14,5 +14,4 @@ group("mojo_python_unittests") {
- "//testing/xvfb.py",
- ]
- deps = [ "//mojo/public/tools/mojom/mojom:tests" ]
-- data_deps = [ "//third_party/catapult/third_party/typ/" ]
- }
---- src/3rdparty/chromium/mojo/public/tools/bindings/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/mojo/public/tools/bindings/BUILD.gn
-@@ -2,9 +2,11 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
-+import("//build/config/python.gni")
- import("//mojo/public/tools/bindings/mojom.gni")
- import("//third_party/jinja2/jinja2.gni")
-
-+# TODO(crbug.com/1194274): Investigate nondeterminism in Py3 builds.
- action("precompile_templates") {
- sources = mojom_generator_sources
- sources += [
---- src/3rdparty/chromium/mojo/public/tools/bindings/gen_data_files_list.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/mojo/public/tools/bindings/gen_data_files_list.py
-@@ -18,7 +18,6 @@ import sys
- import re
- import sys
-
--from cStringIO import StringIO
- from optparse import OptionParser
-
- sys.path.insert(
-@@ -41,12 +40,9 @@ def main():
- pattern = re.compile(options.pattern)
- files = [f for f in os.listdir(options.directory) if pattern.match(f)]
-
-- stream = StringIO()
-- for f in files:
-- print(f, file=stream)
-+ contents = '\n'.join(f for f in files) + '\n'
-+ WriteFile(contents, options.output)
-
-- WriteFile(stream.getvalue(), options.output)
-- stream.close()
-
- if __name__ == '__main__':
- sys.exit(main())
---- src/3rdparty/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py
-@@ -25,6 +25,10 @@ from util import build_utils
- 'build', 'android', 'gyp'))
- from util import build_utils
-
-+# TODO(crbug.com/1174969): Remove this once Python2 is obsoleted.
-+if sys.version_info.major != 2:
-+ basestring = str
-+ long = int
-
- GENERATOR_PREFIX = 'java'
-
---- src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator.py
-@@ -136,9 +136,14 @@ def WriteFile(contents, full_path):
-
- def WriteFile(contents, full_path):
- # If |contents| is same with the file content, we skip updating.
-+ if not isinstance(contents, bytes):
-+ data = contents.encode('utf8')
-+ else:
-+ data = contents
-+
- if os.path.isfile(full_path):
- with open(full_path, 'rb') as destination_file:
-- if destination_file.read() == contents:
-+ if destination_file.read() == data:
- return
-
- # Make sure the containing directory exists.
-@@ -146,11 +151,8 @@ def WriteFile(contents, full_path):
- fileutil.EnsureDirectoryExists(full_dir)
-
- # Dump the data to disk.
-- with open(full_path, "wb") as f:
-- if not isinstance(contents, bytes):
-- f.write(contents.encode('utf-8'))
-- else:
-- f.write(contents)
-+ with open(full_path, 'wb') as f:
-+ f.write(data)
-
-
- def AddComputedData(module):
---- src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/module.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/module.py
-@@ -398,7 +398,8 @@ class StructField(Field):
-
-
- class StructField(Field):
-- pass
-+ def __hash__(self):
-+ return super(Field, self).__hash__()
-
-
- class UnionField(Field):
---- src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/template_expander.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/template_expander.py
-@@ -75,9 +75,9 @@ def PrecompileTemplates(generator_modules, output_dir)
- os.path.dirname(module.__file__), generator.GetTemplatePrefix())
- ]))
- jinja_env.filters.update(generator.GetFilters())
-- jinja_env.compile_templates(
-- os.path.join(output_dir, "%s.zip" % generator.GetTemplatePrefix()),
-- extensions=["tmpl"],
-- zip="stored",
-- py_compile=True,
-- ignore_errors=False)
-+ jinja_env.compile_templates(os.path.join(
-+ output_dir, "%s.zip" % generator.GetTemplatePrefix()),
-+ extensions=["tmpl"],
-+ zip="stored",
-+ py_compile=sys.version_info.major < 3,
-+ ignore_errors=False)
---- src/3rdparty/chromium/testing/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/testing/BUILD.gn
-@@ -27,7 +27,6 @@ group("run_perf_test") {
-
- data_deps = [
- ":test_scripts_shared",
-- "//third_party/catapult/tracing:convert_chart_json",
- ]
-
- if (is_android) {
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py
-@@ -344,7 +344,7 @@ def make_default_value_expr(idl_type, default_value):
- """
- assert default_value.is_type_compatible_with(idl_type)
-
-- class DefaultValueExpr:
-+ class DefaultValueExpr(object):
- _ALLOWED_SYMBOLS_IN_DEPS = ("isolate")
-
- def __init__(self, initializer_expr, initializer_deps,
-@@ -502,7 +502,7 @@ def make_v8_to_blink_value(blink_var_name,
- assert isinstance(blink_var_name, str)
- assert isinstance(v8_value_expr, str)
- assert isinstance(idl_type, web_idl.IdlType)
-- assert (argument_index is None or isinstance(argument_index, (int, long)))
-+ assert (argument_index is None or isinstance(argument_index, int))
- assert (default_value is None
- or isinstance(default_value, web_idl.LiteralConstant))
-
-@@ -622,7 +622,7 @@ def make_v8_to_blink_value_variadic(blink_var_name, v8
- """
- assert isinstance(blink_var_name, str)
- assert isinstance(v8_array, str)
-- assert isinstance(v8_array_start_index, (int, long))
-+ assert isinstance(v8_array_start_index, int)
- assert isinstance(idl_type, web_idl.IdlType)
-
- pattern = ("auto&& ${{{_1}}} = "
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py
-@@ -177,7 +177,7 @@ def generate_callback_interface(callback_interface_ide
- prop_install_mode=PropInstallMode.UNCONDITIONAL,
- trampoline_var_name=None,
- attribute_entries=[],
-- constant_entries=filter(is_unconditional, constant_entries),
-+ constant_entries=list(filter(is_unconditional, constant_entries)),
- exposed_construct_entries=[],
- operation_entries=[])
- (install_interface_template_decl, install_interface_template_def,
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py
-@@ -503,13 +503,13 @@ class CompositeNode(CodeNode):
- gensym_kwargs = {}
- template_vars = {}
- for arg in args:
-- assert isinstance(arg, (CodeNode, int, long, str))
-+ assert isinstance(arg, (CodeNode, int, str))
- gensym = CodeNode.gensym()
- gensym_args.append("${{{}}}".format(gensym))
- template_vars[gensym] = arg
- for key, value in kwargs.items():
-- assert isinstance(key, (int, long, str))
-- assert isinstance(value, (CodeNode, int, long, str))
-+ assert isinstance(key, (int, str))
-+ assert isinstance(value, (CodeNode, int, str))
- gensym = CodeNode.gensym()
- gensym_kwargs[key] = "${{{}}}".format(gensym)
- template_vars[gensym] = value
-@@ -602,7 +602,7 @@ class ListNode(CodeNode):
- def insert(self, index, node):
- if node is None:
- return
-- assert isinstance(index, (int, long))
-+ assert isinstance(index, int)
- assert isinstance(node, CodeNode)
- assert node.outer is None and node.prev is None
-
-@@ -721,7 +721,7 @@ class SymbolScopeNode(SequenceNode):
- if not scope_chains:
- return counts
-
-- self_index = iter(scope_chains).next().index(self)
-+ self_index = next(iter(scope_chains)).index(self)
- scope_chains = map(
- lambda scope_chain: scope_chain[self_index + 1:], scope_chains)
- scope_to_likeliness = {}
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_expr.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_expr.py
-@@ -109,7 +109,7 @@ def expr_and(terms):
-
- if any(term.is_always_false for term in terms):
- return _Expr(False)
-- terms = filter(lambda x: not x.is_always_true, terms)
-+ terms = list(filter(lambda x: not x.is_always_true, terms))
- if not terms:
- return _Expr(True)
- if len(terms) == 1:
-@@ -124,7 +124,7 @@ def expr_or(terms):
-
- if any(term.is_always_true for term in terms):
- return _Expr(True)
-- terms = filter(lambda x: not x.is_always_false, terms)
-+ terms = list(filter(lambda x: not x.is_always_false, terms))
- if not terms:
- return _Expr(False)
- if len(terms) == 1:
-@@ -222,7 +222,7 @@ def expr_from_exposure(exposure,
- elif exposure.only_in_secure_contexts is False:
- secure_context_term = _Expr(True)
- else:
-- terms = map(ref_enabled, exposure.only_in_secure_contexts)
-+ terms = list(map(ref_enabled, exposure.only_in_secure_contexts))
- secure_context_term = expr_or(
- [_Expr("${is_in_secure_context}"),
- expr_not(expr_and(terms))])
-@@ -275,10 +275,11 @@ def expr_from_exposure(exposure,
-
- # [ContextEnabled]
- if exposure.context_enabled_features:
-- terms = map(
-- lambda feature: _Expr(
-- "${{context_feature_settings}}->is{}Enabled()".format(
-- feature)), exposure.context_enabled_features)
-+ terms = list(
-+ map(
-+ lambda feature: _Expr(
-+ "${{context_feature_settings}}->is{}Enabled()".format(
-+ feature)), exposure.context_enabled_features))
- context_enabled_terms.append(
- expr_and([_Expr("${context_feature_settings}"),
- expr_or(terms)]))
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py
-@@ -23,7 +23,7 @@ class _TemplateFormatter(string.Formatter):
- self._template_formatter_indexing_count_ = 0
-
- def get_value(self, key, args, kwargs):
-- if isinstance(key, (int, long)):
-+ if isinstance(key, int):
- return args[key]
- assert isinstance(key, str)
- if not key:
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py
-@@ -116,4 +116,4 @@ def write_code_node_to_file(code_node, filepath):
- # stderr=format_result.error_message))
- #
- # web_idl.file_io.write_to_file_if_changed(filepath, format_result.contents)
-- web_idl.file_io.write_to_file_if_changed(filepath, rendered_text)
-+ web_idl.file_io.write_to_file_if_changed(filepath, rendered_text.encode('utf-8'))
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py
-@@ -993,7 +993,7 @@ def make_dict_trace_func(cg_context):
- _2 = _blink_member_name(member).value_var
- return TextNode(_format(pattern, _1=_1, _2=_2))
-
-- body.extend(map(make_trace_member_node, own_members))
-+ body.extend(list(map(make_trace_member_node, own_members)))
- body.append(TextNode("BaseClass::Trace(visitor);"))
-
- return func_decl, func_def
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py
-@@ -582,7 +582,7 @@ def _make_blink_api_call(code_node,
- overriding_args=None):
- assert isinstance(code_node, SymbolScopeNode)
- assert isinstance(cg_context, CodeGenContext)
-- assert num_of_args is None or isinstance(num_of_args, (int, long))
-+ assert num_of_args is None or isinstance(num_of_args, int)
- assert (overriding_args is None
- or (isinstance(overriding_args, (list, tuple))
- and all(isinstance(arg, str) for arg in overriding_args)))
-@@ -1196,8 +1196,10 @@ def make_overload_dispatcher(cg_context):
- did_use_break = did_use_break or can_fail
-
- conditional = expr_or(
-- map(lambda item: expr_from_exposure(item.function_like.exposure),
-- items))
-+ list(
-+ map(
-+ lambda item: expr_from_exposure(item.function_like.exposure
-+ ), items)))
- if not conditional.is_always_true:
- node = CxxUnlikelyIfNode(cond=conditional, body=node)
-
-@@ -4642,7 +4644,7 @@ class _PropEntryConstructorGroup(_PropEntryBase):
- def __init__(self, is_context_dependent, exposure_conditional, world,
- constructor_group, ctor_callback_name, ctor_func_length):
- assert isinstance(ctor_callback_name, str)
-- assert isinstance(ctor_func_length, (int, long))
-+ assert isinstance(ctor_func_length, int)
-
- _PropEntryBase.__init__(self, is_context_dependent,
- exposure_conditional, world, constructor_group)
-@@ -4670,7 +4672,7 @@ class _PropEntryOperationGroup(_PropEntryBase):
- op_func_length,
- no_alloc_direct_callback_name=None):
- assert isinstance(op_callback_name, str)
-- assert isinstance(op_func_length, (int, long))
-+ assert isinstance(op_func_length, int)
-
- _PropEntryBase.__init__(self, is_context_dependent,
- exposure_conditional, world, operation_group)
-@@ -5175,9 +5177,9 @@ def make_install_interface_template(cg_context, functi
- ])
-
- if class_like.identifier == "CSSStyleDeclaration":
-- css_properties = filter(
-- lambda attr: "CSSProperty" in attr.extended_attributes,
-- class_like.attributes)
-+ css_properties = list(
-+ filter(lambda attr: "CSSProperty" in attr.extended_attributes,
-+ class_like.attributes))
- if css_properties:
- prop_name_list = "".join(
- map(lambda attr: "\"{}\", ".format(attr.identifier),
-@@ -5567,8 +5569,8 @@ ${instance_object} = ${v8_context}->Global()->GetProto
- "V8DOMConfiguration::InstallConstants(${isolate}, "
- "${interface_template}, ${prototype_template}, "
- "kConstantCallbackTable, base::size(kConstantCallbackTable));")
-- constant_callback_entries = filter(lambda entry: entry.const_callback_name,
-- constant_entries)
-+ constant_callback_entries = list(filter(lambda entry: entry.const_callback_name,
-+ constant_entries))
- install_properties(table_name, constant_callback_entries,
- _make_constant_callback_registration_table,
- installer_call_text)
-@@ -5584,8 +5586,8 @@ ${instance_object} = ${v8_context}->Global()->GetProto
- "V8DOMConfiguration::InstallConstants(${isolate}, "
- "${interface_template}, ${prototype_template}, "
- "kConstantValueTable, base::size(kConstantValueTable));")
-- constant_value_entries = filter(
-- lambda entry: not entry.const_callback_name, constant_entries)
-+ constant_value_entries = list(filter(
-+ lambda entry: not entry.const_callback_name, constant_entries))
- install_properties(table_name, constant_value_entries,
- _make_constant_value_registration_table,
- installer_call_text)
-@@ -6336,8 +6338,8 @@ def make_v8_context_snapshot_api(cg_context, component
- assert isinstance(component, web_idl.Component)
-
- derived_interfaces = cg_context.interface.deriveds
-- derived_names = map(lambda interface: interface.identifier,
-- derived_interfaces)
-+ derived_names = list(
-+ map(lambda interface: interface.identifier, derived_interfaces))
- derived_names.append(cg_context.interface.identifier)
- if not ("Window" in derived_names or "HTMLDocument" in derived_names):
- return None, None
-@@ -6411,9 +6413,11 @@ def _make_v8_context_snapshot_get_reference_table_func
- collect_callbacks(named_properties_object_callback_defs)
- collect_callbacks(cross_origin_property_callback_defs)
-
-- entry_nodes = map(
-- lambda name: TextNode("reinterpret_cast<intptr_t>({}),".format(name)),
-- filter(None, callback_names))
-+ entry_nodes = list(
-+ map(
-+ lambda name: TextNode("reinterpret_cast<intptr_t>({}),".format(name
-+ )),
-+ filter(None, callback_names)))
- table_node = ListNode([
- TextNode("using namespace ${class_name}Callbacks;"),
- TextNode("static const intptr_t kReferenceTable[] = {"),
-@@ -6451,10 +6455,11 @@ def _make_v8_context_snapshot_install_props_per_contex
- class_name=None,
- prop_install_mode=PropInstallMode.V8_CONTEXT_SNAPSHOT,
- trampoline_var_name=None,
-- attribute_entries=filter(selector, attribute_entries),
-- constant_entries=filter(selector, constant_entries),
-- exposed_construct_entries=filter(selector, exposed_construct_entries),
-- operation_entries=filter(selector, operation_entries))
-+ attribute_entries=list(filter(selector, attribute_entries)),
-+ constant_entries=list(filter(selector, constant_entries)),
-+ exposed_construct_entries=list(
-+ filter(selector, exposed_construct_entries)),
-+ operation_entries=list(filter(selector, operation_entries)))
-
- return func_decl, func_def
-
-@@ -6810,11 +6815,11 @@ def generate_interface(interface_identifier):
- class_name=impl_class_name,
- prop_install_mode=PropInstallMode.UNCONDITIONAL,
- trampoline_var_name=tp_install_unconditional_props,
-- attribute_entries=filter(is_unconditional, attribute_entries),
-- constant_entries=filter(is_unconditional, constant_entries),
-- exposed_construct_entries=filter(is_unconditional,
-- exposed_construct_entries),
-- operation_entries=filter(is_unconditional, operation_entries))
-+ attribute_entries=list(filter(is_unconditional, attribute_entries)),
-+ constant_entries=list(filter(is_unconditional, constant_entries)),
-+ exposed_construct_entries=list(
-+ filter(is_unconditional, exposed_construct_entries)),
-+ operation_entries=list(filter(is_unconditional, operation_entries)))
- (install_context_independent_props_decl,
- install_context_independent_props_def,
- install_context_independent_props_trampoline) = make_install_properties(
-@@ -6823,11 +6828,14 @@ def generate_interface(interface_identifier):
- class_name=impl_class_name,
- prop_install_mode=PropInstallMode.CONTEXT_INDEPENDENT,
- trampoline_var_name=tp_install_context_independent_props,
-- attribute_entries=filter(is_context_independent, attribute_entries),
-- constant_entries=filter(is_context_independent, constant_entries),
-- exposed_construct_entries=filter(is_context_independent,
-- exposed_construct_entries),
-- operation_entries=filter(is_context_independent, operation_entries))
-+ attribute_entries=list(
-+ filter(is_context_independent, attribute_entries)),
-+ constant_entries=list(filter(is_context_independent,
-+ constant_entries)),
-+ exposed_construct_entries=list(
-+ filter(is_context_independent, exposed_construct_entries)),
-+ operation_entries=list(
-+ filter(is_context_independent, operation_entries)))
- (install_context_dependent_props_decl, install_context_dependent_props_def,
- install_context_dependent_props_trampoline) = make_install_properties(
- cg_context,
-@@ -6835,11 +6843,13 @@ def generate_interface(interface_identifier):
- class_name=impl_class_name,
- prop_install_mode=PropInstallMode.CONTEXT_DEPENDENT,
- trampoline_var_name=tp_install_context_dependent_props,
-- attribute_entries=filter(is_context_dependent, attribute_entries),
-- constant_entries=filter(is_context_dependent, constant_entries),
-- exposed_construct_entries=filter(is_context_dependent,
-- exposed_construct_entries),
-- operation_entries=filter(is_context_dependent, operation_entries))
-+ attribute_entries=list(filter(is_context_dependent,
-+ attribute_entries)),
-+ constant_entries=list(filter(is_context_dependent, constant_entries)),
-+ exposed_construct_entries=list(
-+ filter(is_context_dependent, exposed_construct_entries)),
-+ operation_entries=list(filter(is_context_dependent,
-+ operation_entries)))
- (install_interface_template_decl, install_interface_template_def,
- install_interface_template_trampoline) = make_install_interface_template(
- cg_context,
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/mako_renderer.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/mako_renderer.py
-@@ -105,7 +105,7 @@ class MakoRenderer(object):
- on_error = self._caller_stack_on_error
- if (len(current) <= len(on_error)
- and all(current[i] == on_error[i]
-- for i in xrange(len(current)))):
-+ for i in range(len(current)))):
- pass # Error happened in a deeper caller.
- else:
- self._caller_stack_on_error = list(self._caller_stack)
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py
-@@ -70,8 +70,13 @@ def _invoke_format_command(command_line, filename, con
-
-
- def _invoke_format_command(command_line, filename, contents):
-- proc = subprocess.Popen(
-- command_line, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
-+ kwargs = {}
-+ if sys.version_info.major != 2:
-+ kwargs['encoding'] = 'utf-8'
-+ proc = subprocess.Popen(command_line,
-+ stdin=subprocess.PIPE,
-+ stdout=subprocess.PIPE,
-+ **kwargs)
- stdout_output, stderr_output = proc.communicate(input=contents)
- exit_code = proc.wait()
-
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/task_queue.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/task_queue.py
-@@ -2,6 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
-+import functools
- import multiprocessing
-
- from .package_initializer import package_initializer
-@@ -76,7 +77,7 @@ class TaskQueue(object):
- if not report_progress:
- return
-
-- done_count = reduce(
-+ done_count = functools.reduce(
- lambda count, worker_task: count + bool(worker_task.ready()),
- self._worker_tasks, 0)
- report_progress(len(self._worker_tasks), done_count)
-@@ -85,4 +86,4 @@ def _task_queue_run_tasks(tasks):
- def _task_queue_run_tasks(tasks):
- for task in tasks:
- func, args, kwargs = task
-- apply(func, args, kwargs)
-+ func(*args, **kwargs)
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py
-@@ -13,6 +13,7 @@ from idl_types import set_ancestors, IdlType
- import sys
-
- from idl_types import set_ancestors, IdlType
-+from itertools import groupby
- from v8_globals import includes
- from v8_interface import constant_filters
- from v8_types import set_component_dirs
-@@ -43,6 +44,7 @@ import jinja2
- # after path[0] == invoking script dir
- sys.path.insert(1, THIRD_PARTY_DIR)
- import jinja2
-+from jinja2.filters import make_attrgetter, environmentfilter
-
-
- def generate_indented_conditional(code, conditional):
-@@ -88,6 +90,13 @@ def runtime_enabled_if(code, name):
- return generate_indented_conditional(code, function)
-
-
-+@environmentfilter
-+def do_stringify_key_group_by(environment, value, attribute):
-+ expr = make_attrgetter(environment, attribute)
-+ key = lambda item: '' if expr(item) is None else str(expr(item))
-+ return groupby(sorted(value, key=key), expr)
-+
-+
- def initialize_jinja_env(cache_dir):
- jinja_env = jinja2.Environment(
- loader=jinja2.FileSystemLoader(TEMPLATES_DIR),
-@@ -117,6 +126,7 @@ def initialize_jinja_env(cache_dir):
- })
- jinja_env.filters.update(constant_filters())
- jinja_env.filters.update(method_filters())
-+ jinja_env.filters["stringifykeygroupby"] = do_stringify_key_group_by
- return jinja_env
-
-
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/generate_origin_trial_features.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/generate_origin_trial_features.py
-@@ -80,7 +80,7 @@ def read_idl_file(reader, idl_filename):
- assert len(interfaces) == 1, (
- "Expected one interface in file %r, found %d" %
- (idl_filename, len(interfaces)))
-- return (interfaces.values()[0], includes)
-+ return (list(interfaces.values())[0], includes)
-
-
- def interface_is_global(interface):
-@@ -281,7 +281,7 @@ def main():
-
- info_provider = create_component_info_provider(
- os.path.normpath(options.info_dir), options.target_component)
-- idl_filenames = map(str.strip, open(options.idl_files_list))
-+ idl_filenames = list(map(str.strip, open(options.idl_files_list)))
-
- generate_origin_trial_features(info_provider, options, idl_filenames)
- return 0
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_definitions.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_definitions.py
-@@ -394,7 +394,8 @@ class IdlInterface(object):
- else:
- raise ValueError('Unrecognized node class: %s' % child_class)
-
-- if len(filter(None, [self.iterable, self.maplike, self.setlike])) > 1:
-+ if len(list(filter(None,
-+ [self.iterable, self.maplike, self.setlike]))) > 1:
- raise ValueError(
- 'Interface can only have one of iterable<>, maplike<> and setlike<>.'
- )
-@@ -512,7 +513,10 @@ class IdlAttribute(TypedObject):
- def accept(self, visitor):
- visitor.visit_attribute(self)
-
-+ def __lt__(self, other):
-+ return self.name < other.name
-
-+
- ################################################################################
- # Constants
- ################################################################################
-@@ -852,7 +856,7 @@ class IdlIncludes(object):
- ################################################################################
-
-
--class Exposure:
-+class Exposure(object):
- """An Exposure holds one Exposed or RuntimeEnabled condition.
- Each exposure has two properties: exposed and runtime_enabled.
- Exposure(e, r) corresponds to [Exposed(e r)]. Exposure(e) corresponds to
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py
-@@ -55,8 +55,8 @@ def validate_blink_idl_definitions(idl_filename, idl_f
- definitions. There is no filename convention in this case.
- - Otherwise, an IDL file is invalid.
- """
-- targets = (
-- definitions.interfaces.values() + definitions.dictionaries.values())
-+ targets = (list(definitions.interfaces.values()) +
-+ list(definitions.dictionaries.values()))
- number_of_targets = len(targets)
- if number_of_targets > 1:
- raise Exception(
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_types.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_types.py
-@@ -349,7 +349,7 @@ class IdlUnionType(IdlTypeBase):
- return True
-
- def single_matching_member_type(self, predicate):
-- matching_types = filter(predicate, self.flattened_member_types)
-+ matching_types = list(filter(predicate, self.flattened_member_types))
- if len(matching_types) > 1:
- raise ValueError('%s is ambiguous.' % self.name)
- return matching_types[0] if matching_types else None
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/utilities.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/utilities.py
-@@ -196,8 +196,9 @@ class ComponentInfoProviderModules(ComponentInfoProvid
-
- @property
- def callback_functions(self):
-- return dict(self._component_info_core['callback_functions'].items() +
-- self._component_info_modules['callback_functions'].items())
-+ return dict(
-+ list(self._component_info_core['callback_functions'].items()) +
-+ list(self._component_info_modules['callback_functions'].items()))
-
- @property
- def specifier_for_export(self):
-@@ -209,8 +210,8 @@ def load_interfaces_info_overall_pickle(info_dir):
-
-
- def load_interfaces_info_overall_pickle(info_dir):
-- with open(os.path.join(info_dir,
-- 'interfaces_info.pickle')) as interface_info_file:
-+ with open(os.path.join(info_dir, 'interfaces_info.pickle'),
-+ mode='rb') as interface_info_file:
- return pickle.load(interface_info_file)
-
-
-@@ -236,23 +237,20 @@ def create_component_info_provider_core(info_dir):
-
- def create_component_info_provider_core(info_dir):
- interfaces_info = load_interfaces_info_overall_pickle(info_dir)
-- with open(
-- os.path.join(info_dir, 'core',
-- 'component_info_core.pickle')) as component_info_file:
-+ with open(os.path.join(info_dir, 'core', 'component_info_core.pickle'),
-+ mode='rb') as component_info_file:
- component_info = pickle.load(component_info_file)
- return ComponentInfoProviderCore(interfaces_info, component_info)
-
-
- def create_component_info_provider_modules(info_dir):
- interfaces_info = load_interfaces_info_overall_pickle(info_dir)
-- with open(
-- os.path.join(info_dir, 'core',
-- 'component_info_core.pickle')) as component_info_file:
-+ with open(os.path.join(info_dir, 'core', 'component_info_core.pickle'),
-+ mode='rb') as component_info_file:
- component_info_core = pickle.load(component_info_file)
-- with open(
-- os.path.join(
-- info_dir, 'modules',
-- 'component_info_modules.pickle')) as component_info_file:
-+ with open(os.path.join(info_dir, 'modules',
-+ 'component_info_modules.pickle'),
-+ mode='rb') as component_info_file:
- component_info_modules = pickle.load(component_info_file)
- return ComponentInfoProviderModules(interfaces_info, component_info_core,
- component_info_modules)
-@@ -356,7 +354,7 @@ def write_pickle_file(pickle_filename, data):
- pickle_filename = abs(pickle_filename)
- # If |data| is same with the file content, we skip updating.
- if os.path.isfile(pickle_filename):
-- with open(pickle_filename) as pickle_file:
-+ with open(pickle_filename, 'rb') as pickle_file:
- try:
- if pickle.load(pickle_file) == data:
- return
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_interface.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_interface.py
-@@ -189,7 +189,7 @@ def context_enabled_features(attributes):
- return sorted([
- member for member in members
- if member.get(KEY) and not member.get('exposed_test')
-- ])
-+ ], key=lambda item: item['name'])
-
- def member_filter_by_name(members, name):
- return [member for member in members if member[KEY] == name]
-@@ -612,7 +612,8 @@ def interface_context(interface, interfaces, component
- sorted(
- origin_trial_features(interface, context['constants'],
- context['attributes'], context['methods']) +
-- context_enabled_features(context['attributes'])),
-+ context_enabled_features(context['attributes']),
-+ key=lambda item: item['name']),
- })
- if context['optional_features']:
- includes.add('platform/bindings/v8_per_context_data.h')
-@@ -1356,9 +1357,9 @@ def resolution_tests_methods(effective_overloads):
-
- # Extract argument and IDL type to simplify accessing these in each loop.
- arguments = [method['arguments'][index] for method in methods]
-- arguments_methods = zip(arguments, methods)
-+ arguments_methods = list(zip(arguments, methods))
- idl_types = [argument['idl_type_object'] for argument in arguments]
-- idl_types_methods = zip(idl_types, methods)
-+ idl_types_methods = list(zip(idl_types, methods))
-
- # We can’t do a single loop through all methods or simply sort them, because
- # a method may be listed in multiple steps of the resolution algorithm, and
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py
-@@ -46,6 +46,10 @@ from v8_utilities import (has_extended_attribute_value
- import v8_utilities
- from v8_utilities import (has_extended_attribute_value, is_unforgeable)
-
-+# TODO: Remove this once Python2 is obsoleted.
-+if sys.version_info.major != 2:
-+ basestring = str
-+
-
- def method_is_visible(method, interface_is_partial):
- if 'overloads' in method:
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_utilities.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_utilities.py
-@@ -271,7 +271,7 @@ EXPOSED_WORKERS = set([
- ])
-
-
--class ExposureSet:
-+class ExposureSet(object):
- """An ExposureSet is a collection of Exposure instructions."""
-
- def __init__(self, exposures=None):
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py
-@@ -91,11 +91,13 @@ class CallbackInterface(UserDefinedType, WithExtendedA
- for operation_ir in ir.operations
- ])
- self._operation_groups = tuple([
-- OperationGroup(
-- operation_group_ir,
-- filter(lambda x: x.identifier == operation_group_ir.identifier,
-- self._operations),
-- owner=self) for operation_group_ir in ir.operation_groups
-+ OperationGroup(operation_group_ir,
-+ list(
-+ filter(
-+ lambda x: x.identifier == operation_group_ir
-+ .identifier, self._operations)),
-+ owner=self)
-+ for operation_group_ir in ir.operation_groups
- ])
-
- @property
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/database.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/database.py
-@@ -156,4 +156,4 @@ class Database(object):
- return self._view_by_kind(Database._Kind.UNION)
-
- def _view_by_kind(self, kind):
-- return self._impl.find_by_kind(kind).values()
-+ return list(self._impl.find_by_kind(kind).values())
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py
-@@ -8,8 +8,11 @@ class _Feature(str):
- class _Feature(str):
- """Represents a runtime-enabled feature."""
-
-+ def __new__(cls, value):
-+ return str.__new__(cls, value)
-+
- def __init__(self, value):
-- str.__init__(self, value)
-+ str.__init__(self)
- self._is_context_dependent = (
- RuntimeEnabledFeatures.is_context_dependent(self))
-
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/function_like.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/function_like.py
-@@ -71,8 +71,9 @@ class FunctionLike(WithIdentifier):
- def num_of_required_arguments(self):
- """Returns the number of required arguments."""
- return len(
-- filter(lambda arg: not (arg.is_optional or arg.is_variadic),
-- self.arguments))
-+ list(
-+ filter(lambda arg: not (arg.is_optional or arg.is_variadic),
-+ self.arguments)))
-
-
- class OverloadGroup(WithIdentifier):
-@@ -171,8 +172,7 @@ class OverloadGroup(WithIdentifier):
- Returns the effective overload set.
- https://heycam.github.io/webidl/#compute-the-effective-overload-set
- """
-- assert argument_count is None or isinstance(argument_count,
-- (int, long))
-+ assert argument_count is None or isinstance(argument_count, int)
-
- N = argument_count
- S = []
-@@ -188,21 +188,21 @@ class OverloadGroup(WithIdentifier):
-
- S.append(
- OverloadGroup.EffectiveOverloadItem(
-- X, map(lambda arg: arg.idl_type, X.arguments),
-- map(lambda arg: arg.optionality, X.arguments)))
-+ X, list(map(lambda arg: arg.idl_type, X.arguments)),
-+ list(map(lambda arg: arg.optionality, X.arguments))))
-
- if X.is_variadic:
-- for i in xrange(n, max(maxarg, N)):
-- t = map(lambda arg: arg.idl_type, X.arguments)
-- o = map(lambda arg: arg.optionality, X.arguments)
-- for _ in xrange(n, i + 1):
-+ for i in range(n, max(maxarg, N)):
-+ t = list(map(lambda arg: arg.idl_type, X.arguments))
-+ o = list(map(lambda arg: arg.optionality, X.arguments))
-+ for _ in range(n, i + 1):
- t.append(X.arguments[-1].idl_type)
- o.append(X.arguments[-1].optionality)
- S.append(OverloadGroup.EffectiveOverloadItem(X, t, o))
-
-- t = map(lambda arg: arg.idl_type, X.arguments)
-- o = map(lambda arg: arg.optionality, X.arguments)
-- for i in xrange(n - 1, -1, -1):
-+ t = list(map(lambda arg: arg.idl_type, X.arguments))
-+ o = list(map(lambda arg: arg.optionality, X.arguments))
-+ for i in range(n - 1, -1, -1):
- if X.arguments[i].optionality == IdlType.Optionality.REQUIRED:
- break
- S.append(OverloadGroup.EffectiveOverloadItem(X, t[:i], o[:i]))
-@@ -222,7 +222,7 @@ class OverloadGroup(WithIdentifier):
- for item in items)
- assert len(items) > 1
-
-- for index in xrange(len(items[0].type_list)):
-+ for index in range(len(items[0].type_list)):
- # Assume that the given items are valid, and we only need to test
- # the two types.
- if OverloadGroup.are_distinguishable_types(
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py
-@@ -149,8 +149,8 @@ class IdlCompiler(object):
- for old_ir in old_irs:
- new_ir = make_copy(old_ir)
- self._ir_map.add(new_ir)
-- new_ir.attributes = filter(not_disabled, new_ir.attributes)
-- new_ir.operations = filter(not_disabled, new_ir.operations)
-+ new_ir.attributes = list(filter(not_disabled, new_ir.attributes))
-+ new_ir.operations = list(filter(not_disabled, new_ir.operations))
-
- def _record_defined_in_partial_and_mixin(self):
- old_irs = self._ir_map.irs_of_kinds(
-@@ -231,7 +231,7 @@ class IdlCompiler(object):
- only_to_members_of_partial_or_mixin=False)
- propagate_to_exposure(propagate)
-
-- map(process_member_like, ir.iter_all_members())
-+ list(map(process_member_like, ir.iter_all_members()))
-
- def process_member_like(ir):
- propagate = functools.partial(propagate_extattr, ir=ir)
-@@ -257,7 +257,7 @@ class IdlCompiler(object):
-
- self._ir_map.move_to_new_phase()
-
-- map(process_interface_like, old_irs)
-+ list(map(process_interface_like, old_irs))
-
- def _determine_blink_headers(self):
- irs = self._ir_map.irs_of_kinds(
-@@ -422,9 +422,9 @@ class IdlCompiler(object):
- assert not new_interface.deriveds
- derived_set = identifier_to_derived_set.get(
- new_interface.identifier, set())
-- new_interface.deriveds = map(
-- lambda id_: self._ref_to_idl_def_factory.create(id_),
-- sorted(derived_set))
-+ new_interface.deriveds = list(
-+ map(lambda id_: self._ref_to_idl_def_factory.create(id_),
-+ sorted(derived_set)))
-
- def _supplement_missing_html_constructor_operation(self):
- # Temporary mitigation of misuse of [HTMLConstructor]
-@@ -553,7 +553,8 @@ class IdlCompiler(object):
- self._ir_map.add(new_ir)
-
- for group in new_ir.iter_all_overload_groups():
-- exposures = map(lambda overload: overload.exposure, group)
-+ exposures = list(map(lambda overload: overload.exposure,
-+ group))
-
- # [Exposed]
- if any(not exposure.global_names_and_features
-@@ -653,8 +654,8 @@ class IdlCompiler(object):
- constructs = set()
- for global_name in global_names:
- constructs.update(exposed_map.get(global_name, []))
-- new_ir.exposed_constructs = map(
-- self._ref_to_idl_def_factory.create, sorted(constructs))
-+ new_ir.exposed_constructs = list(
-+ map(self._ref_to_idl_def_factory.create, sorted(constructs)))
-
- assert not new_ir.legacy_window_aliases
- if new_ir.identifier != 'Window':
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py
-@@ -180,8 +180,9 @@ class Interface(UserDefinedType, WithExtendedAttribute
- self._constructor_groups = tuple([
- ConstructorGroup(
- group_ir,
-- filter(lambda x: x.identifier == group_ir.identifier,
-- self._constructors),
-+ list(
-+ filter(lambda x: x.identifier == group_ir.identifier,
-+ self._constructors)),
- owner=self) for group_ir in ir.constructor_groups
- ])
- assert len(self._constructor_groups) <= 1
-@@ -192,8 +193,9 @@ class Interface(UserDefinedType, WithExtendedAttribute
- self._named_constructor_groups = tuple([
- ConstructorGroup(
- group_ir,
-- filter(lambda x: x.identifier == group_ir.identifier,
-- self._named_constructors),
-+ list(
-+ filter(lambda x: x.identifier == group_ir.identifier,
-+ self._named_constructors)),
- owner=self) for group_ir in ir.named_constructor_groups
- ])
- self._operations = tuple([
-@@ -203,22 +205,23 @@ class Interface(UserDefinedType, WithExtendedAttribute
- self._operation_groups = tuple([
- OperationGroup(
- group_ir,
-- filter(lambda x: x.identifier == group_ir.identifier,
-- self._operations),
-+ list(
-+ filter(lambda x: x.identifier == group_ir.identifier,
-+ self._operations)),
- owner=self) for group_ir in ir.operation_groups
- ])
- self._exposed_constructs = tuple(ir.exposed_constructs)
- self._legacy_window_aliases = tuple(ir.legacy_window_aliases)
- self._indexed_and_named_properties = None
-- indexed_and_named_property_operations = filter(
-- lambda x: x.is_indexed_or_named_property_operation,
-- self._operations)
-+ indexed_and_named_property_operations = list(
-+ filter(lambda x: x.is_indexed_or_named_property_operation,
-+ self._operations))
- if indexed_and_named_property_operations:
- self._indexed_and_named_properties = IndexedAndNamedProperties(
- indexed_and_named_property_operations, owner=self)
- self._stringifier = None
-- stringifier_operation_irs = filter(lambda x: x.is_stringifier,
-- ir.operations)
-+ stringifier_operation_irs = list(
-+ filter(lambda x: x.is_stringifier, ir.operations))
- if stringifier_operation_irs:
- assert len(stringifier_operation_irs) == 1
- op_ir = make_copy(stringifier_operation_irs[0])
-@@ -231,8 +234,9 @@ class Interface(UserDefinedType, WithExtendedAttribute
- attribute = None
- if operation.stringifier_attribute:
- attr_id = operation.stringifier_attribute
-- attributes = filter(lambda x: x.identifier == attr_id,
-- self._attributes)
-+ attributes = list(
-+ filter(lambda x: x.identifier == attr_id,
-+ self._attributes))
- assert len(attributes) == 1
- attribute = attributes[0]
- self._stringifier = Stringifier(operation, attribute, owner=self)
-@@ -578,8 +582,9 @@ class Iterable(WithDebugInfo):
- self._operation_groups = tuple([
- OperationGroup(
- group_ir,
-- filter(lambda x: x.identifier == group_ir.identifier,
-- self._operations),
-+ list(
-+ filter(lambda x: x.identifier == group_ir.identifier,
-+ self._operations)),
- owner=owner) for group_ir in ir.operation_groups
- ])
-
-@@ -666,8 +671,9 @@ class Maplike(WithDebugInfo):
- self._operation_groups = tuple([
- OperationGroup(
- group_ir,
-- filter(lambda x: x.identifier == group_ir.identifier,
-- self._operations),
-+ list(
-+ filter(lambda x: x.identifier == group_ir.identifier,
-+ self._operations)),
- owner=owner) for group_ir in ir.operation_groups
- ])
-
-@@ -755,8 +761,9 @@ class Setlike(WithDebugInfo):
- self._operation_groups = tuple([
- OperationGroup(
- group_ir,
-- filter(lambda x: x.identifier == group_ir.identifier,
-- self._operations),
-+ list(
-+ filter(lambda x: x.identifier == group_ir.identifier,
-+ self._operations)),
- owner=owner) for group_ir in ir.operation_groups
- ])
-
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py
-@@ -2,6 +2,8 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
-+import sys
-+
- from .argument import Argument
- from .ast_group import AstGroup
- from .attribute import Attribute
-@@ -30,6 +32,11 @@ from .typedef import Typedef
- from .typedef import Typedef
-
-
-+# TODO: Remove this once Python2 is obsoleted.
-+if sys.version_info.major != 2:
-+ long = int
-+
-+
- def load_and_register_idl_definitions(filepaths, register_ir,
- create_ref_to_idl_def, idl_type_factory):
- """
-@@ -160,7 +167,7 @@ class _IRBuilder(object):
- child_nodes = list(node.GetChildren())
- extended_attributes = self._take_extended_attributes(child_nodes)
-
-- members = map(self._build_interface_member, child_nodes)
-+ members = list(map(self._build_interface_member, child_nodes))
- attributes = []
- constants = []
- operations = []
-@@ -302,7 +309,7 @@ class _IRBuilder(object):
- child_nodes = list(node.GetChildren())
- inherited = self._take_inheritance(child_nodes)
- extended_attributes = self._take_extended_attributes(child_nodes)
-- own_members = map(self._build_dictionary_member, child_nodes)
-+ own_members = list(map(self._build_dictionary_member, child_nodes))
-
- return Dictionary.IR(
- identifier=Identifier(node.GetName()),
-@@ -336,7 +343,7 @@ class _IRBuilder(object):
-
- child_nodes = list(node.GetChildren())
- extended_attributes = self._take_extended_attributes(child_nodes)
-- members = map(self._build_interface_member, child_nodes)
-+ members = list(map(self._build_interface_member, child_nodes))
- constants = []
- operations = []
- for member in members:
-@@ -456,8 +463,8 @@ class _IRBuilder(object):
- assert len(child_nodes) == 1
- child = child_nodes[0]
- if child.GetClass() == 'Arguments':
-- arguments = map(build_extattr_argument,
-- child.GetChildren())
-+ arguments = list(
-+ map(build_extattr_argument, child.GetChildren()))
- elif child.GetClass() == 'Call':
- assert len(child.GetChildren()) == 1
- grand_child = child.GetChildren()[0]
-@@ -486,7 +493,9 @@ class _IRBuilder(object):
-
- assert node.GetClass() == 'ExtAttributes'
- return ExtendedAttributes(
-- filter(None, map(build_extended_attribute, node.GetChildren())))
-+ list(
-+ filter(None, map(build_extended_attribute,
-+ node.GetChildren()))))
-
- def _build_inheritance(self, node):
- assert node.GetClass() == 'Inherit'
-@@ -506,7 +515,7 @@ class _IRBuilder(object):
-
- def _build_iterable(self, node):
- assert node.GetClass() == 'Iterable'
-- types = map(self._build_type, node.GetChildren())
-+ types = list(map(self._build_type, node.GetChildren()))
- assert len(types) == 1 or len(types) == 2
- if len(types) == 1: # value iterator
- key_type, value_type = (None, types[0])
-@@ -584,7 +593,7 @@ class _IRBuilder(object):
- def _build_maplike(self, node, interface_identifier):
- assert node.GetClass() == 'Maplike'
- assert isinstance(interface_identifier, Identifier)
-- types = map(self._build_type, node.GetChildren())
-+ types = list(map(self._build_type, node.GetChildren()))
- assert len(types) == 2
- key_type, value_type = types
- is_readonly = bool(node.GetProperty('READONLY'))
-@@ -676,7 +685,7 @@ class _IRBuilder(object):
- def _build_setlike(self, node, interface_identifier):
- assert node.GetClass() == 'Setlike'
- assert isinstance(interface_identifier, Identifier)
-- types = map(self._build_type, node.GetChildren())
-+ types = list(map(self._build_type, node.GetChildren()))
- assert len(types) == 1
- value_type = types[0]
- is_readonly = bool(node.GetProperty('READONLY'))
-@@ -838,7 +847,7 @@ class _IRBuilder(object):
-
- def build_union_type(node, extended_attributes):
- return self._idl_type_factory.union_type(
-- member_types=map(self._build_type, node.GetChildren()),
-+ member_types=list(map(self._build_type, node.GetChildren())),
- is_optional=is_optional,
- extended_attributes=extended_attributes,
- debug_info=self._build_debug_info(node))
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/make_copy.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/make_copy.py
-@@ -3,6 +3,13 @@
- # found in the LICENSE file.
-
-
-+import sys
-+
-+# TODO: Remove this once Python2 is obsoleted.
-+if sys.version_info.major != 2:
-+ long = int
-+ basestring = str
-+
- def make_copy(obj, memo=None):
- """
- Creates a copy of the given object, which should be an IR or part of IR.
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py
-@@ -107,11 +107,13 @@ class Namespace(UserDefinedType, WithExtendedAttribute
- for operation_ir in ir.operations
- ])
- self._operation_groups = tuple([
-- OperationGroup(
-- operation_group_ir,
-- filter(lambda x: x.identifier == operation_group_ir.identifier,
-- self._operations),
-- owner=self) for operation_group_ir in ir.operation_groups
-+ OperationGroup(operation_group_ir,
-+ list(
-+ filter(
-+ lambda x: x.identifier == operation_group_ir
-+ .identifier, self._operations)),
-+ owner=self)
-+ for operation_group_ir in ir.operation_groups
- ])
-
- @property
---- src/3rdparty/chromium/third_party/blink/renderer/bindings/templates/dictionary_v8.cc.tmpl.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/templates/dictionary_v8.cc.tmpl
-@@ -59,9 +59,9 @@ void {{v8_class}}::ToImpl(v8::Isolate* isolate, v8::Lo
- DCHECK(executionContext);
- {% endif %}{# has_origin_trial_members #}
- {% endif %}{# members #}
-- {% for origin_trial_test, origin_trial_member_list in members | groupby('origin_trial_feature_name') %}
-+ {% for origin_trial_test, origin_trial_member_list in members | stringifykeygroupby('origin_trial_feature_name') %}
- {% filter origin_trial_enabled(origin_trial_test, "executionContext") %}
-- {% for feature_name, member_list in origin_trial_member_list | groupby('runtime_enabled_feature_name') %}
-+ {% for feature_name, member_list in origin_trial_member_list | stringifykeygroupby('runtime_enabled_feature_name') %}
- {% filter runtime_enabled(feature_name) %}
- {% for member in member_list %}
- v8::Local<v8::Value> {{member.v8_value}};
-@@ -147,9 +147,9 @@ bool toV8{{cpp_class}}(const {{cpp_class}}* impl, v8::
- DCHECK(executionContext);
- {% endif %}{# has_origin_trial_members #}
- {% endif %}{# members #}
-- {% for origin_trial_test, origin_trial_member_list in members | groupby('origin_trial_feature_name') %}
-+ {% for origin_trial_test, origin_trial_member_list in members | stringifykeygroupby('origin_trial_feature_name') %}
- {% filter origin_trial_enabled(origin_trial_test, "executionContext") %}
-- {% for feature_name, member_list in origin_trial_member_list | groupby('runtime_enabled_feature_name') %}
-+ {% for feature_name, member_list in origin_trial_member_list | stringifykeygroupby('runtime_enabled_feature_name') %}
- {% filter runtime_enabled(feature_name) %}
- {% for member in member_list %}
- v8::Local<v8::Value> {{member.v8_value}};
---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py
-@@ -71,7 +71,7 @@ class Expansion(object):
- def enabled_longhands(self):
- include = lambda longhand: not longhand[
- 'runtime_flag'] or self.is_enabled(longhand['runtime_flag'])
-- return filter(include, self._longhands)
-+ return list(filter(include, self._longhands))
-
- @property
- def index(self):
-@@ -87,8 +87,9 @@ def create_expansions(longhands):
-
- def create_expansions(longhands):
- flags = collect_runtime_flags(longhands)
-- expansions = map(lambda mask: Expansion(longhands, flags, mask),
-- range(1 << len(flags)))
-+ expansions = list(
-+ map(lambda mask: Expansion(longhands, flags, mask),
-+ range(1 << len(flags))))
- assert len(expansions) > 0
- # We generate 2^N expansions for N flags, so enforce some limit.
- assert len(flags) <= 4, 'Too many runtime flags for a single shorthand'
-@@ -114,14 +115,14 @@ class StylePropertyShorthandWriter(json5_generator.Wri
-
- self._longhand_dictionary = defaultdict(list)
- for property_ in json5_properties.shorthands:
-- property_['longhand_enum_keys'] = map(enum_key_for_css_property,
-- property_['longhands'])
-- property_['longhand_property_ids'] = map(id_for_css_property,
-- property_['longhands'])
-+ property_['longhand_enum_keys'] = list(
-+ map(enum_key_for_css_property, property_['longhands']))
-+ property_['longhand_property_ids'] = list(
-+ map(id_for_css_property, property_['longhands']))
-
-- longhands = map(
-- lambda name: json5_properties.properties_by_name[name],
-- property_['longhands'])
-+ longhands = list(
-+ map(lambda name: json5_properties.properties_by_name[name],
-+ property_['longhands']))
- property_['expansions'] = create_expansions(longhands)
- for longhand_enum_key in property_['longhand_enum_keys']:
- self._longhand_dictionary[longhand_enum_key].append(property_)
---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py
-@@ -42,8 +42,8 @@ class CSSPropertyInstancesWriter(json5_generator.Write
- aliases = self._css_properties.aliases
-
- # Lists of PropertyClassData.
-- self._property_classes_by_id = map(self.get_class, properties)
-- self._alias_classes_by_id = map(self.get_class, aliases)
-+ self._property_classes_by_id = list(map(self.get_class, properties))
-+ self._alias_classes_by_id = list(map(self.get_class, aliases))
-
- # Sort by enum value.
- self._property_classes_by_id.sort(key=lambda t: t.enum_value)
---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/gperf.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/gperf.py
-@@ -95,7 +95,7 @@ def main():
-
- open(args.output_file, 'wb').write(
- generate_gperf(gperf_path,
-- open(infile).read(), gperf_args))
-+ open(infile).read(), gperf_args).encode('utf-8'))
-
-
- if __name__ == '__main__':
---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/in_file.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/in_file.py
-@@ -66,7 +66,7 @@ class InFile(object):
- self._defaults = defaults
- self._valid_values = copy.deepcopy(
- valid_values if valid_values else {})
-- self._parse(map(str.strip, lines))
-+ self._parse(list(map(str.strip, lines)))
-
- @classmethod
- def load_from_files(self, file_paths, defaults, valid_values,
---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/in_generator.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/in_generator.py
-@@ -32,9 +32,14 @@ import shutil
- import os.path
- import shlex
- import shutil
-+import sys
- import optparse
-
- from in_file import InFile
-+
-+# TODO: Remove this once Python2 is obsoleted.
-+if sys.version_info.major != 2:
-+ basestring = str
-
-
- #########################################################
---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/make_runtime_features.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/make_runtime_features.py
-@@ -138,7 +138,7 @@ class RuntimeFeatureWriter(BaseRuntimeFeatureWriter):
- except Exception:
- # If trouble unpickling, overwrite
- pass
-- with open(os.path.abspath(file_name), 'w') as pickle_file:
-+ with open(os.path.abspath(file_name), 'wb') as pickle_file:
- pickle.dump(features_map, pickle_file)
-
- def _template_inputs(self):
---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl
-@@ -26,7 +26,7 @@ static {{namespace}}FunctionMap* g_{{namespace|lower}}
-
- static {{namespace}}FunctionMap* g_{{namespace|lower}}_constructors = nullptr;
-
--{% for tag in tags|sort if not tag.noConstructor %}
-+{% for tag in tags|sort(attribute='name') if not tag.noConstructor %}
- static {{namespace}}Element* {{namespace}}{{tag.name.to_upper_camel_case()}}Constructor(
- Document& document, const CreateElementFlags flags) {
- {% if tag.runtimeEnabled %}
-@@ -52,7 +52,7 @@ static void Create{{namespace}}FunctionMap() {
- // Empty array initializer lists are illegal [dcl.init.aggr] and will not
- // compile in MSVC. If tags list is empty, add check to skip this.
- static const Create{{namespace}}FunctionMapData data[] = {
-- {% for tag in tags|sort if not tag.noConstructor %}
-+ {% for tag in tags|sort(attribute='name') if not tag.noConstructor %}
- { {{cpp_namespace}}::{{tag|symbol}}Tag, {{namespace}}{{tag.name.to_upper_camel_case()}}Constructor },
- {% endfor %}
- };
---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.cc.tmpl.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.cc.tmpl
-@@ -22,7 +22,7 @@ HTMLTypeMap CreateHTMLTypeMap() {
- const char* name;
- HTMLElementType type;
- } kTags[] = {
-- {% for tag in tags|sort %}
-+ {% for tag in tags|sort(attribute='name') %}
- { "{{tag.name}}", HTMLElementType::k{{tag.js_interface}} },
- {% endfor %}
- };
-@@ -42,7 +42,7 @@ HTMLElementType htmlElementTypeForTag(const AtomicStri
- if (it == html_type_map.end())
- return HTMLElementType::kHTMLUnknownElement;
-
-- {% for tag in tags|sort %}
-+ {% for tag in tags|sort(attribute='name') %}
- {% if tag.runtimeEnabled %}
- if (tagName == "{{tag.name}}") {
- if (!RuntimeEnabledFeatures::{{tag.runtimeEnabled}}Enabled(document->GetExecutionContext())) {
---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl
-@@ -15,7 +15,7 @@ class Document;
- class Document;
-
- // Type checking.
--{% for tag in tags|sort if not tag.multipleTagNames and not tag.noTypeHelpers %}
-+{% for tag in tags|sort(attribute='name') if not tag.multipleTagNames and not tag.noTypeHelpers %}
- class {{tag.interface}};
- template <>
- inline bool IsElementOfType<const {{tag.interface}}>(const Node& node) {
---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/macros.tmpl.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/macros.tmpl
-@@ -25,7 +25,7 @@
-
-
- {% macro trie_leaf(index, object, return_macro, lowercase_data) %}
--{% set name, value = object.items()[0] %}
-+{% set name, value = (object.items()|list)[0] %}
- {% if name|length %}
- if (
- {%- for c in name -%}
-@@ -45,7 +45,7 @@ return {{ return_macro(value) }};
-
-
- {% macro trie_switch(trie, index, return_macro, lowercase_data) %}
--{% if trie|length == 1 and trie.values()[0] is string %}
-+{% if trie|length == 1 and (trie.values()|list)[0] is string %}
- {{ trie_leaf(index, trie, return_macro, lowercase_data) -}}
- {% else %}
- {% if lowercase_data %}
---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/make_qualified_names.h.tmpl.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/make_qualified_names.h.tmpl
-@@ -24,12 +24,12 @@ namespace {{cpp_namespace}} {
- {{symbol_export}}extern const WTF::AtomicString& {{namespace_prefix}}NamespaceURI;
-
- // Tags
--{% for tag in tags|sort %}
-+{% for tag in tags|sort(attribute='name') %}
- {{symbol_export}}extern const blink::{{namespace}}QualifiedName& {{tag|symbol}}Tag;
- {% endfor %}
-
- // Attributes
--{% for attr in attrs|sort %}
-+{% for attr in attrs|sort(attribute='name') %}
- {{symbol_export}}extern const blink::QualifiedName& {{attr|symbol}}Attr;
- {% endfor %}
-
---- src/3rdparty/chromium/third_party/dawn/generator/generator_lib.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/dawn/generator/generator_lib.py
-@@ -201,6 +201,10 @@ def _compute_python_dependencies(root_dir=None):
-
- paths = set()
- for path in module_paths:
-+ # Builtin/namespaced modules may return None for the file path.
-+ if not path:
-+ continue
-+
- path = os.path.abspath(path)
-
- if not path.startswith(root_dir):
---- src/3rdparty/chromium/third_party/devtools-frontend/src/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/devtools-frontend/src/BUILD.gn
-@@ -2,6 +2,8 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
-+import("//build/config/python.gni")
-+
- import("//third_party/blink/public/public_features.gni")
- import("./all_devtools_files.gni")
- import("./all_devtools_modules.gni")
---- src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py
-@@ -45,7 +45,8 @@ def rollup(input_path, output_path, filename, max_size
- ['--format', 'iife', '-n', 'InspectorOverlay'] + ['--input', target] +
- ['--plugin', rollup_plugin],
- stdout=subprocess.PIPE,
-- stderr=subprocess.PIPE)
-+ stderr=subprocess.PIPE,
-+ text=True)
- out, error = rollup_process.communicate()
- if not out:
- raise Exception("rollup failed: " + error)
---- src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py
-@@ -10,7 +10,7 @@ and the application loader into a single script
- and the application loader into a single script.
- """
-
--from cStringIO import StringIO
-+from io import StringIO
- from os import path
- from os.path import join
- import copy
-@@ -145,8 +145,7 @@ class ReleaseBuilder(object):
- resource_content = read_file(path.join(self.application_dir, resource_name))
- if not (resource_name.endswith('.html')
- or resource_name.endswith('md')):
-- resource_content += resource_source_url(resource_name).encode(
-- 'utf-8')
-+ resource_content += resource_source_url(resource_name)
- resource_content = resource_content.replace('\\', '\\\\')
- resource_content = resource_content.replace('\n', '\\n')
- resource_content = resource_content.replace('"', '\\"')
-@@ -173,7 +172,9 @@ class ReleaseBuilder(object):
- def _concatenate_application_script(self, output):
- output.write('Root.allDescriptors.push(...%s);' % self._release_module_descriptors())
- if self.descriptors.extends:
-- output.write('Root.applicationDescriptor.modules.push(...%s);' % json.dumps(self.descriptors.application.values()))
-+ output.write(
-+ 'Root.applicationDescriptor.modules.push(...%s);' %
-+ json.dumps(list(self.descriptors.application.values())))
- else:
- output.write('Root.applicationDescriptor = %s;' % self.descriptors.application_json())
-
---- src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/generate_devtools_grd.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/generate_devtools_grd.py
-@@ -123,7 +123,7 @@ def main(argv):
-
- try:
- os.makedirs(path.join(output_directory, 'Images'))
-- except OSError, e:
-+ except OSError as e:
- if e.errno != errno.EEXIST:
- raise e
-
-@@ -147,7 +147,7 @@ def main(argv):
- shutil.copy(path.join(dirname, filename), path.join(output_directory, 'Images'))
- add_file_to_grd(doc, path.join('Images', filename))
-
-- with open(parsed_args.output_filename, 'w') as output_file:
-+ with open(parsed_args.output_filename, 'wb') as output_file:
- output_file.write(doc.toxml(encoding='UTF-8'))
-
-
---- src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py
-@@ -7,6 +7,8 @@ Utilities for the modular DevTools build.
- Utilities for the modular DevTools build.
- """
-
-+from __future__ import print_function
-+
- import collections
- from os import path
- import os
-@@ -40,7 +42,7 @@ def load_and_parse_json(filename):
- try:
- return json.loads(read_file(filename))
- except:
-- print 'ERROR: Failed to parse %s' % filename
-+ print('ERROR: Failed to parse %s' % filename)
- raise
-
- class Descriptors:
-@@ -57,7 +59,7 @@ class Descriptors:
-
- def application_json(self):
- result = dict()
-- result['modules'] = self.application.values()
-+ result['modules'] = list(self.application.values())
- return json.dumps(result)
-
- def all_compiled_files(self):
---- src/3rdparty/chromium/third_party/jinja2/tests.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/jinja2/tests.py
-@@ -10,7 +10,7 @@ import re
- """
- import operator
- import re
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.runtime import Undefined
- from jinja2._compat import text_type, string_types, integer_types
- import decimal
---- src/3rdparty/chromium/third_party/webrtc/test/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/third_party/webrtc/test/BUILD.gn
-@@ -258,10 +258,6 @@ rtc_library("perf_test") {
- absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
- if (rtc_enable_protobuf) {
- sources += [ "testsupport/perf_test_histogram_writer.cc" ]
-- deps += [
-- "//third_party/catapult/tracing/tracing:histogram",
-- "//third_party/catapult/tracing/tracing:reserved_infos",
-- ]
- } else {
- sources += [ "testsupport/perf_test_histogram_writer_no_protobuf.cc" ]
- }
-@@ -566,7 +562,6 @@ if (rtc_include_tests) {
-
- if (rtc_enable_protobuf) {
- sources += [ "testsupport/perf_test_histogram_writer_unittest.cc" ]
-- deps += [ "//third_party/catapult/tracing/tracing:histogram" ]
- }
-
- data = test_support_unittests_resources
---- src/3rdparty/chromium/tools/binary_size/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/tools/binary_size/BUILD.gn
-@@ -18,7 +18,6 @@ python_library("sizes_py") {
- python_library("sizes_py") {
- testonly = true
- pydeps_file = "sizes.pydeps"
-- data_deps = [ "//third_party/catapult/tracing:convert_chart_json" ]
- }
-
- if (is_linux || is_chromeos) {
---- src/3rdparty/chromium/tools/grit/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/tools/grit/BUILD.gn
-@@ -33,7 +33,6 @@ group("grit_python_unittests") {
- "//testing/scripts/run_isolated_script_test.py",
- "//testing/xvfb.py",
- "//tools/grit/",
-- "//third_party/catapult/third_party/typ/",
- ]
- }
-
---- src/3rdparty/chromium/tools/grit/grit/util.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/tools/grit/grit/util.py
-@@ -211,7 +211,7 @@ def ReadFile(filename, encoding):
- mode = 'rb'
- encoding = None
- else:
-- mode = 'rU'
-+ mode = 'r'
-
- with io.open(abs(filename), mode, encoding=encoding) as f:
- return f.read()
---- src/3rdparty/chromium/tools/gritsettings/resource_ids.spec.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/tools/gritsettings/resource_ids.spec
-@@ -499,12 +499,6 @@
- "content/shell/shell_resources.grd": {
- "includes": [2940],
- },
--
-- # This file is generated during the build.
-- "<(SHARED_INTERMEDIATE_DIR)/content/browser/tracing/tracing_resources.grd": {
-- "META": {"sizes": {"includes": [20],}},
-- "includes": [2960],
-- },
- # END content/ section.
-
- # START ios/web/ section.
---- src/3rdparty/chromium/tools/metrics/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/tools/metrics/BUILD.gn
-@@ -56,7 +56,6 @@ group("metrics_python_tests") {
- "//testing/scripts/common.py",
- "//testing/xvfb.py",
- "//testing/test_env.py",
-- "//third_party/catapult/third_party/typ/",
-
- # Scripts we depend on. Their unit tests are also included.
- "//tools/json_comment_eater/json_comment_eater.py",
---- src/3rdparty/chromium/tools/metrics/ukm/gen_builders.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/tools/metrics/ukm/gen_builders.py
-@@ -48,9 +48,10 @@ def ReadFilteredData(path):
- data = ukm_model.UKM_XML_TYPE.Parse(ukm_file.read())
- event_tag = ukm_model._EVENT_TYPE.tag
- metric_tag = ukm_model._METRIC_TYPE.tag
-- data[event_tag] = filter(ukm_model.IsNotObsolete, data[event_tag])
-+ data[event_tag] = list(filter(ukm_model.IsNotObsolete, data[event_tag]))
- for event in data[event_tag]:
-- event[metric_tag] = filter(ukm_model.IsNotObsolete, event[metric_tag])
-+ event[metric_tag] = list(
-+ filter(ukm_model.IsNotObsolete, event[metric_tag]))
- return data
-
-
---- src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py
-@@ -42,7 +42,7 @@ _STATISTICS_TYPE = models.ObjectNodeType(
- _STATISTICS_TYPE = models.ObjectNodeType(
- 'statistics',
- attributes=[
-- ('export', str, r'^(?i)(|true|false)$'),
-+ ('export', str, r'(?i)^(|true|false)$'),
- ],
- children=[
- models.ChildType(_QUANTILES_TYPE.tag, _QUANTILES_TYPE, multiple=False),
-@@ -94,7 +94,7 @@ _EVENT_TYPE = models.ObjectNodeType(
- 'event',
- attributes=[
- ('name', str, r'^[A-Za-z0-9.]+$'),
-- ('singular', str, r'^(?i)(|true|false)$'),
-+ ('singular', str, r'(?i)^(|true|false)$'),
- ],
- alphabetization=[
- (_OBSOLETE_TYPE.tag, _KEEP_ORDER),
---- src/3rdparty/chromium/tools/perf/chrome_telemetry_build/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/tools/perf/chrome_telemetry_build/BUILD.gn
-@@ -107,7 +107,6 @@ group("telemetry_chrome_test_without_chrome") {
- "//tools/perf/core/", # chrome_telemetry_build/ depends on core/
- ]
- data_deps = [
-- "//third_party/catapult:telemetry_chrome_test_support",
- "//tools/metrics:metrics_python_tests",
- ]
-
-@@ -151,7 +150,5 @@ group("telemetry_chrome_test_without_chrome") {
- "//build/android:devil_chromium_py",
- "//build/android:stack_tools",
- ]
-- } else if (!is_fuchsia) {
-- data_deps += [ "//third_party/catapult/telemetry:bitmaptools" ]
- }
- }
---- src/3rdparty/chromium/tools/perf/core/perfetto_binary_roller/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/tools/perf/core/perfetto_binary_roller/BUILD.gn
-@@ -7,7 +7,6 @@ generate_wrapper("upload_trace_processor") {
- generate_wrapper("upload_trace_processor") {
- testonly = true
- data_deps = [
-- "//third_party/catapult:telemetry_chrome_test_support",
- "//third_party/perfetto/src/trace_processor:trace_processor_shell",
- ]
- data = [
---- src/3rdparty/chromium/tools/polymer/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/tools/polymer/BUILD.gn
-@@ -10,6 +10,5 @@ group("polymer_tools_python_unittests") {
- "//testing/scripts/run_isolated_script_test.py",
- "//testing/xvfb.py",
- "//tools/polymer/",
-- "//third_party/catapult/third_party/typ/",
- ]
- }
---- src/3rdparty/chromium/ui/ozone/generate_constructor_list.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/ui/ozone/generate_constructor_list.py
-@@ -45,12 +45,15 @@ Example Output: ./ui/ozone/generate_constructor_list.p
- } // namespace ui
- """
-
-+try:
-+ from StringIO import StringIO # for Python 2
-+except ImportError:
-+ from io import StringIO # for Python 3
- import optparse
- import os
- import collections
- import re
- import sys
--import string
-
-
- def GetTypedefName(typename):
-@@ -68,7 +71,7 @@ def GetConstructorName(typename, platform):
- This is just "Create" + typename + platform.
- """
-
-- return 'Create' + typename + string.capitalize(platform)
-+ return 'Create' + typename + platform.capitalize()
-
-
- def GenerateConstructorList(out, namespace, export, typenames, platforms,
-@@ -163,12 +166,14 @@ def main(argv):
- sys.exit(1)
-
- # Write to standard output or file specified by --output_cc.
-- out_cc = sys.stdout
-+ out_cc = getattr(sys.stdout, 'buffer', sys.stdout)
- if options.output_cc:
- out_cc = open(options.output_cc, 'wb')
-
-- GenerateConstructorList(out_cc, options.namespace, options.export,
-+ out_cc_str = StringIO()
-+ GenerateConstructorList(out_cc_str, options.namespace, options.export,
- typenames, platforms, includes, usings)
-+ out_cc.write(out_cc_str.getvalue().encode('utf-8'))
-
- if options.output_cc:
- out_cc.close()
---- src/3rdparty/chromium/ui/ozone/generate_ozone_platform_list.py.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/ui/ozone/generate_ozone_platform_list.py
-@@ -49,12 +49,15 @@ Example Output: ./generate_ozone_platform_list.py --de
-
- """
-
-+try:
-+ from StringIO import StringIO # for Python 2
-+except ImportError:
-+ from io import StringIO # for Python 3
- import optparse
- import os
- import collections
- import re
- import sys
--import string
-
-
- def GetConstantName(name):
-@@ -63,7 +66,7 @@ def GetConstantName(name):
- We just capitalize the platform name and prepend "CreateOzonePlatform".
- """
-
-- return 'kPlatform' + string.capitalize(name)
-+ return 'kPlatform' + name.capitalize()
-
-
- def GeneratePlatformListText(out, platforms):
-@@ -149,9 +152,9 @@ def main(argv):
- platforms.insert(0, options.default)
-
- # Write to standard output or file specified by --output_{cc,h}.
-- out_cc = sys.stdout
-- out_h = sys.stdout
-- out_txt = sys.stdout
-+ out_cc = getattr(sys.stdout, 'buffer', sys.stdout)
-+ out_h = getattr(sys.stdout, 'buffer', sys.stdout)
-+ out_txt = getattr(sys.stdout, 'buffer', sys.stdout)
- if options.output_cc:
- out_cc = open(options.output_cc, 'wb')
- if options.output_h:
-@@ -159,9 +162,16 @@ def main(argv):
- if options.output_txt:
- out_txt = open(options.output_txt, 'wb')
-
-- GeneratePlatformListText(out_txt, platforms)
-- GeneratePlatformListHeader(out_h, platforms)
-- GeneratePlatformListSource(out_cc, platforms)
-+ out_txt_str = StringIO()
-+ out_h_str = StringIO()
-+ out_cc_str = StringIO()
-+
-+ GeneratePlatformListText(out_txt_str, platforms)
-+ out_txt.write(out_txt_str.getvalue().encode('utf-8'))
-+ GeneratePlatformListHeader(out_h_str, platforms)
-+ out_h.write(out_h_str.getvalue().encode('utf-8'))
-+ GeneratePlatformListSource(out_cc_str, platforms)
-+ out_cc.write(out_cc_str.getvalue().encode('utf-8'))
-
- if options.output_cc:
- out_cc.close()
---- src/3rdparty/chromium/v8/tools/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/v8/tools/BUILD.gn
-@@ -31,10 +31,6 @@ group("v8_android_test_runner_deps") {
-
- if (is_android && !build_with_chromium) {
- data_deps = [ "//build/android:test_runner_py" ]
-- data = [
-- # This is used by android.py, but not included by test_runner_py above.
-- "//third_party/catapult/devil/devil/android/perf/",
-- ]
- }
- }
-
---- src/3rdparty/chromium/weblayer/shell/BUILD.gn.orig 2023-07-14 13:25:01 UTC
-+++ src/3rdparty/chromium/weblayer/shell/BUILD.gn
-@@ -161,7 +161,6 @@ repack("support_pak") {
- "$root_gen_dir/components/strings/components_locale_settings_en-US.pak",
- "$root_gen_dir/components/strings/components_strings_en-US.pak",
- "$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
-- "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
- "$root_gen_dir/content/content_resources.pak",
- "$root_gen_dir/content/dev_ui_content_resources.pak",
- "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
-@@ -182,7 +181,6 @@ repack("support_pak") {
- "//content:content_resources",
- "//content:dev_ui_content_resources",
- "//content/app/resources",
-- "//content/browser/tracing:resources",
- "//mojo/public/js:resources",
- "//net:net_resources",
- "//third_party/blink/public:resources",
diff --git a/www/qt5-webengine/files/patch-security-rollup b/www/qt5-webengine/files/patch-security-rollup
deleted file mode 100644
index 7cc2fb5af05e..000000000000
--- a/www/qt5-webengine/files/patch-security-rollup
+++ /dev/null
@@ -1,2509 +0,0 @@
-Add security patches to this file.
-
-Addresses the following security issues:
-- CVE-2023-6347
-- CVE-2023-6510
-- Security bug 1488199
-- CVE-2023-6345
-- CVE-2023-6702
-- Security bug 1505632
-- CVE-2024-0222
-- CVE-2024-0333
-- CVE-2024-0518
-- CVE-2024-0519
-- Security bug 1506535
-- CVE-2023-7024
-- CVE-2024-0224
-- Security bug 1511689
-- CVE-2024-0807
-- CVE-2024-0808
-- Security bug 1519980
-- CVE-2024-1077
-- CVE-2024-1060
-- CVE-2024-1283
-
-From 8ca846140881c9480b18bc9645b38fb9ea565ea3 Mon Sep 17 00:00:00 2001
-From: Ken Rockot <rockot@google.com>
-Date: Thu, 16 Nov 2023 23:23:22 +0000
-Subject: [PATCH] [Backport] CVE-2023-6347: Use after free in Mojo
-
-Cherry-pick of patch originally reviewed on
-https://chromium-review.googlesource.com/c/chromium/src/+/5038080:
-Reland: Fix IPC Channel pipe teardown
-
-This is a reland with the new test temporarily disabled on Android
-until it can run without disrupting other tests.
-
-(cherry picked from commit cd4c1f165c16c6d8161b5372ef7f61c715e01a42)
-
-Fixed: 1494461
-Change-Id: If1d83c2dce62020f78dd50abc460973759002a1a
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5015115
-Commit-Queue: Ken Rockot <rockot@google.com>
-Reviewed-by: Robert Sesek <rsesek@chromium.org>
-Cr-Original-Commit-Position: refs/heads/main@{#1221953}
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5038080
-Auto-Submit: Ken Rockot <rockot@google.com>
-Commit-Queue: Daniel Cheng <dcheng@chromium.org>
-Reviewed-by: Daniel Cheng <dcheng@chromium.org>
-Cr-Commit-Position: refs/branch-heads/6045@{#1383}
-Cr-Branched-From: 905e8bdd32d891451d94d1ec71682e989da2b0a1-refs/heads/main@{#1204232}
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/522256
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- chromium/ipc/ipc_mojo_bootstrap.cc | 43 ++++++++++++++++++++++--------
- 1 file changed, 32 insertions(+), 11 deletions(-)
-
-diff --git a/chromium/ipc/ipc_mojo_bootstrap.cc b/chromium/ipc/ipc_mojo_bootstrap.cc
-index 616382cb8f9c..9a9eeef84755 100644
---- src/3rdparty/chromium/ipc/ipc_mojo_bootstrap.cc.orig
-+++ src/3rdparty/chromium/ipc/ipc_mojo_bootstrap.cc
-@@ -702,13 +702,12 @@ class ChannelAssociatedGroupController
- // handle.
- DCHECK(!endpoint->client());
- DCHECK(endpoint->peer_closed());
-- MarkClosedAndMaybeRemove(endpoint);
-+ MarkClosed(endpoint);
- } else {
-- MarkPeerClosedAndMaybeRemove(endpoint);
-+ MarkPeerClosed(endpoint);
- }
- }
--
-- DCHECK(endpoints_.empty());
-+ endpoints_.clear();
-
- GetMemoryDumpProvider().RemoveController(this);
- }
-@@ -755,15 +754,19 @@ class ChannelAssociatedGroupController
- base::AutoLock locker(lock_);
- encountered_error_ = true;
-
-+ std::vector<uint32_t> endpoints_to_remove;
- std::vector<scoped_refptr<Endpoint>> endpoints_to_notify;
- for (auto iter = endpoints_.begin(); iter != endpoints_.end();) {
- Endpoint* endpoint = iter->second.get();
- ++iter;
-
-- if (endpoint->client())
-+ if (endpoint->client()) {
- endpoints_to_notify.push_back(endpoint);
-+ }
-
-- MarkPeerClosedAndMaybeRemove(endpoint);
-+ if (MarkPeerClosed(endpoint)) {
-+ endpoints_to_remove.push_back(endpoint->id());
-+ }
- }
-
- for (auto& endpoint : endpoints_to_notify) {
-@@ -772,6 +775,10 @@ class ChannelAssociatedGroupController
- if (endpoint->client())
- NotifyEndpointOfError(endpoint.get(), false /* force_async */);
- }
-+
-+ for (uint32_t id : endpoints_to_remove) {
-+ endpoints_.erase(id);
-+ }
- }
-
- void NotifyEndpointOfError(Endpoint* endpoint, bool force_async) {
-@@ -806,19 +813,33 @@ class ChannelAssociatedGroupController
- NotifyEndpointOfError(endpoint, false /* force_async */);
- }
-
-- void MarkClosedAndMaybeRemove(Endpoint* endpoint) {
-+ // Marks `endpoint` as closed and returns true if and only if its peer was
-+ // also already closed.
-+ bool MarkClosed(Endpoint* endpoint) {
- lock_.AssertAcquired();
- endpoint->set_closed();
-- if (endpoint->closed() && endpoint->peer_closed())
-- endpoints_.erase(endpoint->id());
-+ return endpoint->peer_closed();
- }
-
-- void MarkPeerClosedAndMaybeRemove(Endpoint* endpoint) {
-+ // Marks `endpoint` as having a closed peer and returns true if and only if
-+ // `endpoint` itself was also already closed.
-+ bool MarkPeerClosed(Endpoint* endpoint) {
- lock_.AssertAcquired();
- endpoint->set_peer_closed();
- endpoint->SignalSyncMessageEvent();
-- if (endpoint->closed() && endpoint->peer_closed())
-+ return endpoint->closed();
-+ }
-+
-+ void MarkClosedAndMaybeRemove(Endpoint* endpoint) {
-+ if (MarkClosed(endpoint)) {
- endpoints_.erase(endpoint->id());
-+ }
-+ }
-+
-+ void MarkPeerClosedAndMaybeRemove(Endpoint* endpoint) {
-+ if (MarkPeerClosed(endpoint)) {
-+ endpoints_.erase(endpoint->id());
-+ }
- }
-
- Endpoint* FindOrInsertEndpoint(mojo::InterfaceId id, bool* inserted) {
-From 4d095ba080045a255cb93ecadb9f3358fdc7cd80 Mon Sep 17 00:00:00 2001
-From: Jordan Bayles <jophba@chromium.org>
-Date: Fri, 6 Oct 2023 23:50:59 +0000
-Subject: [PATCH] [Backport] CVE-2023-6510: Use after free in Media Capture
-
-Manual backport of patch originally reviewed on
-Fix UaF in WebContentsFrameTracker
-
-This patch fixes a use-after-free by moving to a base::WeakPtr
-instead of a raw_ptr. Looking at the callstack in the referenced bug, what is clearly happening is that the frame tracker is deleted AFTER the capture device. I believe that this is due to the MouseCursorOverlayController being deleted through the DeleteOnUIThread destructor, which, if you are already on the UI thread, is synchronous:
-
-https://source.chromium.org/chromium/chromium/src/+/main:content/public/browser/browser_thread.h;l=141?q=BrowserThread::DeleteOnThread&ss=chromium%2Fchromium%2Fsrc
-
-In comparison, the WebContentsFrameTracker is implemented using base::SequenceBound, which ends up calling an internal destruct method that ALWAYS posts back a task:
-
-https://source.chromium.org/chromium/chromium/src/+/main:base/threading/sequence_bound_internal.h;drc=f5bdc89c7395ed24f1b8d196a3bdd6232d5bf771;l=122
-
-So, this bug is ultimately caused by the simple fact that base::SequenceBound does NOT have an optimization to not post a deletion task if we are already running on that sequence. There may be a good followup task here to change either DeleteOnThread or base::SequenceBound to have the same behavior, however I think this change a good first step.
-
-Bug: 1480152
-Change-Id: Iee2d41e66b10403d6c78547bcbe84d2454236d5b
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4908770
-Reviewed-by: Mark Foltz <mfoltz@chromium.org>
-Commit-Queue: Jordan Bayles <jophba@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1206698}
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/523700
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- .../web_contents_video_capture_device.cc | 19 ++++++++++++-------
- 1 file changed, 12 insertions(+), 7 deletions(-)
-
-diff --git a/chromium/content/browser/media/capture/web_contents_video_capture_device.cc b/chromium/content/browser/media/capture/web_contents_video_capture_device.cc
-index 0093df22c2b2..6100fe816784 100644
---- src/3rdparty/chromium/content/browser/media/capture/web_contents_video_capture_device.cc.orig
-+++ src/3rdparty/chromium/content/browser/media/capture/web_contents_video_capture_device.cc
-@@ -41,7 +41,7 @@ class WebContentsVideoCaptureDevice::FrameTracker
- int main_render_frame_id)
- : device_(std::move(device)),
- device_task_runner_(base::ThreadTaskRunnerHandle::Get()),
-- cursor_controller_(cursor_controller) {
-+ cursor_controller_(cursor_controller->GetWeakPtr()) {
- DCHECK(device_task_runner_);
- DCHECK(cursor_controller_);
-
-@@ -184,7 +184,9 @@ class WebContentsVideoCaptureDevice::FrameTracker
- // Note: MouseCursorOverlayController runs on the UI thread. It's also
- // important that SetTargetView() be called in the current stack while
- // |native_view| is known to be a valid pointer. http://crbug.com/818679
-- cursor_controller_->SetTargetView(native_view);
-+ if (cursor_controller_) {
-+ cursor_controller_->SetTargetView(native_view);
-+ }
- }
- } else {
- device_task_runner_->PostTask(
-@@ -192,7 +194,9 @@ class WebContentsVideoCaptureDevice::FrameTracker
- base::BindOnce(
- &WebContentsVideoCaptureDevice::OnTargetPermanentlyLost,
- device_));
-- cursor_controller_->SetTargetView(gfx::NativeView());
-+ if (cursor_controller_) {
-+ cursor_controller_->SetTargetView(gfx::NativeView());
-+ }
- }
- }
-
-@@ -200,10 +204,11 @@ class WebContentsVideoCaptureDevice::FrameTracker
- const base::WeakPtr<WebContentsVideoCaptureDevice> device_;
- const scoped_refptr<base::SingleThreadTaskRunner> device_task_runner_;
-
-- // Owned by FrameSinkVideoCaptureDevice. This will be valid for the life of
-- // FrameTracker because the FrameTracker deleter task will be posted to the UI
-- // thread before the MouseCursorOverlayController deleter task.
-- MouseCursorOverlayController* const cursor_controller_;
-+ // Owned by FrameSinkVideoCaptureDevice. This may only be accessed on the
-+ // UI thread. This is not guaranteed to be valid and must be checked before
-+ // use.
-+ // https://crbug.com/1480152
-+ const base::WeakPtr<MouseCursorOverlayController> cursor_controller_;
-
- viz::FrameSinkId target_frame_sink_id_;
- gfx::NativeView target_native_view_ = gfx::NativeView();
-From 6a382d96ac3becf92f28f8549318390193da1ddd Mon Sep 17 00:00:00 2001
-From: pthier <pthier@chromium.org>
-Date: Tue, 24 Oct 2023 13:28:22 +0200
-Subject: [PATCH] [Backport] Security bug 1488199 (1/2)
-
-Manual backport of patch originally reviewed on
-https://chromium-review.googlesource.com/c/v8/v8/+/4971832:
-[regexp] Fix stack check in native code when interrupt was requested
-
-When an interrupt was requested at the time we hit the stack check, the
-check to ensure we have enough space for local variables was skipped.
-
-Bug: chromium:1488199
-Change-Id: I95d82fe737420d2ef43c1ace35560cfd5860829b
-Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4971832
-Commit-Queue: Patrick Thier <pthier@chromium.org>
-Reviewed-by: Jakob Linke <jgruber@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#90560}
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/523701
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- .../regexp/arm/regexp-macro-assembler-arm.cc | 22 +++++++-----
- .../regexp/arm/regexp-macro-assembler-arm.h | 5 +--
- .../arm64/regexp-macro-assembler-arm64.cc | 21 ++++++-----
- .../arm64/regexp-macro-assembler-arm64.h | 6 ++--
- .../ia32/regexp-macro-assembler-ia32.cc | 19 ++++++----
- .../regexp/ia32/regexp-macro-assembler-ia32.h | 5 +--
- .../v8/src/regexp/regexp-macro-assembler.cc | 5 +--
- .../v8/src/regexp/regexp-macro-assembler.h | 2 +-
- .../regexp/x64/regexp-macro-assembler-x64.cc | 35 ++++++++++++-------
- .../regexp/x64/regexp-macro-assembler-x64.h | 4 +--
- 10 files changed, 78 insertions(+), 46 deletions(-)
-
-diff --git a/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc b/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc
-index 78b586e265d0..099fc62fa07b 100644
---- src/3rdparty/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc.orig
-+++ src/3rdparty/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc
-@@ -670,11 +670,13 @@ Handle<HeapObject> RegExpMacroAssemblerARM::GetCode(Handle<String> source) {
- __ mov(r0, Operand(stack_limit));
- __ ldr(r0, MemOperand(r0));
- __ sub(r0, sp, r0, SetCC);
-+ Operand extra_space_for_variables(num_registers_ * kPointerSize);
-+
- // Handle it if the stack pointer is already below the stack limit.
- __ b(ls, &stack_limit_hit);
- // Check if there is room for the variable number of registers above
- // the stack limit.
-- __ cmp(r0, Operand(num_registers_ * kPointerSize));
-+ __ cmp(r0, extra_space_for_variables);
- __ b(hs, &stack_ok);
- // Exit with OutOfMemory exception. There is not enough space on the stack
- // for our working registers.
-@@ -682,7 +684,7 @@ Handle<HeapObject> RegExpMacroAssemblerARM::GetCode(Handle<String> source) {
- __ jmp(&return_r0);
-
- __ bind(&stack_limit_hit);
-- CallCheckStackGuardState();
-+ CallCheckStackGuardState(extra_space_for_variables);
- __ cmp(r0, Operand::Zero());
- // If returned value is non-zero, we exit with the returned value as result.
- __ b(ne, &return_r0);
-@@ -1048,16 +1050,18 @@ void RegExpMacroAssemblerARM::WriteStackPointerToRegister(int reg) {
-
- // Private methods:
-
--void RegExpMacroAssemblerARM::CallCheckStackGuardState() {
-+void RegExpMacroAssemblerARM::CallCheckStackGuardState(Operand extra_space) {
- DCHECK(!isolate()->IsGeneratingEmbeddedBuiltins());
- DCHECK(!masm_->options().isolate_independent_code);
-
-- __ PrepareCallCFunction(3);
-+ __ PrepareCallCFunction(4);
-
-+ // Extra space for variables to consider in stack check.
-+ __ mov(arg_reg_4, extra_space);
- // RegExp code frame pointer.
-- __ mov(r2, frame_pointer());
-+ __ mov(arg_reg3, frame_pointer());
- // Code of self.
-- __ mov(r1, Operand(masm_->CodeObject()));
-+ __ mov(arg_reg2, Operand(masm_->CodeObject()));
-
- // We need to make room for the return address on the stack.
- int stack_alignment = base::OS::ActivationFrameAlignment();
-@@ -1101,7 +1105,8 @@ static T* frame_entry_address(Address re_frame, int frame_offset) {
-
- int RegExpMacroAssemblerARM::CheckStackGuardState(Address* return_address,
- Address raw_code,
-- Address re_frame) {
-+ Address re_frame,
-+ uintptr_t extra_space) {
- Code re_code = Code::cast(Object(raw_code));
- return NativeRegExpMacroAssembler::CheckStackGuardState(
- frame_entry<Isolate*>(re_frame, kIsolate),
-@@ -1110,7 +1115,8 @@ int RegExpMacroAssemblerARM::CheckStackGuardState(Address* return_address,
- return_address, re_code,
- frame_entry_address<Address>(re_frame, kInputString),
- frame_entry_address<const byte*>(re_frame, kInputStart),
-- frame_entry_address<const byte*>(re_frame, kInputEnd));
-+ frame_entry_address<const byte*>(re_frame, kInputEnd),
-+ extra_space);
- }
-
-
-diff --git a/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.h b/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.h
-index 910e5c46079a..114120755fcb 100644
---- src/3rdparty/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.h.orig
-+++ src/3rdparty/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.h
-@@ -89,7 +89,7 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM
- // returning.
- // {raw_code} is an Address because this is called via ExternalReference.
- static int CheckStackGuardState(Address* return_address, Address raw_code,
-- Address re_frame);
-+ Address re_frame, uintptr_t extra_space);
-
- private:
- // Offsets from frame_pointer() of function parameters and stored registers.
-@@ -134,7 +134,8 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM
-
-
- // Generate a call to CheckStackGuardState.
-- void CallCheckStackGuardState();
-+ void CallCheckStackGuardState(
-+ Operand extra_space_for_variables = Operand::Zero());
-
- // The ebp-relative location of a regexp register.
- MemOperand register_location(int register_index);
-diff --git a/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc b/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc
-index ac33f8631ffe..1e5342dd42e5 100644
---- src/3rdparty/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc.orig
-+++ src/3rdparty/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc
-@@ -781,13 +781,14 @@ Handle<HeapObject> RegExpMacroAssemblerARM64::GetCode(Handle<String> source) {
- __ Mov(x10, stack_limit);
- __ Ldr(x10, MemOperand(x10));
- __ Subs(x10, sp, x10);
-+ Operand extra_space_for_variables(num_wreg_to_allocate * kWRegSize);
-
- // Handle it if the stack pointer is already below the stack limit.
- __ B(ls, &stack_limit_hit);
-
- // Check if there is room for the variable number of registers above
- // the stack limit.
-- __ Cmp(x10, num_wreg_to_allocate * kWRegSize);
-+ __ Cmp(x10, extra_space_for_variables);
- __ B(hs, &stack_ok);
-
- // Exit with OutOfMemory exception. There is not enough space on the stack
-@@ -796,7 +797,7 @@ Handle<HeapObject> RegExpMacroAssemblerARM64::GetCode(Handle<String> source) {
- __ B(&return_w0);
-
- __ Bind(&stack_limit_hit);
-- CallCheckStackGuardState(x10);
-+ CallCheckStackGuardState(x10, extra_space_for_variables);
- // If returned value is non-zero, we exit with the returned value as result.
- __ Cbnz(w0, &return_w0);
-
-@@ -1332,13 +1333,14 @@ static T* frame_entry_address(Address re_frame, int frame_offset) {
-
- int RegExpMacroAssemblerARM64::CheckStackGuardState(
- Address* return_address, Address raw_code, Address re_frame,
-- int start_index, const byte** input_start, const byte** input_end) {
-+ int start_index, const byte** input_start, const byte** input_end,
-+ uintptr_t extra_space) {
- Code re_code = Code::cast(Object(raw_code));
- return NativeRegExpMacroAssembler::CheckStackGuardState(
- frame_entry<Isolate*>(re_frame, kIsolate), start_index,
- static_cast<RegExp::CallOrigin>(frame_entry<int>(re_frame, kDirectCall)),
- return_address, re_code, frame_entry_address<Address>(re_frame, kInput),
-- input_start, input_end);
-+ input_start, input_end, extra_space);
- }
-
-
-@@ -1357,21 +1359,24 @@ void RegExpMacroAssemblerARM64::CheckPosition(int cp_offset,
-
- // Private methods:
-
--void RegExpMacroAssemblerARM64::CallCheckStackGuardState(Register scratch) {
-+void RegExpMacroAssemblerARM64::CallCheckStackGuardState(Register scratch,
-+ Operand extra_space) {
- DCHECK(!isolate()->IsGeneratingEmbeddedBuiltins());
- DCHECK(!masm_->options().isolate_independent_code);
-
- // Allocate space on the stack to store the return address. The
- // CheckStackGuardState C++ function will override it if the code
-- // moved. Allocate extra space for 2 arguments passed by pointers.
-- // AAPCS64 requires the stack to be 16 byte aligned.
-+ // moved. Allocate extra space for 3 arguments (2 for input start/end and 1
-+ // for gap). AAPCS64 requires the stack to be 16 byte aligned.
- int alignment = masm_->ActivationFrameAlignment();
- DCHECK_EQ(alignment % 16, 0);
- int align_mask = (alignment / kXRegSize) - 1;
-- int xreg_to_claim = (3 + align_mask) & ~align_mask;
-+ int xreg_to_claim = (4 + align_mask) & ~align_mask;
-
- __ Claim(xreg_to_claim);
-
-+ __ Mov(x0, extra_space);
-+ __ Poke(x0, 3 * kSystemPointerSize);
- // CheckStackGuardState needs the end and start addresses of the input string.
- __ Poke(input_end(), 2 * kSystemPointerSize);
- __ Add(x5, sp, 2 * kSystemPointerSize);
-diff --git a/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.h b/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.h
-index aeb49aa9fff3..e4c4b0ac34f3 100644
---- src/3rdparty/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.h.orig
-+++ src/3rdparty/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.h
-@@ -97,7 +97,8 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM64
- static int CheckStackGuardState(Address* return_address, Address raw_code,
- Address re_frame, int start_offset,
- const byte** input_start,
-- const byte** input_end);
-+ const byte** input_end,
-+ uintptr_t extra_space);
-
- private:
- // Above the frame pointer - Stored registers and stack passed parameters.
-@@ -145,7 +146,8 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM64
- void CheckStackLimit();
-
- // Generate a call to CheckStackGuardState.
-- void CallCheckStackGuardState(Register scratch);
-+ void CallCheckStackGuardState(Register scratch,
-+ Operand extra_space = Operand(0));
-
- // Location of a 32 bit position register.
- MemOperand register_location(int register_index);
-diff --git a/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.cc b/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.cc
-index 2135e977a742..d5fbd960675e 100644
---- src/3rdparty/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.cc.orig
-+++ src/3rdparty/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.cc
-@@ -700,11 +700,13 @@ Handle<HeapObject> RegExpMacroAssemblerIA32::GetCode(Handle<String> source) {
- ExternalReference::address_of_jslimit(isolate());
- __ mov(ecx, esp);
- __ sub(ecx, StaticVariable(stack_limit));
-+ Immediate extra_space_for_variables(num_registers_ * kSystemPointerSize);
-+
- // Handle it if the stack pointer is already below the stack limit.
- __ j(below_equal, &stack_limit_hit);
- // Check if there is room for the variable number of registers above
- // the stack limit.
-- __ cmp(ecx, num_registers_ * kSystemPointerSize);
-+ __ cmp(ecx, extra_space_for_variables);
- __ j(above_equal, &stack_ok);
- // Exit with OutOfMemory exception. There is not enough space on the stack
- // for our working registers.
-@@ -712,7 +714,7 @@ Handle<HeapObject> RegExpMacroAssemblerIA32::GetCode(Handle<String> source) {
- __ jmp(&return_eax);
-
- __ bind(&stack_limit_hit);
-- CallCheckStackGuardState(ebx);
-+ CallCheckStackGuardState(ebx, extra_space_for_variables);
- __ or_(eax, eax);
- // If returned value is non-zero, we exit with the returned value as result.
- __ j(not_zero, &return_eax);
-@@ -1080,9 +1082,12 @@ void RegExpMacroAssemblerIA32::WriteStackPointerToRegister(int reg) {
-
- // Private methods:
-
--void RegExpMacroAssemblerIA32::CallCheckStackGuardState(Register scratch) {
-- static const int num_arguments = 3;
-+void RegExpMacroAssemblerIA32::CallCheckStackGuardState(Register scratch,
-+ Immediate extra_space) {
-+ static const int num_arguments = 4;
- __ PrepareCallCFunction(num_arguments, scratch);
-+ // Extra space for variables.
-+ __ mov(Operand(esp, 3 * kSystemPointerSize), extra_space);
- // RegExp code frame pointer.
- __ mov(Operand(esp, 2 * kSystemPointerSize), ebp);
- // Code of self.
-@@ -1113,7 +1118,8 @@ static T* frame_entry_address(Address re_frame, int frame_offset) {
-
- int RegExpMacroAssemblerIA32::CheckStackGuardState(Address* return_address,
- Address raw_code,
-- Address re_frame) {
-+ Address re_frame,
-+ uintptr_t extra_space) {
- Code re_code = Code::cast(Object(raw_code));
- return NativeRegExpMacroAssembler::CheckStackGuardState(
- frame_entry<Isolate*>(re_frame, kIsolate),
-@@ -1122,7 +1128,8 @@ int RegExpMacroAssemblerIA32::CheckStackGuardState(Address* return_address,
- return_address, re_code,
- frame_entry_address<Address>(re_frame, kInputString),
- frame_entry_address<const byte*>(re_frame, kInputStart),
-- frame_entry_address<const byte*>(re_frame, kInputEnd));
-+ frame_entry_address<const byte*>(re_frame, kInputEnd),
-+ extra_space);
- }
-
-
-diff --git a/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.h b/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.h
-index a30bff29a15c..620e7fb2982e 100644
---- src/3rdparty/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.h.orig
-+++ src/3rdparty/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.h
-@@ -88,7 +88,7 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerIA32
- // returning.
- // {raw_code} is an Address because this is called via ExternalReference.
- static int CheckStackGuardState(Address* return_address, Address raw_code,
-- Address re_frame);
-+ Address re_frame, uintptr_t extra_space);
-
- private:
- Operand StaticVariable(const ExternalReference& ext);
-@@ -133,7 +133,8 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerIA32
- void CheckStackLimit();
-
- // Generate a call to CheckStackGuardState.
-- void CallCheckStackGuardState(Register scratch);
-+ void CallCheckStackGuardState(Register scratch,
-+ Immediate extra_space = Immediate(0));
-
- // The ebp-relative location of a regexp register.
- Operand register_location(int register_index);
-diff --git a/chromium/v8/src/regexp/regexp-macro-assembler.cc b/chromium/v8/src/regexp/regexp-macro-assembler.cc
-index cf4346309eb2..009027c10398 100644
---- src/3rdparty/chromium/v8/src/regexp/regexp-macro-assembler.cc.orig
-+++ src/3rdparty/chromium/v8/src/regexp/regexp-macro-assembler.cc
-@@ -168,14 +168,15 @@ bool NativeRegExpMacroAssembler::CanReadUnaligned() {
- int NativeRegExpMacroAssembler::CheckStackGuardState(
- Isolate* isolate, int start_index, RegExp::CallOrigin call_origin,
- Address* return_address, Code re_code, Address* subject,
-- const byte** input_start, const byte** input_end) {
-+ const byte** input_start, const byte** input_end,
-+ uintptr_t gap) {
- DisallowHeapAllocation no_gc;
- Address old_pc = PointerAuthentication::AuthenticatePC(return_address, 0);
- DCHECK_LE(re_code.raw_instruction_start(), old_pc);
- DCHECK_LE(old_pc, re_code.raw_instruction_end());
-
- StackLimitCheck check(isolate);
-- bool js_has_overflowed = check.JsHasOverflowed();
-+ bool js_has_overflowed = check.JsHasOverflowed(gap);
-
- if (call_origin == RegExp::CallOrigin::kFromJs) {
- // Direct calls from JavaScript can be interrupted in two ways:
-diff --git a/chromium/v8/src/regexp/regexp-macro-assembler.h b/chromium/v8/src/regexp/regexp-macro-assembler.h
-index 52465610cb66..da233d3c73df 100644
---- src/3rdparty/chromium/v8/src/regexp/regexp-macro-assembler.h.orig
-+++ src/3rdparty/chromium/v8/src/regexp/regexp-macro-assembler.h
-@@ -261,7 +261,7 @@ class NativeRegExpMacroAssembler: public RegExpMacroAssembler {
- RegExp::CallOrigin call_origin,
- Address* return_address, Code re_code,
- Address* subject, const byte** input_start,
-- const byte** input_end);
-+ const byte** input_end, uintptr_t gap);
-
- // Byte map of one byte characters with a 0xff if the character is a word
- // character (digit, letter or underscore) and 0x00 otherwise.
-diff --git a/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.cc b/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.cc
-index da0397689fba..6ae1114f24ef 100644
---- src/3rdparty/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.cc.orig
-+++ src/3rdparty/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.cc
-@@ -736,11 +736,13 @@ Handle<HeapObject> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
- __ movq(rcx, rsp);
- __ Move(kScratchRegister, stack_limit);
- __ subq(rcx, Operand(kScratchRegister, 0));
-+ Immediate extra_space_for_variables(num_registers_ * kSystemPointerSize);
-+
- // Handle it if the stack pointer is already below the stack limit.
- __ j(below_equal, &stack_limit_hit);
- // Check if there is room for the variable number of registers above
- // the stack limit.
-- __ cmpq(rcx, Immediate(num_registers_ * kSystemPointerSize));
-+ __ cmpq(rcx, extra_space_for_variables);
- __ j(above_equal, &stack_ok);
- // Exit with OutOfMemory exception. There is not enough space on the stack
- // for our working registers.
-@@ -749,7 +751,8 @@ Handle<HeapObject> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
-
- __ bind(&stack_limit_hit);
- __ Move(code_object_pointer(), masm_.CodeObject());
-- CallCheckStackGuardState(); // Preserves no registers beside rbp and rsp.
-+ // CallCheckStackGuardState preserves no registers beside rbp and rsp.
-+ CallCheckStackGuardState(extra_space_for_variables);
- __ testq(rax, rax);
- // If returned value is non-zero, we exit with the returned value as result.
- __ j(not_zero, &return_rax);
-@@ -1147,27 +1150,31 @@ void RegExpMacroAssemblerX64::WriteStackPointerToRegister(int reg) {
-
- // Private methods:
-
--void RegExpMacroAssemblerX64::CallCheckStackGuardState() {
-+void RegExpMacroAssemblerX64::CallCheckStackGuardState(Immediate extra_space) {
- // This function call preserves no register values. Caller should
- // store anything volatile in a C call or overwritten by this function.
-- static const int num_arguments = 3;
-+ static const int num_arguments = 4;
- __ PrepareCallCFunction(num_arguments);
- #ifdef V8_TARGET_OS_WIN
-- // Second argument: Code of self. (Do this before overwriting r8).
-- __ movq(rdx, code_object_pointer());
-+ // Fourth argument: Extra space for variables.
-+ __ movq(arg_reg_4, extra_space);
-+ // Second argument: Code of self. (Do this before overwriting r8 (arg_reg_3)).
-+ __ movq(arg_reg_2, code_object_pointer());
- // Third argument: RegExp code frame pointer.
-- __ movq(r8, rbp);
-+ __ movq(arg_reg_3, rbp);
- // First argument: Next address on the stack (will be address of
- // return address).
-- __ leaq(rcx, Operand(rsp, -kSystemPointerSize));
-+ __ leaq(arg_reg_1, Operand(rsp, -kSystemPointerSize));
- #else
-+ // Fourth argument: Extra space for variables.
-+ __ movq(arg_reg_4, extra_space);
- // Third argument: RegExp code frame pointer.
-- __ movq(rdx, rbp);
-+ __ movq(arg_reg_3, rbp);
- // Second argument: Code of self.
-- __ movq(rsi, code_object_pointer());
-+ __ movq(arg_reg_2, code_object_pointer());
- // First argument: Next address on the stack (will be address of
- // return address).
-- __ leaq(rdi, Operand(rsp, -kSystemPointerSize));
-+ __ leaq(arg_reg_1, Operand(rsp, -kSystemPointerSize));
- #endif
- ExternalReference stack_check =
- ExternalReference::re_check_stack_guard_state(isolate());
-@@ -1189,7 +1196,8 @@ static T* frame_entry_address(Address re_frame, int frame_offset) {
-
- int RegExpMacroAssemblerX64::CheckStackGuardState(Address* return_address,
- Address raw_code,
-- Address re_frame) {
-+ Address re_frame,
-+ uintptr_t extra_space) {
- Code re_code = Code::cast(Object(raw_code));
- return NativeRegExpMacroAssembler::CheckStackGuardState(
- frame_entry<Isolate*>(re_frame, kIsolate),
-@@ -1198,7 +1206,8 @@ int RegExpMacroAssemblerX64::CheckStackGuardState(Address* return_address,
- return_address, re_code,
- frame_entry_address<Address>(re_frame, kInputString),
- frame_entry_address<const byte*>(re_frame, kInputStart),
-- frame_entry_address<const byte*>(re_frame, kInputEnd));
-+ frame_entry_address<const byte*>(re_frame, kInputEnd),
-+ extra_space);
- }
-
-
-diff --git a/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.h b/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.h
-index ea4d45edba83..6e5dcd18c286 100644
---- src/3rdparty/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.h.orig
-+++ src/3rdparty/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.h
-@@ -82,7 +82,7 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerX64
- // returning.
- // {raw_code} is an Address because this is called via ExternalReference.
- static int CheckStackGuardState(Address* return_address, Address raw_code,
-- Address re_frame);
-+ Address re_frame, uintptr_t extra_space);
-
- private:
- // Offsets from rbp of function parameters and stored registers.
-@@ -166,7 +166,7 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerX64
- void CheckStackLimit();
-
- // Generate a call to CheckStackGuardState.
-- void CallCheckStackGuardState();
-+ void CallCheckStackGuardState(Immediate extra_space = Immediate(0));
-
- // The rbp-relative location of a regexp register.
- Operand register_location(int register_index);
-From a3a63cf72f11a9e1a40fd076dea0ce8f532251ba Mon Sep 17 00:00:00 2001
-From: pthier <pthier@chromium.org>
-Date: Mon, 30 Oct 2023 11:59:09 +0100
-Subject: [PATCH] [Backport] Security bug 1488199 (2/2)
-
-Manual backport of patch originally reviewed on
-https://chromium-review.googlesource.com/c/v8/v8/+/4987306:
-[regexp][arm64] Fix stack check extra space argument
-
-Pass argument in register instead of the stack.
-
-Bug: chromium:1488199, v8:14415
-Change-Id: Ic9967c9f2ca5da1981a0138ddb5f0335ab7f1425
-Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4987306
-Commit-Queue: Patrick Thier <pthier@chromium.org>
-Reviewed-by: Camillo Bruni <cbruni@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#90669}
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/523702
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- .../v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc | 9 ++++-----
- 1 file changed, 4 insertions(+), 5 deletions(-)
-
-diff --git a/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc b/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc
-index 1e5342dd42e..aaab0c52344 100644
---- src/3rdparty/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc.orig
-+++ src/3rdparty/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc
-@@ -1366,17 +1366,16 @@ void RegExpMacroAssemblerARM64::CallCheckStackGuardState(Register scratch,
-
- // Allocate space on the stack to store the return address. The
- // CheckStackGuardState C++ function will override it if the code
-- // moved. Allocate extra space for 3 arguments (2 for input start/end and 1
-- // for gap). AAPCS64 requires the stack to be 16 byte aligned.
-+ // moved. Allocate extra space for 2 arguments passed by pointers.
-+ // AAPCS64 requires the stack to be 16 byte aligned.
- int alignment = masm_->ActivationFrameAlignment();
- DCHECK_EQ(alignment % 16, 0);
- int align_mask = (alignment / kXRegSize) - 1;
-- int xreg_to_claim = (4 + align_mask) & ~align_mask;
-+ int xreg_to_claim = (3 + align_mask) & ~align_mask;
-
- __ Claim(xreg_to_claim);
-
-- __ Mov(x0, extra_space);
-- __ Poke(x0, 3 * kSystemPointerSize);
-+ __ Mov(x6, extra_space);
- // CheckStackGuardState needs the end and start addresses of the input string.
- __ Poke(input_end(), 2 * kSystemPointerSize);
- __ Add(x5, sp, 2 * kSystemPointerSize);
-From 7eb931bc199e72fbf95aed22c9dd370269862c6c Mon Sep 17 00:00:00 2001
-From: Michal Klocek <michal.klocek@qt.io>
-Date: Mon, 8 Jan 2024 11:23:07 +0100
-Subject: [PATCH] [Backport] CVE-2023-6345: Integer overflow in Skia
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Cherry-pick of patch originally reviewed on
-https://skia-review.googlesource.com/c/skia/+/782936:
-Avoid combining extremely large meshes.
-
-Bug: chromium:1505053
-
-Fixes: QTBUG-120589
-Change-Id: I42f2ff872bbf054686ec7af0cc85ff63055fcfbf
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/528729
-Reviewed-by: Michael Brüning <michael.bruning@qt.io>
----
- chromium/third_party/skia/src/gpu/ops/GrDrawVerticesOp.cpp | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/chromium/third_party/skia/src/gpu/ops/GrDrawVerticesOp.cpp b/chromium/third_party/skia/src/gpu/ops/GrDrawVerticesOp.cpp
-index 0a80e674325f..e50293b4dfe9 100644
---- src/3rdparty/chromium/third_party/skia/src/gpu/ops/GrDrawVerticesOp.cpp
-+++ src/3rdparty/chromium/third_party/skia/src/gpu/ops/GrDrawVerticesOp.cpp
-@@ -757,7 +757,11 @@ GrOp::CombineResult DrawVerticesOp::onCombineIfPossible(GrOp* t, GrRecordingCont
- return CombineResult::kCannotCombine;
- }
-
-- if (fVertexCount + that->fVertexCount > SkTo<int>(UINT16_MAX)) {
-+ if (fVertexCount > INT32_MAX - that->fVertexCount) {
-+ return CombineResult::kCannotCombine;
-+ }
-+
-+ if (fVertexCount > SkTo<int>(UINT16_MAX) - that->fVertexCount) {
- return CombineResult::kCannotCombine;
- }
-
-From 31c7c9445955762102fdcd04e71da6114e1fcb4c Mon Sep 17 00:00:00 2001
-From: Zakhar Voit <voit@google.com>
-Date: Thu, 14 Dec 2023 11:11:43 +0000
-Subject: [PATCH] [Backport] CVE-2023-6702: Type Confusion in V8
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Manual backport of patch originally reviewed on
-https://chromium-review.googlesource.com/c/v8/v8/+/5110982:
-[M114-LTS][promises, async stack traces] Fix the case when the closure has run
-
-M114 changes:
-- replace IsNativeContext(*context) by context->IsNativeContext()
-
-We were using the closure pointing to NativeContext as a marker that the
-closure has run, but async stack trace code was confused about it.
-
-(cherry picked from commit bde3d360097607f36cd1d17cbe8412b84eae0a7f)
-
-Bug: chromium:1501326
-Change-Id: I30d438f3b2e3fdd7562ea9a79dde4561ce9b0083
-Cr-Original-Commit-Position: refs/heads/main@{#90949}
-Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5110982
-Commit-Queue: Marja Hölttä <marja@chromium.org>
-Auto-Submit: Marja Hölttä <marja@chromium.org>
-Cr-Commit-Position: refs/branch-heads/12.0@{#18}
-Cr-Branched-From: ed7b4caf1fb8184ad9e24346c84424055d4d430a-refs/heads/12.0.267@{#1}
-Cr-Branched-From: 210e75b19db4352c9b78dce0bae11c2dc3077df4-refs/heads/main@{#90651}
-(cherry picked from commit cbd09b2ca928f1fd929ef52e173aa81213e38cb8)
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/526232
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- chromium/v8/src/execution/isolate.cc | 16 ++++++++++++++--
- 1 file changed, 14 insertions(+), 2 deletions(-)
-
-diff --git a/chromium/v8/src/execution/isolate.cc b/chromium/v8/src/execution/isolate.cc
-index c1c3bd1b24a6..99b851ef96d7 100644
---- src/3rdparty/chromium/v8/src/execution/isolate.cc
-+++ src/3rdparty/chromium/v8/src/execution/isolate.cc
-@@ -944,7 +944,13 @@ void CaptureAsyncStackTrace(Isolate* isolate, Handle<JSPromise> promise,
- builder->AppendPromiseCombinatorFrame(function, combinator,
- FrameArray::kIsPromiseAll, context);
-
-- // Now peak into the Promise.all() resolve element context to
-+ if (context->IsNativeContext()) {
-+ // NativeContext is used as a marker that the closure was already
-+ // called. We can't access the reject element context any more.
-+ return;
-+ }
-+
-+ // Now peek into the Promise.all() resolve element context to
- // find the promise capability that's being resolved when all
- // the concurrent promises resolve.
- int const index =
-@@ -963,7 +969,13 @@ void CaptureAsyncStackTrace(Isolate* isolate, Handle<JSPromise> promise,
- builder->AppendPromiseCombinatorFrame(function, combinator,
- FrameArray::kIsPromiseAny, context);
-
-- // Now peak into the Promise.any() reject element context to
-+ if (context->IsNativeContext()) {
-+ // NativeContext is used as a marker that the closure was already
-+ // called. We can't access the reject element context any more.
-+ return;
-+ }
-+
-+ // Now peek into the Promise.any() reject element context to
- // find the promise capability that's being resolved when any of
- // the concurrent promises resolve.
- int const index = PromiseBuiltins::kPromiseAnyRejectElementCapabilitySlot;
-From 73c9c09a8b314b8c66bbe3d2648d6bfe18d5d4a8 Mon Sep 17 00:00:00 2001
-From: Kai Ninomiya <kainino@chromium.org>
-Date: Wed, 29 Nov 2023 17:44:48 +0000
-Subject: [PATCH] [Backport] Security bug 1505632
-
-Manual backport of patch originally reviewed on
-https://chromium-review.googlesource.com/c/chromium/src/+/5069480:
-Fix reinit order in ContextProviderCommandBuffer::BindToCurrentSequence
-
-See comments for explanation.
-
-Bug: 1505632
-Change-Id: I0f43821a9708af91303048332e9fae5e100deee5
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5069480
-Reviewed-by: Saifuddin Hitawala <hitawala@chromium.org>
-Commit-Queue: Kai Ninomiya <kainino@chromium.org>
-Reviewed-by: Brendon Tiszka <tiszka@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1230735}
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/526233
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- .../gpu/context_provider_command_buffer.cc | 24 +++++++++----
- .../cpp/gpu/context_provider_command_buffer.h | 34 ++++++++++++++++---
- 2 files changed, 47 insertions(+), 11 deletions(-)
-
-diff --git a/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.cc b/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.cc
-index e8b9ff4983d4..d79b97fd3748 100644
---- src/3rdparty/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.cc
-+++ src/3rdparty/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.cc
-@@ -164,13 +164,13 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() {
- }
-
- // The transfer buffer is used to serialize Dawn commands
-- transfer_buffer_ =
-+ auto transfer_buffer =
- std::make_unique<gpu::TransferBuffer>(webgpu_helper.get());
-
- // The WebGPUImplementation exposes the WebGPUInterface, as well as the
- // gpu::ContextSupport interface.
- auto webgpu_impl = std::make_unique<gpu::webgpu::WebGPUImplementation>(
-- webgpu_helper.get(), transfer_buffer_.get(), command_buffer_.get());
-+ webgpu_helper.get(), transfer_buffer.get(), command_buffer_.get());
- bind_result_ = webgpu_impl->Initialize(memory_limits_);
- if (bind_result_ != gpu::ContextResult::kSuccess) {
- DLOG(ERROR) << "Failed to initialize WebGPUImplementation.";
-@@ -182,8 +182,11 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() {
- std::string unique_context_name =
- base::StringPrintf("%s-%p", type_name.c_str(), webgpu_impl.get());
-
-+ // IMPORTANT: These hold raw_ptrs to each other, so must be set together.
-+ // See note in the header (and keep it up to date if things change).
- impl_ = webgpu_impl.get();
- webgpu_interface_ = std::move(webgpu_impl);
-+ transfer_buffer_ = std::move(transfer_buffer);
- helper_ = std::move(webgpu_helper);
- } else if (attributes_.enable_raster_interface &&
- !attributes_.enable_gles2_interface &&
-@@ -201,14 +204,14 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() {
- }
- // The transfer buffer is used to copy resources between the client
- // process and the GPU process.
-- transfer_buffer_ =
-+ auto transfer_buffer =
- std::make_unique<gpu::TransferBuffer>(raster_helper.get());
-
- // The RasterImplementation exposes the RasterInterface, as well as the
- // gpu::ContextSupport interface.
- DCHECK(channel_);
- auto raster_impl = std::make_unique<gpu::raster::RasterImplementation>(
-- raster_helper.get(), transfer_buffer_.get(),
-+ raster_helper.get(), transfer_buffer.get(),
- attributes_.bind_generates_resource,
- attributes_.lose_context_when_out_of_memory, command_buffer_.get(),
- channel_->image_decode_accelerator_proxy());
-@@ -225,8 +228,11 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() {
- raster_impl->TraceBeginCHROMIUM("gpu_toplevel",
- unique_context_name.c_str());
-
-+ // IMPORTANT: These hold raw_ptrs to each other, so must be set together.
-+ // See note in the header (and keep it up to date if things change).
- impl_ = raster_impl.get();
- raster_interface_ = std::move(raster_impl);
-+ transfer_buffer_ = std::move(transfer_buffer);
- helper_ = std::move(raster_helper);
- } else {
- // The GLES2 helper writes the command buffer protocol.
-@@ -241,7 +247,7 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() {
-
- // The transfer buffer is used to copy resources between the client
- // process and the GPU process.
-- transfer_buffer_ =
-+ auto transfer_buffer =
- std::make_unique<gpu::TransferBuffer>(gles2_helper.get());
-
- // The GLES2Implementation exposes the OpenGLES2 API, as well as the
-@@ -254,13 +260,13 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() {
- // we only use it if grcontext_support was requested.
- gles2_impl = std::make_unique<
- skia_bindings::GLES2ImplementationWithGrContextSupport>(
-- gles2_helper.get(), /*share_group=*/nullptr, transfer_buffer_.get(),
-+ gles2_helper.get(), /*share_group=*/nullptr, transfer_buffer.get(),
- attributes_.bind_generates_resource,
- attributes_.lose_context_when_out_of_memory,
- support_client_side_arrays, command_buffer_.get());
- } else {
- gles2_impl = std::make_unique<gpu::gles2::GLES2Implementation>(
-- gles2_helper.get(), /*share_group=*/nullptr, transfer_buffer_.get(),
-+ gles2_helper.get(), /*share_group=*/nullptr, transfer_buffer.get(),
- attributes_.bind_generates_resource,
- attributes_.lose_context_when_out_of_memory,
- support_client_side_arrays, command_buffer_.get());
-@@ -271,8 +277,11 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() {
- return bind_result_;
- }
-
-+ // IMPORTANT: These hold raw_ptrs to each other, so must be set together.
-+ // See note in the header (and keep it up to date if things change).
- impl_ = gles2_impl.get();
- gles2_impl_ = std::move(gles2_impl);
-+ transfer_buffer_ = std::move(transfer_buffer);
- helper_ = std::move(gles2_helper);
- }
-
-@@ -306,6 +315,7 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() {
- switches::kEnableGpuClientTracing)) {
- // This wraps the real GLES2Implementation and we should always use this
- // instead when it's present.
-+ // IMPORTANT: This holds a raw_ptr to gles2_impl_.
- trace_impl_ = std::make_unique<gpu::gles2::GLES2TraceImplementation>(
- gles2_impl_.get());
- gl = trace_impl_.get();
-diff --git a/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h b/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h
-index 22d80baf765b..9a867177048e 100644
---- src/3rdparty/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h
-+++ src/3rdparty/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h
-@@ -156,18 +156,44 @@ class ContextProviderCommandBuffer
- // associated shared images are destroyed.
- std::unique_ptr<gpu::ClientSharedImageInterface> shared_image_interface_;
-
-- base::Lock context_lock_; // Referenced by command_buffer_.
-+ //////////////////////////////////////////////////////////////////////////////
-+ // IMPORTANT NOTE: All of the objects in this block are part of a complex //
-+ // graph of raw pointers (holder or pointee of various raw_ptrs). They are //
-+ // defined in topological order: only later items point to earlier items. //
-+ // - When writing any member, always ensure its pointers to earlier members
-+ // are guaranteed to stay alive.
-+ // - When clearing OR overwriting any member, always ensure objects that
-+ // point to it have already been cleared.
-+ // - The topological order of definitions guarantees that the
-+ // destructors will be called in the correct order (bottom to top).
-+ // - When overwriting multiple members, similarly do so in reverse order.
-+ //
-+ // Please note these comments are likely not to stay perfectly up-to-date.
-+
-+ base::Lock context_lock_;
-+ // Points to the context_lock_ field of `this`.
- std::unique_ptr<gpu::CommandBufferProxyImpl> command_buffer_;
-+
-+ // Points to command_buffer_.
- std::unique_ptr<gpu::CommandBufferHelper> helper_;
-+ // Points to helper_.
- std::unique_ptr<gpu::TransferBuffer> transfer_buffer_;
-
-- // Owned by either gles2_impl_ or raster_interface_, not both.
-- gpu::ImplementationBase* impl_;
-+ // Points to transfer_buffer_, helper_, and command_buffer_.
- std::unique_ptr<gpu::gles2::GLES2Implementation> gles2_impl_;
-+ // Points to gles2_impl_.
- std::unique_ptr<gpu::gles2::GLES2TraceImplementation> trace_impl_;
-- std::unique_ptr<gpu::raster::RasterInterface> raster_interface_;
-+ // Points to transfer_buffer_, helper_, and command_buffer_.
-+ std::unique_ptr<gpu::raster::RasterInterface> raster_interface_;
-+ // Points to transfer_buffer_, helper_, and command_buffer_.
- std::unique_ptr<gpu::webgpu::WebGPUInterface> webgpu_interface_;
-
-+ // END IMPORTANT NOTE //
-+ //////////////////////////////////////////////////////////////////////////////
-+
-+ // Owned by either gles2_impl_ or raster_interface_, not both.
-+ gpu::ImplementationBase* impl_;
-+
- std::unique_ptr<skia_bindings::GrContextForGLES2Interface> gr_context_;
- #if BUILDFLAG(SKIA_USE_DAWN)
- std::unique_ptr<skia_bindings::GrContextForWebGPUInterface>
-From 2d8ce130db72ce75e2ca8b51f3c32938fbff9143 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Michael=20Br=C3=BCning?= <michael.bruning@qt.io>
-Date: Mon, 8 Jan 2024 15:39:03 +0100
-Subject: [PATCH] Fixup: [Backport] Security bug 1505632
-
-Change-Id: I8af12a1fecededb373145fd89362e08b030f1d7f
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/528821
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- .../viz/public/cpp/gpu/context_provider_command_buffer.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h b/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h
-index 9a867177048..0ac70dae7e9 100644
---- src/3rdparty/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h
-+++ src/3rdparty/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h
-@@ -192,7 +192,7 @@ class ContextProviderCommandBuffer
- //////////////////////////////////////////////////////////////////////////////
-
- // Owned by either gles2_impl_ or raster_interface_, not both.
-- gpu::ImplementationBase* impl_;
-+ gpu::ImplementationBase* impl_ = nullptr;
-
- std::unique_ptr<skia_bindings::GrContextForGLES2Interface> gr_context_;
- #if BUILDFLAG(SKIA_USE_DAWN)
-From c8088aea77818f87d42f709ddcb743b907c38e9c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Michael=20Br=C3=BCning?= <michael.bruning@qt.io>
-Date: Sun, 14 Jan 2024 23:48:08 +0100
-Subject: [PATCH] Fixup: [Backport] Security bug 1488199
-
-Add register aliases following respective platform calling
-conventions. Also fix a typo.
-
-Change-Id: I8f844cd4db35393580f2a0adae6a4095584087a5
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/530618
-Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
----
- chromium/v8/src/codegen/arm/register-arm.h | 6 ++++++
- chromium/v8/src/codegen/arm64/register-arm64.h | 6 ++++++
- chromium/v8/src/codegen/mips64/register-mips64.h | 6 ++++++
- chromium/v8/src/codegen/ppc/register-ppc.h | 6 ++++++
- chromium/v8/src/codegen/s390/register-s390.h | 6 ++++++
- chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc | 4 ++--
- 6 files changed, 32 insertions(+), 2 deletions(-)
-
-diff --git a/chromium/v8/src/codegen/arm/register-arm.h b/chromium/v8/src/codegen/arm/register-arm.h
-index 6cb6c602c254..8deddc5804b1 100644
---- src/3rdparty/chromium/v8/src/codegen/arm/register-arm.h
-+++ src/3rdparty/chromium/v8/src/codegen/arm/register-arm.h
-@@ -119,6 +119,12 @@ GENERAL_REGISTERS(DECLARE_REGISTER)
- #undef DECLARE_REGISTER
- constexpr Register no_reg = Register::no_reg();
-
-+// ARM calling convention
-+constexpr Register arg_reg_1 = r0;
-+constexpr Register arg_reg_2 = r1;
-+constexpr Register arg_reg_3 = r2;
-+constexpr Register arg_reg_4 = r3;
-+
- constexpr bool kPadArguments = false;
- constexpr bool kSimpleFPAliasing = false;
- constexpr bool kSimdMaskRegisters = false;
-diff --git a/chromium/v8/src/codegen/arm64/register-arm64.h b/chromium/v8/src/codegen/arm64/register-arm64.h
-index fbbb0a18dadf..06026a065bbf 100644
---- src/3rdparty/chromium/v8/src/codegen/arm64/register-arm64.h
-+++ src/3rdparty/chromium/v8/src/codegen/arm64/register-arm64.h
-@@ -482,6 +482,12 @@ ALIAS_REGISTER(VRegister, fp_scratch2, d31);
-
- #undef ALIAS_REGISTER
-
-+// Arm64 calling convention
-+constexpr Register arg_reg_1 = x0;
-+constexpr Register arg_reg_2 = x1;
-+constexpr Register arg_reg_3 = x2;
-+constexpr Register arg_reg_4 = x3;
-+
- // AreAliased returns true if any of the named registers overlap. Arguments set
- // to NoReg are ignored. The system stack pointer may be specified.
- V8_EXPORT_PRIVATE bool AreAliased(
-diff --git a/chromium/v8/src/codegen/mips64/register-mips64.h b/chromium/v8/src/codegen/mips64/register-mips64.h
-index d7b45eda3838..05aba9fcbd2f 100644
---- src/3rdparty/chromium/v8/src/codegen/mips64/register-mips64.h
-+++ src/3rdparty/chromium/v8/src/codegen/mips64/register-mips64.h
-@@ -362,6 +362,12 @@ DEFINE_REGISTER_NAMES(FPURegister, DOUBLE_REGISTERS)
- DEFINE_REGISTER_NAMES(MSARegister, SIMD128_REGISTERS)
-
- // Give alias names to registers for calling conventions.
-+
-+constexpr Register arg_reg_1 = a0;
-+constexpr Register arg_reg_2 = a1;
-+constexpr Register arg_reg_3 = a2;
-+constexpr Register arg_reg_4 = a3;
-+
- constexpr Register kReturnRegister0 = v0;
- constexpr Register kReturnRegister1 = v1;
- constexpr Register kReturnRegister2 = a0;
-diff --git a/chromium/v8/src/codegen/ppc/register-ppc.h b/chromium/v8/src/codegen/ppc/register-ppc.h
-index eded9622c4cc..352b95192023 100644
---- src/3rdparty/chromium/v8/src/codegen/ppc/register-ppc.h
-+++ src/3rdparty/chromium/v8/src/codegen/ppc/register-ppc.h
-@@ -209,6 +209,12 @@ constexpr Register kConstantPoolRegister = r28; // Constant pool.
- constexpr Register kRootRegister = r29; // Roots array pointer.
- constexpr Register cp = r30; // JavaScript context pointer.
-
-+// PPC64 calling convention
-+constexpr Register arg_reg_1 = r3;
-+constexpr Register arg_reg_2 = r4;
-+constexpr Register arg_reg_3 = r5;
-+constexpr Register arg_reg_4 = r6;
-+
- constexpr bool kPadArguments = false;
- constexpr bool kSimpleFPAliasing = true;
- constexpr bool kSimdMaskRegisters = false;
-diff --git a/chromium/v8/src/codegen/s390/register-s390.h b/chromium/v8/src/codegen/s390/register-s390.h
-index 009248a65ca0..6904802d0150 100644
---- src/3rdparty/chromium/v8/src/codegen/s390/register-s390.h
-+++ src/3rdparty/chromium/v8/src/codegen/s390/register-s390.h
-@@ -167,6 +167,12 @@ constexpr Register no_reg = Register::no_reg();
- constexpr Register kRootRegister = r10; // Roots array pointer.
- constexpr Register cp = r13; // JavaScript context pointer.
-
-+// s390x calling convention
-+constexpr Register arg_reg_1 = r2;
-+constexpr Register arg_reg_2 = r3;
-+constexpr Register arg_reg_3 = r4;
-+constexpr Register arg_reg_4 = r5;
-+
- constexpr bool kPadArguments = false;
- constexpr bool kSimpleFPAliasing = true;
- constexpr bool kSimdMaskRegisters = false;
-diff --git a/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc b/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc
-index 099fc62fa07b..5580b24308a7 100644
---- src/3rdparty/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc
-+++ src/3rdparty/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc
-@@ -1059,9 +1059,9 @@ void RegExpMacroAssemblerARM::CallCheckStackGuardState(Operand extra_space) {
- // Extra space for variables to consider in stack check.
- __ mov(arg_reg_4, extra_space);
- // RegExp code frame pointer.
-- __ mov(arg_reg3, frame_pointer());
-+ __ mov(arg_reg_3, frame_pointer());
- // Code of self.
-- __ mov(arg_reg2, Operand(masm_->CodeObject()));
-+ __ mov(arg_reg_2, Operand(masm_->CodeObject()));
-
- // We need to make room for the return address on the stack.
- int stack_alignment = base::OS::ActivationFrameAlignment();
-From aac73f3a715655476ce5b347a9614d1ca0ba9b93 Mon Sep 17 00:00:00 2001
-From: Shahbaz Youssefi <syoussefi@chromium.org>
-Date: Tue, 5 Dec 2023 13:36:53 -0500
-Subject: [PATCH] [Backport] CVE-2024-0222: Use after free in ANGLE
-
-Manual cherry-pick of patch originally reviewed on
-https://chromium-review.googlesource.com/c/angle/angle/+/5143829:
-M120: Vulkan: Don't crash when glCopyTexImage2D redefines itself
-
-The Vulkan backend marks a level being redefined as such before doing
-the copy. If a single-level texture was being redefined, it releases it
-so it can be immediately reallocated. If the source of the copy is the
-same texture, this causes a crash.
-
-This can be properly supported by using a temp image to do the copy, but
-that is not implemented in this change.
-
-Bug: chromium:1501798
-Change-Id: I3a902b1e9eec41afd385d9c75a8c95dc986070a8
-Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5143829
-Reviewed-by: Cody Northrop <cnorthrop@google.com>
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532069
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- .../libANGLE/renderer/vulkan/TextureVk.cpp | 23 ++++++++++++++++++-
- 1 file changed, 22 insertions(+), 1 deletion(-)
-
-diff --git a/chromium/third_party/angle/src/libANGLE/renderer/vulkan/TextureVk.cpp b/chromium/third_party/angle/src/libANGLE/renderer/vulkan/TextureVk.cpp
-index 1950375b9b19..a098da4bfd33 100644
---- src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/vulkan/TextureVk.cpp
-+++ src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/vulkan/TextureVk.cpp
-@@ -466,8 +466,28 @@ angle::Result TextureVk::copyImage(const gl::Context *context,
- gl::GetInternalFormatInfo(internalFormat, GL_UNSIGNED_BYTE);
- const vk::Format &vkFormat = renderer->getFormat(internalFormatInfo.sizedInternalFormat);
-
-+ // The texture level being redefined might be the same as the one bound to the framebuffer.
-+ // This _could_ be supported by using a temp image before redefining the level (and potentially
-+ // discarding the image). However, this is currently unimplemented.
-+ FramebufferVk *framebufferVk = vk::GetImpl(source);
-+ RenderTargetVk *colorReadRT = framebufferVk->getColorReadRenderTarget();
-+ vk::ImageHelper *srcImage = &colorReadRT->getImageForCopy();
-+ const bool isCubeMap = index.getType() == gl::TextureType::CubeMap;
-+ gl::LevelIndex levelIndex(getNativeImageIndex(index).getLevelIndex());
-+ const uint32_t layerIndex = index.hasLayer() ? index.getLayerIndex() : 0;
-+ const uint32_t redefinedFace = isCubeMap ? layerIndex : 0;
-+ const uint32_t sourceFace = isCubeMap ? colorReadRT->getLayerIndex() : 0;
-+ const bool isSelfCopy = mImage == srcImage && levelIndex == colorReadRT->getLevelIndex() &&
-+ redefinedFace == sourceFace;
-+
- ANGLE_TRY(redefineLevel(context, index, vkFormat, newImageSize));
-
-+ if (isSelfCopy)
-+ {
-+ UNIMPLEMENTED();
-+ return angle::Result::Continue;
-+ }
-+
- return copySubImageImpl(context, index, gl::Offset(0, 0, 0), sourceArea, internalFormatInfo,
- source);
- }
-@@ -1393,7 +1413,8 @@ angle::Result TextureVk::redefineLevel(const gl::Context *context,
- mImage->getLevelCount() == 1 && mImage->getBaseLevel() == levelIndexGL;
-
- // If incompatible, and redefining the single-level image, release it so it can be
-- // recreated immediately. This is an optimization to avoid an extra copy.
-+ // recreated immediately. This is needed so that the texture can be reallocated with
-+ // the correct format/size.
- if (!isCompatibleRedefinition && isUpdateToSingleLevelImage)
- {
- releaseImage(contextVk);
-From b3bd93f5093ceef2bcf0c2346a2b761455ab842a Mon Sep 17 00:00:00 2001
-From: Joshua Pawlicki <waffles@chromium.org>
-Date: Wed, 20 Dec 2023 22:33:06 +0000
-Subject: [PATCH] [Backport] CVE-2024-0333: Insufficient data validation in
- Extensions
-
-Manual cherry-pick of patch originally reviewed on
-https://chromium-review.googlesource.com/c/chromium/src/+/5141787:
-crx_file: Error early for CRXs with ZIP markers in header.
-
-Bug: 1513379
-Change-Id: I029b4f15778df0c150866b1f49a9b5b2924690ed
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5141787
-Commit-Queue: Joshua Pawlicki <waffles@chromium.org>
-Auto-Submit: Joshua Pawlicki <waffles@chromium.org>
-Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
-Commit-Queue: Sorin Jianu <sorin@chromium.org>
-Reviewed-by: Sorin Jianu <sorin@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1239849}
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532070
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- chromium/components/crx_file/crx_verifier.cc | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/chromium/components/crx_file/crx_verifier.cc b/chromium/components/crx_file/crx_verifier.cc
-index cbd7d777b6a6..d03cadb150db 100644
---- src/3rdparty/chromium/components/crx_file/crx_verifier.cc
-+++ src/3rdparty/chromium/components/crx_file/crx_verifier.cc
-@@ -4,6 +4,7 @@
-
- #include "components/crx_file/crx_verifier.h"
-
-+#include <algorithm>
- #include <cstring>
- #include <iterator>
- #include <memory>
-@@ -44,6 +45,9 @@ constexpr uint8_t kPublisherTestKeyHash[] = {
- 0x5f, 0x64, 0xf3, 0xa6, 0x17, 0x03, 0x0d, 0xde, 0x21, 0x61, 0xbe,
- 0xb7, 0x95, 0x91, 0x95, 0x83, 0x68, 0x12, 0xe9, 0x78, 0x1e};
-
-+constexpr uint8_t kEocd[] = {'P', 'K', 0x05, 0x06};
-+constexpr uint8_t kEocd64[] = {'P', 'K', 0x06, 0x07};
-+
- using VerifierCollection =
- std::vector<std::unique_ptr<crypto::SignatureVerifier>>;
- using RepeatedProof = google::protobuf::RepeatedPtrField<AsymmetricKeyProof>;
-@@ -109,6 +113,18 @@ VerifierResult VerifyCrx3(
- if (ReadAndHashBuffer(header_bytes.data(), header_size, file, hash) !=
- static_cast<int>(header_size))
- return VerifierResult::ERROR_HEADER_INVALID;
-+
-+ // If the header contains a ZIP EOCD or EOCD64 token, unzipping may not work
-+ // correctly.
-+ if (std::search(std::begin(header_bytes), std::end(header_bytes),
-+ std::begin(kEocd),
-+ std::end(kEocd)) != std::end(header_bytes) ||
-+ std::search(std::begin(header_bytes), std::end(header_bytes),
-+ std::begin(kEocd64),
-+ std::end(kEocd64)) != std::end(header_bytes)) {
-+ return VerifierResult::ERROR_HEADER_INVALID;
-+ }
-+
- CrxFileHeader header;
- if (!header.ParseFromArray(header_bytes.data(), header_size))
- return VerifierResult::ERROR_HEADER_INVALID;
-From 520c290ba211017b31324cc9f361c0388433616a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Dominik=20Inf=C3=BChr?= <dinfuehr@chromium.org>
-Date: Mon, 18 Dec 2023 09:15:00 +0100
-Subject: [PATCH] [Backport] CVE-2024-0518: Type Confusion in V8
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Manual backport of patch originally reviewed on
-https://chromium-review.googlesource.com/c/v8/v8/+/5125960:
-[codegen] Install BytecodeArray last in SharedFunctionInfo
-
-Maglev assumes that when a SharedFunctionInfo has a BytecodeArray,
-then it should also have FeedbackMetadata. However, this may not
-hold with concurrent compilation when the SharedFunctionInfo is
-re-compiled after being flushed. Here the BytecodeArray was installed
-on the SFI before the FeedbackMetadata and a concurrent thread could
-observe the BytecodeArray but not the FeedbackMetadata.
-
-Drive-by: Reset the age field before setting the BytecodeArray as
-well. This ensures that the concurrent marker will not observe the
-old age for the new BytecodeArray.
-
-Bug: chromium:1507412
-Change-Id: I8855ed7ecc50c4a47d2c89043d62ac053858bc75
-Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5125960
-Reviewed-by: Leszek Swirski <leszeks@chromium.org>
-Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#91568}
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532071
-Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
----
- chromium/v8/src/codegen/compiler.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/chromium/v8/src/codegen/compiler.cc b/chromium/v8/src/codegen/compiler.cc
-index f09658ebdf62..f963b0d92684 100644
---- src/3rdparty/chromium/v8/src/codegen/compiler.cc
-+++ src/3rdparty/chromium/v8/src/codegen/compiler.cc
-@@ -543,11 +543,11 @@ void InstallUnoptimizedCode(UnoptimizedCompilationInfo* compilation_info,
- shared_info->set_is_asm_wasm_broken(true);
- }
-
-- shared_info->set_bytecode_array(*compilation_info->bytecode_array());
--
- Handle<FeedbackMetadata> feedback_metadata = FeedbackMetadata::New(
- isolate, compilation_info->feedback_vector_spec());
- shared_info->set_feedback_metadata(*feedback_metadata);
-+
-+ shared_info->set_bytecode_array(*compilation_info->bytecode_array());
- } else {
- DCHECK(compilation_info->has_asm_wasm_data());
- // We should only have asm/wasm data when finalizing on the main thread.
-From 6fb8d851a5048e85877ae33b1800c122c8cd034d Mon Sep 17 00:00:00 2001
-From: Toon Verwaest <verwaest@chromium.org>
-Date: Thu, 11 Jan 2024 10:47:17 +0100
-Subject: [PATCH] [Backport] CVE-2024-0519: Out of bounds memory access in V8
-
-Manual cherry-pick of patch originally reviewed on
-https://chromium-review.googlesource.com/c/v8/v8/+/5192447:
-Merged: [runtime] Drop fast last-property deletion
-
-This interacts badly with other optimizations and isn't particularly
-common.
-
-Bug: chromium:1517354
-(cherry picked from commit 389ea9be7d68bb189e16da79f6414edbd4f7594f)
-
-Change-Id: Ie16aa38e8984c4879491c0d9a0ca9df0e041fd1d
-Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5192447
-Auto-Submit: Toon Verwaest <verwaest@chromium.org>
-Reviewed-by: Leszek Swirski <leszeks@chromium.org>
-Cr-Commit-Position: refs/branch-heads/12.0@{#32}
-Cr-Branched-From: ed7b4caf1fb8184ad9e24346c84424055d4d430a-refs/heads/12.0.267@{#1}
-Cr-Branched-From: 210e75b19db4352c9b78dce0bae11c2dc3077df4-refs/heads/main@{#90651}
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532072
-Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
----
- chromium/v8/src/runtime/runtime-object.cc | 160 ----------------------
- 1 file changed, 160 deletions(-)
-
-diff --git a/chromium/v8/src/runtime/runtime-object.cc b/chromium/v8/src/runtime/runtime-object.cc
-index bd5d23dce45f..075bc0c665d3 100644
---- src/3rdparty/chromium/v8/src/runtime/runtime-object.cc
-+++ src/3rdparty/chromium/v8/src/runtime/runtime-object.cc
-@@ -92,170 +92,10 @@ MaybeHandle<Object> Runtime::HasProperty(Isolate* isolate,
- : ReadOnlyRoots(isolate).false_value_handle();
- }
-
--namespace {
--
--void GeneralizeAllTransitionsToFieldAsMutable(Isolate* isolate, Handle<Map> map,
-- Handle<Name> name) {
-- InternalIndex descriptor(map->NumberOfOwnDescriptors());
--
-- Handle<Map> target_maps[kPropertyAttributesCombinationsCount];
-- int target_maps_count = 0;
--
-- // Collect all outgoing field transitions.
-- {
-- DisallowHeapAllocation no_gc;
-- TransitionsAccessor transitions(isolate, *map, &no_gc);
-- transitions.ForEachTransitionTo(
-- *name,
-- [&](Map target) {
-- DCHECK_EQ(descriptor, target.LastAdded());
-- DCHECK_EQ(*name, target.GetLastDescriptorName(isolate));
-- PropertyDetails details = target.GetLastDescriptorDetails(isolate);
-- // Currently, we track constness only for fields.
-- if (details.kind() == kData &&
-- details.constness() == PropertyConstness::kConst) {
-- target_maps[target_maps_count++] = handle(target, isolate);
-- }
-- DCHECK_IMPLIES(details.kind() == kAccessor,
-- details.constness() == PropertyConstness::kConst);
-- },
-- &no_gc);
-- CHECK_LE(target_maps_count, kPropertyAttributesCombinationsCount);
-- }
--
-- for (int i = 0; i < target_maps_count; i++) {
-- Handle<Map> target = target_maps[i];
-- PropertyDetails details =
-- target->instance_descriptors(isolate)
-- .GetDetails(descriptor);
-- Handle<FieldType> field_type(
-- target->instance_descriptors(isolate)
-- .GetFieldType(descriptor),
-- isolate);
-- Map::GeneralizeField(isolate, target, descriptor,
-- PropertyConstness::kMutable, details.representation(),
-- field_type);
-- DCHECK_EQ(PropertyConstness::kMutable,
-- target->instance_descriptors(isolate)
-- .GetDetails(descriptor)
-- .constness());
-- }
--}
--
--bool DeleteObjectPropertyFast(Isolate* isolate, Handle<JSReceiver> receiver,
-- Handle<Object> raw_key) {
-- // This implements a special case for fast property deletion: when the
-- // last property in an object is deleted, then instead of normalizing
-- // the properties, we can undo the last map transition, with a few
-- // prerequisites:
-- // (1) The receiver must be a regular object and the key a unique name.
-- Handle<Map> receiver_map(receiver->map(), isolate);
-- if (receiver_map->IsSpecialReceiverMap()) return false;
-- DCHECK(receiver_map->IsJSObjectMap());
--
-- if (!raw_key->IsUniqueName()) return false;
-- Handle<Name> key = Handle<Name>::cast(raw_key);
-- // (2) The property to be deleted must be the last property.
-- int nof = receiver_map->NumberOfOwnDescriptors();
-- if (nof == 0) return false;
-- InternalIndex descriptor(nof - 1);
-- Handle<DescriptorArray> descriptors(receiver_map->instance_descriptors(),
-- isolate);
-- if (descriptors->GetKey(descriptor) != *key) return false;
-- // (3) The property to be deleted must be deletable.
-- PropertyDetails details = descriptors->GetDetails(descriptor);
-- if (!details.IsConfigurable()) return false;
-- // (4) The map must have a back pointer.
-- Handle<Object> backpointer(receiver_map->GetBackPointer(), isolate);
-- if (!backpointer->IsMap()) return false;
-- Handle<Map> parent_map = Handle<Map>::cast(backpointer);
-- // (5) The last transition must have been caused by adding a property
-- // (and not any kind of special transition).
-- if (parent_map->NumberOfOwnDescriptors() != nof - 1) return false;
--
-- // Preconditions successful. No more bailouts after this point.
--
-- // Zap the property to avoid keeping objects alive. Zapping is not necessary
-- // for properties stored in the descriptor array.
-- if (details.location() == kField) {
-- DisallowHeapAllocation no_allocation;
--
-- // Invalidate slots manually later in case we delete an in-object tagged
-- // property. In this case we might later store an untagged value in the
-- // recorded slot.
-- isolate->heap()->NotifyObjectLayoutChange(*receiver, no_allocation,
-- InvalidateRecordedSlots::kNo);
-- FieldIndex index =
-- FieldIndex::ForPropertyIndex(*receiver_map, details.field_index());
-- // Special case deleting the last out-of object property.
-- if (!index.is_inobject() && index.outobject_array_index() == 0) {
-- DCHECK(!parent_map->HasOutOfObjectProperties());
-- // Clear out the properties backing store.
-- receiver->SetProperties(ReadOnlyRoots(isolate).empty_fixed_array());
-- } else {
-- Object filler = ReadOnlyRoots(isolate).one_pointer_filler_map();
-- JSObject::cast(*receiver).RawFastPropertyAtPut(index, filler);
-- // We must clear any recorded slot for the deleted property, because
-- // subsequent object modifications might put a raw double there.
-- // Slot clearing is the reason why this entire function cannot currently
-- // be implemented in the DeleteProperty stub.
-- if (index.is_inobject() && !receiver_map->IsUnboxedDoubleField(index)) {
-- // We need to clear the recorded slot in this case because in-object
-- // slack tracking might not be finished. This ensures that we don't
-- // have recorded slots in free space.
-- isolate->heap()->ClearRecordedSlot(*receiver,
-- receiver->RawField(index.offset()));
-- MemoryChunk* chunk = MemoryChunk::FromHeapObject(*receiver);
-- chunk->InvalidateRecordedSlots(*receiver);
-- }
-- }
-- }
-- // If the {receiver_map} was marked stable before, then there could be
-- // optimized code that depends on the assumption that no object that
-- // reached this {receiver_map} transitions away from it without triggering
-- // the "deoptimize dependent code" mechanism.
-- receiver_map->NotifyLeafMapLayoutChange(isolate);
-- // Finally, perform the map rollback.
-- receiver->synchronized_set_map(*parent_map);
--#if VERIFY_HEAP
-- receiver->HeapObjectVerify(isolate);
-- receiver->property_array().PropertyArrayVerify(isolate);
--#endif
--
-- // If the {descriptor} was "const" so far, we need to update the
-- // {receiver_map} here, otherwise we could get the constants wrong, i.e.
-- //
-- // o.x = 1;
-- // [change o.x's attributes or reconfigure property kind]
-- // delete o.x;
-- // o.x = 2;
-- //
-- // could trick V8 into thinking that `o.x` is still 1 even after the second
-- // assignment.
--
-- // Step 1: Migrate object to an up-to-date shape.
-- if (parent_map->is_deprecated()) {
-- JSObject::MigrateInstance(isolate, Handle<JSObject>::cast(receiver));
-- parent_map = handle(receiver->map(), isolate);
-- }
--
-- // Step 2: Mark outgoing transitions from the up-to-date version of the
-- // parent_map to same property name of any kind or attributes as mutable.
-- // Also migrate object to the up-to-date map to make the object shapes
-- // converge sooner.
-- GeneralizeAllTransitionsToFieldAsMutable(isolate, parent_map, key);
--
-- return true;
--}
--
--} // namespace
--
- Maybe<bool> Runtime::DeleteObjectProperty(Isolate* isolate,
- Handle<JSReceiver> receiver,
- Handle<Object> key,
- LanguageMode language_mode) {
-- if (DeleteObjectPropertyFast(isolate, receiver, key)) return Just(true);
--
- bool success = false;
- LookupIterator::Key lookup_key(isolate, key, &success);
- if (!success) return Nothing<bool>();
-From 1dbdcfd64885f0dc034e73dacf6ef4e20f8351bf Mon Sep 17 00:00:00 2001
-From: Mike Wasserman <msw@chromium.org>
-Date: Tue, 9 Jan 2024 01:07:39 +0000
-Subject: [PATCH] [Backport] Security bug 1506535
-
-Manual cherry-pick of patch originally reviewed on
-https://chromium-review.googlesource.com/c/chromium/src/+/5146875:
-[M120 merge] Speculative fix for UAF in content::WebContentsImpl::ExitFullscreenMode
-
-(cherry picked from commit c1cda70a433a0c625b280eb88ed6ff4f4feffa12)
-
-Bug: 1506535, 854815
-Change-Id: Iace64d63f8cea2dbfbc761ad233db42451ec101c
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5146875
-Commit-Queue: John Abd-El-Malek <jam@chromium.org>
-Auto-Submit: Mike Wasserman <msw@chromium.org>
-Reviewed-by: John Abd-El-Malek <jam@chromium.org>
-Cr-Original-Commit-Position: refs/heads/main@{#1240353}
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5178801
-Cr-Commit-Position: refs/branch-heads/6099@{#1727}
-Cr-Branched-From: e6ee4500f7d6549a9ac1354f8d056da49ef406be-refs/heads/main@{#1217362}
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532073
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- chromium/content/browser/web_contents/web_contents_impl.cc | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/chromium/content/browser/web_contents/web_contents_impl.cc b/chromium/content/browser/web_contents/web_contents_impl.cc
-index 0627170ed036..23d4268a1b67 100644
---- src/3rdparty/chromium/content/browser/web_contents/web_contents_impl.cc
-+++ src/3rdparty/chromium/content/browser/web_contents/web_contents_impl.cc
-@@ -3278,7 +3278,12 @@ void WebContentsImpl::ExitFullscreenMode(bool will_cause_resize) {
- }
-
- if (delegate_) {
-+ // This may spin the message loop and destroy this object crbug.com/1506535
-+ base::WeakPtr<WebContentsImpl> weak_ptr = weak_factory_.GetWeakPtr();
- delegate_->ExitFullscreenModeForTab(this);
-+ if (!weak_ptr) {
-+ return;
-+ }
-
- if (keyboard_lock_widget_)
- delegate_->CancelKeyboardLockRequest(this);
-From 1c6050c84b2a8bd14a96787ca845a3aec0d87a4f Mon Sep 17 00:00:00 2001
-From: Gustaf Ullberg <gustaf@chromium.org>
-Date: Tue, 19 Dec 2023 18:08:19 +0000
-Subject: [PATCH] [Backport] CVE-2023-7024: Heap buffer overflow in WebRTC
-
-Cherry-pick of patch originally reviewed on
-https://chromium-review.googlesource.com/c/chromium/src/+/5136295:
-WebRtcAudioSink: Stop on invalid configuration
-
-Bug: 1513170
-Change-Id: Ia4ca55e9eafb81789b28b8b8c54e615ac28df633
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5136295
-Reviewed-by: Harald Alvestrand <hta@chromium.org>
-Commit-Queue: Gustaf Ullberg <gustaf@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1239233}
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532066
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- .../blink/renderer/platform/peerconnection/webrtc_audio_sink.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/chromium/third_party/blink/renderer/platform/peerconnection/webrtc_audio_sink.cc b/chromium/third_party/blink/renderer/platform/peerconnection/webrtc_audio_sink.cc
-index a0f2c5e8005f..0542a9a7d4c0 100644
---- src/3rdparty/chromium/third_party/blink/renderer/platform/peerconnection/webrtc_audio_sink.cc
-+++ src/3rdparty/chromium/third_party/blink/renderer/platform/peerconnection/webrtc_audio_sink.cc
-@@ -115,7 +115,7 @@ void WebRtcAudioSink::OnData(const media::AudioBus& audio_bus,
- }
-
- void WebRtcAudioSink::OnSetFormat(const media::AudioParameters& params) {
-- DCHECK(params.IsValid());
-+ CHECK(params.IsValid());
- SendLogMessage(base::StringPrintf("OnSetFormat([label=%s] {params=[%s]})",
- adapter_->label().c_str(),
- params.AsHumanReadableString().c_str()));
-From 525ae23fbd019ab819a2f7e26e43bfce4ee79c51 Mon Sep 17 00:00:00 2001
-From: Hongchan Choi <hongchan@chromium.org>
-Date: Tue, 12 Dec 2023 02:36:08 +0000
-Subject: [PATCH] [Backport] CVE-2024-0224: Use after free in WebAudio
-
-Manual cherry-pick of patch originally reviewed on
-https://chromium-review.googlesource.com/c/chromium/src/+/5112992:
-Wrap buffer read index in delay kernel
-
-The current code assumes that the first buffer read index in the delay
-kernel does not go out of bound. This CL applies the wrapping function
-to the read index array.
-
-(cherry picked from commit fb96fd5f41bec823dbb208d9a7d53fbbf4d16ce4)
-
-Bug: 1505086
-Test: Locally confirmed the repro does not crash anymore
-Change-Id: Idca3dfc7dec5b5a7f9b22d87135e2d775729631a
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5072113
-Commit-Queue: Hongchan Choi <hongchan@chromium.org>
-Reviewed-by: Michael Wilson <mjwilson@chromium.org>
-Cr-Original-Commit-Position: refs/heads/main@{#1231040}
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5112992
-Auto-Submit: Hongchan Choi <hongchan@chromium.org>
-Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
-Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
-Cr-Commit-Position: refs/branch-heads/6099@{#1498}
-Cr-Branched-From: e6ee4500f7d6549a9ac1354f8d056da49ef406be-refs/heads/main@{#1217362}
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532067
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- .../renderer/platform/audio/audio_delay_dsp_kernel.cc | 2 +-
- .../audio/cpu/arm/audio_delay_dsp_kernel_neon.cc | 7 +++++--
- .../audio/cpu/x86/audio_delay_dsp_kernel_sse2.cc | 10 +++++++---
- 3 files changed, 13 insertions(+), 6 deletions(-)
-
-diff --git a/chromium/third_party/blink/renderer/platform/audio/audio_delay_dsp_kernel.cc b/chromium/third_party/blink/renderer/platform/audio/audio_delay_dsp_kernel.cc
-index 25818dcf2aa7..c34118e953ac 100644
---- src/3rdparty/chromium/third_party/blink/renderer/platform/audio/audio_delay_dsp_kernel.cc
-+++ src/3rdparty/chromium/third_party/blink/renderer/platform/audio/audio_delay_dsp_kernel.cc
-@@ -150,7 +150,7 @@ int AudioDelayDSPKernel::ProcessARateScalar(unsigned start,
- const float* delay_times = delay_times_.Data();
-
- for (unsigned i = start; i < frames_to_process; ++i) {
-- double delay_time = delay_times[i];
-+ double delay_time = std::fmax(delay_times[i], 0);
- double desired_delay_frames = delay_time * sample_rate;
-
- double read_position = w_index + buffer_length - desired_delay_frames;
-diff --git a/chromium/third_party/blink/renderer/platform/audio/cpu/arm/audio_delay_dsp_kernel_neon.cc b/chromium/third_party/blink/renderer/platform/audio/cpu/arm/audio_delay_dsp_kernel_neon.cc
-index 2843bd60b8ba..803f3e724423 100644
---- src/3rdparty/chromium/third_party/blink/renderer/platform/audio/cpu/arm/audio_delay_dsp_kernel_neon.cc
-+++ src/3rdparty/chromium/third_party/blink/renderer/platform/audio/cpu/arm/audio_delay_dsp_kernel_neon.cc
-@@ -60,6 +60,7 @@ std::tuple<unsigned, int> AudioDelayDSPKernel::ProcessARateVector(
- int w_index = write_index_;
-
- const float32x4_t v_sample_rate = vdupq_n_f32(sample_rate);
-+ const float32x4_t v_all_zeros = vdupq_n_f32(0);
-
- // The buffer length as a float and as an int so we don't need to constant
- // convert from one to the other.
-@@ -87,7 +88,8 @@ std::tuple<unsigned, int> AudioDelayDSPKernel::ProcessARateVector(
- int k = 0;
-
- for (int n = 0; n < number_of_loops; ++n, k += 4) {
-- const float32x4_t v_delay_time = vld1q_f32(delay_times + k);
-+ const float32x4_t v_delay_time = vmaxq_f32(vld1q_f32(delay_times + k),
-+ v_all_zeros);
- const float32x4_t v_desired_delay_frames =
- vmulq_f32(v_delay_time, v_sample_rate);
-
-@@ -100,7 +102,8 @@ std::tuple<unsigned, int> AudioDelayDSPKernel::ProcessARateVector(
- WrapPositionVector(v_read_position, v_buffer_length_float);
-
- // Get indices into the buffer for the samples we need for interpolation.
-- const int32x4_t v_read_index1 = vcvtq_s32_f32(v_read_position);
-+ const int32x4_t v_read_index1 = WrapIndexVector(
-+ vcvtq_s32_f32(v_read_position), v_buffer_length_int);
- const int32x4_t v_read_index2 = WrapIndexVector(
- vaddq_s32(v_read_index1, vdupq_n_s32(1)), v_buffer_length_int);
-
-diff --git a/chromium/third_party/blink/renderer/platform/audio/cpu/x86/audio_delay_dsp_kernel_sse2.cc b/chromium/third_party/blink/renderer/platform/audio/cpu/x86/audio_delay_dsp_kernel_sse2.cc
-index fe2aef95aeda..dd368ee4b0f4 100644
---- src/3rdparty/chromium/third_party/blink/renderer/platform/audio/cpu/x86/audio_delay_dsp_kernel_sse2.cc
-+++ src/3rdparty/chromium/third_party/blink/renderer/platform/audio/cpu/x86/audio_delay_dsp_kernel_sse2.cc
-@@ -56,10 +56,10 @@ std::tuple<unsigned, int> AudioDelayDSPKernel::ProcessARateVector(
-
- const float sample_rate = this->SampleRate();
- const float* delay_times = delay_times_.Data();
--
- int w_index = write_index_;
-
- const __m128 v_sample_rate = _mm_set1_ps(sample_rate);
-+ const __m128 v_all_zeros = _mm_setzero_ps();
-
- // The buffer length as a float and as an int so we don't need to constant
- // convert from one to the other.
-@@ -82,7 +82,10 @@ std::tuple<unsigned, int> AudioDelayDSPKernel::ProcessARateVector(
- int k = 0;
-
- for (int n = 0; n < number_of_loops; ++n, k += 4) {
-- const __m128 v_delay_time = _mm_loadu_ps(delay_times + k);
-+ // It's possible that `delay_time` contains negative values. Make sure
-+ // they are greater than zero.
-+ const __m128 v_delay_time = _mm_max_ps(_mm_loadu_ps(delay_times + k),
-+ v_all_zeros);
- const __m128 v_desired_delay_frames =
- _mm_mul_ps(v_delay_time, v_sample_rate);
-
-@@ -95,7 +98,8 @@ std::tuple<unsigned, int> AudioDelayDSPKernel::ProcessARateVector(
- WrapPositionVector(v_read_position, v_buffer_length_float);
-
- // Get indices into the buffer for the samples we need for interpolation.
-- const __m128i v_read_index1 = _mm_cvttps_epi32(v_read_position);
-+ const __m128i v_read_index1 = WrapIndexVector(
-+ _mm_cvttps_epi32(v_read_position), v_buffer_length_int);
- const __m128i v_read_index2 = WrapIndexVector(
- _mm_add_epi32(v_read_index1, _mm_set1_epi32(1)), v_buffer_length_int);
-
-From c96132ccf271137bbd3f5b1a8c9c172650e69526 Mon Sep 17 00:00:00 2001
-From: Evan Stade <estade@chromium.org>
-Date: Fri, 15 Dec 2023 21:38:02 +0000
-Subject: [PATCH] [Backport] Security bug 1511689
-
-Manual cherry-pick of patch originally reviewed on
-https://chromium-review.googlesource.com/c/chromium/deps/sqlite/+/5123910:
-Fix a spurious "misuse of aggregate function" error that could occur when an aggregate function was used within the FROM clause of a sub-select of the select that owns the aggregate. e.g. "SELECT (SELECT x FROM (SELECT sum(t1.a) AS x)) FROM t1". [forum:/forumpost/c9970a37ed | Forum post c9970a37ed].
-
-FossilOrigin-Name: 4470f657d2069972d02a00983252dec1f814d90c0d8d0906e320e955111e8c11
-(cherry picked from commit 5e4233a9e48b124d4d342b757b34e4ae849f5cf8)
-
-Bug: 1511689
-Change-Id: I69263fc0a5fa66df5c09b964864568f2fc7a6ca5
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/deps/sqlite/+/5123910
-Auto-Submit: Evan Stade <estade@chromium.org>
-Commit-Queue: Ayu Ishii <ayui@chromium.org>
-Reviewed-by: Ayu Ishii <ayui@chromium.org>
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532068
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- chromium/third_party/sqlite/src/amalgamation/sqlite3.c | 6 +++++-
- chromium/third_party/sqlite/src/amalgamation_dev/sqlite3.c | 6 +++++-
- chromium/third_party/sqlite/src/src/resolve.c | 7 +++++--
- chromium/third_party/sqlite/src/src/sqliteInt.h | 1 +
- 4 files changed, 16 insertions(+), 4 deletions(-)
-
-diff --git a/chromium/third_party/sqlite/src/amalgamation/sqlite3.c b/chromium/third_party/sqlite/src/amalgamation/sqlite3.c
-index d7766b7d7ec..b353aa88348 100644
---- src/3rdparty/chromium/third_party/sqlite/src/amalgamation/sqlite3.c
-+++ src/3rdparty/chromium/third_party/sqlite/src/amalgamation/sqlite3.c
-@@ -18804,6 +18804,7 @@ struct NameContext {
- int nRef; /* Number of names resolved by this context */
- int nNcErr; /* Number of errors encountered while resolving names */
- int ncFlags; /* Zero or more NC_* flags defined below */
-+ int nNestedSelect; /* Number of nested selects using this NC */
- Select *pWinSelect; /* SELECT statement for any window functions */
- };
-
-@@ -104749,11 +104750,12 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
- while( pNC2
- && sqlite3ReferencesSrcList(pParse, pExpr, pNC2->pSrcList)==0
- ){
-- pExpr->op2++;
-+ pExpr->op2 += (1 + pNC2->nNestedSelect);
- pNC2 = pNC2->pNext;
- }
- assert( pDef!=0 || IN_RENAME_OBJECT );
- if( pNC2 && pDef ){
-+ pExpr->op2 += pNC2->nNestedSelect;
- assert( SQLITE_FUNC_MINMAX==NC_MinMaxAgg );
- assert( SQLITE_FUNC_ANYORDER==NC_OrderAgg );
- testcase( (pDef->funcFlags & SQLITE_FUNC_MINMAX)!=0 );
-@@ -105314,6 +105316,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
-
- /* Recursively resolve names in all subqueries in the FROM clause
- */
-+ if( pOuterNC ) pOuterNC->nNestedSelect++;
- for(i=0; i<p->pSrc->nSrc; i++){
- SrcItem *pItem = &p->pSrc->a[i];
- if( pItem->pSelect && (pItem->pSelect->selFlags & SF_Resolved)==0 ){
-@@ -105338,6 +105341,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
- }
- }
- }
-+ if( pOuterNC ) pOuterNC->nNestedSelect--;
-
- /* Set up the local name-context to pass to sqlite3ResolveExprNames() to
- ** resolve the result-set expression list.
-diff --git a/chromium/third_party/sqlite/src/amalgamation_dev/sqlite3.c b/chromium/third_party/sqlite/src/amalgamation_dev/sqlite3.c
-index 0819ea6a615..5c72a44dd6b 100644
---- src/3rdparty/chromium/third_party/sqlite/src/amalgamation_dev/sqlite3.c
-+++ src/3rdparty/chromium/third_party/sqlite/src/amalgamation_dev/sqlite3.c
-@@ -18817,6 +18817,7 @@ struct NameContext {
- int nRef; /* Number of names resolved by this context */
- int nNcErr; /* Number of errors encountered while resolving names */
- int ncFlags; /* Zero or more NC_* flags defined below */
-+ int nNestedSelect; /* Number of nested selects using this NC */
- Select *pWinSelect; /* SELECT statement for any window functions */
- };
-
-@@ -104762,11 +104763,12 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
- while( pNC2
- && sqlite3ReferencesSrcList(pParse, pExpr, pNC2->pSrcList)==0
- ){
-- pExpr->op2++;
-+ pExpr->op2 += (1 + pNC2->nNestedSelect);
- pNC2 = pNC2->pNext;
- }
- assert( pDef!=0 || IN_RENAME_OBJECT );
- if( pNC2 && pDef ){
-+ pExpr->op2 += pNC2->nNestedSelect;
- assert( SQLITE_FUNC_MINMAX==NC_MinMaxAgg );
- assert( SQLITE_FUNC_ANYORDER==NC_OrderAgg );
- testcase( (pDef->funcFlags & SQLITE_FUNC_MINMAX)!=0 );
-@@ -105327,6 +105329,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
-
- /* Recursively resolve names in all subqueries in the FROM clause
- */
-+ if( pOuterNC ) pOuterNC->nNestedSelect++;
- for(i=0; i<p->pSrc->nSrc; i++){
- SrcItem *pItem = &p->pSrc->a[i];
- if( pItem->pSelect && (pItem->pSelect->selFlags & SF_Resolved)==0 ){
-@@ -105351,6 +105354,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
- }
- }
- }
-+ if( pOuterNC ) pOuterNC->nNestedSelect--;
-
- /* Set up the local name-context to pass to sqlite3ResolveExprNames() to
- ** resolve the result-set expression list.
-diff --git a/chromium/third_party/sqlite/src/src/resolve.c b/chromium/third_party/sqlite/src/src/resolve.c
-index 4b36ecca348..c5228a7f097 100644
---- src/3rdparty/chromium/third_party/sqlite/src/src/resolve.c
-+++ src/3rdparty/chromium/third_party/sqlite/src/src/resolve.c
-@@ -1211,11 +1211,12 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
- while( pNC2
- && sqlite3ReferencesSrcList(pParse, pExpr, pNC2->pSrcList)==0
- ){
-- pExpr->op2++;
-+ pExpr->op2 += (1 + pNC2->nNestedSelect);
- pNC2 = pNC2->pNext;
- }
- assert( pDef!=0 || IN_RENAME_OBJECT );
- if( pNC2 && pDef ){
-+ pExpr->op2 += pNC2->nNestedSelect;
- assert( SQLITE_FUNC_MINMAX==NC_MinMaxAgg );
- assert( SQLITE_FUNC_ANYORDER==NC_OrderAgg );
- testcase( (pDef->funcFlags & SQLITE_FUNC_MINMAX)!=0 );
-@@ -1776,6 +1777,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
-
- /* Recursively resolve names in all subqueries in the FROM clause
- */
-+ if( pOuterNC ) pOuterNC->nNestedSelect++;
- for(i=0; i<p->pSrc->nSrc; i++){
- SrcItem *pItem = &p->pSrc->a[i];
- if( pItem->pSelect && (pItem->pSelect->selFlags & SF_Resolved)==0 ){
-@@ -1800,7 +1802,8 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
- }
- }
- }
--
-+ if( pOuterNC ) pOuterNC->nNestedSelect--;
-+
- /* Set up the local name-context to pass to sqlite3ResolveExprNames() to
- ** resolve the result-set expression list.
- */
-diff --git a/chromium/third_party/sqlite/src/src/sqliteInt.h b/chromium/third_party/sqlite/src/src/sqliteInt.h
-index 2614f4be458..07bc4def106 100644
---- src/3rdparty/chromium/third_party/sqlite/src/src/sqliteInt.h
-+++ src/3rdparty/chromium/third_party/sqlite/src/src/sqliteInt.h
-@@ -3321,6 +3321,7 @@ struct NameContext {
- int nRef; /* Number of names resolved by this context */
- int nNcErr; /* Number of errors encountered while resolving names */
- int ncFlags; /* Zero or more NC_* flags defined below */
-+ int nNestedSelect; /* Number of nested selects using this NC */
- Select *pWinSelect; /* SELECT statement for any window functions */
- };
-
-From f1ef87d506845dd62bb0802e80092d53100222f4 Mon Sep 17 00:00:00 2001
-From: Hongchan Choi <hongchan@chromium.org>
-Date: Fri, 12 Jan 2024 22:57:22 +0000
-Subject: [PATCH] [Backport] CVE-2024-0807: Use after free in WebAudio
-
-Manual cherry-pick of patch originally reviewed on
-https://chromium-review.googlesource.com/c/chromium/src/+/5225523:
-Update rendering state of automatic pull nodes before graph rendering
-
-M114 merge issues:
- third_party/blink/renderer/modules/webaudio/analyser_handler.cc:
-PullInputs/CheckNumberOfChannelsForInput not present in 114.
-
-In rare cases, the rendering fan out count of automatic pull node
-does not match the main thread fan out count after recreating
-a platform destination followed by disconnection.
-
-This CL forces the update of the rendering state of automatic
-pull nodes before graph rendering to make sure that fan out counts
-are synchronized before executing the audio processing function call.
-
-NOTE: This change makes 2 WPTs fail. The follow-up work is planned
-to address them once this patch is merged.
-
-Bug: 1505080
-Test: Locally confirmed that ASAN doesn't crash on all repro cases.
-Change-Id: I6768cd8bc64525ea9d56a19b9c58439e9cdab9a8
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5131958
-Commit-Queue: Hongchan Choi <hongchan@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1246718}
-(cherry picked from commit f4bffa09b46c21147431179e1e6dd2b27bc35fbc)
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/537374
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- .../renderer/modules/webaudio/analyser_node.cc | 11 +++++++++--
- .../renderer/modules/webaudio/audio_worklet_node.cc | 13 +++++++++----
- .../modules/webaudio/audio_worklet_processor.cc | 6 ++++++
- .../modules/webaudio/deferred_task_handler.cc | 10 ++++++++++
- 4 files changed, 34 insertions(+), 6 deletions(-)
-
-diff --git a/chromium/third_party/blink/renderer/modules/webaudio/analyser_node.cc b/chromium/third_party/blink/renderer/modules/webaudio/analyser_node.cc
-index cb281f5b728f..9f515af5d9a9 100644
---- src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/analyser_node.cc
-+++ src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/analyser_node.cc
-@@ -51,9 +51,11 @@ AnalyserHandler::~AnalyserHandler() {
- }
-
- void AnalyserHandler::Process(uint32_t frames_to_process) {
-- AudioBus* output_bus = Output(0).Bus();
-+ DCHECK(Context()->IsAudioThread());
-
-- if (!IsInitialized()) {
-+ AudioBus* output_bus = Output(0).RenderingFanOutCount() > 0 ? Output(0).Bus() : nullptr;
-+
-+ if (!IsInitialized() && output_bus) {
- output_bus->Zero();
- return;
- }
-@@ -65,6 +67,11 @@ void AnalyserHandler::Process(uint32_t frames_to_process) {
- // Analyser reflects the current input.
- analyser_.WriteInput(input_bus.get(), frames_to_process);
-
-+ // Subsequent steps require `output_bus` to be valid.
-+ if (!output_bus) {
-+ return;
-+ }
-+
- if (!Input(0).IsConnected()) {
- // No inputs, so clear the output, and propagate the silence hint.
- output_bus->Zero();
-diff --git a/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_node.cc b/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_node.cc
-index eccf002b6da6..5f18c4cd12d2 100644
---- src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_node.cc
-+++ src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_node.cc
-@@ -102,11 +102,16 @@ void AudioWorkletHandler::Process(uint32_t frames_to_process) {
- // We also need to check if the global scope is valid before we request
- // the rendering in the AudioWorkletGlobalScope.
- if (processor_ && !processor_->hasErrorOccurred()) {
-- // If the input is not connected, inform the processor with nullptr.
-- for (unsigned i = 0; i < NumberOfInputs(); ++i)
-+ // If the input or the output is not connected, inform the processor with
-+ // nullptr.
-+ for (unsigned i = 0; i < NumberOfInputs(); ++i) {
- inputs_[i] = Input(i).IsConnected() ? Input(i).Bus() : nullptr;
-- for (unsigned i = 0; i < NumberOfOutputs(); ++i)
-- outputs_[i] = WrapRefCounted(Output(i).Bus());
-+ }
-+ for (unsigned i = 0; i < NumberOfOutputs(); ++i) {
-+ outputs_[i] = Output(i).RenderingFanOutCount() > 0
-+ ? WrapRefCounted(Output(i).Bus())
-+ : nullptr;
-+ }
-
- for (const auto& param_name : param_value_map_.Keys()) {
- auto* const param_handler = param_handler_map_.at(param_name);
-diff --git a/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc b/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc
-index e68b1c1b2f6b..84ab72b9774c 100644
---- src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc
-+++ src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc
-@@ -343,6 +343,12 @@ void AudioWorkletProcessor::CopyArrayBuffersToPort(
-
- for (uint32_t bus_index = 0; bus_index < audio_port.size(); ++bus_index) {
- const scoped_refptr<AudioBus>& audio_bus = audio_port[bus_index];
-+
-+ // nullptr indicates the output bus is not connected. Do not proceed.
-+ if (!audio_bus) {
-+ break;
-+ }
-+
- for (uint32_t channel_index = 0;
- channel_index < audio_bus->NumberOfChannels(); ++channel_index) {
- const v8::ArrayBuffer::Contents& contents =
-diff --git a/chromium/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc b/chromium/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc
-index 76aa9acccd30..88e4228caefa 100644
---- src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc
-+++ src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc
-@@ -169,6 +169,16 @@ void DeferredTaskHandler::UpdateAutomaticPullNodes() {
- if (try_locker.Locked()) {
- CopyToVector(automatic_pull_handlers_,
- rendering_automatic_pull_handlers_);
-+
-+ // In rare cases, it is possible for automatic pull nodes' output bus
-+ // to become stale. Make sure update their rendering output counts.
-+ // crbug.com/1505080.
-+ for (auto& handler : rendering_automatic_pull_handlers_) {
-+ for (unsigned i = 0; i < handler->NumberOfOutputs(); ++i) {
-+ handler->Output(i).UpdateRenderingState();
-+ }
-+ }
-+
- automatic_pull_handlers_need_updating_ = false;
- }
- }
-From 850527b41e56a8b48d99513eddcc75d4efe3c16d Mon Sep 17 00:00:00 2001
-From: Lyra Rebane <rebane2001@gmail.com>
-Date: Mon, 8 Jan 2024 13:39:46 +0000
-Subject: [PATCH] [Backport] CVE-2024-0808: Integer underflow in WebUI
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Manual backport of patch originally reviewed on
-https://chromium-review.googlesource.com/c/chromium/src/+/5177426:
-[M114-LTS] Verify resource order in data pack files
-
-This CL adds a resource order check when loading a data pack or calling DataPack::GetStringPiece to make sure the resources are ordered sequentially in memory.
-
-Bug: 1504936
-Change-Id: Ie3bf1d9dbac937407355935a859a5daa9ce84350
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5059113
-Commit-Queue: Peter Boström <pbos@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1238675}
-(cherry picked from commit c4b2e6246ad0e95eaf0727bb25a2e4969155e989)
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/537375
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- chromium/AUTHORS | 1 +
- chromium/ui/base/resource/data_pack.cc | 19 ++++++++++++++++++-
- .../ui/base/resource/data_pack_literal.cc | 12 ++++++++++++
- chromium/ui/base/resource/data_pack_literal.h | 2 ++
- 4 files changed, 33 insertions(+), 1 deletion(-)
-
-diff --git a/chromium/AUTHORS b/chromium/AUTHORS
-index 92f53ac669a0..9d61a61e57b9 100644
---- src/3rdparty/chromium/AUTHORS
-+++ src/3rdparty/chromium/AUTHORS
-@@ -631,6 +631,7 @@ Luke Inman-Semerau <luke.semerau@gmail.com>
- Luke Seunghoe Gu <gulukesh@gmail.com>
- Luke Zarko <lukezarko@gmail.com>
- Luoxi Pan <l.panpax@gmail.com>
-+Lyra Rebane <rebane2001@gmail.com>
- Maarten Lankhorst <m.b.lankhorst@gmail.com>
- Magnus Danielsson <fuzzac@gmail.com>
- Mahesh Kulkarni <mahesh.kk@samsung.com>
-diff --git a/chromium/ui/base/resource/data_pack.cc b/chromium/ui/base/resource/data_pack.cc
-index 09513e6aed24..4e522c9ad758 100644
---- src/3rdparty/chromium/ui/base/resource/data_pack.cc
-+++ src/3rdparty/chromium/ui/base/resource/data_pack.cc
-@@ -400,7 +400,16 @@ bool DataPack::LoadImpl(std::unique_ptr<DataPack::DataSource> data_source) {
- }
- }
-
-- // 3) Verify the aliases are within the appropriate bounds.
-+ // 3) Verify the entries are ordered correctly.
-+ for (size_t i = 0; i < resource_count_; ++i) {
-+ if (resource_table_[i].file_offset > resource_table_[i + 1].file_offset) {
-+ LOG(ERROR) << "Data pack file corruption: "
-+ << "Entry #" << i + 1 << " before Entry #" << i << ".";
-+ return false;
-+ }
-+ }
-+
-+ // 4) Verify the aliases are within the appropriate bounds.
- for (size_t i = 0; i < alias_count_; ++i) {
- if (alias_table_[i].entry_index >= resource_count_) {
- LOG(ERROR) << "Data pack file corruption: "
-@@ -461,6 +470,14 @@ bool DataPack::GetStringPiece(uint16_t resource_id,
- << "file modified?";
- return false;
- }
-+ if (target->file_offset > next_entry->file_offset) {
-+ size_t entry_index = target - resource_table_;
-+ size_t next_index = next_entry - resource_table_;
-+ LOG(ERROR) << "Entry #" << next_index << " in data pack is before Entry #"
-+ << entry_index << ". This should have been caught when loading. "
-+ << "Was the file modified?";
-+ return false;
-+ }
-
- MaybePrintResourceId(resource_id);
- size_t length = next_entry->file_offset - target->file_offset;
-diff --git a/chromium/ui/base/resource/data_pack_literal.cc b/chromium/ui/base/resource/data_pack_literal.cc
-index f6669ed82447..70e225b6e84e 100644
---- src/3rdparty/chromium/ui/base/resource/data_pack_literal.cc
-+++ src/3rdparty/chromium/ui/base/resource/data_pack_literal.cc
-@@ -91,6 +91,18 @@ const char kSampleCorruptPakContents[] = {
-
- const size_t kSampleCorruptPakSize = sizeof(kSampleCorruptPakContents);
-
-+const uint8_t kSampleMisorderedPakContents[] = {
-+ 0x05, 0x00, 0x00, 0x00, // version
-+ 0x01, 0x00, 0x00, 0x00, // encoding + padding
-+ 0x02, 0x00, 0x00, 0x00, // num_resources, num_aliases
-+ 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, // index entry 6 (wrong order)
-+ 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, // index entry 4
-+ 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, // extra entry for the size of last
-+ 't', 'h', 'i', 's', ' ', 'i', 's', ' ', 'i', 'd', ' ', '4',
-+ 't', 'h', 'i', 's', ' ', 'i', 's', ' ', 'i', 'd', ' ', '6'};
-+
-+const size_t kSampleMisorderedPakSize = sizeof(kSampleMisorderedPakContents);
-+
- const char kSamplePakContents2x[] = {
- 0x04, 0x00, 0x00, 0x00, // header(version
- 0x01, 0x00, 0x00, 0x00, // no. entries
-diff --git a/chromium/ui/base/resource/data_pack_literal.h b/chromium/ui/base/resource/data_pack_literal.h
-index 83a8dc04c141..a7fcf2bf85c7 100644
---- src/3rdparty/chromium/ui/base/resource/data_pack_literal.h
-+++ src/3rdparty/chromium/ui/base/resource/data_pack_literal.h
-@@ -19,6 +19,8 @@ extern const char kEmptyPakContents[];
- extern const size_t kEmptyPakSize;
- extern const char kSampleCorruptPakContents[];
- extern const size_t kSampleCorruptPakSize;
-+extern const uint8_t kSampleMisorderedPakContents[];
-+extern const size_t kSampleMisorderedPakSize;
-
- } // namespace ui
-
-From 629a490cede4673cec29addd4629c432319a3b6f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Peter=20Bostr=C3=B6m?= <pbos@chromium.org>
-Date: Tue, 23 Jan 2024 01:06:06 +0000
-Subject: [PATCH] [Backport] Security bug 1519980
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Manual cherry-pick of patch originally reviewed on
-https://chromium-review.googlesource.com/c/chromium/src/+/5226127:
-Speculatively fix race in mojo ShutDownOnIOThread
-
-This acquires `write_lock_` before resetting handles used by WriteNoLock
-(which is called under the same lock in another thread). We also set
-`reject_writes_` to prevent future write attempts after shutdown. That
-seems strictly more correct.
-
-We also acquire `fds_to_close_lock_` before clearing the FDs.
-
-I was unable to repro locally as content_browsertests just times out
-in my local setup without reporting anything interesting. This seems
-strictly more correct though.
-
-Bug: 1519980
-Change-Id: I96279936ca908ecb98eddd381df20d61597cba43
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5226127
-Auto-Submit: Peter Boström <pbos@chromium.org>
-Reviewed-by: Ken Rockot <rockot@google.com>
-Commit-Queue: Ken Rockot <rockot@google.com>
-Commit-Queue: Peter Boström <pbos@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1250580}
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/537376
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- chromium/mojo/core/channel_posix.cc | 27 ++++++++++++++++-----------
- 1 file changed, 16 insertions(+), 11 deletions(-)
-
-diff --git a/chromium/mojo/core/channel_posix.cc b/chromium/mojo/core/channel_posix.cc
-index d7d9d6cfee15..e17aa8d82a91 100644
---- src/3rdparty/chromium/mojo/core/channel_posix.cc
-+++ src/3rdparty/chromium/mojo/core/channel_posix.cc
-@@ -242,18 +242,23 @@ class ChannelPosix : public Channel,
- void ShutDownOnIOThread() {
- base::CurrentThread::Get()->RemoveDestructionObserver(this);
-
-- read_watcher_.reset();
-- write_watcher_.reset();
-- if (leak_handle_) {
-- ignore_result(socket_.release());
-- server_.TakePlatformHandle().release();
-- } else {
-- socket_.reset();
-- ignore_result(server_.TakePlatformHandle());
-+ {
-+ base::AutoLock lock(write_lock_);
-+ reject_writes_ = true;
-+ read_watcher_.reset();
-+ write_watcher_.reset();
-+ if (leak_handle_) {
-+ std::ignore = socket_.release();
-+ server_.TakePlatformHandle().release();
-+ } else {
-+ socket_.reset();
-+ std::ignore = server_.TakePlatformHandle();
-+ }
-+ #if defined(OS_IOS)
-+ base::AutoLock fd_lock(fds_to_close_lock_);
-+ fds_to_close_.clear();
-+ #endif
- }
--#if defined(OS_IOS)
-- fds_to_close_.clear();
--#endif
-
- // May destroy the |this| if it was the last reference.
- self_ = nullptr;
-From 024962f9456bbb5823a877441e92ca3af30279a6 Mon Sep 17 00:00:00 2001
-From: Tsuyoshi Horo <horo@chromium.org>
-Date: Tue, 9 Jan 2024 08:40:00 +0000
-Subject: [PATCH] [Backport] CVE-2024-1077: Use after free in Network
-
-Cherry-pick of patch originally reviewed on
-https://chromium-review.googlesource.com/c/chromium/src/+/5179746:
-Fix UAF in SourceStreamToDataPipe
-
-SourceStreamToDataPipe::ReadMore() is passing a callback with
-Unretained(this) to net::SourceStream::Read(). But this callback may be
-called even after the SourceStream is destructed. This is causing UAF
-issue (crbug.com/1511085).
-
-To solve this problem, this CL changes ReadMore() method to pass a
-callback with a weak ptr of this.
-
-Bug: 1511085
-Change-Id: Idd4e34ff300ff5db2de1de7b303841c7db3a964a
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5179746
-Reviewed-by: Adam Rice <ricea@chromium.org>
-Commit-Queue: Tsuyoshi Horo <horo@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1244526}
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/537377
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- .../network/public/cpp/source_stream_to_data_pipe.cc | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/chromium/services/network/public/cpp/source_stream_to_data_pipe.cc b/chromium/services/network/public/cpp/source_stream_to_data_pipe.cc
-index d6ade7b0ec52..615804ad8d29 100644
---- src/3rdparty/chromium/services/network/public/cpp/source_stream_to_data_pipe.cc
-+++ src/3rdparty/chromium/services/network/public/cpp/source_stream_to_data_pipe.cc
-@@ -53,9 +53,9 @@ void SourceStreamToDataPipe::ReadMore() {
-
- scoped_refptr<net::IOBuffer> buffer(
- new network::NetToMojoIOBuffer(pending_write_.get()));
-- int result = source_->Read(
-- buffer.get(), base::checked_cast<int>(num_bytes),
-- base::BindOnce(&SourceStreamToDataPipe::DidRead, base::Unretained(this)));
-+ int result = source_->Read(buffer.get(), base::checked_cast<int>(num_bytes),
-+ base::BindOnce(&SourceStreamToDataPipe::DidRead,
-+ weak_factory_.GetWeakPtr()));
-
- if (result != net::ERR_IO_PENDING)
- DidRead(result);
-From 06e89516b94241e088f6d350bc3a113e726355cd Mon Sep 17 00:00:00 2001
-From: Jean-Philippe Gravel <jpgravel@chromium.org>
-Date: Wed, 17 Jan 2024 17:45:45 +0000
-Subject: [PATCH] [Backport] CVE-2024-1060: Use after free in Canvas
-
-Manual backport of patch originally reviewed on
-https://chromium-review.googlesource.com/c/chromium/src/+/5198419:
-Fix use-after-free in DrawTextInternal
-
-DrawTextInternal was calling GetOrCreatePaintCanvas multiple times,
-once at the start of the function, once inside of the
-BaseRenderingContext2DAutoRestoreSkCanvas helper class and once in the
-Draw call. GetOrCreatePaintCanvas destroys the canvas resource provider
-if the GPU context is lost. If this happens on the second call to
-GetOrCreatePaintCanvas, destroying the resource provider will
-invalidate the cc::PaintCanvas returned by the first call to
-GetOrCreatePaintCanvas.
-
-The GPU process can technically crash at any point during the renderer
-process execution (perhaps because of something another renderer
-process did). We therefore have to assume that any call to
-GetOrCreatePaintCanvas can invalidate previously returned
-cc::PaintCanvas.
-
-Change-Id: Ifa77735ab1b2b55b3d494f886b8566299937f6fe
-Fixed: 1511567
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5198419
-Reviewed-by: Fernando Serboncini <fserb@chromium.org>
-Commit-Queue: Jean-Philippe Gravel <jpgravel@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1248204}
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/537378
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- .../canvas2d/canvas_rendering_context_2d.cc | 50 ++++++-------------
- .../canvas2d/canvas_rendering_context_2d.h | 2 -
- 2 files changed, 16 insertions(+), 36 deletions(-)
-
-diff --git a/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc b/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
-index ade14e0102ae..fe8c4cd277ce 100644
---- src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
-+++ src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
-@@ -86,35 +86,6 @@ static bool ContextLostRestoredEventsEnabled() {
- return RuntimeEnabledFeatures::Canvas2dContextLostRestoredEnabled();
- }
-
--// Drawing methods need to use this instead of SkAutoCanvasRestore in case
--// overdraw detection substitutes the recording canvas (to discard overdrawn
--// draw calls).
--class CanvasRenderingContext2DAutoRestoreSkCanvas {
-- STACK_ALLOCATED();
--
-- public:
-- explicit CanvasRenderingContext2DAutoRestoreSkCanvas(
-- CanvasRenderingContext2D* context)
-- : context_(context), save_count_(0) {
-- DCHECK(context_);
-- cc::PaintCanvas* c = context_->GetOrCreatePaintCanvas();
-- if (c) {
-- save_count_ = c->getSaveCount();
-- }
-- }
--
-- ~CanvasRenderingContext2DAutoRestoreSkCanvas() {
-- cc::PaintCanvas* c = context_->GetOrCreatePaintCanvas();
-- if (c)
-- c->restoreToCount(save_count_);
-- context_->ValidateStateStack();
-- }
--
-- private:
-- CanvasRenderingContext2D* context_;
-- int save_count_;
--};
--
- CanvasRenderingContext2D::CanvasRenderingContext2D(
- HTMLCanvasElement* canvas,
- const CanvasContextCreationAttributesCore& attrs)
-@@ -850,9 +821,11 @@ void CanvasRenderingContext2D::DrawTextInternal(
- // to 0, for example), so update style before grabbing the PaintCanvas.
- canvas()->GetDocument().UpdateStyleAndLayoutTreeForNode(canvas());
-
-- cc::PaintCanvas* c = GetOrCreatePaintCanvas();
-- if (!c)
-+ // Abort if we don't have a paint canvas (e.g. the context was lost).
-+ cc::PaintCanvas* paint_canvas = GetOrCreatePaintCanvas();
-+ if (!paint_canvas) {
- return;
-+ }
-
- if (!std::isfinite(x) || !std::isfinite(y))
- return;
-@@ -920,14 +893,13 @@ void CanvasRenderingContext2D::DrawTextInternal(
- if (paint_type == CanvasRenderingContext2DState::kStrokePaintType)
- InflateStrokeRect(bounds);
-
-- CanvasRenderingContext2DAutoRestoreSkCanvas state_restorer(this);
- if (use_max_width) {
-- c->save();
-+ paint_canvas->save();
- // We draw when fontWidth is 0 so compositing operations (eg, a "copy" op)
- // still work. As the width of canvas is scaled, so text can be scaled to
- // match the given maxwidth, update text location so it appears on desired
- // place.
-- c->scale(clampTo<float>(width / font_width), 1);
-+ paint_canvas->scale(clampTo<float>(width / font_width), 1);
- location.SetX(location.X() / clampTo<float>(width / font_width));
- }
-
-@@ -942,6 +914,16 @@ void CanvasRenderingContext2D::DrawTextInternal(
- [](const SkIRect& rect) // overdraw test lambda
- { return false; },
- bounds, paint_type, CanvasRenderingContext2DState::kNoImage);
-+
-+ if (use_max_width) {
-+ // Cannot use `paint_canvas` in case recording canvas was substituted or
-+ // destroyed during draw call.
-+ cc::PaintCanvas* c = GetPaintCanvas();
-+ if (c) {
-+ c->restore();
-+ }
-+ }
-+ ValidateStateStack();
- }
-
- const Font& CanvasRenderingContext2D::AccessFont() {
-diff --git a/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h b/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h
-index ac10ae4389a8..b0d09f182a7d 100644
---- src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h
-+++ src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h
-@@ -236,8 +236,6 @@ class MODULES_EXPORT CanvasRenderingContext2D final
- void WillOverwriteCanvas() override;
-
- private:
-- friend class CanvasRenderingContext2DAutoRestoreSkCanvas;
--
- void DispatchContextLostEvent(TimerBase*);
- void DispatchContextRestoredEvent(TimerBase*);
- void TryRestoreContextEvent(TimerBase*);
-From 6f0832285560ce72dfe1403a1c2d7a53f6bf7f55 Mon Sep 17 00:00:00 2001
-From: John Stiles <johnstiles@google.com>
-Date: Mon, 29 Jan 2024 23:50:14 +0000
-Subject: [PATCH] [Backport] CVE-2024-1283: Heap buffer overflow in Skia
-
-Manual cherry-pick of patch originally reviewed on
-https://chromium-review.googlesource.com/c/chromium/src/+/5241305:
-Fix a crash when a BMP image contains an unnecessary EOF code.
-
-Previously, this would try to perform color correction on a row
-one past the end of the image data.
-
-Bug: 1521893
-Change-Id: I425437005b9ef400138556705616095857d2cf0d
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5241305
-Auto-Submit: John Stiles <johnstiles@google.com>
-Commit-Queue: John Stiles <johnstiles@google.com>
-Reviewed-by: Peter Kasting <pkasting@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1253633}
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/538168
-Reviewed-by: Michal Klocek <michal.klocek@qt.io>
----
- .../image-decoders/bmp/bmp_image_reader.cc | 18 +++++++++++++++---
- 1 file changed, 15 insertions(+), 3 deletions(-)
-
-diff --git a/chromium/third_party/blink/renderer/platform/image-decoders/bmp/bmp_image_reader.cc b/chromium/third_party/blink/renderer/platform/image-decoders/bmp/bmp_image_reader.cc
-index 562223397030..662e66cab884 100644
---- src/3rdparty/chromium/third_party/blink/renderer/platform/image-decoders/bmp/bmp_image_reader.cc
-+++ src/3rdparty/chromium/third_party/blink/renderer/platform/image-decoders/bmp/bmp_image_reader.cc
-@@ -827,8 +827,11 @@ BMPImageReader::ProcessingResult BMPImageReader::ProcessRLEData() {
- // the image.
- const uint8_t count = ReadUint8(0);
- const uint8_t code = ReadUint8(1);
-- if ((count || (code != 1)) && PastEndOfImage(0))
-+ const bool is_past_end_of_image = PastEndOfImage(0);
-+ if ((count || (code != 1)) && is_past_end_of_image) {
- return kFailure;
-+ }
-+
-
- // Decode.
- if (!count) {
-@@ -849,7 +852,9 @@ BMPImageReader::ProcessingResult BMPImageReader::ProcessRLEData() {
- (is_top_down_ ? (coord_.Y() < (parent_->Size().Height() - 1))
- : (coord_.Y() > 0)))
- buffer_->SetHasAlpha(true);
-- ColorCorrectCurrentRow();
-+ if (!is_past_end_of_image) {
-+ ColorCorrectCurrentRow();
-+ }
- // There's no need to move |coord_| here to trigger the caller
- // to call SetPixelsChanged(). If the only thing that's changed
- // is the alpha state, that will be properly written into the
-@@ -1061,6 +1066,13 @@ void BMPImageReader::ColorCorrectCurrentRow() {
- const ColorProfileTransform* const transform = parent_->ColorTransform();
- if (!transform)
- return;
-+ int decoder_width = parent_->Size().Width();
-+ // Enforce 0 ≤ current row < bitmap height.
-+ CHECK_GE(coord_.Y(), 0);
-+ CHECK_LT(coord_.Y(), buffer_->Bitmap().height());
-+ // Enforce decoder width == bitmap width exactly. (The bitmap rowbytes might
-+ // add a bit of padding, but we are only converting one row at a time.)
-+ CHECK_EQ(decoder_width, buffer_->Bitmap().width());
- ImageFrame::PixelData* const row = buffer_->GetAddr(0, coord_.Y());
- const skcms_PixelFormat fmt = XformColorFormat();
- const skcms_AlphaFormat alpha =
-@@ -1069,7 +1081,7 @@ void BMPImageReader::ColorCorrectCurrentRow() {
- : skcms_AlphaFormat_Unpremul;
- const bool success =
- skcms_Transform(row, fmt, alpha, transform->SrcProfile(), row, fmt, alpha,
-- transform->DstProfile(), parent_->Size().Width());
-+ transform->DstProfile(), decoder_width);
- DCHECK(success);
- buffer_->SetPixelsChanged(true);
- }
diff --git a/www/qt5-webengine/files/patch-src_buildtools_config_support.pri b/www/qt5-webengine/files/patch-src_buildtools_config_support.pri
index a09e6b92f707..c54180a33f81 100644
--- a/www/qt5-webengine/files/patch-src_buildtools_config_support.pri
+++ b/www/qt5-webengine/files/patch-src_buildtools_config_support.pri
@@ -1,11 +1,6 @@
-* Rename Python2 functions to generic Python ones [1]
* Add support for FreeBSD
-[1] Obtained from:
-
-https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/main/qt5-webengine-python3.patch?ref_type=heads
-
---- src/buildtools/config/support.pri.orig 2023-07-20 09:52:10 UTC
+--- src/buildtools/config/support.pri.orig 2024-03-27 11:26:34 UTC
+++ src/buildtools/config/support.pri
@@ -5,7 +5,7 @@ defineReplace(qtwebengine_checkWebEngineCoreError) {
@@ -16,12 +11,8 @@ https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/ma
qtwebengine_skipBuild("QtWebEngine can be built only on Linux, Windows or macOS.")
return(false)
}
-@@ -21,17 +21,17 @@ defineReplace(qtwebengine_checkWebEngineCoreError) {
- !qtwebengine_checkForGperf(QtWebEngine):return(false)
- !qtwebengine_checkForBison(QtWebEngine):return(false)
- !qtwebengine_checkForFlex(QtWebEngine):return(false)
-- !qtwebengine_checkForPython2(QtWebEngine):return(false)
-+ !qtwebengine_checkForPython(QtWebEngine):return(false)
+@@ -24,14 +24,14 @@ defineReplace(qtwebengine_checkWebEngineCoreError) {
+ !qtwebengine_checkForPython(QtWebEngine):return(false)
!qtwebengine_checkForNodejs(QtWebEngine):return(false)
!qtwebengine_checkForSanitizer(QtWebEngine):return(false)
- linux:!qtwebengine_checkForPkgCfg(QtWebEngine):return(false)
@@ -51,31 +42,14 @@ https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/ma
qtwebengine_skipBuild("QtPdf can be built only on Linux, Windows, macOS or iOS.")
return(false)
}
-@@ -51,10 +51,12 @@ defineReplace(qtwebengine_checkPdfError) {
- !qtwebengine_checkForGperf(QtPdf):return(false)
- !qtwebengine_checkForBison(QtPdf):return(false)
+@@ -53,8 +53,8 @@ defineReplace(qtwebengine_checkPdfError) {
!qtwebengine_checkForFlex(QtPdf):return(false)
-- !qtwebengine_checkForPython2(QtPdf):return(false)
-+ !qtwebengine_checkForPython(QtPdf):return(false)
+ !qtwebengine_checkForPython(QtPdf):return(false)
!qtwebengine_checkForSanitizer(QtPdf):return(false)
- linux:!qtwebengine_checkForPkgCfg(QtPdf):return(false)
- linux:!qtwebengine_checkForHostPkgCfg(QtPdf):return(false)
+- linux:!qtwebengine_checkForPkgCfg(QtPdf):return(false)
+- linux:!qtwebengine_checkForHostPkgCfg(QtPdf):return(false)
+ unix:!qtwebengine_checkForPkgCfg(QtPdf):return(false)
+ unix:!qtwebengine_checkForHostPkgCfg(QtPdf):return(false)
win32:!qtwebengine_checkForWinVersion(QtPdf):return(false)
return(true)
}
-@@ -143,10 +145,10 @@ defineTest(qtwebengine_checkForFlex) {
- return(true)
- }
-
--defineTest(qtwebengine_checkForPython2) {
-+defineTest(qtwebengine_checkForPython) {
- module = $$1
-- !qtConfig(webengine-python2) {
-- qtwebengine_skipBuild("Python version 2 (2.7.5 or later) is required to build $${module}.")
-+ !qtConfig(webengine-python) {
-+ qtwebengine_skipBuild("Python is required to build $${module}.")
- return(false)
- }
- return(true)
diff --git a/www/qt5-webengine/files/patch-src_buildtools_configure.json b/www/qt5-webengine/files/patch-src_buildtools_configure.json
index bc68f912b9b5..65c2d763d63b 100644
--- a/www/qt5-webengine/files/patch-src_buildtools_configure.json
+++ b/www/qt5-webengine/files/patch-src_buildtools_configure.json
@@ -1,13 +1,8 @@
-* Rename Python2 functions to generic Python ones [1]
* Add support for FreeBSD
-[1] Obtained from:
-
-https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/main/qt5-webengine-python3.patch?ref_type=heads
-
---- src/buildtools/configure.json.orig 2023-11-09 12:28:27 UTC
+--- src/buildtools/configure.json.orig 2024-03-27 11:26:34 UTC
+++ src/buildtools/configure.json
-@@ -147,7 +147,8 @@
+@@ -148,7 +148,8 @@
"int id = 0;",
"fre2.Add(s, {}, &id);",
"const RE2 &re2 = fre2.GetRE2(id);"
@@ -17,20 +12,7 @@ https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/ma
},
"headers": "re2/filtered_re2.h",
"sources": [
-@@ -316,9 +317,9 @@
- "label": "system ninja",
- "type": "detectNinja"
- },
-- "webengine-python2": {
-- "label": "python2",
-- "type": "detectPython2",
-+ "webengine-python": {
-+ "label": "python",
-+ "type": "detectPython",
- "log": "location"
- },
- "webengine-winversion": {
-@@ -385,7 +386,7 @@
+@@ -386,7 +387,7 @@
"features": {
"webengine-core-support": {
"label": "Support Qt WebEngine Core",
@@ -39,12 +21,8 @@ https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/ma
&& !config.static
&& module.gui
&& features.webengine-submodule
-@@ -395,24 +396,24 @@
- && features.webengine-gperf
- && features.webengine-bison
- && features.webengine-flex
-- && features.webengine-python2
-+ && features.webengine-python
+@@ -399,21 +400,21 @@
+ && features.webengine-python
&& features.webengine-nodejs
&& (!config.sanitizer || features.webengine-sanitizer)
- && (!config.linux || features.pkg-config)
@@ -73,12 +51,9 @@ https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/ma
&& module.gui
&& features.webengine-submodule
&& features.webengine-nowhitespace
-@@ -421,10 +422,10 @@
- && features.webengine-gperf
- && features.webengine-bison
+@@ -424,8 +425,8 @@
&& features.webengine-flex
-- && features.webengine-python2
-+ && features.webengine-python
+ && features.webengine-python
&& (!config.sanitizer || features.webengine-sanitizer)
- && (!config.linux || features.pkg-config)
- && (!config.linux || features.webengine-host-pkg-config)
@@ -87,20 +62,3 @@ https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/ma
&& (!config.win32 || features.webengine-winversion)",
"output": [ "privateFeature" ]
},
-@@ -444,12 +445,12 @@
- "autoDetect": "features.private_tests",
- "output": [ "privateFeature" ]
- },
-- "webengine-python2": {
-- "label": "python2",
-- "condition": "tests.webengine-python2",
-+ "webengine-python": {
-+ "label": "python",
-+ "condition": "tests.webengine-python",
- "output": [
- "privateFeature",
-- { "type": "varAssign", "name": "QMAKE_PYTHON2", "value": "tests.webengine-python2.location" }
-+ { "type": "varAssign", "name": "QMAKE_PYTHON", "value": "tests.webengine-python.location" }
- ]
- },
- "webengine-gperf": {
diff --git a/www/qt5-webglplugin/distinfo b/www/qt5-webglplugin/distinfo
index 9dc4f6b1e68b..7b47917a2f61 100644
--- a/www/qt5-webglplugin/distinfo
+++ b/www/qt5-webglplugin/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809540
-SHA256 (KDE/Qt/5.15.12/kde-qtwebglplugin-5.15.12p0.tar.xz) = b8954afcf846388a2480160e9363f14fcbd79ffe463ee74ad3697e49bcd0e309
-SIZE (KDE/Qt/5.15.12/kde-qtwebglplugin-5.15.12p0.tar.xz) = 53672
+TIMESTAMP = 1711771163
+SHA256 (KDE/Qt/5.15.13/kde-qtwebglplugin-5.15.13p0.tar.xz) = e32e5eace4cb521fe175b137ff7cdef7e9fe5375a180923c24617740dbf89e8b
+SIZE (KDE/Qt/5.15.13/kde-qtwebglplugin-5.15.13p0.tar.xz) = 53664
diff --git a/www/qt5-websockets-qml/distinfo b/www/qt5-websockets-qml/distinfo
index ea2e23e9a53b..af1a0d120818 100644
--- a/www/qt5-websockets-qml/distinfo
+++ b/www/qt5-websockets-qml/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703841366
-SHA256 (KDE/Qt/5.15.12/kde-qtwebsockets-5.15.12p2.tar.xz) = 37be6dac24eaaa58ac9995fbbb29209e8ce949f4a7cfede734cd176c5aa24515
-SIZE (KDE/Qt/5.15.12/kde-qtwebsockets-5.15.12p2.tar.xz) = 237092
+TIMESTAMP = 1711771164
+SHA256 (KDE/Qt/5.15.13/kde-qtwebsockets-5.15.13p2.tar.xz) = 9bbb2a1b028831875bf657e4afefd549ac4d4b8fdf36b843848454c1bb7493b9
+SIZE (KDE/Qt/5.15.13/kde-qtwebsockets-5.15.13p2.tar.xz) = 237296
diff --git a/www/qt5-websockets/distinfo b/www/qt5-websockets/distinfo
index 93331e441235..4c17249a280f 100644
--- a/www/qt5-websockets/distinfo
+++ b/www/qt5-websockets/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809537
-SHA256 (KDE/Qt/5.15.12/kde-qtwebsockets-5.15.12p2.tar.xz) = 37be6dac24eaaa58ac9995fbbb29209e8ce949f4a7cfede734cd176c5aa24515
-SIZE (KDE/Qt/5.15.12/kde-qtwebsockets-5.15.12p2.tar.xz) = 237092
+TIMESTAMP = 1711771166
+SHA256 (KDE/Qt/5.15.13/kde-qtwebsockets-5.15.13p2.tar.xz) = 9bbb2a1b028831875bf657e4afefd549ac4d4b8fdf36b843848454c1bb7493b9
+SIZE (KDE/Qt/5.15.13/kde-qtwebsockets-5.15.13p2.tar.xz) = 237296
diff --git a/www/qt5-webview/distinfo b/www/qt5-webview/distinfo
index d8a8ac8d03f8..54ab4499f0fe 100644
--- a/www/qt5-webview/distinfo
+++ b/www/qt5-webview/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809542
-SHA256 (KDE/Qt/5.15.12/kde-qtwebview-5.15.12p0.tar.xz) = d762c6445ce02129a7e7caee03429976d85b5136895de3f1e26c1ac751ab32c1
-SIZE (KDE/Qt/5.15.12/kde-qtwebview-5.15.12p0.tar.xz) = 112556
+TIMESTAMP = 1711771167
+SHA256 (KDE/Qt/5.15.13/kde-qtwebview-5.15.13p0.tar.xz) = b7ca9d2f392ec7ff8aeab4323f12fc9f459d0221a2ca8edbf4df93fb3bbd452d
+SIZE (KDE/Qt/5.15.13/kde-qtwebview-5.15.13p0.tar.xz) = 112548
diff --git a/x11-toolkits/qt5-charts/distinfo b/x11-toolkits/qt5-charts/distinfo
index e8cf2bc8db94..bacc5c3d1b22 100644
--- a/x11-toolkits/qt5-charts/distinfo
+++ b/x11-toolkits/qt5-charts/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809525
-SHA256 (KDE/Qt/5.15.12/kde-qtcharts-5.15.12p0.tar.xz) = faca1b943016c8a46bcc202a230fd172fda3c4199a1e22850f2e9efc63030202
-SIZE (KDE/Qt/5.15.12/kde-qtcharts-5.15.12p0.tar.xz) = 4219108
+TIMESTAMP = 1711771168
+SHA256 (KDE/Qt/5.15.13/kde-qtcharts-5.15.13p0.tar.xz) = 65cd24c3423caf1f3420ad3eb6d8b0bf4c2fab2a3946533cd1e01e8c30ede8de
+SIZE (KDE/Qt/5.15.13/kde-qtcharts-5.15.13p0.tar.xz) = 4219188
diff --git a/x11-toolkits/qt5-datavis3d/distinfo b/x11-toolkits/qt5-datavis3d/distinfo
index 8e28f829df00..43159bfe38e0 100644
--- a/x11-toolkits/qt5-datavis3d/distinfo
+++ b/x11-toolkits/qt5-datavis3d/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809527
-SHA256 (KDE/Qt/5.15.12/kde-qtdatavis3d-5.15.12p0.tar.xz) = fea5491328d45b5013038e38d965c3492d6f6657c33e04ed81de409c328c0a74
-SIZE (KDE/Qt/5.15.12/kde-qtdatavis3d-5.15.12p0.tar.xz) = 5159804
+TIMESTAMP = 1711771169
+SHA256 (KDE/Qt/5.15.13/kde-qtdatavis3d-5.15.13p0.tar.xz) = 186f2dfb218f86af09d9400807d71cc7b4d5a35759f550b8b36903c290efeebe
+SIZE (KDE/Qt/5.15.13/kde-qtdatavis3d-5.15.13p0.tar.xz) = 5159904
diff --git a/x11-toolkits/qt5-declarative-test/distinfo b/x11-toolkits/qt5-declarative-test/distinfo
index 31f8c9630268..e3313673b82c 100644
--- a/x11-toolkits/qt5-declarative-test/distinfo
+++ b/x11-toolkits/qt5-declarative-test/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809496
-SHA256 (KDE/Qt/5.15.12/kde-qtdeclarative-5.15.12p32.tar.xz) = 5ab2a8cd15b43c2f333a9ff9d59c6a511b2616a3644238017f35cc217a83ead0
-SIZE (KDE/Qt/5.15.12/kde-qtdeclarative-5.15.12p32.tar.xz) = 21385552
+TIMESTAMP = 1711771170
+SHA256 (KDE/Qt/5.15.13/kde-qtdeclarative-5.15.13p30.tar.xz) = eb92bd79904a4b922ec127c6bfe1960c5cdafad62ad25595793c8f15297ab8c0
+SIZE (KDE/Qt/5.15.13/kde-qtdeclarative-5.15.13p30.tar.xz) = 21387588
diff --git a/x11-toolkits/qt5-declarative/distinfo b/x11-toolkits/qt5-declarative/distinfo
index 418e2bde586a..376ea191cbdf 100644
--- a/x11-toolkits/qt5-declarative/distinfo
+++ b/x11-toolkits/qt5-declarative/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809476
-SHA256 (KDE/Qt/5.15.12/kde-qtdeclarative-5.15.12p32.tar.xz) = 5ab2a8cd15b43c2f333a9ff9d59c6a511b2616a3644238017f35cc217a83ead0
-SIZE (KDE/Qt/5.15.12/kde-qtdeclarative-5.15.12p32.tar.xz) = 21385552
+TIMESTAMP = 1711771171
+SHA256 (KDE/Qt/5.15.13/kde-qtdeclarative-5.15.13p30.tar.xz) = eb92bd79904a4b922ec127c6bfe1960c5cdafad62ad25595793c8f15297ab8c0
+SIZE (KDE/Qt/5.15.13/kde-qtdeclarative-5.15.13p30.tar.xz) = 21387588
diff --git a/x11-toolkits/qt5-gamepad/distinfo b/x11-toolkits/qt5-gamepad/distinfo
index 9cd8c919d45d..f1c3de053e04 100644
--- a/x11-toolkits/qt5-gamepad/distinfo
+++ b/x11-toolkits/qt5-gamepad/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809533
-SHA256 (KDE/Qt/5.15.12/kde-qtgamepad-5.15.12p0.tar.xz) = e8b337a9a681a5090900f053fa2779ec05d8bac5ccb4bd6bbdf4d072e39baef5
-SIZE (KDE/Qt/5.15.12/kde-qtgamepad-5.15.12p0.tar.xz) = 365452
+TIMESTAMP = 1711771172
+SHA256 (KDE/Qt/5.15.13/kde-qtgamepad-5.15.13p0.tar.xz) = 4b96809fafb8896551c8adfd5a503ece46397840aed223f86e7a8fe6e8983065
+SIZE (KDE/Qt/5.15.13/kde-qtgamepad-5.15.13p0.tar.xz) = 365456
diff --git a/x11-toolkits/qt5-gui/distinfo b/x11-toolkits/qt5-gui/distinfo
index 8e1999b411b0..56cf2f3cb010 100644
--- a/x11-toolkits/qt5-gui/distinfo
+++ b/x11-toolkits/qt5-gui/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809469
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711771174
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/x11-toolkits/qt5-quick3d/distinfo b/x11-toolkits/qt5-quick3d/distinfo
index e519d9398f17..4851260cd518 100644
--- a/x11-toolkits/qt5-quick3d/distinfo
+++ b/x11-toolkits/qt5-quick3d/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809531
-SHA256 (KDE/Qt/5.15.12/kde-qtquick3d-5.15.12p1.tar.xz) = cb7c4f301048c8a5366b869beeb92b21c48c2c4560c05c2cfad435240df9aed1
-SIZE (KDE/Qt/5.15.12/kde-qtquick3d-5.15.12p1.tar.xz) = 55694720
+TIMESTAMP = 1711771175
+SHA256 (KDE/Qt/5.15.13/kde-qtquick3d-5.15.13p1.tar.xz) = 2d9e45333f5ab46b96909a125729bc51edb7ab6e35deef40e8938ef1f49bc565
+SIZE (KDE/Qt/5.15.13/kde-qtquick3d-5.15.13p1.tar.xz) = 55708128
diff --git a/x11-toolkits/qt5-quickcontrols/distinfo b/x11-toolkits/qt5-quickcontrols/distinfo
index 3ab85c6f7dcd..101aa94a5b6b 100644
--- a/x11-toolkits/qt5-quickcontrols/distinfo
+++ b/x11-toolkits/qt5-quickcontrols/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809528
-SHA256 (KDE/Qt/5.15.12/kde-qtquickcontrols-5.15.12p0.tar.xz) = c4eeb8ea1beb6fa74acf37568a73889f5418f39fcfe199eb54b273d7ef5b7c45
-SIZE (KDE/Qt/5.15.12/kde-qtquickcontrols-5.15.12p0.tar.xz) = 5956968
+TIMESTAMP = 1711771176
+SHA256 (KDE/Qt/5.15.13/kde-qtquickcontrols-5.15.13p0.tar.xz) = 7bd6ebe30bda438c1c595ae1d0ab0531b050cfeb978410e6961c78a40f4739a8
+SIZE (KDE/Qt/5.15.13/kde-qtquickcontrols-5.15.13p0.tar.xz) = 5954816
diff --git a/x11-toolkits/qt5-quickcontrols2/distinfo b/x11-toolkits/qt5-quickcontrols2/distinfo
index 64cd3c07625a..7b4ab3050896 100644
--- a/x11-toolkits/qt5-quickcontrols2/distinfo
+++ b/x11-toolkits/qt5-quickcontrols2/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809530
-SHA256 (KDE/Qt/5.15.12/kde-qtquickcontrols2-5.15.12p5.tar.xz) = 7ffdf88df7dd8cf22d48e993790ad074679a38ab8ea055d77c5fa43d865963e2
-SIZE (KDE/Qt/5.15.12/kde-qtquickcontrols2-5.15.12p5.tar.xz) = 8249944
+TIMESTAMP = 1711771177
+SHA256 (KDE/Qt/5.15.13/kde-qtquickcontrols2-5.15.13p5.tar.xz) = 13d582e28ddd5544d078c7fc25a1ab1a57b7d9cb4846db0036670153e0b4b8d4
+SIZE (KDE/Qt/5.15.13/kde-qtquickcontrols2-5.15.13p5.tar.xz) = 8250152
diff --git a/x11-toolkits/qt5-quicktimeline/distinfo b/x11-toolkits/qt5-quicktimeline/distinfo
index 0fe1c1e68505..346015a27a7c 100644
--- a/x11-toolkits/qt5-quicktimeline/distinfo
+++ b/x11-toolkits/qt5-quicktimeline/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703841386
-SHA256 (KDE/Qt/5.15.12/kde-qtquicktimeline-5.15.12p0.tar.xz) = 59db9995660a50fd3e1f93cba2f1d906be7d3359ca7109c24d81b395307e6763
-SIZE (KDE/Qt/5.15.12/kde-qtquicktimeline-5.15.12p0.tar.xz) = 82148
+TIMESTAMP = 1711771178
+SHA256 (KDE/Qt/5.15.13/kde-qtquicktimeline-5.15.13p0.tar.xz) = df4ed9c56f7ef47b25dbe708bc1be142592788081cf0649f1040415d090a1fa4
+SIZE (KDE/Qt/5.15.13/kde-qtquicktimeline-5.15.13p0.tar.xz) = 82128
diff --git a/x11-toolkits/qt5-uiplugin/distinfo b/x11-toolkits/qt5-uiplugin/distinfo
index 09309d6a7f03..a7dc15b5d797 100644
--- a/x11-toolkits/qt5-uiplugin/distinfo
+++ b/x11-toolkits/qt5-uiplugin/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809486
-SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c
-SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464
+TIMESTAMP = 1711771179
+SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7
+SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980
diff --git a/x11-toolkits/qt5-virtualkeyboard/distinfo b/x11-toolkits/qt5-virtualkeyboard/distinfo
index a16adcfa22cc..2cb240d9d83f 100644
--- a/x11-toolkits/qt5-virtualkeyboard/distinfo
+++ b/x11-toolkits/qt5-virtualkeyboard/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809534
-SHA256 (KDE/Qt/5.15.12/kde-qtvirtualkeyboard-5.15.12p0.tar.xz) = b768f5f1a0d709ea17b68134a96c62f599c5d6618c9c6e1bf38438a5dbaf8060
-SIZE (KDE/Qt/5.15.12/kde-qtvirtualkeyboard-5.15.12p0.tar.xz) = 10931040
+TIMESTAMP = 1711771180
+SHA256 (KDE/Qt/5.15.13/kde-qtvirtualkeyboard-5.15.13p0.tar.xz) = 31dbfc505c1bd593f5f0c677ef1d2a48030501c2cb818fd6bccdc1edb5a30efe
+SIZE (KDE/Qt/5.15.13/kde-qtvirtualkeyboard-5.15.13p0.tar.xz) = 10934096
diff --git a/x11-toolkits/qt5-widgets/distinfo b/x11-toolkits/qt5-widgets/distinfo
index 8a7857db7f06..7d0ed60996d2 100644
--- a/x11-toolkits/qt5-widgets/distinfo
+++ b/x11-toolkits/qt5-widgets/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809471
-SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f
-SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532
+TIMESTAMP = 1711771182
+SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb
+SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504
diff --git a/x11/qt5-qev/distinfo b/x11/qt5-qev/distinfo
index 5ea85ea5ac19..32d519ec1552 100644
--- a/x11/qt5-qev/distinfo
+++ b/x11/qt5-qev/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703841392
-SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c
-SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464
+TIMESTAMP = 1711771183
+SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7
+SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980
diff --git a/x11/qt5-x11extras/distinfo b/x11/qt5-x11extras/distinfo
index 14fb6e69366b..87c400edc667 100644
--- a/x11/qt5-x11extras/distinfo
+++ b/x11/qt5-x11extras/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703809536
-SHA256 (KDE/Qt/5.15.12/kde-qtx11extras-5.15.12p0.tar.xz) = da5bfacdf4c638d5095c2464c6b98e3b309b3ed52bcfab4bff797e456fa0c9d7
-SIZE (KDE/Qt/5.15.12/kde-qtx11extras-5.15.12p0.tar.xz) = 123248
+TIMESTAMP = 1711771184
+SHA256 (KDE/Qt/5.15.13/kde-qtx11extras-5.15.13p0.tar.xz) = 3459673a4fd7da6595bb35da12e8677c54ec2fa42d1effccfb6b2a6c497e6a35
+SIZE (KDE/Qt/5.15.13/kde-qtx11extras-5.15.13p0.tar.xz) = 123296