From 753a89f62566682132109e7770310a4af5cf601c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Mon, 23 Sep 2024 22:58:26 +0200 Subject: [PATCH] Sync from SUSE:ALP:Source:Standard:1.0 libqt5-qtwebengine revision 257fb9c28fed3fd3b4a052148f5e77a9 --- ...tructor-in-place-of-self-delegation-.patch | 35 + Add-missing-dependencies.patch | 12 + _service | 12 +- _servicedata | 2 +- catapult-git.tar.xz | 3 - libqt5-qtwebengine.changes | 76 + libqt5-qtwebengine.spec | 99 +- python311-fixes.patch | 149 -- qt5-webengine-icu-75.patch | 102 + qtwebengine-everywhere-src-5.15.16.tar.xz | 3 - qtwebengine-everywhere-src-5.15.17.tar.xz | 3 + qtwebengine-python3.patch | 2058 ----------------- 12 files changed, 282 insertions(+), 2272 deletions(-) create mode 100644 0001-Use-default-constructor-in-place-of-self-delegation-.patch create mode 100644 Add-missing-dependencies.patch delete mode 100644 catapult-git.tar.xz delete mode 100644 python311-fixes.patch create mode 100644 qt5-webengine-icu-75.patch delete mode 100644 qtwebengine-everywhere-src-5.15.16.tar.xz create mode 100644 qtwebengine-everywhere-src-5.15.17.tar.xz delete mode 100644 qtwebengine-python3.patch diff --git a/0001-Use-default-constructor-in-place-of-self-delegation-.patch b/0001-Use-default-constructor-in-place-of-self-delegation-.patch new file mode 100644 index 0000000..48d9d82 --- /dev/null +++ b/0001-Use-default-constructor-in-place-of-self-delegation-.patch @@ -0,0 +1,35 @@ +From 1b74bce8ba1322d1853c7fd4467504a4a0d32d7b Mon Sep 17 00:00:00 2001 +From: Adam Klein +Date: Mon, 29 Nov 2021 15:11:39 -0800 +Subject: [PATCH] Use default constructor in place of self-delegation for + Symbol() + +This avoids a compile error when building with GCC in C++17 mode. + +Bug: v8:12449 +Change-Id: I14817895d31019fb71fc71b061f2ecf576dbc711 +Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3307102 +Commit-Queue: Adam Klein +Reviewed-by: Leszek Swirski +Reviewed-by: Tobias Tebbi +Cr-Commit-Position: refs/heads/main@{#78171} +--- + src/3rdparty/chromium/v8/src/torque/earley-parser.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/3rdparty/chromium/v8/src/torque/earley-parser.h b/src/3rdparty/chromium/v8/src/torque/earley-parser.h +index e0dca24..0429fd2 100644 +--- a/src/3rdparty/chromium/v8/src/torque/earley-parser.h ++++ b/src/3rdparty/chromium/v8/src/torque/earley-parser.h +@@ -248,7 +248,7 @@ class Rule final { + // used in the parser. + class Symbol { + public: +- Symbol() : Symbol({}) {} ++ Symbol() = default; + Symbol(std::initializer_list rules) { *this = rules; } + + V8_EXPORT_PRIVATE Symbol& operator=(std::initializer_list rules); +-- +2.45.1 + diff --git a/Add-missing-dependencies.patch b/Add-missing-dependencies.patch new file mode 100644 index 0000000..6cb801f --- /dev/null +++ b/Add-missing-dependencies.patch @@ -0,0 +1,12 @@ +diff --git a/chromium/content/public/browser/BUILD.gn b/chromium/content/public/browser/BUILD.gn +index 7cf82a4aacf..0e0dda2c3ca 100644 +--- a/src/3rdparty/chromium/content/public/browser/BUILD.gn ++++ b/src/3rdparty/chromium/content/public/browser/BUILD.gn +@@ -469,6 +469,7 @@ jumbo_source_set("browser_sources") { + "//build:chromeos_buildflags", + "//cc", + "//components/viz/host", ++ "//components/spellcheck:buildflags", + "//content/browser", # Must not be public_deps! + "//device/fido", + "//gpu", diff --git a/_service b/_service index 780d9e0..6e5cc8b 100644 --- a/_service +++ b/_service @@ -1,19 +1,11 @@ enable - 5.15.16 + 5.15.17 git://code.qt.io/qt/qtwebengine.git git qtwebengine-everywhere-src - v5.15.16-lts - - - disable - https://chromium.googlesource.com/catapult - main - git - catapult - git + v5.15.17-lts *.tar diff --git a/_servicedata b/_servicedata index 53823d1..809428c 100644 --- a/_servicedata +++ b/_servicedata @@ -1,4 +1,4 @@ git://code.qt.io/qt/qtwebengine.git - 224806a7022eed6d5c75b486bec8715a618cb314 \ No newline at end of file + 17fd3176988586168bee8654008a097a5f23ec1d \ No newline at end of file diff --git a/catapult-git.tar.xz b/catapult-git.tar.xz deleted file mode 100644 index dc5f548..0000000 --- a/catapult-git.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c550a6ae4ad834bcf97bfe7594b48c25d72657a801dfeb655d0553e0cc7074d0 -size 99546648 diff --git a/libqt5-qtwebengine.changes b/libqt5-qtwebengine.changes index 216ad74..38d6823 100644 --- a/libqt5-qtwebengine.changes +++ b/libqt5-qtwebengine.changes @@ -1,3 +1,79 @@ +------------------------------------------------------------------- +Thu May 23 00:21:22 UTC 2024 - Christophe Marin + +- Add compatibility patches for ICU 75: + * qt5-webengine-icu-75.patch + * 0001-Use-default-constructor-in-place-of-self-delegation-.patch +- Consequently build with a newer compiler on Leap 15 + +------------------------------------------------------------------- +Wed May 22 08:20:33 UTC 2024 - christophe@krop.fr + +- Update to version 5.15.17: + * Add option to chose python version for building 5.15 WebEngine + * Update Chromium. Backported fixes: + * [Backport] Security bug 325296797 + * [Backport] CVE-2024-1059: Use after free in WebRTC + * [Backport] Security bug 1518994 + * Fixup for [Backport] Security bug 1519980 + * [Backport] CVE-2024-1283: Heap buffer overflow in Skia + * [Backport] CVE-2024-1060: Use after free in Canvas + * [Backport] CVE-2024-1077: Use after free in Network + * [Backport] Security bug 1519980 + * [Backport] CVE-2024-0808: Integer underflow in WebUI + * [Backport] CVE-2024-0807: Use after free in WebAudio + * Fix ffmpeg assembly with newer binutil + * [Backport] Security bug 1511689 + * [Backport] CVE-2024-0224: Use after free in WebAudio + * [Backport] CVE-2023-7024: Heap buffer overflow in WebRTC + * [Backport] Security bug 1506535 + * [Backport] CVE-2024-0519: Out of bounds memory access in V8 + * [Backport] CVE-2024-0518: Type Confusion in V8 + * [Backport] CVE-2024-0333: Insufficient data validation in Extensions + * [Backport] CVE-2024-0222: Use after free in ANGLE + * Fixup: [Backport] Security bug 1488199 + * FIXUP: Fix compilation with system ICU + * Fixup: [Backport] Security bug 1505632 + * [Backport] Security bug 1505632 + * [Backport] CVE-2023-6702: Type Confusion in V8 + * [Backport] CVE-2023-6345: Integer overflow in Skia + * Bump V8_PATCH_LEVEL + * [Backport] Security bug 1488199 (2/2) + * [Backport] Security bug 1488199 (1/2) + * [Backport] CVE-2023-6510: Use after free in Media Capture + * Fix building with system libxml2 + * [Backport] CVE-2023-6347: Use after free in Mojo + * [Backport] CVE-2023-6112: Use after free in Navigation + * [Backport] CVE-2023-5997: Use after free in Garbage Collection +- Drop patches, merged upstream: + * 0001-Fix-building-with-system-libxml2.patch + * qtwebengine-python3.patch + * python311-fixes.patch +- Update _service file, catapult snapshots are not needed anymore + +------------------------------------------------------------------- +Fri May 17 05:53:59 UTC 2024 - Christoph G + +- Backport Ninja 1.12 compatibility patch (and adjust paths) + Add-missing-dependencies.patch from upstream + +------------------------------------------------------------------- +Fri Apr 19 14:57:37 UTC 2024 - Christophe Marin + +- Add patch to fix build with libxml >= 2.12: + * 0001-Fix-building-with-system-libxml2.patch + +------------------------------------------------------------------- +Sat Feb 24 11:06:56 UTC 2024 - Jan Engelhardt + +- Drop BuildRequire on libsrtp, qt builds a bundled copy. + +------------------------------------------------------------------- +Tue Feb 20 14:42:07 UTC 2024 - Christophe Marin + +- Switch to '%patch -P' +- Build with python 3.11 on Leap + ------------------------------------------------------------------- Wed Nov 22 09:44:27 UTC 2023 - christophe@krop.fr diff --git a/libqt5-qtwebengine.spec b/libqt5-qtwebengine.spec index 42cccbe..dbbc97b 100644 --- a/libqt5-qtwebengine.spec +++ b/libqt5-qtwebengine.spec @@ -1,7 +1,7 @@ # # spec file for package libqt5-qtwebengine # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -20,29 +20,29 @@ %bcond_without system_minizip %bcond_without pipewire # The default python version is too old on Leap 15 -%if 0%{?suse_version} < 1550 -%bcond_without python39 +%{?sle15_python_module_pythons} +%if 0%{?suse_version} == 1500 +%define pyver python311 %else -%bcond_without python3 +# latest +%define pyver python3 %endif # spellchecking dictionary directory %global _qtwebengine_dictionaries_dir %{_libqt5_datadir}/qtwebengine_dictionaries Name: libqt5-qtwebengine -Version: 5.15.16 +Version: 5.15.17 Release: 0 Summary: Qt 5 WebEngine Library License: LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only Group: Development/Libraries/X11 URL: https://www.qt.io %define base_name libqt5 -%define real_version 5.15.16 -%define so_version 5.15.16 +%define real_version 5.15.17 +%define so_version 5.15.17 %define tar_version qtwebengine-everywhere-src-%{version} Source: %{tar_version}.tar.xz -# Use a git snapshot for catapult to build with python3 (git rev: 2da767c6) -Source1: catapult-git.tar.xz Source99: libqt5-qtwebengine-rpmlintrc # PATCH-FIX-UPSTREAM armv6-ffmpeg-no-thumb.patch - Fix ffmpeg configuration for armv6 Patch0: armv6-ffmpeg-no-thumb.patch @@ -54,12 +54,13 @@ Patch2: rtc-dont-use-h264.patch Patch3: 0001-skia-Some-includes-to-fix-build-with-GCC-12.patch # PATCH-FIX-UPSTREAM -- build with pipewire 0.3 Patch4: qtwebengine-pipewire-0.3.patch -# PATCH-FIX-OPENSUSE -- build with python 3 -Patch5: qtwebengine-python3.patch # PATCH-FIX-UPSTREAM -- handle futex_time64 -Patch6: sandbox_futex_time64.patch -# PATCH-FIX-UPSTREAM -- python 3.11 fixes -Patch7: python311-fixes.patch +Patch5: sandbox_futex_time64.patch +# PATCH-FIX-UPSTREAM -- Add missing dependencies for compatibility with Ninja 1.12 +Patch6: Add-missing-dependencies.patch +# PATCH-FIX-UPSTREAM -- ICU 75 compatibility +Patch7: qt5-webengine-icu-75.patch +Patch8: 0001-Use-default-constructor-in-place-of-self-delegation-.patch ### Patch 50-99 are applied conditionally # PATCH-FIX-OPENSUSE -- allow building qtwebengine with ffmpeg5 Patch50: qtwebengine-ffmpeg5.patch @@ -72,6 +73,10 @@ BuildRequires: bison BuildRequires: fdupes BuildRequires: flac-devel BuildRequires: flex +%if 0%{?suse_version} < 1550 +BuildRequires: gcc13-PIE +BuildRequires: gcc13-c++ +%endif BuildRequires: git-core BuildRequires: gperf BuildRequires: krb5 @@ -100,16 +105,10 @@ BuildRequires: perl-JSON BuildRequires: pipewire-devel %endif BuildRequires: pkgconfig -%if %{with python3} -BuildRequires: python3 -BuildRequires: python3-devel -BuildRequires: python3-xml -%endif -%if %{with python39} -BuildRequires: python39 -BuildRequires: python39-devel -BuildRequires: python39-xml -%endif +BuildRequires: %{pyver} +BuildRequires: %{pyver}-devel +BuildRequires: %{pyver}-html5lib +BuildRequires: %{pyver}-xml BuildRequires: re2c BuildRequires: sed BuildRequires: snappy-devel @@ -155,7 +154,6 @@ BuildRequires: pkgconfig(libmtp) BuildRequires: pkgconfig(libpci) BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(libpulse) -BuildRequires: pkgconfig(libsrtp) BuildRequires: pkgconfig(libudev) BuildRequires: pkgconfig(libusb-1.0) BuildRequires: pkgconfig(libwebp) @@ -191,6 +189,7 @@ BuildRequires: pkgconfig(xt) BuildRequires: pkgconfig(xtst) BuildRequires: pkgconfig(zlib) BuildRequires: yasm-devel +Provides: bundled(libsrtp2) = 2.2.0~pre %requires_ge libQt5Network5 %requires_ge libQtQuick5 %requires_ge libQt5Widgets5 @@ -292,28 +291,22 @@ Recommends: libqt5-qtpdf-devel Examples for the libqt5-qtpdf module. %prep +# Leap's rpm doesn't understand '%%autopatch -M N' nor '%%autopatch X Y Z -p1' %setup -q -n %{tar_version} -# Leap 15 doesn't understand '%%autopatch -m' -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 - -# Replace the whole catapult folder rather than picking individual changes -pushd src/3rdparty/chromium/third_party -rm -r catapult -tar xJf %{SOURCE1} -mv catapult-git catapult -popd +%patch -P0 -p1 +%patch -P1 -p1 +%patch -P2 -p1 +%patch -P3 -p1 +%patch -P4 -p1 +%patch -P5 -p1 +%patch -P6 -p1 +%patch -P7 -p1 +%patch -P8 -p1 # FFmpeg 5 %if %{with system_ffmpeg} -%if %{pkg_vcmp libavcodec-devel >= 5} -%patch50 -p1 +%if %{pkg_vcmp pkgconfig(libavcodec) >= 5} +%patch -P50 -p1 %endif %endif @@ -326,12 +319,11 @@ mkdir .git sed -i -e '/toolprefix = /d' -e 's/\${toolprefix}//g' \ src/3rdparty/chromium/build/toolchain/linux/BUILD.gn -%build rm -r src/3rdparty/chromium/third_party/openh264/src -%if %{with python39} -sed -i 's#QMAKE_PYTHON = python3#QMAKE_PYTHON = python3.9#' mkspecs/features/functions.prf -sed -i 's#python3#python3.9#' configure.pri +%build +%if 0%{?suse_version} < 1550 +export CC=gcc-13 CXX=g++-13 %endif %ifnarch x86_64 @@ -348,6 +340,14 @@ export RPM_OPT_FLAGS="${RPM_OPT_FLAGS} -Wno-return-type" gn_args+="link_pulseaudio=true" \ gn_args+="media_use_openh264=false" \ gn_args+="use_system_libxml=true use_system_libxslt=true" \ +%if "%{pyver}" == "python311" + config.input.python_override=python3.11 \ +%endif +%if 0%{?suse_version} < 1550 + QMAKE_CC=gcc-13 \ + QMAKE_CXX=g++-13 \ + QMAKE_LINK=g++-13 \ +%endif qtwebengine.pro -- \ -webengine-alsa \ -no-webengine-embedded-build \ @@ -362,7 +362,10 @@ export RPM_OPT_FLAGS="${RPM_OPT_FLAGS} -Wno-return-type" -webengine-proprietary-codecs \ %endif %if %{with pipewire} - -webengine-webrtc-pipewire + -webengine-webrtc-pipewire \ +%endif +%if 0%{?suse_version} > 1500 + -webengine-python-version python3 %endif # Determine the right number of parallel processes based on the available memory diff --git a/python311-fixes.patch b/python311-fixes.patch deleted file mode 100644 index b63f403..0000000 --- a/python311-fixes.patch +++ /dev/null @@ -1,149 +0,0 @@ -From f90f49df8db04dcb72f7ce0c4d0b2fe329bab00c Mon Sep 17 00:00:00 2001 -From: Dan Harrington -Date: Fri, 04 Jun 2021 16:46:25 +0000 -Subject: [PATCH] Migrate presubmit to python3 - -Fixed a couple warnings I found when running the unit -tests in python3. - -Bug: 1212110 -Change-Id: I3d1b5859b5c517ad5eea30cb816fad0389715f73 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2934203 -Reviewed-by: Jesse Doherty -Commit-Queue: Dan H -Cr-Commit-Position: refs/heads/master@{#889331} ---- - -Index: qtwebengine-everywhere-src-5.15.13/src/3rdparty/chromium/tools/metrics/ukm/PRESUBMIT.py -=================================================================== ---- qtwebengine-everywhere-src-5.15.13.orig/src/3rdparty/chromium/tools/metrics/ukm/PRESUBMIT.py -+++ qtwebengine-everywhere-src-5.15.13/src/3rdparty/chromium/tools/metrics/ukm/PRESUBMIT.py -@@ -8,6 +8,8 @@ See http://dev.chromium.org/developers/h - for more details on the presubmit API built into gcl. - """ - -+USE_PYTHON3 = True -+ - UKM_XML = 'ukm.xml' - - -Index: qtwebengine-everywhere-src-5.15.13/src/3rdparty/chromium/tools/metrics/ukm/gen_builders_test.py -=================================================================== ---- qtwebengine-everywhere-src-5.15.13.orig/src/3rdparty/chromium/tools/metrics/ukm/gen_builders_test.py -+++ qtwebengine-everywhere-src-5.15.13/src/3rdparty/chromium/tools/metrics/ukm/gen_builders_test.py -@@ -25,8 +25,8 @@ class GenBuildersTest(unittest.TestCase) - - def testGenerateCode(self): - relpath = '.' -- data = ukm_model.UKM_XML_TYPE.Parse( -- open('../../tools/metrics/ukm/ukm.xml').read()) -+ with open('../../tools/metrics/ukm/ukm.xml') as f: -+ data = ukm_model.UKM_XML_TYPE.Parse(f.read()) - event = data[ukm_model._EVENT_TYPE.tag][0] - metric = event[ukm_model._METRIC_TYPE.tag][0] - self.assertIsNotNone(event) -Index: qtwebengine-everywhere-src-5.15.13/src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py -=================================================================== ---- qtwebengine-everywhere-src-5.15.13.orig/src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py -+++ qtwebengine-everywhere-src-5.15.13/src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py -@@ -39,15 +39,16 @@ _INDEX_TYPE = models.ObjectNodeType( - ], - single_line=True) - --_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), -- models.ChildType( -- _ENUMERATION_TYPE.tag, _ENUMERATION_TYPE, multiple=False), -+ models.ChildType(_ENUMERATION_TYPE.tag, -+ _ENUMERATION_TYPE, -+ multiple=False), - ]) - - _HISTORY_TYPE = models.ObjectNodeType( -@@ -90,25 +91,34 @@ _METRIC_TYPE = models.ObjectNodeType( - _AGGREGATION_TYPE.tag, _AGGREGATION_TYPE, multiple=True), - ]) - --_EVENT_TYPE = models.ObjectNodeType( -- 'event', -- attributes=[ -- ('name', str, r'^[A-Za-z0-9.]+$'), -- ('singular', str, r'^(?i)(|true|false)$'), -- ], -- alphabetization=[ -- (_OBSOLETE_TYPE.tag, _KEEP_ORDER), -- (_OWNER_TYPE.tag, _KEEP_ORDER), -- (_SUMMARY_TYPE.tag, _KEEP_ORDER), -- (_METRIC_TYPE.tag, _LOWERCASE_FN('name')), -- ], -- extra_newlines=(1, 1, 1), -- children=[ -- models.ChildType(_OBSOLETE_TYPE.tag, _OBSOLETE_TYPE, multiple=False), -- models.ChildType(_OWNER_TYPE.tag, _OWNER_TYPE, multiple=True), -- models.ChildType(_SUMMARY_TYPE.tag, _SUMMARY_TYPE, multiple=False), -- models.ChildType(_METRIC_TYPE.tag, _METRIC_TYPE, multiple=True), -- ]) -+_EVENT_TYPE = models.ObjectNodeType('event', -+ attributes=[ -+ ('name', str, r'^[A-Za-z0-9.]+$'), -+ ('singular', str, -+ r'(?i)^(|true|false)$'), -+ ], -+ alphabetization=[ -+ (_OBSOLETE_TYPE.tag, _KEEP_ORDER), -+ (_OWNER_TYPE.tag, _KEEP_ORDER), -+ (_SUMMARY_TYPE.tag, _KEEP_ORDER), -+ (_METRIC_TYPE.tag, -+ _LOWERCASE_FN('name')), -+ ], -+ extra_newlines=(1, 1, 1), -+ children=[ -+ models.ChildType(_OBSOLETE_TYPE.tag, -+ _OBSOLETE_TYPE, -+ multiple=False), -+ models.ChildType(_OWNER_TYPE.tag, -+ _OWNER_TYPE, -+ multiple=True), -+ models.ChildType(_SUMMARY_TYPE.tag, -+ _SUMMARY_TYPE, -+ multiple=False), -+ models.ChildType(_METRIC_TYPE.tag, -+ _METRIC_TYPE, -+ multiple=True), -+ ]) - - _UKM_CONFIGURATION_TYPE = models.ObjectNodeType( - 'ukm-configuration', -Index: qtwebengine-everywhere-src-5.15.13/src/3rdparty/chromium/PRESUBMIT_test_mocks.py -=================================================================== ---- qtwebengine-everywhere-src-5.15.13.orig/src/3rdparty/chromium/PRESUBMIT_test_mocks.py -+++ qtwebengine-everywhere-src-5.15.13/src/3rdparty/chromium/PRESUBMIT_test_mocks.py -@@ -119,7 +119,7 @@ class MockInputApi(object): - def PresubmitLocalPath(self): - return self.presubmit_local_path - -- def ReadFile(self, filename, mode='rU'): -+ def ReadFile(self, filename, mode='r'): - if hasattr(filename, 'AbsoluteLocalPath'): - filename = filename.AbsoluteLocalPath() - for file_ in self.files: -Index: qtwebengine-everywhere-src-5.15.13/src/3rdparty/chromium/tools/grit/grit/util.py -=================================================================== ---- qtwebengine-everywhere-src-5.15.13.orig/src/3rdparty/chromium/tools/grit/grit/util.py -+++ qtwebengine-everywhere-src-5.15.13/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() diff --git a/qt5-webengine-icu-75.patch b/qt5-webengine-icu-75.patch new file mode 100644 index 0000000..b0c42fe --- /dev/null +++ b/qt5-webengine-icu-75.patch @@ -0,0 +1,102 @@ +Fix build with ICU 75. +Origin: Arch linux: https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/blob/main/qt5-webengine-icu-75.patch?ref_type=heads + +diff --git a/src/3rdparty/chromium/build/config/compiler/BUILD.gn b/src/3rdparty/chromium/build/config/compiler/BUILD.gn +index b511a58c5a8..abd78a74ead 100644 +--- a/src/3rdparty/chromium/build/config/compiler/BUILD.gn ++++ b/src/3rdparty/chromium/build/config/compiler/BUILD.gn +@@ -566,7 +566,7 @@ config("compiler") { + # Override Chromium's default for projects that wish to stay on C++11. + cflags_cc += [ "-std=${standard_prefix}++11" ] + } else { +- cflags_cc += [ "-std=${standard_prefix}++14" ] ++ cflags_cc += [ "-std=${standard_prefix}++17" ] + } + } else if (!is_win && !is_nacl) { + if (target_os == "android") { +diff --git a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h +index f03ba1e4ab4..b1495f7ae74 100644 +--- a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h ++++ b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h +@@ -195,7 +195,7 @@ NumPartitionPagesPerSuperPage() { + // + // __STDCPP_DEFAULT_NEW_ALIGNMENT__ is C++17. As such, it is not defined on all + // platforms, as Chrome's requirement is C++14 as of 2020. +-#if defined(__STDCPP_DEFAULT_NEW_ALIGNMENT__) ++#if 0 + static constexpr size_t kAlignment = + std::max(alignof(std::max_align_t), __STDCPP_DEFAULT_NEW_ALIGNMENT__); + #else +diff --git a/src/3rdparty/chromium/third_party/webrtc/common_video/h264/sps_parser.h b/src/3rdparty/chromium/third_party/webrtc/common_video/h264/sps_parser.h +index 76e627d27a3..942435f44a0 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/common_video/h264/sps_parser.h ++++ b/src/3rdparty/chromium/third_party/webrtc/common_video/h264/sps_parser.h +@@ -12,6 +12,7 @@ + #define COMMON_VIDEO_H264_SPS_PARSER_H_ + + #include "absl/types/optional.h" ++#include + + namespace rtc { + class BitBuffer; +diff --git a/src/3rdparty/chromium/third_party/webrtc/common_video/h264/pps_parser.h b/src/3rdparty/chromium/third_party/webrtc/common_video/h264/pps_parser.h +index d6c31b06887..d8852dfd186 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/common_video/h264/pps_parser.h ++++ b/src/3rdparty/chromium/third_party/webrtc/common_video/h264/pps_parser.h +@@ -12,6 +12,7 @@ + #define COMMON_VIDEO_H264_PPS_PARSER_H_ + + #include "absl/types/optional.h" ++#include + + namespace rtc { + class BitBuffer; +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/aec3/reverb_model_estimator.h b/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/aec3/reverb_model_estimator.h +index 3b9971abae1..d4458038527 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/aec3/reverb_model_estimator.h ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/aec3/reverb_model_estimator.h +@@ -13,6 +13,7 @@ + + #include + #include ++#include + + #include "absl/types/optional.h" + #include "api/array_view.h" +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/include/module_common_types_public.h b/src/3rdparty/chromium/third_party/webrtc/modules/include/module_common_types_public.h +index 345e45ce127..e686e5d691a 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/include/module_common_types_public.h ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/include/module_common_types_public.h +@@ -12,6 +12,7 @@ + #define MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_ + + #include ++#include + + #include "absl/types/optional.h" + +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.cc b/src/3rdparty/chromium/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.cc +index 8fcc799b795..bc69ddcf18c 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.cc ++++ b/src/3rdparty/chromium/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.cc +@@ -15,6 +15,7 @@ + #include "third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_metrics.h" + #include "third_party/blink/renderer/core/page/scrolling/text_fragment_finder.h" + #include "third_party/blink/renderer/platform/text/text_boundaries.h" ++#include "absl/base/attributes.h" + + namespace blink { + +diff --git a/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/options.h b/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/options.h +index df506f0fae6..1de105fed4a 100644 +--- a/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/options.h ++++ b/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/options.h +@@ -180,7 +180,7 @@ + // absl::variant is a typedef of std::variant, use the feature macro + // ABSL_USES_STD_VARIANT. + +-#define ABSL_OPTION_USE_STD_VARIANT 2 ++#define ABSL_OPTION_USE_STD_VARIANT 0 + + + // ABSL_OPTION_USE_INLINE_NAMESPACE diff --git a/qtwebengine-everywhere-src-5.15.16.tar.xz b/qtwebengine-everywhere-src-5.15.16.tar.xz deleted file mode 100644 index 9ce1659..0000000 --- a/qtwebengine-everywhere-src-5.15.16.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dd1c1b1953191845a57aca6cd82b67daf12582ebebe36c5f8bd899d6ae54886d -size 320185952 diff --git a/qtwebengine-everywhere-src-5.15.17.tar.xz b/qtwebengine-everywhere-src-5.15.17.tar.xz new file mode 100644 index 0000000..9739b6c --- /dev/null +++ b/qtwebengine-everywhere-src-5.15.17.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50e53dd294e9d37c91ff78084b860a65bc64e9def69f8e2082a276598e4679b0 +size 322689280 diff --git a/qtwebengine-python3.patch b/qtwebengine-python3.patch deleted file mode 100644 index fb9d6e0..0000000 --- a/qtwebengine-python3.patch +++ /dev/null @@ -1,2058 +0,0 @@ -From c2fc1669f976475e4dd052bbd2f6352e3e6c6afa Mon Sep 17 00:00:00 2001 -From: Christophe Giboudeaux -Date: Fri, 23 Sep 2022 18:31:33 +0200 -Subject: [PATCH] Use python3 to build qtwebengine - -Origin: ArchLinux, https://github.com/archlinux/svntogit-packages/tree/packages/qt5-webengine/trunk ---- - configure.pri | 29 ++----- - mkspecs/features/functions.prf | 6 +- - .../chromium/build/print_python_deps.py | 4 +- - .../protobufs/binary_proto_generator.py | 8 +- - .../tracing/generate_trace_viewer_grd.py | 2 +- - .../mojo/public/tools/bindings/BUILD.gn | 2 + - .../tools/bindings/gen_data_files_list.py | 8 +- - .../generators/mojom_java_generator.py | 4 + - .../tools/mojom/mojom/generate/generator.py | 14 ++-- - .../tools/mojom/mojom/generate/module.py | 3 +- - .../mojom/mojom/generate/template_expander.py | 12 +-- - .../scripts/bind_gen/blink_v8_bridge.py | 6 +- - .../scripts/bind_gen/callback_interface.py | 2 +- - .../bindings/scripts/bind_gen/code_node.py | 10 +-- - .../bindings/scripts/bind_gen/codegen_expr.py | 15 ++-- - .../scripts/bind_gen/codegen_format.py | 2 +- - .../scripts/bind_gen/codegen_utils.py | 2 +- - .../bindings/scripts/bind_gen/dictionary.py | 2 +- - .../bindings/scripts/bind_gen/interface.py | 82 +++++++++++-------- - .../scripts/bind_gen/mako_renderer.py | 2 +- - .../bindings/scripts/bind_gen/style_format.py | 9 +- - .../bindings/scripts/bind_gen/task_queue.py | 5 +- - .../bindings/scripts/code_generator.py | 10 +++ - .../scripts/generate_origin_trial_features.py | 4 +- - .../bindings/scripts/idl_definitions.py | 8 +- - .../renderer/bindings/scripts/idl_reader.py | 4 +- - .../renderer/bindings/scripts/idl_types.py | 2 +- - .../renderer/bindings/scripts/utilities.py | 28 +++---- - .../renderer/bindings/scripts/v8_interface.py | 9 +- - .../renderer/bindings/scripts/v8_methods.py | 4 + - .../renderer/bindings/scripts/v8_utilities.py | 2 +- - .../scripts/web_idl/callback_interface.py | 12 +-- - .../bindings/scripts/web_idl/database.py | 2 +- - .../bindings/scripts/web_idl/exposure.py | 5 +- - .../bindings/scripts/web_idl/function_like.py | 28 +++---- - .../bindings/scripts/web_idl/idl_compiler.py | 21 ++--- - .../bindings/scripts/web_idl/interface.py | 45 +++++----- - .../bindings/scripts/web_idl/ir_builder.py | 29 ++++--- - .../bindings/scripts/web_idl/make_copy.py | 7 ++ - .../bindings/scripts/web_idl/namespace.py | 12 +-- - .../bindings/templates/dictionary_v8.cc.tmpl | 8 +- - .../scripts/core/css/make_style_shorthands.py | 23 +++--- - .../properties/make_css_property_instances.py | 4 +- - .../blink/renderer/build/scripts/gperf.py | 2 +- - .../blink/renderer/build/scripts/in_file.py | 2 +- - .../renderer/build/scripts/in_generator.py | 5 ++ - .../build/scripts/make_runtime_features.py | 2 +- - .../scripts/templates/element_factory.cc.tmpl | 4 +- - .../templates/element_type_helpers.cc.tmpl | 4 +- - .../templates/element_type_helpers.h.tmpl | 2 +- - .../build/scripts/templates/macros.tmpl | 4 +- - .../templates/make_qualified_names.h.tmpl | 4 +- - .../dawn/generator/generator_lib.py | 4 + - .../devtools-frontend/src/BUILD.gn | 2 + - .../scripts/build/build_inspector_overlay.py | 3 +- - .../build/build_release_applications.py | 9 +- - .../scripts/build/generate_devtools_grd.py | 4 +- - .../src/scripts/build/modular_build.py | 6 +- - .../chromium/third_party/jinja2/tests.py | 2 +- - .../json_schema_compiler/feature_compiler.py | 4 +- - .../tools/metrics/ukm/gen_builders.py | 5 +- - .../ui/ozone/generate_constructor_list.py | 13 ++- - .../ui/ozone/generate_ozone_platform_list.py | 26 ++++-- - src/buildtools/config/support.pri | 10 +-- - src/buildtools/configure.json | 18 ++-- - 65 files changed, 360 insertions(+), 271 deletions(-) - -diff --git a/configure.pri b/configure.pri -index e072961..8d639a9 100644 ---- a/configure.pri -+++ b/configure.pri -@@ -7,20 +7,7 @@ QTWEBENGINE_SOURCE_TREE = $$PWD - 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,22 +39,22 @@ defineTest(qtConfReport_jumboBuild) { - qtConfReportPadded($${1}, $$mergeLimit) - } - --defineTest(qtConfTest_detectPython2) { -- python = $$qtConfFindInPath("python2$$EXE_SUFFIX") -+defineTest(qtConfTest_detectPython) { -+ python = $$qtConfFindInPath("python3$$EXE_SUFFIX") - isEmpty(python) { -- qtLog("'python2$$EXE_SUFFIX' not found in PATH. Checking for 'python$$EXE_SUFFIX'.") -- python = $$qtConfFindInPath("python$$EXE_SUFFIX") -+ qtLog("'python3$$EXE_SUFFIX' not found in PATH. Checking for 'python3$$EXE_SUFFIX'.") -+ python = $$qtConfFindInPath("python3$$EXE_SUFFIX") - } - isEmpty(python) { -- qtLog("'python$$EXE_SUFFIX' not found in PATH. Giving up.") -+ qtLog("'python3$$EXE_SUFFIX' not found in PATH. Giving up.") - 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 -diff --git a/mkspecs/features/functions.prf b/mkspecs/features/functions.prf -index 7f63058..2d2eb2d 100644 ---- a/mkspecs/features/functions.prf -+++ b/mkspecs/features/functions.prf -@@ -44,11 +44,11 @@ defineReplace(which) { - - # 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 = python3 - } -- return($$QMAKE_PYTHON2) -+ return($$QMAKE_PYTHON) - } - - # Returns the python executable for use with shell / make targets. -diff --git a/src/3rdparty/chromium/build/print_python_deps.py b/src/3rdparty/chromium/build/print_python_deps.py -index fd29c09..f4e2141 100755 ---- a/src/3rdparty/chromium/build/print_python_deps.py -+++ b/src/3rdparty/chromium/build/print_python_deps.py -@@ -1,4 +1,4 @@ --#!/usr/bin/python2.7 -+#!/usr/bin/python3 - # 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. -@@ -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 -diff --git a/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py b/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py -index 7422ead..1636551 100755 ---- a/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py -+++ b/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 -diff --git a/src/3rdparty/chromium/content/browser/tracing/generate_trace_viewer_grd.py b/src/3rdparty/chromium/content/browser/tracing/generate_trace_viewer_grd.py -index 037f949..be393d2 100755 ---- a/src/3rdparty/chromium/content/browser/tracing/generate_trace_viewer_grd.py -+++ b/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')) - - -diff --git a/src/3rdparty/chromium/mojo/public/tools/bindings/BUILD.gn b/src/3rdparty/chromium/mojo/public/tools/bindings/BUILD.gn -index fc04b5d..708958e 100644 ---- a/src/3rdparty/chromium/mojo/public/tools/bindings/BUILD.gn -+++ b/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 += [ -diff --git a/src/3rdparty/chromium/mojo/public/tools/bindings/gen_data_files_list.py b/src/3rdparty/chromium/mojo/public/tools/bindings/gen_data_files_list.py -index 79c9e50..8b78d09 100644 ---- a/src/3rdparty/chromium/mojo/public/tools/bindings/gen_data_files_list.py -+++ b/src/3rdparty/chromium/mojo/public/tools/bindings/gen_data_files_list.py -@@ -18,7 +18,6 @@ import os - 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()) -diff --git a/src/3rdparty/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py b/src/3rdparty/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py -index 96b2fdf..00b9dcc 100644 ---- a/src/3rdparty/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py -+++ b/src/3rdparty/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py -@@ -25,6 +25,10 @@ sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, - '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' - -diff --git a/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator.py b/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator.py -index de62260..4a1c73f 100644 ---- a/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator.py -+++ b/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator.py -@@ -136,9 +136,14 @@ class Stylizer(object): - - 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): -diff --git a/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/module.py b/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/module.py -index ebbc9b3..3d02642 100644 ---- a/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/module.py -+++ b/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/module.py -@@ -398,7 +398,8 @@ class Field(object): - - - class StructField(Field): -- pass -+ def __hash__(self): -+ return super(Field, self).__hash__() - - - class UnionField(Field): -diff --git a/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/template_expander.py b/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/template_expander.py -index 7a30056..8d9e26f 100644 ---- a/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/template_expander.py -+++ b/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) -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py -index 3225ecc..fc078d3 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py -+++ b/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_array, - """ - 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}}} = " -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py -index 4a6df51..8b51f23 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py -+++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py -@@ -177,7 +177,7 @@ def generate_callback_interface(callback_interface_identifier): - 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, -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py -index 52972fe..e5ae9d9 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py -+++ b/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 = {} -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_expr.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_expr.py -index a229a6c..5fa288d 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_expr.py -+++ b/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)])) -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py -index 87d26ee..f3e9d38 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py -+++ b/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: -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py -index 2bcc4fe..e72282a 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py -+++ b/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')) -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py -index b39f010..4d68202 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py -+++ b/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 -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py -index 10ff306..bfdf712 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py -+++ b/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, function_name, class_name, api_c - ]) - - 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()->GetPrototype().As();\ - "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()->GetPrototype().As();\ - "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, attribute_entries, - 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_function( - collect_callbacks(named_properties_object_callback_defs) - collect_callbacks(cross_origin_property_callback_defs) - -- entry_nodes = map( -- lambda name: TextNode("reinterpret_cast({}),".format(name)), -- filter(None, callback_names)) -+ entry_nodes = list( -+ map( -+ lambda name: TextNode("reinterpret_cast({}),".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_context_function( - 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, -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/mako_renderer.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/mako_renderer.py -index b4c7055..f3a2fcd 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/mako_renderer.py -+++ b/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) -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py -index dc3493c..017d3d4 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py -+++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py -@@ -70,8 +70,13 @@ def gn_format(contents, filename=None): - - - 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() - -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/task_queue.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/task_queue.py -index 0d8f4c0..e666a9b 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/task_queue.py -+++ b/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 @@ class TaskQueue(object): - def _task_queue_run_tasks(tasks): - for task in tasks: - func, args, kwargs = task -- apply(func, args, kwargs) -+ func(*args, **kwargs) -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py -index e8280be..e49e6eb 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py -+++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py -@@ -13,6 +13,7 @@ import re - 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 @@ TEMPLATES_DIR = os.path.normpath( - # 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 - - -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/generate_origin_trial_features.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/generate_origin_trial_features.py -index 130004e..04c0fab 100755 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/generate_origin_trial_features.py -+++ b/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 -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_definitions.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_definitions.py -index 14e6e9d..b027818 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_definitions.py -+++ b/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,6 +513,9 @@ 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 -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py -index 8d72865..b80eebd 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py -+++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py -@@ -55,8 +55,8 @@ def validate_blink_idl_definitions(idl_filename, idl_file_basename, - 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( -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_types.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_types.py -index cd4f0c3..ab95e9c 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_types.py -+++ b/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 -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/utilities.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/utilities.py -index e1677ee..3c5006f 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/utilities.py -+++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/utilities.py -@@ -196,8 +196,9 @@ class ComponentInfoProviderModules(ComponentInfoProvider): - - @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 @@ class ComponentInfoProviderModules(ComponentInfoProvider): - - - 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 merge_dict_recursively(target, diff): - - 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 -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_interface.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_interface.py -index a432604..a85b03a 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_interface.py -+++ b/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_info): - 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 -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py -index 5f1f89a..6ee8a40 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py -+++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py -@@ -46,6 +46,10 @@ import v8_types - 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: -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_utilities.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_utilities.py -index 2ecd692..fcfc483 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_utilities.py -+++ b/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): -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py -index 13fb7c7..b73b771 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py -+++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py -@@ -91,11 +91,13 @@ class CallbackInterface(UserDefinedType, WithExtendedAttributes, - 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 -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/database.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/database.py -index c92cf48..f5d5912 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/database.py -+++ b/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()) -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py -index abaeef3..e36cf74 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py -+++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py -@@ -8,8 +8,11 @@ from .runtime_enabled_features import RuntimeEnabledFeatures - 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)) - -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/function_like.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/function_like.py -index 648c70d..1712f19 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/function_like.py -+++ b/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( -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py -index c5ee2bd..5831507 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py -+++ b/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': -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py -index 65d24e5..067ef2e 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py -+++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py -@@ -180,8 +180,9 @@ class Interface(UserDefinedType, WithExtendedAttributes, WithCodeGeneratorInfo, - 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, WithExtendedAttributes, WithCodeGeneratorInfo, - 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, WithExtendedAttributes, WithCodeGeneratorInfo, - 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, WithExtendedAttributes, WithCodeGeneratorInfo, - 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 - ]) - -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py -index e9aeff4..d80554d 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py -+++ b/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 .operation import Operation - 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)) -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/make_copy.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/make_copy.py -index a7a2b11..2f6b613 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/make_copy.py -+++ b/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. -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py -index eeabef9..bd7e989 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py -+++ b/src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py -@@ -107,11 +107,13 @@ class Namespace(UserDefinedType, WithExtendedAttributes, WithCodeGeneratorInfo, - 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 -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/bindings/templates/dictionary_v8.cc.tmpl b/src/3rdparty/chromium/third_party/blink/renderer/bindings/templates/dictionary_v8.cc.tmpl -index 0add9c4..dc910f6 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/bindings/templates/dictionary_v8.cc.tmpl -+++ b/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::Local v8_value, { - 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 {{member.v8_value}}; -@@ -147,9 +147,9 @@ bool toV8{{cpp_class}}(const {{cpp_class}}* impl, v8::Local dictiona - 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 {{member.v8_value}}; -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py b/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py -index 1799cd5..5f43ffa 100755 ---- a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py -+++ b/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 @@ class Expansion(object): - - 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.Writer): - - 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']) -- -- longhands = map( -- lambda name: json5_properties.properties_by_name[name], -- 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 = 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_) -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py b/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py -index 75030ac..f72aade 100755 ---- a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py -+++ b/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.Writer): - 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) -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/gperf.py b/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/gperf.py -index 5ee4905..db72660 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/gperf.py -+++ b/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__': -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/in_file.py b/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/in_file.py -index 28adc05..5811348 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/in_file.py -+++ b/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, -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/in_generator.py b/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/in_generator.py -index e46740a..ab1981a 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/in_generator.py -+++ b/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/in_generator.py -@@ -32,10 +32,15 @@ import os - 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 -+ - - ######################################################### - # This is now deprecated - use json5_generator.py instead -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/make_runtime_features.py b/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/make_runtime_features.py -index cafe8d9..6925a4f 100755 ---- a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/make_runtime_features.py -+++ b/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): -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl b/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl -index dc3f44c..3eefcf9 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl -+++ b/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl -@@ -26,7 +26,7 @@ using {{namespace}}FunctionMap = HashMapGetExecutionContext())) { -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl b/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl -index 1b5297d..edecc81 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl -+++ b/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl -@@ -15,7 +15,7 @@ namespace blink { - 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 Node& node) { -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/macros.tmpl b/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/macros.tmpl -index 0244433..dcdbb02 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/macros.tmpl -+++ b/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 %} -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/make_qualified_names.h.tmpl b/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/make_qualified_names.h.tmpl -index cb05c6c..bd5566b 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/make_qualified_names.h.tmpl -+++ b/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 %} - -diff --git a/src/3rdparty/chromium/third_party/dawn/generator/generator_lib.py b/src/3rdparty/chromium/third_party/dawn/generator/generator_lib.py -index 5e3734d..e3d46bd 100644 ---- a/src/3rdparty/chromium/third_party/dawn/generator/generator_lib.py -+++ b/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): -diff --git a/src/3rdparty/chromium/third_party/devtools-frontend/src/BUILD.gn b/src/3rdparty/chromium/third_party/devtools-frontend/src/BUILD.gn -index cd488e8..ea1dc3d 100644 ---- a/src/3rdparty/chromium/third_party/devtools-frontend/src/BUILD.gn -+++ b/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") -diff --git a/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py b/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py -index d6666e8..0f7a661 100644 ---- a/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py -+++ b/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, rollup_plugin): - ['--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) -diff --git a/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py b/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py -index fa8e73d..7d0b84b 100644 ---- a/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py -+++ b/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py -@@ -10,7 +10,7 @@ Builds applications in release mode: - 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()) - -diff --git a/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/generate_devtools_grd.py b/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/generate_devtools_grd.py -index be510c4..c6a59c9 100644 ---- a/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/generate_devtools_grd.py -+++ b/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')) - - -diff --git a/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py b/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py -index 0ba695d..bb1da2f 100644 ---- a/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py -+++ b/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py -@@ -7,6 +7,8 @@ - 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): -diff --git a/src/3rdparty/chromium/third_party/jinja2/tests.py b/src/3rdparty/chromium/third_party/jinja2/tests.py -index 0adc3d4..b14f85f 100644 ---- a/src/3rdparty/chromium/third_party/jinja2/tests.py -+++ b/src/3rdparty/chromium/third_party/jinja2/tests.py -@@ -10,7 +10,7 @@ - """ - 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 -diff --git a/src/3rdparty/chromium/tools/json_schema_compiler/feature_compiler.py b/src/3rdparty/chromium/tools/json_schema_compiler/feature_compiler.py -index 1480390..c68e007 100644 ---- a/src/3rdparty/chromium/tools/json_schema_compiler/feature_compiler.py -+++ b/src/3rdparty/chromium/tools/json_schema_compiler/feature_compiler.py -@@ -371,8 +371,8 @@ def DoesNotHaveAllowlistForHostedApps(value): - # what the allowlist looks like) to a python list of strings. - def cpp_list_to_list(cpp_list): - assert type(cpp_list) is str -- assert cpp_list[0] is '{' -- assert cpp_list[-1] is '}' -+ assert cpp_list[0] == '{' -+ assert cpp_list[-1] == '}' - new_list = json.loads('[%s]' % cpp_list[1:-1]) - assert type(new_list) is list - return new_list -diff --git a/src/3rdparty/chromium/tools/metrics/ukm/gen_builders.py b/src/3rdparty/chromium/tools/metrics/ukm/gen_builders.py -index f9f61d9..44e46fa 100755 ---- a/src/3rdparty/chromium/tools/metrics/ukm/gen_builders.py -+++ b/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 - - -diff --git a/src/3rdparty/chromium/ui/ozone/generate_constructor_list.py b/src/3rdparty/chromium/ui/ozone/generate_constructor_list.py -index 8d80063..04fa18e 100755 ---- a/src/3rdparty/chromium/ui/ozone/generate_constructor_list.py -+++ b/src/3rdparty/chromium/ui/ozone/generate_constructor_list.py -@@ -45,12 +45,15 @@ Example Output: ./ui/ozone/generate_constructor_list.py \ - } // 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() -diff --git a/src/3rdparty/chromium/ui/ozone/generate_ozone_platform_list.py b/src/3rdparty/chromium/ui/ozone/generate_ozone_platform_list.py -index d47c398..2702b68 100755 ---- a/src/3rdparty/chromium/ui/ozone/generate_ozone_platform_list.py -+++ b/src/3rdparty/chromium/ui/ozone/generate_ozone_platform_list.py -@@ -49,12 +49,15 @@ Example Output: ./generate_ozone_platform_list.py --default wayland dri wayland - - """ - -+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() -diff --git a/src/buildtools/config/support.pri b/src/buildtools/config/support.pri -index e7f869a..1bf2c5d 100644 ---- a/src/buildtools/config/support.pri -+++ b/src/buildtools/config/support.pri -@@ -21,7 +21,7 @@ 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) - !qtwebengine_checkForNodejs(QtWebEngine):return(false) - !qtwebengine_checkForSanitizer(QtWebEngine):return(false) - linux:!qtwebengine_checkForPkgCfg(QtWebEngine):return(false) -@@ -51,7 +51,7 @@ defineReplace(qtwebengine_checkPdfError) { - !qtwebengine_checkForGperf(QtPdf):return(false) - !qtwebengine_checkForBison(QtPdf):return(false) - !qtwebengine_checkForFlex(QtPdf):return(false) -- !qtwebengine_checkForPython2(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) -@@ -143,10 +143,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/src/buildtools/configure.json b/src/buildtools/configure.json -index 88d1790..032aa66 100644 ---- a/src/buildtools/configure.json -+++ b/src/buildtools/configure.json -@@ -295,9 +295,9 @@ - "label": "system ninja", - "type": "detectNinja" - }, -- "webengine-python2": { -- "label": "python2", -- "type": "detectPython2", -+ "webengine-python": { -+ "label": "python", -+ "type": "detectPython", - "log": "location" - }, - "webengine-winversion": { -@@ -374,7 +374,7 @@ - && features.webengine-gperf - && features.webengine-bison - && features.webengine-flex -- && features.webengine-python2 -+ && features.webengine-python - && features.webengine-nodejs - && (!config.sanitizer || features.webengine-sanitizer) - && (!config.linux || features.pkg-config) -@@ -400,7 +400,7 @@ - && features.webengine-gperf - && features.webengine-bison - && features.webengine-flex -- && features.webengine-python2 -+ && features.webengine-python - && (!config.sanitizer || features.webengine-sanitizer) - && (!config.linux || features.pkg-config) - && (!config.linux || features.webengine-host-pkg-config) -@@ -423,12 +423,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": { --- -2.37.3 -