[arch-commits] Commit in qt5-webengine/repos/testing-x86_64 (8 files)
Antonio Rojas
arojas at archlinux.org
Tue May 18 10:06:09 UTC 2021
Date: Tuesday, May 18, 2021 @ 10:06:09
Author: arojas
Revision: 415671
archrelease: copy trunk to testing-x86_64
Added:
qt5-webengine/repos/testing-x86_64/PKGBUILD
(from rev 415670, qt5-webengine/trunk/PKGBUILD)
qt5-webengine/repos/testing-x86_64/qt5-webengine-glibc-2.33.patch
(from rev 415670, qt5-webengine/trunk/qt5-webengine-glibc-2.33.patch)
qt5-webengine/repos/testing-x86_64/qtbug-91773.patch
(from rev 415670, qt5-webengine/trunk/qtbug-91773.patch)
qt5-webengine/repos/testing-x86_64/v8-call-new-ListFormatter-createInstance.patch
(from rev 415670, qt5-webengine/trunk/v8-call-new-ListFormatter-createInstance.patch)
Deleted:
qt5-webengine/repos/testing-x86_64/PKGBUILD
qt5-webengine/repos/testing-x86_64/qt5-webengine-glibc-2.33.patch
qt5-webengine/repos/testing-x86_64/qtbug-91773.patch
qt5-webengine/repos/testing-x86_64/v8-call-new-ListFormatter-createInstance.patch
------------------------------------------------+
PKGBUILD | 141 ++--
qt5-webengine-glibc-2.33.patch | 288 ++++----
qtbug-91773.patch | 744 +++++++++++------------
v8-call-new-ListFormatter-createInstance.patch | 190 ++---
4 files changed, 684 insertions(+), 679 deletions(-)
Deleted: PKGBUILD
===================================================================
--- PKGBUILD 2021-05-18 10:05:43 UTC (rev 415670)
+++ PKGBUILD 2021-05-18 10:06:09 UTC (rev 415671)
@@ -1,68 +0,0 @@
-# Maintainer: Felix Yan <felixonmars at archlinux.org>
-# Contributor: Andrea Scarpino <andrea at archlinux.org>
-
-pkgname=qt5-webengine
-_qtver=5.15.4
-pkgver=${_qtver/-/}
-pkgrel=1
-arch=('x86_64')
-url='https://www.qt.io'
-license=('LGPL3' 'LGPL2.1' 'BSD')
-pkgdesc='Provides support for web applications using the Chromium browser project'
-depends=('qt5-webchannel' 'qt5-location' 'libxcomposite' 'libxrandr' 'pciutils' 'libxss'
- 'libevent' 'snappy' 'nss' 'libxslt' 'minizip' 'ffmpeg' 're2' 'libvpx' 'libxtst' 'ttf-font')
-makedepends=('git' 'python2' 'python' 'gperf' 'jsoncpp' 'ninja' 'qt5-tools' 'poppler' 'libpipewire02' 'nodejs')
-optdepends=('libpipewire02: WebRTC desktop sharing under Wayland')
-groups=('qt' 'qt5')
-_pkgfqn=qtwebengine
-source=(git+https://code.qt.io/qt/qtwebengine.git#tag=v$pkgver-lts
- git+https://code.qt.io/qt/qtwebengine-chromium.git
- v8-call-new-ListFormatter-createInstance.patch
- qt5-webengine-glibc-2.33.patch
- qtbug-91773.patch)
-sha256sums=('SKIP'
- 'SKIP'
- '44ebcff050a1c849819d66399c14bd711801d0eb64f518d292d3d6efedce3b3a'
- '2294e5390c869963fc58f7bf1ee0a254a3f7fce3ed00c04e34a5f03e2b31b624'
- '02009c7f87a216131ab96418c9ddb21e697e61668a970b972242f0015b36ba4c')
-
-prepare() {
- mkdir -p build
-
- cd ${_pkgfqn}
- git submodule init
- git submodule set-url src/3rdparty "$srcdir"/qtwebengine-chromium
- git submodule set-branch --branch 87-based src/3rdparty
- git submodule update
-
- patch -p1 < "$srcdir"/qtbug-91773.patch # Fix load signals 4d4fc9cd120376f30ce0630b1e8c7bf174d44fae
- patch -p1 -d src/3rdparty/chromium/v8 -i "$srcdir"/v8-call-new-ListFormatter-createInstance.patch # Fix build with ICU 69
- patch -p1 -i "$srcdir"/qt5-webengine-glibc-2.33.patch # Fix text rendering when building with glibc 2.33
-}
-
-build() {
- cd build
- qmake ../${_pkgfqn} -- \
- -proprietary-codecs \
- -system-ffmpeg \
- -webp \
- -spellchecker \
- -webengine-icu \
- -webengine-kerberos \
- -webengine-webrtc-pipewire
- make
-}
-
-package() {
- cd build
- make INSTALL_ROOT="$pkgdir" install
-
- # Drop QMAKE_PRL_BUILD_DIR because reference the build dir
- find "$pkgdir/usr/lib" -type f -name '*.prl' \
- -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
-
- install -Dm644 "$srcdir"/${_pkgfqn}/src/3rdparty/chromium/LICENSE "$pkgdir"/usr/share/licenses/${pkgname}/LICENSE.chromium
-
- # Fix cmake dependency versions
- sed -e "s|$pkgver\ |5.15.2 |" -i "$pkgdir"/usr/lib/cmake/*/*Config.cmake
-}
Copied: qt5-webengine/repos/testing-x86_64/PKGBUILD (from rev 415670, qt5-webengine/trunk/PKGBUILD)
===================================================================
--- PKGBUILD (rev 0)
+++ PKGBUILD 2021-05-18 10:06:09 UTC (rev 415671)
@@ -0,0 +1,73 @@
+# Maintainer: Felix Yan <felixonmars at archlinux.org>
+# Contributor: Andrea Scarpino <andrea at archlinux.org>
+
+pkgname=qt5-webengine
+_qtver=5.15.4
+pkgver=${_qtver/-/}
+pkgrel=2
+arch=('x86_64')
+url='https://www.qt.io'
+license=('LGPL3' 'LGPL2.1' 'BSD')
+pkgdesc='Provides support for web applications using the Chromium browser project'
+depends=('qt5-webchannel' 'qt5-location' 'libxcomposite' 'libxrandr' 'pciutils' 'libxss'
+ 'libevent' 'snappy' 'nss' 'libxslt' 'minizip' 'ffmpeg' 're2' 'libvpx' 'libxtst' 'ttf-font')
+makedepends=('git' 'python2' 'python' 'gperf' 'jsoncpp' 'ninja' 'qt5-tools' 'poppler' 'libpipewire02' 'nodejs')
+optdepends=('libpipewire02: WebRTC desktop sharing under Wayland')
+groups=('qt' 'qt5')
+_pkgfqn=qtwebengine
+source=(git+https://code.qt.io/qt/qtwebengine.git#tag=v$pkgver-lts
+ git+https://code.qt.io/qt/qtwebengine-chromium.git
+ v8-call-new-ListFormatter-createInstance.patch
+ qt5-webengine-glibc-2.33.patch
+ qtbug-91773.patch)
+sha256sums=('SKIP'
+ 'SKIP'
+ '44ebcff050a1c849819d66399c14bd711801d0eb64f518d292d3d6efedce3b3a'
+ '2294e5390c869963fc58f7bf1ee0a254a3f7fce3ed00c04e34a5f03e2b31b624'
+ '02009c7f87a216131ab96418c9ddb21e697e61668a970b972242f0015b36ba4c')
+
+prepare() {
+ mkdir -p build
+
+ cd ${_pkgfqn}
+ git submodule init
+ git submodule set-url src/3rdparty "$srcdir"/qtwebengine-chromium
+ git submodule set-branch --branch 87-based src/3rdparty
+ git submodule update
+
+ patch -p1 < "$srcdir"/qtbug-91773.patch # Fix load signals 4d4fc9cd120376f30ce0630b1e8c7bf174d44fae
+ patch -p1 -d src/3rdparty/chromium/v8 -i "$srcdir"/v8-call-new-ListFormatter-createInstance.patch # Fix build with ICU 69
+ patch -p1 -i "$srcdir"/qt5-webengine-glibc-2.33.patch # Fix text rendering when building with glibc 2.33
+
+ cd src/3rdparty
+ git cherry-pick -n b498f4ce3f542882767238ea9f01eb85de6c6fda # Fix build with GCC 11
+ sed -e 's|V8_PATCH_LEVEL 31|V8_PATCH_LEVEL 32|' -i chromium/v8/include/v8-version.h # Bump V8 patch version to prevent crashes
+
+}
+
+build() {
+ cd build
+ qmake ../${_pkgfqn} -- \
+ -proprietary-codecs \
+ -system-ffmpeg \
+ -webp \
+ -spellchecker \
+ -webengine-icu \
+ -webengine-kerberos \
+ -webengine-webrtc-pipewire
+ make
+}
+
+package() {
+ cd build
+ make INSTALL_ROOT="$pkgdir" install
+
+ # Drop QMAKE_PRL_BUILD_DIR because reference the build dir
+ find "$pkgdir/usr/lib" -type f -name '*.prl' \
+ -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
+
+ install -Dm644 "$srcdir"/${_pkgfqn}/src/3rdparty/chromium/LICENSE "$pkgdir"/usr/share/licenses/${pkgname}/LICENSE.chromium
+
+ # Fix cmake dependency versions
+ sed -e "s|$pkgver\ |5.15.2 |" -i "$pkgdir"/usr/lib/cmake/*/*Config.cmake
+}
Deleted: qt5-webengine-glibc-2.33.patch
===================================================================
--- qt5-webengine-glibc-2.33.patch 2021-05-18 10:05:43 UTC (rev 415670)
+++ qt5-webengine-glibc-2.33.patch 2021-05-18 10:06:09 UTC (rev 415671)
@@ -1,144 +0,0 @@
-# Patch made by Kevin Kofler <Kevin at tigcc.ticalc.org>
-# https://bugzilla.redhat.com/show_bug.cgi?id=1904652
-
-diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
---- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc 2020-11-07 02:22:36.000000000 +0100
-+++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc 2021-01-20 02:14:53.066223906 +0100
-@@ -257,6 +257,18 @@
- return RestrictKillTarget(current_pid, sysno);
- }
-
-+#if defined(__NR_newfstatat)
-+ if (sysno == __NR_newfstatat) {
-+ return RewriteFstatatSIGSYS();
-+ }
-+#endif
-+
-+#if defined(__NR_fstatat64)
-+ if (sysno == __NR_fstatat64) {
-+ return RewriteFstatatSIGSYS();
-+ }
-+#endif
-+
- if (SyscallSets::IsFileSystem(sysno) ||
- SyscallSets::IsCurrentDirectory(sysno)) {
- return Error(fs_denied_errno);
-diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
---- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc 2020-11-07 02:22:36.000000000 +0100
-+++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc 2021-01-22 19:02:55.651668257 +0100
-@@ -6,6 +6,8 @@
-
- #include "sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h"
-
-+#include <errno.h>
-+#include <fcntl.h>
- #include <stddef.h>
- #include <stdint.h>
- #include <string.h>
-@@ -355,6 +357,35 @@
- return -ENOSYS;
- }
-
-+intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args,
-+ void* aux) {
-+ switch (args.nr) {
-+#if defined(__NR_newfstatat)
-+ case __NR_newfstatat:
-+#endif
-+#if defined(__NR_fstatat64)
-+ case __NR_fstatat64:
-+#endif
-+#if defined(__NR_newfstatat) || defined(__NR_fstatat64)
-+ if (*reinterpret_cast<const char *>(args.args[1]) == '\0'
-+ && args.args[3] == static_cast<uint64_t>(AT_EMPTY_PATH)) {
-+ return sandbox::sys_fstat64(static_cast<int>(args.args[0]),
-+ reinterpret_cast<struct stat64 *>(args.args[2]));
-+ } else {
-+ errno = EACCES;
-+ return -1;
-+ }
-+ break;
-+#endif
-+ }
-+
-+ CrashSIGSYS_Handler(args, aux);
-+
-+ // Should never be reached.
-+ RAW_CHECK(false);
-+ return -ENOSYS;
-+}
-+
- bpf_dsl::ResultExpr CrashSIGSYS() {
- return bpf_dsl::Trap(CrashSIGSYS_Handler, NULL);
- }
-@@ -387,6 +418,10 @@
- return bpf_dsl::Trap(SIGSYSSchedHandler, NULL);
- }
-
-+bpf_dsl::ResultExpr RewriteFstatatSIGSYS() {
-+ return bpf_dsl::Trap(SIGSYSFstatatHandler, NULL);
-+}
-+
- void AllocateCrashKeys() {
- #if !defined(OS_NACL_NONSFI)
- if (seccomp_crash_key)
-diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h
---- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h 2020-11-07 02:22:36.000000000 +0100
-+++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h 2021-01-20 02:11:04.583714199 +0100
-@@ -62,6 +62,10 @@
- // sched_setparam(), sched_setscheduler()
- SANDBOX_EXPORT intptr_t SIGSYSSchedHandler(const arch_seccomp_data& args,
- void* aux);
-+// If the fstatat syscall is actually a disguised fstat, calls the regular fstat
-+// syscall, otherwise, crashes in the same way as CrashSIGSYS_Handler.
-+SANDBOX_EXPORT intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args,
-+ void* aux);
-
- // Variants of the above functions for use with bpf_dsl.
- SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYS();
-@@ -72,6 +76,7 @@
- SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSFutex();
- SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSPtrace();
- SANDBOX_EXPORT bpf_dsl::ResultExpr RewriteSchedSIGSYS();
-+SANDBOX_EXPORT bpf_dsl::ResultExpr RewriteFstatatSIGSYS();
-
- // Allocates a crash key so that Seccomp information can be recorded.
- void AllocateCrashKeys();
-diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc
---- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc 2020-11-07 02:22:36.000000000 +0100
-+++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc 2021-01-20 02:41:12.033133269 +0100
-@@ -261,4 +261,13 @@
-
- #endif // defined(MEMORY_SANITIZER)
-
-+SANDBOX_EXPORT int sys_fstat64(int fd, struct stat64 *buf)
-+{
-+#if defined(__NR_fstat64)
-+ return syscall(__NR_fstat64, fd, buf);
-+#else
-+ return syscall(__NR_fstat, fd, buf);
-+#endif
-+}
-+
- } // namespace sandbox
-diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h
---- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h 2020-11-07 02:22:36.000000000 +0100
-+++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h 2021-01-20 02:40:26.499827829 +0100
-@@ -17,6 +17,7 @@
- struct rlimit64;
- struct cap_hdr;
- struct cap_data;
-+struct stat64;
-
- namespace sandbox {
-
-@@ -84,6 +85,9 @@
- const struct sigaction* act,
- struct sigaction* oldact);
-
-+// Recent glibc rewrites fstat to fstatat.
-+SANDBOX_EXPORT int sys_fstat64(int fd, struct stat64 *buf);
-+
- } // namespace sandbox
-
- #endif // SANDBOX_LINUX_SERVICES_SYSCALL_WRAPPERS_H_
Copied: qt5-webengine/repos/testing-x86_64/qt5-webengine-glibc-2.33.patch (from rev 415670, qt5-webengine/trunk/qt5-webengine-glibc-2.33.patch)
===================================================================
--- qt5-webengine-glibc-2.33.patch (rev 0)
+++ qt5-webengine-glibc-2.33.patch 2021-05-18 10:06:09 UTC (rev 415671)
@@ -0,0 +1,144 @@
+# Patch made by Kevin Kofler <Kevin at tigcc.ticalc.org>
+# https://bugzilla.redhat.com/show_bug.cgi?id=1904652
+
+diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
+--- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc 2020-11-07 02:22:36.000000000 +0100
++++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc 2021-01-20 02:14:53.066223906 +0100
+@@ -257,6 +257,18 @@
+ return RestrictKillTarget(current_pid, sysno);
+ }
+
++#if defined(__NR_newfstatat)
++ if (sysno == __NR_newfstatat) {
++ return RewriteFstatatSIGSYS();
++ }
++#endif
++
++#if defined(__NR_fstatat64)
++ if (sysno == __NR_fstatat64) {
++ return RewriteFstatatSIGSYS();
++ }
++#endif
++
+ if (SyscallSets::IsFileSystem(sysno) ||
+ SyscallSets::IsCurrentDirectory(sysno)) {
+ return Error(fs_denied_errno);
+diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
+--- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc 2020-11-07 02:22:36.000000000 +0100
++++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc 2021-01-22 19:02:55.651668257 +0100
+@@ -6,6 +6,8 @@
+
+ #include "sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h"
+
++#include <errno.h>
++#include <fcntl.h>
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <string.h>
+@@ -355,6 +357,35 @@
+ return -ENOSYS;
+ }
+
++intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args,
++ void* aux) {
++ switch (args.nr) {
++#if defined(__NR_newfstatat)
++ case __NR_newfstatat:
++#endif
++#if defined(__NR_fstatat64)
++ case __NR_fstatat64:
++#endif
++#if defined(__NR_newfstatat) || defined(__NR_fstatat64)
++ if (*reinterpret_cast<const char *>(args.args[1]) == '\0'
++ && args.args[3] == static_cast<uint64_t>(AT_EMPTY_PATH)) {
++ return sandbox::sys_fstat64(static_cast<int>(args.args[0]),
++ reinterpret_cast<struct stat64 *>(args.args[2]));
++ } else {
++ errno = EACCES;
++ return -1;
++ }
++ break;
++#endif
++ }
++
++ CrashSIGSYS_Handler(args, aux);
++
++ // Should never be reached.
++ RAW_CHECK(false);
++ return -ENOSYS;
++}
++
+ bpf_dsl::ResultExpr CrashSIGSYS() {
+ return bpf_dsl::Trap(CrashSIGSYS_Handler, NULL);
+ }
+@@ -387,6 +418,10 @@
+ return bpf_dsl::Trap(SIGSYSSchedHandler, NULL);
+ }
+
++bpf_dsl::ResultExpr RewriteFstatatSIGSYS() {
++ return bpf_dsl::Trap(SIGSYSFstatatHandler, NULL);
++}
++
+ void AllocateCrashKeys() {
+ #if !defined(OS_NACL_NONSFI)
+ if (seccomp_crash_key)
+diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h
+--- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h 2020-11-07 02:22:36.000000000 +0100
++++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h 2021-01-20 02:11:04.583714199 +0100
+@@ -62,6 +62,10 @@
+ // sched_setparam(), sched_setscheduler()
+ SANDBOX_EXPORT intptr_t SIGSYSSchedHandler(const arch_seccomp_data& args,
+ void* aux);
++// If the fstatat syscall is actually a disguised fstat, calls the regular fstat
++// syscall, otherwise, crashes in the same way as CrashSIGSYS_Handler.
++SANDBOX_EXPORT intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args,
++ void* aux);
+
+ // Variants of the above functions for use with bpf_dsl.
+ SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYS();
+@@ -72,6 +76,7 @@
+ SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSFutex();
+ SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSPtrace();
+ SANDBOX_EXPORT bpf_dsl::ResultExpr RewriteSchedSIGSYS();
++SANDBOX_EXPORT bpf_dsl::ResultExpr RewriteFstatatSIGSYS();
+
+ // Allocates a crash key so that Seccomp information can be recorded.
+ void AllocateCrashKeys();
+diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc
+--- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc 2020-11-07 02:22:36.000000000 +0100
++++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc 2021-01-20 02:41:12.033133269 +0100
+@@ -261,4 +261,13 @@
+
+ #endif // defined(MEMORY_SANITIZER)
+
++SANDBOX_EXPORT int sys_fstat64(int fd, struct stat64 *buf)
++{
++#if defined(__NR_fstat64)
++ return syscall(__NR_fstat64, fd, buf);
++#else
++ return syscall(__NR_fstat, fd, buf);
++#endif
++}
++
+ } // namespace sandbox
+diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h
+--- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h 2020-11-07 02:22:36.000000000 +0100
++++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h 2021-01-20 02:40:26.499827829 +0100
+@@ -17,6 +17,7 @@
+ struct rlimit64;
+ struct cap_hdr;
+ struct cap_data;
++struct stat64;
+
+ namespace sandbox {
+
+@@ -84,6 +85,9 @@
+ const struct sigaction* act,
+ struct sigaction* oldact);
+
++// Recent glibc rewrites fstat to fstatat.
++SANDBOX_EXPORT int sys_fstat64(int fd, struct stat64 *buf);
++
+ } // namespace sandbox
+
+ #endif // SANDBOX_LINUX_SERVICES_SYSCALL_WRAPPERS_H_
Deleted: qtbug-91773.patch
===================================================================
--- qtbug-91773.patch 2021-05-18 10:05:43 UTC (rev 415670)
+++ qtbug-91773.patch 2021-05-18 10:06:09 UTC (rev 415671)
@@ -1,372 +0,0 @@
-diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
-index 5597c69f9..2cd48907b 100644
---- a/src/core/web_contents_adapter.cpp
-+++ b/src/core/web_contents_adapter.cpp
-@@ -716,8 +716,7 @@ void WebContentsAdapter::load(const QWebEngineHttpRequest &request)
- m_adapterClient->loadFinished(false, request.url(), false,
- net::ERR_DISALLOWED_URL_SCHEME,
- QCoreApplication::translate("WebContentsAdapter",
-- "HTTP-POST data can only be sent over HTTP(S) protocol"),
-- false);
-+ "HTTP-POST data can only be sent over HTTP(S) protocol"));
- return;
- }
- params.post_data = network::ResourceRequestBody::CreateFromBytes(
-@@ -773,7 +772,7 @@ void WebContentsAdapter::setContent(const QByteArray &data, const QString &mimeT
-
- GURL dataUrlToLoad(urlString);
- if (dataUrlToLoad.spec().size() > url::kMaxURLChars) {
-- m_adapterClient->loadFinished(false, baseUrl, false, net::ERR_ABORTED, QString(), false);
-+ m_adapterClient->loadFinished(false, baseUrl, false, net::ERR_ABORTED, QString());
- return;
- }
- content::NavigationController::LoadURLParams params((dataUrlToLoad));
-@@ -1995,6 +1994,7 @@ void WebContentsAdapter::discard()
- if (m_webContents->IsLoading()) {
- m_webContentsDelegate->didFailLoad(m_webContentsDelegate->url(webContents()), net::Error::ERR_ABORTED,
- QStringLiteral("Discarded"));
-+ m_webContentsDelegate->DidStopLoading();
- }
-
- content::WebContents::CreateParams createParams(m_profileAdapter->profile());
-diff --git a/src/core/web_contents_adapter_client.h b/src/core/web_contents_adapter_client.h
-index 267266d81..afc43806a 100644
---- a/src/core/web_contents_adapter_client.h
-+++ b/src/core/web_contents_adapter_client.h
-@@ -466,8 +466,7 @@ public:
- virtual void loadStarted(const QUrl &provisionalUrl, bool isErrorPage = false) = 0;
- virtual void loadCommitted() = 0;
- virtual void loadVisuallyCommitted() = 0;
-- virtual void loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode,
-- const QString &errorDescription, bool triggersErrorPage) = 0;
-+ virtual void loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode, const QString &errorDescription) = 0;
- virtual void focusContainer() = 0;
- virtual void unhandledKeyEvent(QKeyEvent *event) = 0;
- virtual QSharedPointer<WebContentsAdapter>
-diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp
-index 1e92a46f8..f0e4130e8 100644
---- a/src/core/web_contents_delegate_qt.cpp
-+++ b/src/core/web_contents_delegate_qt.cpp
-@@ -259,14 +259,12 @@ void WebContentsDelegateQt::CloseContents(content::WebContents *source)
-
- void WebContentsDelegateQt::LoadProgressChanged(double progress)
- {
-- QUrl current_url(m_viewClient->webContentsAdapter()->getNavigationEntryOriginalUrl(m_viewClient->webContentsAdapter()->currentNavigationEntryIndex()));
-- int p = qMin(qRound(progress * 100), 100);
--
-- if (!m_loadingErrorFrameList.isEmpty() || !m_loadProgressMap.contains(current_url) || m_loadProgressMap[current_url] == 100 || p == 100)
-+ if (!m_loadingErrorFrameList.isEmpty() || !m_loadingInfo.isLoading()) // suppress signals that aren't between loadStarted and loadFinished
- return;
-
-- if (p > m_loadProgressMap[current_url]) { // ensure strict monotonic increase
-- m_loadProgressMap[current_url] = p;
-+ int p = qMin(qRound(progress * 100), 100);
-+ if (p > m_loadingInfo.progress) { // ensure strict monotonic increase
-+ m_loadingInfo.progress = p;
- m_viewClient->loadProgressChanged(p);
- }
- }
-@@ -339,35 +337,21 @@ void WebContentsDelegateQt::RenderViewHostChanged(content::RenderViewHost *, con
- }
- }
-
--void WebContentsDelegateQt::EmitLoadStarted(const QUrl &url, bool isErrorPage)
-+void WebContentsDelegateQt::emitLoadStarted(bool isErrorPage)
- {
-- m_isDocumentEmpty = true;
-- m_viewClient->loadStarted(url, isErrorPage);
-- m_viewClient->updateNavigationActions();
--
-- if ((url.hasFragment() || m_lastLoadedUrl.hasFragment())
-- && url.adjusted(QUrl::RemoveFragment) == m_lastLoadedUrl.adjusted(QUrl::RemoveFragment)
-- && !m_isNavigationCommitted) {
-- m_loadProgressMap.insert(url, 100);
-- m_lastLoadedUrl = url;
-- m_viewClient->loadProgressChanged(100);
-+ // only report first ever load start or separate one for error page only
-+ if (!isErrorPage && m_loadingInfo.isLoading()) // already running
- return;
-- }
-
-- if (!m_loadProgressMap.isEmpty()) {
-- QMap<QUrl, int>::iterator it = m_loadProgressMap.begin();
-- while (it != m_loadProgressMap.end()) {
-- if (it.value() == 100) {
-- it = m_loadProgressMap.erase(it);
-- continue;
-- }
-- ++it;
-- }
-+ m_isDocumentEmpty = true; // reset to default which may only be overridden on actual resource load complete
-+ if (!isErrorPage) {
-+ m_loadingInfo.progress = 0;
-+ m_viewClient->loadStarted(m_loadingInfo.url, false);
-+ m_viewClient->updateNavigationActions();
-+ m_viewClient->loadProgressChanged(0);
-+ } else {
-+ m_viewClient->loadStarted(toQt(GURL(content::kUnreachableWebDataURL)), true);
- }
--
-- m_lastLoadedUrl = url;
-- m_loadProgressMap.insert(url, 0);
-- m_viewClient->loadProgressChanged(0);
- }
-
- void WebContentsDelegateQt::DidStartNavigation(content::NavigationHandle *navigation_handle)
-@@ -375,34 +359,41 @@ void WebContentsDelegateQt::DidStartNavigation(content::NavigationHandle *naviga
- if (!webEngineSettings()->testAttribute(WebEngineSettings::ErrorPageEnabled))
- navigation_handle->SetSilentlyIgnoreErrors();
-
-- if (!navigation_handle->IsInMainFrame())
-+ if (!navigation_handle->IsInMainFrame() || !web_contents()->IsLoadingToDifferentDocument())
- return;
-
-
- m_loadingErrorFrameList.clear();
- m_faviconManager->resetCandidates();
-- EmitLoadStarted(toQt(navigation_handle->GetURL()));
-+
-+ m_loadingInfo.url = toQt(navigation_handle->GetURL());
-+ // IsErrorPage is only set after navigation commit, so check it otherwise: error page shouldn't have navigation entry
-+ bool isErrorPage = m_loadingInfo.triggersErrorPage && !navigation_handle->GetNavigationEntry();
-+ emitLoadStarted(isErrorPage);
- }
-
--void WebContentsDelegateQt::EmitLoadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode, const QString &errorDescription, bool triggersErrorPage)
-+void WebContentsDelegateQt::emitLoadFinished(bool isErrorPage)
- {
-- Q_ASSERT(!isErrorPage || webEngineSettings()->testAttribute(WebEngineSettings::ErrorPageEnabled));
-- Q_ASSERT((triggersErrorPage && webEngineSettings()->testAttribute(WebEngineSettings::ErrorPageEnabled)) || !triggersErrorPage);
--
-- // When error page enabled we don't need to send the error page load finished signal
-- if (m_loadProgressMap[url] == 100)
-+ if (!m_loadingInfo.isLoading()) // not currently running
- return;
-
-- m_lastLoadedUrl = url;
-- m_loadProgressMap[url] = 100;
-- m_isNavigationCommitted = false;
-- m_viewClient->loadProgressChanged(100);
-+ Q_ASSERT(!isErrorPage || webEngineSettings()->testAttribute(WebEngineSettings::ErrorPageEnabled));
-+ Q_ASSERT((m_loadingInfo.triggersErrorPage && webEngineSettings()->testAttribute(WebEngineSettings::ErrorPageEnabled)) || !m_loadingInfo.triggersErrorPage);
-+
-+ if (!isErrorPage) {
-+ if (m_loadingInfo.progress < 100) {
-+ m_loadingInfo.progress = 100;
-+ m_viewClient->loadProgressChanged(100);
-+ }
-
-- m_viewClient->loadFinished(success, url, isErrorPage, errorCode, errorDescription, triggersErrorPage);
-- m_viewClient->updateNavigationActions();
-+ m_viewClient->loadFinished(m_loadingInfo.success, m_loadingInfo.url, false, m_loadingInfo.errorCode, m_loadingInfo.errorDescription);
-+ m_viewClient->updateNavigationActions();
-+ } else {
-+ m_viewClient->loadFinished(false, toQt(GURL(content::kUnreachableWebDataURL)), true, 0, QString());
-+ }
- }
-
--void WebContentsDelegateQt::EmitLoadCommitted()
-+void WebContentsDelegateQt::emitLoadCommitted()
- {
- m_findTextHelper->handleLoadCommitted();
- m_viewClient->loadCommitted();
-@@ -422,8 +413,7 @@ void WebContentsDelegateQt::DidFinishNavigation(content::NavigationHandle *navig
- profileAdapter->visitedLinksManager()->addUrl(url);
- }
-
-- m_isNavigationCommitted = true;
-- EmitLoadCommitted();
-+ emitLoadCommitted();
- }
-
- // Success is reported by DidFinishLoad, but DidFailLoad is now dead code and needs to be handled below
-@@ -440,11 +430,11 @@ void WebContentsDelegateQt::DidFinishNavigation(content::NavigationHandle *navig
- // Now report we are starting to load an error-page.
- m_loadingErrorFrameList.append(navigation_handle->GetRenderFrameHost()->GetRoutingID());
- m_faviconManager->resetCandidates();
-- EmitLoadStarted(toQt(GURL(content::kUnreachableWebDataURL)), true);
-+ emitLoadStarted(true);
-
- // If it is already committed we will not see another DidFinishNavigation call or a DidFinishLoad call.
- if (navigation_handle->HasCommitted())
-- EmitLoadCommitted();
-+ emitLoadCommitted();
- }
- }
-
-@@ -486,6 +476,9 @@ void WebContentsDelegateQt::DidStopLoading()
-
- if (m_loadingState == LoadingState::Loading)
- setLoadingState(LoadingState::Loaded);
-+
-+ emitLoadFinished();
-+ m_loadingInfo.clear();
- }
-
- void WebContentsDelegateQt::didFailLoad(const QUrl &url, int errorCode, const QString &errorDescription)
-@@ -495,7 +488,11 @@ void WebContentsDelegateQt::didFailLoad(const QUrl &url, int errorCode, const QS
- // Delay notifying failure until the error-page is done loading.
- // Error-pages are not loaded on failures due to abort.
- bool aborted = (errorCode == -3 /* ERR_ABORTED*/ );
-- EmitLoadFinished(false /* success */ , url, false /* isErrorPage */, errorCode, errorDescription, errorPageEnabled && !aborted);
-+ m_loadingInfo.success = false;
-+ m_loadingInfo.url = url;
-+ m_loadingInfo.errorCode = errorCode;
-+ m_loadingInfo.errorDescription = errorDescription;
-+ m_loadingInfo.triggersErrorPage = errorPageEnabled && !aborted;
- }
-
- void WebContentsDelegateQt::DidFailLoad(content::RenderFrameHost* render_frame_host, const GURL& validated_url, int error_code)
-@@ -511,8 +508,7 @@ void WebContentsDelegateQt::DidFailLoad(content::RenderFrameHost* render_frame_h
- Q_ASSERT(error_code == -3 /* ERR_ABORTED */);
- m_loadingErrorFrameList.removeOne(render_frame_host->GetRoutingID());
- m_viewClient->iconChanged(QUrl());
--
-- EmitLoadFinished(false /* success */, toQt(validated_url), true /* isErrorPage */);
-+ emitLoadFinished(/* isErrorPage = */true);
- return;
- }
- // Qt6: Consider getting rid of the error_description (Chromium already has)
-@@ -532,7 +528,7 @@ void WebContentsDelegateQt::DidFinishLoad(content::RenderFrameHost* render_frame
- // Trigger LoadFinished signal for main frame's error page only.
- if (!render_frame_host->GetParent()) {
- m_viewClient->iconChanged(QUrl());
-- EmitLoadFinished(true /* success */, toQt(validated_url), true /* isErrorPage */);
-+ emitLoadFinished(/* isErrorPage = */true);
- }
-
- return;
-@@ -550,7 +546,11 @@ void WebContentsDelegateQt::DidFinishLoad(content::RenderFrameHost* render_frame
- int http_statuscode = entry ? entry->GetHttpStatusCode() : 0;
- bool errorPageEnabled = webEngineSettings()->testAttribute(WebEngineSettings::ErrorPageEnabled);
- bool triggersErrorPage = errorPageEnabled && (http_statuscode >= 400) && m_isDocumentEmpty;
-- EmitLoadFinished(http_statuscode < 400, toQt(validated_url), false /* isErrorPage */, http_statuscode, QString(), triggersErrorPage);
-+
-+ m_loadingInfo.success = http_statuscode < 400;
-+ m_loadingInfo.url = toQt(validated_url);
-+ m_loadingInfo.errorCode = http_statuscode;
-+ m_loadingInfo.triggersErrorPage = triggersErrorPage;
- }
-
- void WebContentsDelegateQt::DidUpdateFaviconURL(content::RenderFrameHost *render_frame_host, const std::vector<blink::mojom::FaviconURLPtr> &candidates)
-diff --git a/src/core/web_contents_delegate_qt.h b/src/core/web_contents_delegate_qt.h
-index 5a3dff6e9..7149f6bff 100644
---- a/src/core/web_contents_delegate_qt.h
-+++ b/src/core/web_contents_delegate_qt.h
-@@ -216,9 +216,9 @@ private:
- WindowOpenDisposition disposition, const gfx::Rect &initial_pos,
- const QUrl &url,
- bool user_gesture);
-- void EmitLoadStarted(const QUrl &url, bool isErrorPage = false);
-- void EmitLoadFinished(bool success, const QUrl &url, bool isErrorPage = false, int errorCode = 0, const QString &errorDescription = QString(), bool triggersErrorPage = false);
-- void EmitLoadCommitted();
-+ void emitLoadStarted(bool isErrorPage = false);
-+ void emitLoadFinished(bool isErrorPage = false);
-+ void emitLoadCommitted();
-
- LoadingState determineLoadingState(content::WebContents *contents);
- void setLoadingState(LoadingState state);
-@@ -242,9 +242,17 @@ private:
- int m_desktopStreamCount = 0;
- mutable bool m_pendingUrlUpdate = false;
-
-- QMap<QUrl, int> m_loadProgressMap;
-- QUrl m_lastLoadedUrl;
-- bool m_isNavigationCommitted = false;
-+ struct LoadingInfo {
-+ bool success = false;
-+ int progress = -1;
-+ bool isLoading() const { return progress >= 0; }
-+ QUrl url;
-+ int errorCode = 0;
-+ QString errorDescription;
-+ bool triggersErrorPage = false;
-+ void clear() { *this = LoadingInfo(); }
-+ } m_loadingInfo;
-+
- bool m_isDocumentEmpty = true;
- base::WeakPtrFactory<WebContentsDelegateQt> m_weakPtrFactory { this };
- };
-diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
-index 6ab1c97cb..1de7f1c7f 100644
---- a/src/webengine/api/qquickwebengineview.cpp
-+++ b/src/webengine/api/qquickwebengineview.cpp
-@@ -496,11 +496,9 @@ Q_STATIC_ASSERT(static_cast<int>(WebEngineError::NoErrorDomain) == static_cast<i
- Q_STATIC_ASSERT(static_cast<int>(WebEngineError::CertificateErrorDomain) == static_cast<int>(QQuickWebEngineView::CertificateErrorDomain));
- Q_STATIC_ASSERT(static_cast<int>(WebEngineError::DnsErrorDomain) == static_cast<int>(QQuickWebEngineView::DnsErrorDomain));
-
--void QQuickWebEngineViewPrivate::loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode,
-- const QString &errorDescription, bool triggersErrorPage)
-+void QQuickWebEngineViewPrivate::loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode, const QString &errorDescription)
- {
- Q_Q(QQuickWebEngineView);
-- Q_UNUSED(triggersErrorPage);
-
- if (isErrorPage) {
- #if QT_CONFIG(webengine_testsupport)
-diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h
-index ebe55c345..ec535298b 100644
---- a/src/webengine/api/qquickwebengineview_p_p.h
-+++ b/src/webengine/api/qquickwebengineview_p_p.h
-@@ -116,8 +116,7 @@ public:
- void loadStarted(const QUrl &provisionalUrl, bool isErrorPage = false) override;
- void loadCommitted() override;
- void loadVisuallyCommitted() override;
-- void loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode,
-- const QString &errorDescription, bool triggersErrorPage) override;
-+ void loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode, const QString &errorDescription) override;
- void focusContainer() override;
- void unhandledKeyEvent(QKeyEvent *event) override;
- QSharedPointer<QtWebEngineCore::WebContentsAdapter>
-diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
-index e08afed44..b32c15039 100644
---- a/src/webenginewidgets/api/qwebenginepage.cpp
-+++ b/src/webenginewidgets/api/qwebenginepage.cpp
-@@ -282,28 +282,20 @@ void QWebEnginePagePrivate::loadStarted(const QUrl &provisionalUrl, bool isError
- QTimer::singleShot(0, q, &QWebEnginePage::loadStarted);
- }
-
--void QWebEnginePagePrivate::loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode,
-- const QString &errorDescription, bool triggersErrorPage)
-+void QWebEnginePagePrivate::loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode, const QString &errorDescription)
- {
- Q_Q(QWebEnginePage);
- Q_UNUSED(url);
- Q_UNUSED(errorCode);
- Q_UNUSED(errorDescription);
-
-- if (isErrorPage) {
-- QTimer::singleShot(0, q, [q](){
-- emit q->loadFinished(false);
-- });
-+ if (isErrorPage)
- return;
-- }
-
- isLoading = false;
-- Q_ASSERT((success && !triggersErrorPage) || !success);
-- if (!triggersErrorPage) {
-- QTimer::singleShot(0, q, [q, success](){
-- emit q->loadFinished(success);
-- });
-- }
-+ QTimer::singleShot(0, q, [q, success](){
-+ emit q->loadFinished(success);
-+ });
- }
-
- void QWebEnginePagePrivate::didPrintPageToPdf(const QString &filePath, bool success)
-diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h
-index 82ce99503..ae3ab5d25 100644
---- a/src/webenginewidgets/api/qwebenginepage_p.h
-+++ b/src/webenginewidgets/api/qwebenginepage_p.h
-@@ -107,8 +107,7 @@ public:
- void loadStarted(const QUrl &provisionalUrl, bool isErrorPage = false) override;
- void loadCommitted() override { }
- void loadVisuallyCommitted() override { }
-- void loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode,
-- const QString &errorDescription, bool triggersErrorPage) override;
-+ void loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode, const QString &errorDescription) override;
- void focusContainer() override;
- void unhandledKeyEvent(QKeyEvent *event) override;
- QSharedPointer<QtWebEngineCore::WebContentsAdapter>
Copied: qt5-webengine/repos/testing-x86_64/qtbug-91773.patch (from rev 415670, qt5-webengine/trunk/qtbug-91773.patch)
===================================================================
--- qtbug-91773.patch (rev 0)
+++ qtbug-91773.patch 2021-05-18 10:06:09 UTC (rev 415671)
@@ -0,0 +1,372 @@
+diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
+index 5597c69f9..2cd48907b 100644
+--- a/src/core/web_contents_adapter.cpp
++++ b/src/core/web_contents_adapter.cpp
+@@ -716,8 +716,7 @@ void WebContentsAdapter::load(const QWebEngineHttpRequest &request)
+ m_adapterClient->loadFinished(false, request.url(), false,
+ net::ERR_DISALLOWED_URL_SCHEME,
+ QCoreApplication::translate("WebContentsAdapter",
+- "HTTP-POST data can only be sent over HTTP(S) protocol"),
+- false);
++ "HTTP-POST data can only be sent over HTTP(S) protocol"));
+ return;
+ }
+ params.post_data = network::ResourceRequestBody::CreateFromBytes(
+@@ -773,7 +772,7 @@ void WebContentsAdapter::setContent(const QByteArray &data, const QString &mimeT
+
+ GURL dataUrlToLoad(urlString);
+ if (dataUrlToLoad.spec().size() > url::kMaxURLChars) {
+- m_adapterClient->loadFinished(false, baseUrl, false, net::ERR_ABORTED, QString(), false);
++ m_adapterClient->loadFinished(false, baseUrl, false, net::ERR_ABORTED, QString());
+ return;
+ }
+ content::NavigationController::LoadURLParams params((dataUrlToLoad));
+@@ -1995,6 +1994,7 @@ void WebContentsAdapter::discard()
+ if (m_webContents->IsLoading()) {
+ m_webContentsDelegate->didFailLoad(m_webContentsDelegate->url(webContents()), net::Error::ERR_ABORTED,
+ QStringLiteral("Discarded"));
++ m_webContentsDelegate->DidStopLoading();
+ }
+
+ content::WebContents::CreateParams createParams(m_profileAdapter->profile());
+diff --git a/src/core/web_contents_adapter_client.h b/src/core/web_contents_adapter_client.h
+index 267266d81..afc43806a 100644
+--- a/src/core/web_contents_adapter_client.h
++++ b/src/core/web_contents_adapter_client.h
+@@ -466,8 +466,7 @@ public:
+ virtual void loadStarted(const QUrl &provisionalUrl, bool isErrorPage = false) = 0;
+ virtual void loadCommitted() = 0;
+ virtual void loadVisuallyCommitted() = 0;
+- virtual void loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode,
+- const QString &errorDescription, bool triggersErrorPage) = 0;
++ virtual void loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode, const QString &errorDescription) = 0;
+ virtual void focusContainer() = 0;
+ virtual void unhandledKeyEvent(QKeyEvent *event) = 0;
+ virtual QSharedPointer<WebContentsAdapter>
+diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp
+index 1e92a46f8..f0e4130e8 100644
+--- a/src/core/web_contents_delegate_qt.cpp
++++ b/src/core/web_contents_delegate_qt.cpp
+@@ -259,14 +259,12 @@ void WebContentsDelegateQt::CloseContents(content::WebContents *source)
+
+ void WebContentsDelegateQt::LoadProgressChanged(double progress)
+ {
+- QUrl current_url(m_viewClient->webContentsAdapter()->getNavigationEntryOriginalUrl(m_viewClient->webContentsAdapter()->currentNavigationEntryIndex()));
+- int p = qMin(qRound(progress * 100), 100);
+-
+- if (!m_loadingErrorFrameList.isEmpty() || !m_loadProgressMap.contains(current_url) || m_loadProgressMap[current_url] == 100 || p == 100)
++ if (!m_loadingErrorFrameList.isEmpty() || !m_loadingInfo.isLoading()) // suppress signals that aren't between loadStarted and loadFinished
+ return;
+
+- if (p > m_loadProgressMap[current_url]) { // ensure strict monotonic increase
+- m_loadProgressMap[current_url] = p;
++ int p = qMin(qRound(progress * 100), 100);
++ if (p > m_loadingInfo.progress) { // ensure strict monotonic increase
++ m_loadingInfo.progress = p;
+ m_viewClient->loadProgressChanged(p);
+ }
+ }
+@@ -339,35 +337,21 @@ void WebContentsDelegateQt::RenderViewHostChanged(content::RenderViewHost *, con
+ }
+ }
+
+-void WebContentsDelegateQt::EmitLoadStarted(const QUrl &url, bool isErrorPage)
++void WebContentsDelegateQt::emitLoadStarted(bool isErrorPage)
+ {
+- m_isDocumentEmpty = true;
+- m_viewClient->loadStarted(url, isErrorPage);
+- m_viewClient->updateNavigationActions();
+-
+- if ((url.hasFragment() || m_lastLoadedUrl.hasFragment())
+- && url.adjusted(QUrl::RemoveFragment) == m_lastLoadedUrl.adjusted(QUrl::RemoveFragment)
+- && !m_isNavigationCommitted) {
+- m_loadProgressMap.insert(url, 100);
+- m_lastLoadedUrl = url;
+- m_viewClient->loadProgressChanged(100);
++ // only report first ever load start or separate one for error page only
++ if (!isErrorPage && m_loadingInfo.isLoading()) // already running
+ return;
+- }
+
+- if (!m_loadProgressMap.isEmpty()) {
+- QMap<QUrl, int>::iterator it = m_loadProgressMap.begin();
+- while (it != m_loadProgressMap.end()) {
+- if (it.value() == 100) {
+- it = m_loadProgressMap.erase(it);
+- continue;
+- }
+- ++it;
+- }
++ m_isDocumentEmpty = true; // reset to default which may only be overridden on actual resource load complete
++ if (!isErrorPage) {
++ m_loadingInfo.progress = 0;
++ m_viewClient->loadStarted(m_loadingInfo.url, false);
++ m_viewClient->updateNavigationActions();
++ m_viewClient->loadProgressChanged(0);
++ } else {
++ m_viewClient->loadStarted(toQt(GURL(content::kUnreachableWebDataURL)), true);
+ }
+-
+- m_lastLoadedUrl = url;
+- m_loadProgressMap.insert(url, 0);
+- m_viewClient->loadProgressChanged(0);
+ }
+
+ void WebContentsDelegateQt::DidStartNavigation(content::NavigationHandle *navigation_handle)
+@@ -375,34 +359,41 @@ void WebContentsDelegateQt::DidStartNavigation(content::NavigationHandle *naviga
+ if (!webEngineSettings()->testAttribute(WebEngineSettings::ErrorPageEnabled))
+ navigation_handle->SetSilentlyIgnoreErrors();
+
+- if (!navigation_handle->IsInMainFrame())
++ if (!navigation_handle->IsInMainFrame() || !web_contents()->IsLoadingToDifferentDocument())
+ return;
+
+
+ m_loadingErrorFrameList.clear();
+ m_faviconManager->resetCandidates();
+- EmitLoadStarted(toQt(navigation_handle->GetURL()));
++
++ m_loadingInfo.url = toQt(navigation_handle->GetURL());
++ // IsErrorPage is only set after navigation commit, so check it otherwise: error page shouldn't have navigation entry
++ bool isErrorPage = m_loadingInfo.triggersErrorPage && !navigation_handle->GetNavigationEntry();
++ emitLoadStarted(isErrorPage);
+ }
+
+-void WebContentsDelegateQt::EmitLoadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode, const QString &errorDescription, bool triggersErrorPage)
++void WebContentsDelegateQt::emitLoadFinished(bool isErrorPage)
+ {
+- Q_ASSERT(!isErrorPage || webEngineSettings()->testAttribute(WebEngineSettings::ErrorPageEnabled));
+- Q_ASSERT((triggersErrorPage && webEngineSettings()->testAttribute(WebEngineSettings::ErrorPageEnabled)) || !triggersErrorPage);
+-
+- // When error page enabled we don't need to send the error page load finished signal
+- if (m_loadProgressMap[url] == 100)
++ if (!m_loadingInfo.isLoading()) // not currently running
+ return;
+
+- m_lastLoadedUrl = url;
+- m_loadProgressMap[url] = 100;
+- m_isNavigationCommitted = false;
+- m_viewClient->loadProgressChanged(100);
++ Q_ASSERT(!isErrorPage || webEngineSettings()->testAttribute(WebEngineSettings::ErrorPageEnabled));
++ Q_ASSERT((m_loadingInfo.triggersErrorPage && webEngineSettings()->testAttribute(WebEngineSettings::ErrorPageEnabled)) || !m_loadingInfo.triggersErrorPage);
++
++ if (!isErrorPage) {
++ if (m_loadingInfo.progress < 100) {
++ m_loadingInfo.progress = 100;
++ m_viewClient->loadProgressChanged(100);
++ }
+
+- m_viewClient->loadFinished(success, url, isErrorPage, errorCode, errorDescription, triggersErrorPage);
+- m_viewClient->updateNavigationActions();
++ m_viewClient->loadFinished(m_loadingInfo.success, m_loadingInfo.url, false, m_loadingInfo.errorCode, m_loadingInfo.errorDescription);
++ m_viewClient->updateNavigationActions();
++ } else {
++ m_viewClient->loadFinished(false, toQt(GURL(content::kUnreachableWebDataURL)), true, 0, QString());
++ }
+ }
+
+-void WebContentsDelegateQt::EmitLoadCommitted()
++void WebContentsDelegateQt::emitLoadCommitted()
+ {
+ m_findTextHelper->handleLoadCommitted();
+ m_viewClient->loadCommitted();
+@@ -422,8 +413,7 @@ void WebContentsDelegateQt::DidFinishNavigation(content::NavigationHandle *navig
+ profileAdapter->visitedLinksManager()->addUrl(url);
+ }
+
+- m_isNavigationCommitted = true;
+- EmitLoadCommitted();
++ emitLoadCommitted();
+ }
+
+ // Success is reported by DidFinishLoad, but DidFailLoad is now dead code and needs to be handled below
+@@ -440,11 +430,11 @@ void WebContentsDelegateQt::DidFinishNavigation(content::NavigationHandle *navig
+ // Now report we are starting to load an error-page.
+ m_loadingErrorFrameList.append(navigation_handle->GetRenderFrameHost()->GetRoutingID());
+ m_faviconManager->resetCandidates();
+- EmitLoadStarted(toQt(GURL(content::kUnreachableWebDataURL)), true);
++ emitLoadStarted(true);
+
+ // If it is already committed we will not see another DidFinishNavigation call or a DidFinishLoad call.
+ if (navigation_handle->HasCommitted())
+- EmitLoadCommitted();
++ emitLoadCommitted();
+ }
+ }
+
+@@ -486,6 +476,9 @@ void WebContentsDelegateQt::DidStopLoading()
+
+ if (m_loadingState == LoadingState::Loading)
+ setLoadingState(LoadingState::Loaded);
++
++ emitLoadFinished();
++ m_loadingInfo.clear();
+ }
+
+ void WebContentsDelegateQt::didFailLoad(const QUrl &url, int errorCode, const QString &errorDescription)
+@@ -495,7 +488,11 @@ void WebContentsDelegateQt::didFailLoad(const QUrl &url, int errorCode, const QS
+ // Delay notifying failure until the error-page is done loading.
+ // Error-pages are not loaded on failures due to abort.
+ bool aborted = (errorCode == -3 /* ERR_ABORTED*/ );
+- EmitLoadFinished(false /* success */ , url, false /* isErrorPage */, errorCode, errorDescription, errorPageEnabled && !aborted);
++ m_loadingInfo.success = false;
++ m_loadingInfo.url = url;
++ m_loadingInfo.errorCode = errorCode;
++ m_loadingInfo.errorDescription = errorDescription;
++ m_loadingInfo.triggersErrorPage = errorPageEnabled && !aborted;
+ }
+
+ void WebContentsDelegateQt::DidFailLoad(content::RenderFrameHost* render_frame_host, const GURL& validated_url, int error_code)
+@@ -511,8 +508,7 @@ void WebContentsDelegateQt::DidFailLoad(content::RenderFrameHost* render_frame_h
+ Q_ASSERT(error_code == -3 /* ERR_ABORTED */);
+ m_loadingErrorFrameList.removeOne(render_frame_host->GetRoutingID());
+ m_viewClient->iconChanged(QUrl());
+-
+- EmitLoadFinished(false /* success */, toQt(validated_url), true /* isErrorPage */);
++ emitLoadFinished(/* isErrorPage = */true);
+ return;
+ }
+ // Qt6: Consider getting rid of the error_description (Chromium already has)
+@@ -532,7 +528,7 @@ void WebContentsDelegateQt::DidFinishLoad(content::RenderFrameHost* render_frame
+ // Trigger LoadFinished signal for main frame's error page only.
+ if (!render_frame_host->GetParent()) {
+ m_viewClient->iconChanged(QUrl());
+- EmitLoadFinished(true /* success */, toQt(validated_url), true /* isErrorPage */);
++ emitLoadFinished(/* isErrorPage = */true);
+ }
+
+ return;
+@@ -550,7 +546,11 @@ void WebContentsDelegateQt::DidFinishLoad(content::RenderFrameHost* render_frame
+ int http_statuscode = entry ? entry->GetHttpStatusCode() : 0;
+ bool errorPageEnabled = webEngineSettings()->testAttribute(WebEngineSettings::ErrorPageEnabled);
+ bool triggersErrorPage = errorPageEnabled && (http_statuscode >= 400) && m_isDocumentEmpty;
+- EmitLoadFinished(http_statuscode < 400, toQt(validated_url), false /* isErrorPage */, http_statuscode, QString(), triggersErrorPage);
++
++ m_loadingInfo.success = http_statuscode < 400;
++ m_loadingInfo.url = toQt(validated_url);
++ m_loadingInfo.errorCode = http_statuscode;
++ m_loadingInfo.triggersErrorPage = triggersErrorPage;
+ }
+
+ void WebContentsDelegateQt::DidUpdateFaviconURL(content::RenderFrameHost *render_frame_host, const std::vector<blink::mojom::FaviconURLPtr> &candidates)
+diff --git a/src/core/web_contents_delegate_qt.h b/src/core/web_contents_delegate_qt.h
+index 5a3dff6e9..7149f6bff 100644
+--- a/src/core/web_contents_delegate_qt.h
++++ b/src/core/web_contents_delegate_qt.h
+@@ -216,9 +216,9 @@ private:
+ WindowOpenDisposition disposition, const gfx::Rect &initial_pos,
+ const QUrl &url,
+ bool user_gesture);
+- void EmitLoadStarted(const QUrl &url, bool isErrorPage = false);
+- void EmitLoadFinished(bool success, const QUrl &url, bool isErrorPage = false, int errorCode = 0, const QString &errorDescription = QString(), bool triggersErrorPage = false);
+- void EmitLoadCommitted();
++ void emitLoadStarted(bool isErrorPage = false);
++ void emitLoadFinished(bool isErrorPage = false);
++ void emitLoadCommitted();
+
+ LoadingState determineLoadingState(content::WebContents *contents);
+ void setLoadingState(LoadingState state);
+@@ -242,9 +242,17 @@ private:
+ int m_desktopStreamCount = 0;
+ mutable bool m_pendingUrlUpdate = false;
+
+- QMap<QUrl, int> m_loadProgressMap;
+- QUrl m_lastLoadedUrl;
+- bool m_isNavigationCommitted = false;
++ struct LoadingInfo {
++ bool success = false;
++ int progress = -1;
++ bool isLoading() const { return progress >= 0; }
++ QUrl url;
++ int errorCode = 0;
++ QString errorDescription;
++ bool triggersErrorPage = false;
++ void clear() { *this = LoadingInfo(); }
++ } m_loadingInfo;
++
+ bool m_isDocumentEmpty = true;
+ base::WeakPtrFactory<WebContentsDelegateQt> m_weakPtrFactory { this };
+ };
+diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
+index 6ab1c97cb..1de7f1c7f 100644
+--- a/src/webengine/api/qquickwebengineview.cpp
++++ b/src/webengine/api/qquickwebengineview.cpp
+@@ -496,11 +496,9 @@ Q_STATIC_ASSERT(static_cast<int>(WebEngineError::NoErrorDomain) == static_cast<i
+ Q_STATIC_ASSERT(static_cast<int>(WebEngineError::CertificateErrorDomain) == static_cast<int>(QQuickWebEngineView::CertificateErrorDomain));
+ Q_STATIC_ASSERT(static_cast<int>(WebEngineError::DnsErrorDomain) == static_cast<int>(QQuickWebEngineView::DnsErrorDomain));
+
+-void QQuickWebEngineViewPrivate::loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode,
+- const QString &errorDescription, bool triggersErrorPage)
++void QQuickWebEngineViewPrivate::loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode, const QString &errorDescription)
+ {
+ Q_Q(QQuickWebEngineView);
+- Q_UNUSED(triggersErrorPage);
+
+ if (isErrorPage) {
+ #if QT_CONFIG(webengine_testsupport)
+diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h
+index ebe55c345..ec535298b 100644
+--- a/src/webengine/api/qquickwebengineview_p_p.h
++++ b/src/webengine/api/qquickwebengineview_p_p.h
+@@ -116,8 +116,7 @@ public:
+ void loadStarted(const QUrl &provisionalUrl, bool isErrorPage = false) override;
+ void loadCommitted() override;
+ void loadVisuallyCommitted() override;
+- void loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode,
+- const QString &errorDescription, bool triggersErrorPage) override;
++ void loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode, const QString &errorDescription) override;
+ void focusContainer() override;
+ void unhandledKeyEvent(QKeyEvent *event) override;
+ QSharedPointer<QtWebEngineCore::WebContentsAdapter>
+diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
+index e08afed44..b32c15039 100644
+--- a/src/webenginewidgets/api/qwebenginepage.cpp
++++ b/src/webenginewidgets/api/qwebenginepage.cpp
+@@ -282,28 +282,20 @@ void QWebEnginePagePrivate::loadStarted(const QUrl &provisionalUrl, bool isError
+ QTimer::singleShot(0, q, &QWebEnginePage::loadStarted);
+ }
+
+-void QWebEnginePagePrivate::loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode,
+- const QString &errorDescription, bool triggersErrorPage)
++void QWebEnginePagePrivate::loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode, const QString &errorDescription)
+ {
+ Q_Q(QWebEnginePage);
+ Q_UNUSED(url);
+ Q_UNUSED(errorCode);
+ Q_UNUSED(errorDescription);
+
+- if (isErrorPage) {
+- QTimer::singleShot(0, q, [q](){
+- emit q->loadFinished(false);
+- });
++ if (isErrorPage)
+ return;
+- }
+
+ isLoading = false;
+- Q_ASSERT((success && !triggersErrorPage) || !success);
+- if (!triggersErrorPage) {
+- QTimer::singleShot(0, q, [q, success](){
+- emit q->loadFinished(success);
+- });
+- }
++ QTimer::singleShot(0, q, [q, success](){
++ emit q->loadFinished(success);
++ });
+ }
+
+ void QWebEnginePagePrivate::didPrintPageToPdf(const QString &filePath, bool success)
+diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h
+index 82ce99503..ae3ab5d25 100644
+--- a/src/webenginewidgets/api/qwebenginepage_p.h
++++ b/src/webenginewidgets/api/qwebenginepage_p.h
+@@ -107,8 +107,7 @@ public:
+ void loadStarted(const QUrl &provisionalUrl, bool isErrorPage = false) override;
+ void loadCommitted() override { }
+ void loadVisuallyCommitted() override { }
+- void loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode,
+- const QString &errorDescription, bool triggersErrorPage) override;
++ void loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode, const QString &errorDescription) override;
+ void focusContainer() override;
+ void unhandledKeyEvent(QKeyEvent *event) override;
+ QSharedPointer<QtWebEngineCore::WebContentsAdapter>
Deleted: v8-call-new-ListFormatter-createInstance.patch
===================================================================
--- v8-call-new-ListFormatter-createInstance.patch 2021-05-18 10:05:43 UTC (rev 415670)
+++ v8-call-new-ListFormatter-createInstance.patch 2021-05-18 10:06:09 UTC (rev 415671)
@@ -1,95 +0,0 @@
-From 035c305ce7761f51328b45f1bd83e26aef267c9d Mon Sep 17 00:00:00 2001
-From: Frank Tang <ftang at chromium.org>
-Date: Thu, 15 Oct 2020 22:44:27 -0700
-Subject: [PATCH] [Intl] call new ListFormatter::createInstance
-
-The one we currently using is now marked as internal and to be removed
-for 68. Migrating to the style which already avaiable in ICU 67-1.
-
-Bug: v8:11031
-Change-Id: I668382a2e1b8602ddca02bf231c5008a6c92bf2d
-Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2477751
-Reviewed-by: Jakob Kummerow <jkummerow at chromium.org>
-Commit-Queue: Frank Tang <ftang at chromium.org>
-Cr-Commit-Position: refs/heads/master@{#70638}
----
- src/objects/js-list-format.cc | 55 ++++++++++++-----------------------
- 1 file changed, 18 insertions(+), 37 deletions(-)
-
-diff --git a/src/objects/js-list-format.cc b/src/objects/js-list-format.cc
-index b17d38c43ff5..e48a387be50f 100644
---- a/src/objects/js-list-format.cc
-+++ b/src/objects/js-list-format.cc
-@@ -29,46 +29,27 @@ namespace v8 {
- namespace internal {
-
- namespace {
--const char* kStandard = "standard";
--const char* kOr = "or";
--const char* kUnit = "unit";
--const char* kStandardShort = "standard-short";
--const char* kOrShort = "or-short";
--const char* kUnitShort = "unit-short";
--const char* kStandardNarrow = "standard-narrow";
--const char* kOrNarrow = "or-narrow";
--const char* kUnitNarrow = "unit-narrow";
--
--const char* GetIcuStyleString(JSListFormat::Style style,
-- JSListFormat::Type type) {
-+
-+UListFormatterWidth GetIcuWidth(JSListFormat::Style style) {
-+ switch (style) {
-+ case JSListFormat::Style::LONG:
-+ return ULISTFMT_WIDTH_WIDE;
-+ case JSListFormat::Style::SHORT:
-+ return ULISTFMT_WIDTH_SHORT;
-+ case JSListFormat::Style::NARROW:
-+ return ULISTFMT_WIDTH_NARROW;
-+ }
-+ UNREACHABLE();
-+}
-+
-+UListFormatterType GetIcuType(JSListFormat::Type type) {
- switch (type) {
- case JSListFormat::Type::CONJUNCTION:
-- switch (style) {
-- case JSListFormat::Style::LONG:
-- return kStandard;
-- case JSListFormat::Style::SHORT:
-- return kStandardShort;
-- case JSListFormat::Style::NARROW:
-- return kStandardNarrow;
-- }
-+ return ULISTFMT_TYPE_AND;
- case JSListFormat::Type::DISJUNCTION:
-- switch (style) {
-- case JSListFormat::Style::LONG:
-- return kOr;
-- case JSListFormat::Style::SHORT:
-- return kOrShort;
-- case JSListFormat::Style::NARROW:
-- return kOrNarrow;
-- }
-+ return ULISTFMT_TYPE_OR;
- case JSListFormat::Type::UNIT:
-- switch (style) {
-- case JSListFormat::Style::LONG:
-- return kUnit;
-- case JSListFormat::Style::SHORT:
-- return kUnitShort;
-- case JSListFormat::Style::NARROW:
-- return kUnitNarrow;
-- }
-+ return ULISTFMT_TYPE_UNITS;
- }
- UNREACHABLE();
- }
-@@ -143,7 +124,7 @@ MaybeHandle<JSListFormat> JSListFormat::New(Isolate* isolate, Handle<Map> map,
- icu::Locale icu_locale = r.icu_locale;
- UErrorCode status = U_ZERO_ERROR;
- icu::ListFormatter* formatter = icu::ListFormatter::createInstance(
-- icu_locale, GetIcuStyleString(style_enum, type_enum), status);
-+ icu_locale, GetIcuType(type_enum), GetIcuWidth(style_enum), status);
- if (U_FAILURE(status) || formatter == nullptr) {
- delete formatter;
- THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError),
Copied: qt5-webengine/repos/testing-x86_64/v8-call-new-ListFormatter-createInstance.patch (from rev 415670, qt5-webengine/trunk/v8-call-new-ListFormatter-createInstance.patch)
===================================================================
--- v8-call-new-ListFormatter-createInstance.patch (rev 0)
+++ v8-call-new-ListFormatter-createInstance.patch 2021-05-18 10:06:09 UTC (rev 415671)
@@ -0,0 +1,95 @@
+From 035c305ce7761f51328b45f1bd83e26aef267c9d Mon Sep 17 00:00:00 2001
+From: Frank Tang <ftang at chromium.org>
+Date: Thu, 15 Oct 2020 22:44:27 -0700
+Subject: [PATCH] [Intl] call new ListFormatter::createInstance
+
+The one we currently using is now marked as internal and to be removed
+for 68. Migrating to the style which already avaiable in ICU 67-1.
+
+Bug: v8:11031
+Change-Id: I668382a2e1b8602ddca02bf231c5008a6c92bf2d
+Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2477751
+Reviewed-by: Jakob Kummerow <jkummerow at chromium.org>
+Commit-Queue: Frank Tang <ftang at chromium.org>
+Cr-Commit-Position: refs/heads/master@{#70638}
+---
+ src/objects/js-list-format.cc | 55 ++++++++++++-----------------------
+ 1 file changed, 18 insertions(+), 37 deletions(-)
+
+diff --git a/src/objects/js-list-format.cc b/src/objects/js-list-format.cc
+index b17d38c43ff5..e48a387be50f 100644
+--- a/src/objects/js-list-format.cc
++++ b/src/objects/js-list-format.cc
+@@ -29,46 +29,27 @@ namespace v8 {
+ namespace internal {
+
+ namespace {
+-const char* kStandard = "standard";
+-const char* kOr = "or";
+-const char* kUnit = "unit";
+-const char* kStandardShort = "standard-short";
+-const char* kOrShort = "or-short";
+-const char* kUnitShort = "unit-short";
+-const char* kStandardNarrow = "standard-narrow";
+-const char* kOrNarrow = "or-narrow";
+-const char* kUnitNarrow = "unit-narrow";
+-
+-const char* GetIcuStyleString(JSListFormat::Style style,
+- JSListFormat::Type type) {
++
++UListFormatterWidth GetIcuWidth(JSListFormat::Style style) {
++ switch (style) {
++ case JSListFormat::Style::LONG:
++ return ULISTFMT_WIDTH_WIDE;
++ case JSListFormat::Style::SHORT:
++ return ULISTFMT_WIDTH_SHORT;
++ case JSListFormat::Style::NARROW:
++ return ULISTFMT_WIDTH_NARROW;
++ }
++ UNREACHABLE();
++}
++
++UListFormatterType GetIcuType(JSListFormat::Type type) {
+ switch (type) {
+ case JSListFormat::Type::CONJUNCTION:
+- switch (style) {
+- case JSListFormat::Style::LONG:
+- return kStandard;
+- case JSListFormat::Style::SHORT:
+- return kStandardShort;
+- case JSListFormat::Style::NARROW:
+- return kStandardNarrow;
+- }
++ return ULISTFMT_TYPE_AND;
+ case JSListFormat::Type::DISJUNCTION:
+- switch (style) {
+- case JSListFormat::Style::LONG:
+- return kOr;
+- case JSListFormat::Style::SHORT:
+- return kOrShort;
+- case JSListFormat::Style::NARROW:
+- return kOrNarrow;
+- }
++ return ULISTFMT_TYPE_OR;
+ case JSListFormat::Type::UNIT:
+- switch (style) {
+- case JSListFormat::Style::LONG:
+- return kUnit;
+- case JSListFormat::Style::SHORT:
+- return kUnitShort;
+- case JSListFormat::Style::NARROW:
+- return kUnitNarrow;
+- }
++ return ULISTFMT_TYPE_UNITS;
+ }
+ UNREACHABLE();
+ }
+@@ -143,7 +124,7 @@ MaybeHandle<JSListFormat> JSListFormat::New(Isolate* isolate, Handle<Map> map,
+ icu::Locale icu_locale = r.icu_locale;
+ UErrorCode status = U_ZERO_ERROR;
+ icu::ListFormatter* formatter = icu::ListFormatter::createInstance(
+- icu_locale, GetIcuStyleString(style_enum, type_enum), status);
++ icu_locale, GetIcuType(type_enum), GetIcuWidth(style_enum), status);
+ if (U_FAILURE(status) || formatter == nullptr) {
+ delete formatter;
+ THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError),
More information about the arch-commits
mailing list