Date: Tuesday, June 16, 2020 @ 01:13:16 Author: foutrelis Revision: 389288
archrelease: copy trunk to extra-x86_64 Added: chromium/repos/extra-x86_64/PKGBUILD (from rev 389287, chromium/trunk/PKGBUILD) chromium/repos/extra-x86_64/add-missing-algorithm-header-in-crx_install_error.cc.patch (from rev 389287, chromium/trunk/add-missing-algorithm-header-in-crx_install_error.cc.patch) chromium/repos/extra-x86_64/avoid-double-destruction-of-ServiceWorkerObjectHost.patch (from rev 389287, chromium/trunk/avoid-double-destruction-of-ServiceWorkerObjectHost.patch) chromium/repos/extra-x86_64/chromium-83-gcc-10.patch (from rev 389287, chromium/trunk/chromium-83-gcc-10.patch) chromium/repos/extra-x86_64/chromium-skia-harmony.patch (from rev 389287, chromium/trunk/chromium-skia-harmony.patch) chromium/repos/extra-x86_64/chromium.install (from rev 389287, chromium/trunk/chromium.install) chromium/repos/extra-x86_64/clean-up-a-call-to-set_utf8.patch (from rev 389287, chromium/trunk/clean-up-a-call-to-set_utf8.patch) chromium/repos/extra-x86_64/include-memory-header-to-get-the-definition-of-std-u.patch (from rev 389287, chromium/trunk/include-memory-header-to-get-the-definition-of-std-u.patch) chromium/repos/extra-x86_64/iwyu-std-numeric_limits-is-defined-in-limits.patch (from rev 389287, chromium/trunk/iwyu-std-numeric_limits-is-defined-in-limits.patch) chromium/repos/extra-x86_64/libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch (from rev 389287, chromium/trunk/libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch) chromium/repos/extra-x86_64/make-some-of-blink-custom-iterators-STL-compatible.patch (from rev 389287, chromium/trunk/make-some-of-blink-custom-iterators-STL-compatible.patch) chromium/repos/extra-x86_64/v8-remove-soon-to-be-removed-getAllFieldPositions.patch (from rev 389287, chromium/trunk/v8-remove-soon-to-be-removed-getAllFieldPositions.patch) Deleted: chromium/repos/extra-x86_64/PKGBUILD chromium/repos/extra-x86_64/add-missing-algorithm-header-in-crx_install_error.cc.patch chromium/repos/extra-x86_64/avoid-double-destruction-of-ServiceWorkerObjectHost.patch chromium/repos/extra-x86_64/chromium-83-gcc-10.patch chromium/repos/extra-x86_64/chromium-skia-harmony.patch chromium/repos/extra-x86_64/chromium.install chromium/repos/extra-x86_64/clean-up-a-call-to-set_utf8.patch chromium/repos/extra-x86_64/include-memory-header-to-get-the-definition-of-std-u.patch chromium/repos/extra-x86_64/iwyu-std-numeric_limits-is-defined-in-limits.patch chromium/repos/extra-x86_64/libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch chromium/repos/extra-x86_64/make-some-of-blink-custom-iterators-STL-compatible.patch chromium/repos/extra-x86_64/v8-remove-soon-to-be-removed-getAllFieldPositions.patch ------------------------------------------------------------+ PKGBUILD | 554 +++++------ add-missing-algorithm-header-in-crx_install_error.cc.patch | 58 - avoid-double-destruction-of-ServiceWorkerObjectHost.patch | 276 ++--- chromium-83-gcc-10.patch | 128 +- chromium-skia-harmony.patch | 28 chromium.install | 32 clean-up-a-call-to-set_utf8.patch | 68 - include-memory-header-to-get-the-definition-of-std-u.patch | 64 - iwyu-std-numeric_limits-is-defined-in-limits.patch | 58 - libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch | 124 +- make-some-of-blink-custom-iterators-STL-compatible.patch | 190 +-- v8-remove-soon-to-be-removed-getAllFieldPositions.patch | 344 +++--- 12 files changed, 962 insertions(+), 962 deletions(-) Deleted: PKGBUILD =================================================================== --- PKGBUILD 2020-06-16 01:13:03 UTC (rev 389287) +++ PKGBUILD 2020-06-16 01:13:16 UTC (rev 389288) @@ -1,277 +0,0 @@ -# Maintainer: Evangelos Foutras <evange...@foutrelis.com> -# Contributor: Pierre Schmitz <pie...@archlinux.de> -# Contributor: Jan "heftig" Steffens <jan.steff...@gmail.com> -# Contributor: Daniel J Griffiths <ghost1...@archlinux.us> - -pkgname=chromium -pkgver=83.0.4103.97 -pkgrel=2 -_launcher_ver=6 -pkgdesc="A web browser built for speed, simplicity, and security" -arch=('x86_64') -url="https://www.chromium.org/Home" -license=('BSD') -depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt' - 'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib' - 'desktop-file-utils' 'hicolor-icon-theme') -makedepends=('python' 'python2' 'gperf' 'yasm' 'mesa' 'ninja' 'nodejs' 'git' - 'libpipewire02' 'clang' 'lld' 'gn' 'java-runtime-headless' - 'python2-setuptools') -optdepends=('pepper-flash: support for Flash content' - 'libpipewire02: WebRTC desktop sharing under Wayland' - 'kdialog: needed for file dialogs in KDE' - 'org.freedesktop.secrets: password storage backend on GNOME / Xfce' - 'kwallet: for storing passwords in KWallet on KDE desktops') -install=chromium.install -source=(https://commondatastorage.googleapis.com/chromium-browser-official/$pkgname-$pkgver.tar.xz - chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz - clean-up-a-call-to-set_utf8.patch - iwyu-std-numeric_limits-is-defined-in-limits.patch - add-missing-algorithm-header-in-crx_install_error.cc.patch - libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch - include-memory-header-to-get-the-definition-of-std-u.patch - make-some-of-blink-custom-iterators-STL-compatible.patch - avoid-double-destruction-of-ServiceWorkerObjectHost.patch - v8-remove-soon-to-be-removed-getAllFieldPositions.patch - chromium-83-gcc-10.patch - chromium-skia-harmony.patch) -sha256sums=('12c405f61284cfc78f8c2b6600f3c1ae61a83b639c41087bb4f74fcaab036f83' - '04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1' - '58c41713eb6fb33b6eef120f4324fa1fb8123b1fbc4ecbe5662f1f9779b9b6af' - '675fb3d6276cce569a641436465f58d5709d1d4a5f62b7052989479fd4aaea24' - '0e2a78e4aa7272ab0ff4a4c467750e01bad692a026ad9828aaf06d2a9418b9d8' - '50687079426094f2056d1f4806dc30fc8d6bad16190520e57ba087ec5db1d778' - '071326135bc25226aa165639dff80a03670a17548f2d2ff5cc4f40982b39c52a' - '3d7f20e1d2ee7d73ed25e708c0d59a0cb215fcce10a379e3d48a856533c4b0b7' - 'd793842e9584bf75e3779918297ba0ffa6dd05394ef5b2bf5fb73aa9c86a7e2f' - 'e042024423027ad3ef729a7e4709bdf9714aea49d64cfbbf46a645a05703abc2' - '3e5ba8c0a70a4bc673deec0c61eb2b58f05a4c784cbdb7c8118be1eb6580db6d' - '771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1') - -# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py -# Keys are the names in the above script; values are the dependencies in Arch -declare -gA _system_libs=( - [ffmpeg]=ffmpeg - [flac]=flac - [fontconfig]=fontconfig - [freetype]=freetype2 - [harfbuzz-ng]=harfbuzz - [icu]=icu - [libdrm]= - [libjpeg]=libjpeg - #[libpng]=libpng # https://crbug.com/752403#c10 - [libvpx]=libvpx - [libwebp]=libwebp - [libxml]=libxml2 - [libxslt]=libxslt - [opus]=opus - [re2]=re2 - [snappy]=snappy - [yasm]= - [zlib]=minizip -) -_unwanted_bundled_libs=( - $(printf "%s\n" ${!_system_libs[@]} | sed 's/^libjpeg$/&_turbo/') -) -depends+=(${_system_libs[@]}) - -# Google API keys (see https://www.chromium.org/developers/how-tos/api-keys) -# Note: These are for Arch Linux use ONLY. For your own distribution, please -# get your own set of keys. -_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM -_google_default_client_id=413772536636.apps.googleusercontent.com -_google_default_client_secret=0ZChLK6AxeA3Isu96MkwqDR4 - -prepare() { - cd "$srcdir/$pkgname-$pkgver" - - # Allow building against system libraries in official builds - sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ - tools/generate_shim_headers/generate_shim_headers.py - - # https://crbug.com/893950 - sed -i -e 's/\<xmlMalloc\>/malloc/' -e 's/\<xmlFree\>/free/' \ - third_party/blink/renderer/core/xml/*.cc \ - third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \ - third_party/libxml/chromium/*.cc - - # https://chromium-review.googlesource.com/c/chromium/src/+/2145261 - patch -Np1 -i ../clean-up-a-call-to-set_utf8.patch - - # https://chromium-review.googlesource.com/c/chromium/src/+/2153111 - patch -Np1 -F3 -i ../iwyu-std-numeric_limits-is-defined-in-limits.patch - - # https://chromium-review.googlesource.com/c/chromium/src/+/2152333 - patch -Np1 -i ../add-missing-algorithm-header-in-crx_install_error.cc.patch - - # https://chromium-review.googlesource.com/c/chromium/src/+/2132403 - patch -Np1 -i ../libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch - - # https://chromium-review.googlesource.com/c/chromium/src/+/2164645 - patch -Np1 -i ../include-memory-header-to-get-the-definition-of-std-u.patch - - # https://chromium-review.googlesource.com/c/chromium/src/+/2174199 - patch -Np1 -i ../make-some-of-blink-custom-iterators-STL-compatible.patch - - # https://chromium-review.googlesource.com/c/chromium/src/+/2094496 - patch -Np1 -i ../avoid-double-destruction-of-ServiceWorkerObjectHost.patch - - # https://crbug.com/v8/10393 - patch -Np1 -d v8 <../v8-remove-soon-to-be-removed-getAllFieldPositions.patch - - # Fixes from Gentoo - patch -Np1 -i ../chromium-83-gcc-10.patch - - # https://crbug.com/skia/6663#c10 - patch -Np0 -i ../chromium-skia-harmony.patch - - # Force script incompatible with Python 3 to use /usr/bin/python2 - sed -i '1s|python$|&2|' third_party/dom_distiller_js/protoc_plugins/*.py - - mkdir -p third_party/node/linux/node-linux-x64/bin - ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ - - # Remove bundled libraries for which we will use the system copies; this - # *should* do what the remove_bundled_libraries.py script does, with the - # added benefit of not having to list all the remaining libraries - local _lib - for _lib in ${_unwanted_bundled_libs[@]}; do - find "third_party/$_lib" -type f \ - \! -path "third_party/$_lib/chromium/*" \ - \! -path "third_party/$_lib/google/*" \ - \! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \ - \! -path 'third_party/yasm/run_yasm.py' \ - \! -regex '.*\.\(gn\|gni\|isolate\)' \ - -delete - done - - python2 build/linux/unbundle/replace_gn_files.py \ - --system-libraries "${!_system_libs[@]}" -} - -build() { - make -C chromium-launcher-$_launcher_ver - - cd "$srcdir/$pkgname-$pkgver" - - if check_buildoption ccache y; then - # Avoid falling back to preprocessor mode when sources contain time macros - export CCACHE_SLOPPINESS=time_macros - fi - - export CC=clang - export CXX=clang++ - export AR=ar - export NM=nm - - local _flags=( - 'custom_toolchain="//build/toolchain/linux/unbundle:default"' - 'host_toolchain="//build/toolchain/linux/unbundle:default"' - 'clang_use_chrome_plugins=false' - 'is_official_build=true' # implies is_cfi=true on x86_64 - 'treat_warnings_as_errors=false' - 'fieldtrial_testing_like_official_build=true' - 'ffmpeg_branding="Chrome"' - 'proprietary_codecs=true' - 'rtc_use_pipewire=true' - 'link_pulseaudio=true' - 'use_gnome_keyring=false' - 'use_sysroot=false' - 'linux_use_bundled_binutils=false' - 'use_custom_libcxx=false' - 'enable_hangout_services_extension=true' - 'enable_widevine=true' - 'enable_nacl=false' - "google_api_key=\"${_google_api_key}\"" - "google_default_client_id=\"${_google_default_client_id}\"" - "google_default_client_secret=\"${_google_default_client_secret}\"" - ) - - if [[ -n ${_system_libs[icu]+set} ]]; then - _flags+=('icu_use_data_file=false') - fi - - if check_option strip y; then - _flags+=('symbol_level=0') - fi - - # Facilitate deterministic builds (taken from build/config/compiler/BUILD.gn) - CFLAGS+=' -Wno-builtin-macro-redefined' - CXXFLAGS+=' -Wno-builtin-macro-redefined' - CPPFLAGS+=' -D__DATE__= -D__TIME__= -D__TIMESTAMP__=' - - # Do not warn about unknown warning options - CFLAGS+=' -Wno-unknown-warning-option' - CXXFLAGS+=' -Wno-unknown-warning-option' - - gn gen out/Release --args="${_flags[*]}" --script-executable=/usr/bin/python2 - ninja -C out/Release chrome chrome_sandbox chromedriver -} - -package() { - cd chromium-launcher-$_launcher_ver - make PREFIX=/usr DESTDIR="$pkgdir" install - install -Dm644 LICENSE \ - "$pkgdir/usr/share/licenses/chromium/LICENSE.launcher" - - cd "$srcdir/$pkgname-$pkgver" - - install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium" - install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox" - ln -s /usr/lib/chromium/chromedriver "$pkgdir/usr/bin/chromedriver" - - install -Dm644 chrome/installer/linux/common/desktop.template \ - "$pkgdir/usr/share/applications/chromium.desktop" - install -Dm644 chrome/app/resources/manpage.1.in \ - "$pkgdir/usr/share/man/man1/chromium.1" - sed -i \ - -e 's/@@MENUNAME@@/Chromium/g' \ - -e 's/@@PACKAGE@@/chromium/g' \ - -e 's/@@USR_BIN_SYMLINK_NAME@@/chromium/g' \ - "$pkgdir/usr/share/applications/chromium.desktop" \ - "$pkgdir/usr/share/man/man1/chromium.1" - - install -Dm644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml \ - "$pkgdir/usr/share/metainfo/chromium.appdata.xml" - sed -ni \ - -e 's/chromium-browser\.desktop/chromium.desktop/' \ - -e '/<update_contact>/d' \ - -e '/<p>/N;/<p>\n.*\(We invite\|Chromium supports Vorbis\)/,/<\/p>/d' \ - -e '/^<?xml/,$p' \ - "$pkgdir/usr/share/metainfo/chromium.appdata.xml" - - local toplevel_files=( - chrome_100_percent.pak - chrome_200_percent.pak - resources.pak - v8_context_snapshot.bin - - # ANGLE - libEGL.so - libGLESv2.so - - chromedriver - ) - - if [[ -z ${_system_libs[icu]+set} ]]; then - toplevel_files+=(icudtl.dat) - fi - - cp "${toplevel_files[@]/#/out/Release/}" "$pkgdir/usr/lib/chromium/" - install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak - install -Dm755 -t "$pkgdir/usr/lib/chromium/swiftshader" out/Release/swiftshader/*.so - - for size in 24 48 64 128 256; do - install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \ - "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png" - done - - for size in 16 32; do - install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \ - "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png" - done - - install -Dm644 LICENSE "$pkgdir/usr/share/licenses/chromium/LICENSE" -} - -# vim:set ts=2 sw=2 et: Copied: chromium/repos/extra-x86_64/PKGBUILD (from rev 389287, chromium/trunk/PKGBUILD) =================================================================== --- PKGBUILD (rev 0) +++ PKGBUILD 2020-06-16 01:13:16 UTC (rev 389288) @@ -0,0 +1,277 @@ +# Maintainer: Evangelos Foutras <evange...@foutrelis.com> +# Contributor: Pierre Schmitz <pie...@archlinux.de> +# Contributor: Jan "heftig" Steffens <jan.steff...@gmail.com> +# Contributor: Daniel J Griffiths <ghost1...@archlinux.us> + +pkgname=chromium +pkgver=83.0.4103.106 +pkgrel=1 +_launcher_ver=6 +pkgdesc="A web browser built for speed, simplicity, and security" +arch=('x86_64') +url="https://www.chromium.org/Home" +license=('BSD') +depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt' + 'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib' + 'desktop-file-utils' 'hicolor-icon-theme') +makedepends=('python' 'python2' 'gperf' 'yasm' 'mesa' 'ninja' 'nodejs' 'git' + 'libpipewire02' 'clang' 'lld' 'gn' 'java-runtime-headless' + 'python2-setuptools') +optdepends=('pepper-flash: support for Flash content' + 'libpipewire02: WebRTC desktop sharing under Wayland' + 'kdialog: needed for file dialogs in KDE' + 'org.freedesktop.secrets: password storage backend on GNOME / Xfce' + 'kwallet: for storing passwords in KWallet on KDE desktops') +install=chromium.install +source=(https://commondatastorage.googleapis.com/chromium-browser-official/$pkgname-$pkgver.tar.xz + chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz + clean-up-a-call-to-set_utf8.patch + iwyu-std-numeric_limits-is-defined-in-limits.patch + add-missing-algorithm-header-in-crx_install_error.cc.patch + libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch + include-memory-header-to-get-the-definition-of-std-u.patch + make-some-of-blink-custom-iterators-STL-compatible.patch + avoid-double-destruction-of-ServiceWorkerObjectHost.patch + v8-remove-soon-to-be-removed-getAllFieldPositions.patch + chromium-83-gcc-10.patch + chromium-skia-harmony.patch) +sha256sums=('cfd153a2e10b0bb0fb3b7e6be543aef0915181f5fbdbea893d08465afd097e2f' + '04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1' + '58c41713eb6fb33b6eef120f4324fa1fb8123b1fbc4ecbe5662f1f9779b9b6af' + '675fb3d6276cce569a641436465f58d5709d1d4a5f62b7052989479fd4aaea24' + '0e2a78e4aa7272ab0ff4a4c467750e01bad692a026ad9828aaf06d2a9418b9d8' + '50687079426094f2056d1f4806dc30fc8d6bad16190520e57ba087ec5db1d778' + '071326135bc25226aa165639dff80a03670a17548f2d2ff5cc4f40982b39c52a' + '3d7f20e1d2ee7d73ed25e708c0d59a0cb215fcce10a379e3d48a856533c4b0b7' + 'd793842e9584bf75e3779918297ba0ffa6dd05394ef5b2bf5fb73aa9c86a7e2f' + 'e042024423027ad3ef729a7e4709bdf9714aea49d64cfbbf46a645a05703abc2' + '3e5ba8c0a70a4bc673deec0c61eb2b58f05a4c784cbdb7c8118be1eb6580db6d' + '771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1') + +# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py +# Keys are the names in the above script; values are the dependencies in Arch +declare -gA _system_libs=( + [ffmpeg]=ffmpeg + [flac]=flac + [fontconfig]=fontconfig + [freetype]=freetype2 + [harfbuzz-ng]=harfbuzz + [icu]=icu + [libdrm]= + [libjpeg]=libjpeg + #[libpng]=libpng # https://crbug.com/752403#c10 + [libvpx]=libvpx + [libwebp]=libwebp + [libxml]=libxml2 + [libxslt]=libxslt + [opus]=opus + [re2]=re2 + [snappy]=snappy + [yasm]= + [zlib]=minizip +) +_unwanted_bundled_libs=( + $(printf "%s\n" ${!_system_libs[@]} | sed 's/^libjpeg$/&_turbo/') +) +depends+=(${_system_libs[@]}) + +# Google API keys (see https://www.chromium.org/developers/how-tos/api-keys) +# Note: These are for Arch Linux use ONLY. For your own distribution, please +# get your own set of keys. +_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM +_google_default_client_id=413772536636.apps.googleusercontent.com +_google_default_client_secret=0ZChLK6AxeA3Isu96MkwqDR4 + +prepare() { + cd "$srcdir/$pkgname-$pkgver" + + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py + + # https://crbug.com/893950 + sed -i -e 's/\<xmlMalloc\>/malloc/' -e 's/\<xmlFree\>/free/' \ + third_party/blink/renderer/core/xml/*.cc \ + third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \ + third_party/libxml/chromium/*.cc + + # https://chromium-review.googlesource.com/c/chromium/src/+/2145261 + patch -Np1 -i ../clean-up-a-call-to-set_utf8.patch + + # https://chromium-review.googlesource.com/c/chromium/src/+/2153111 + patch -Np1 -F3 -i ../iwyu-std-numeric_limits-is-defined-in-limits.patch + + # https://chromium-review.googlesource.com/c/chromium/src/+/2152333 + patch -Np1 -i ../add-missing-algorithm-header-in-crx_install_error.cc.patch + + # https://chromium-review.googlesource.com/c/chromium/src/+/2132403 + patch -Np1 -i ../libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch + + # https://chromium-review.googlesource.com/c/chromium/src/+/2164645 + patch -Np1 -i ../include-memory-header-to-get-the-definition-of-std-u.patch + + # https://chromium-review.googlesource.com/c/chromium/src/+/2174199 + patch -Np1 -i ../make-some-of-blink-custom-iterators-STL-compatible.patch + + # https://chromium-review.googlesource.com/c/chromium/src/+/2094496 + patch -Np1 -i ../avoid-double-destruction-of-ServiceWorkerObjectHost.patch + + # https://crbug.com/v8/10393 + patch -Np1 -d v8 <../v8-remove-soon-to-be-removed-getAllFieldPositions.patch + + # Fixes from Gentoo + patch -Np1 -i ../chromium-83-gcc-10.patch + + # https://crbug.com/skia/6663#c10 + patch -Np0 -i ../chromium-skia-harmony.patch + + # Force script incompatible with Python 3 to use /usr/bin/python2 + sed -i '1s|python$|&2|' third_party/dom_distiller_js/protoc_plugins/*.py + + mkdir -p third_party/node/linux/node-linux-x64/bin + ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ + + # Remove bundled libraries for which we will use the system copies; this + # *should* do what the remove_bundled_libraries.py script does, with the + # added benefit of not having to list all the remaining libraries + local _lib + for _lib in ${_unwanted_bundled_libs[@]}; do + find "third_party/$_lib" -type f \ + \! -path "third_party/$_lib/chromium/*" \ + \! -path "third_party/$_lib/google/*" \ + \! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \ + \! -path 'third_party/yasm/run_yasm.py' \ + \! -regex '.*\.\(gn\|gni\|isolate\)' \ + -delete + done + + python2 build/linux/unbundle/replace_gn_files.py \ + --system-libraries "${!_system_libs[@]}" +} + +build() { + make -C chromium-launcher-$_launcher_ver + + cd "$srcdir/$pkgname-$pkgver" + + if check_buildoption ccache y; then + # Avoid falling back to preprocessor mode when sources contain time macros + export CCACHE_SLOPPINESS=time_macros + fi + + export CC=clang + export CXX=clang++ + export AR=ar + export NM=nm + + local _flags=( + 'custom_toolchain="//build/toolchain/linux/unbundle:default"' + 'host_toolchain="//build/toolchain/linux/unbundle:default"' + 'clang_use_chrome_plugins=false' + 'is_official_build=true' # implies is_cfi=true on x86_64 + 'treat_warnings_as_errors=false' + 'fieldtrial_testing_like_official_build=true' + 'ffmpeg_branding="Chrome"' + 'proprietary_codecs=true' + 'rtc_use_pipewire=true' + 'link_pulseaudio=true' + 'use_gnome_keyring=false' + 'use_sysroot=false' + 'linux_use_bundled_binutils=false' + 'use_custom_libcxx=false' + 'enable_hangout_services_extension=true' + 'enable_widevine=true' + 'enable_nacl=false' + "google_api_key=\"${_google_api_key}\"" + "google_default_client_id=\"${_google_default_client_id}\"" + "google_default_client_secret=\"${_google_default_client_secret}\"" + ) + + if [[ -n ${_system_libs[icu]+set} ]]; then + _flags+=('icu_use_data_file=false') + fi + + if check_option strip y; then + _flags+=('symbol_level=0') + fi + + # Facilitate deterministic builds (taken from build/config/compiler/BUILD.gn) + CFLAGS+=' -Wno-builtin-macro-redefined' + CXXFLAGS+=' -Wno-builtin-macro-redefined' + CPPFLAGS+=' -D__DATE__= -D__TIME__= -D__TIMESTAMP__=' + + # Do not warn about unknown warning options + CFLAGS+=' -Wno-unknown-warning-option' + CXXFLAGS+=' -Wno-unknown-warning-option' + + gn gen out/Release --args="${_flags[*]}" --script-executable=/usr/bin/python2 + ninja -C out/Release chrome chrome_sandbox chromedriver +} + +package() { + cd chromium-launcher-$_launcher_ver + make PREFIX=/usr DESTDIR="$pkgdir" install + install -Dm644 LICENSE \ + "$pkgdir/usr/share/licenses/chromium/LICENSE.launcher" + + cd "$srcdir/$pkgname-$pkgver" + + install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium" + install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox" + ln -s /usr/lib/chromium/chromedriver "$pkgdir/usr/bin/chromedriver" + + install -Dm644 chrome/installer/linux/common/desktop.template \ + "$pkgdir/usr/share/applications/chromium.desktop" + install -Dm644 chrome/app/resources/manpage.1.in \ + "$pkgdir/usr/share/man/man1/chromium.1" + sed -i \ + -e 's/@@MENUNAME@@/Chromium/g' \ + -e 's/@@PACKAGE@@/chromium/g' \ + -e 's/@@USR_BIN_SYMLINK_NAME@@/chromium/g' \ + "$pkgdir/usr/share/applications/chromium.desktop" \ + "$pkgdir/usr/share/man/man1/chromium.1" + + install -Dm644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml \ + "$pkgdir/usr/share/metainfo/chromium.appdata.xml" + sed -ni \ + -e 's/chromium-browser\.desktop/chromium.desktop/' \ + -e '/<update_contact>/d' \ + -e '/<p>/N;/<p>\n.*\(We invite\|Chromium supports Vorbis\)/,/<\/p>/d' \ + -e '/^<?xml/,$p' \ + "$pkgdir/usr/share/metainfo/chromium.appdata.xml" + + local toplevel_files=( + chrome_100_percent.pak + chrome_200_percent.pak + resources.pak + v8_context_snapshot.bin + + # ANGLE + libEGL.so + libGLESv2.so + + chromedriver + ) + + if [[ -z ${_system_libs[icu]+set} ]]; then + toplevel_files+=(icudtl.dat) + fi + + cp "${toplevel_files[@]/#/out/Release/}" "$pkgdir/usr/lib/chromium/" + install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak + install -Dm755 -t "$pkgdir/usr/lib/chromium/swiftshader" out/Release/swiftshader/*.so + + for size in 24 48 64 128 256; do + install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \ + "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png" + done + + for size in 16 32; do + install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \ + "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png" + done + + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/chromium/LICENSE" +} + +# vim:set ts=2 sw=2 et: Deleted: add-missing-algorithm-header-in-crx_install_error.cc.patch =================================================================== --- add-missing-algorithm-header-in-crx_install_error.cc.patch 2020-06-16 01:13:03 UTC (rev 389287) +++ add-missing-algorithm-header-in-crx_install_error.cc.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -1,29 +0,0 @@ -From 2b9d6daa0ab5ce45ec5555466d5a5a583a020ea8 Mon Sep 17 00:00:00 2001 -From: Daniel Playfair Cal <daniel.playfair....@gmail.com> -Date: Sat, 18 Apr 2020 00:27:38 +0000 -Subject: [PATCH] Add missing algorithm header in crx_install_error.cc - -This is needed for the use of std::find. - -Change-Id: I2dc43b3887c467986c5346be5a9e27a987e1e5b3 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2152333 -Reviewed-by: Ken Rockot <roc...@google.com> -Commit-Queue: Ken Rockot <roc...@google.com> -Cr-Commit-Position: refs/heads/master@{#760272} ---- - extensions/browser/install/crx_install_error.cc | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/extensions/browser/install/crx_install_error.cc b/extensions/browser/install/crx_install_error.cc -index a9765bb0a5a..bd0d3e35a16 100644 ---- a/extensions/browser/install/crx_install_error.cc -+++ b/extensions/browser/install/crx_install_error.cc -@@ -4,6 +4,8 @@ - - #include "extensions/browser/install/crx_install_error.h" - -+#include <algorithm> -+ - #include "base/logging.h" - #include "extensions/browser/install/sandboxed_unpacker_failure_reason.h" - Copied: chromium/repos/extra-x86_64/add-missing-algorithm-header-in-crx_install_error.cc.patch (from rev 389287, chromium/trunk/add-missing-algorithm-header-in-crx_install_error.cc.patch) =================================================================== --- add-missing-algorithm-header-in-crx_install_error.cc.patch (rev 0) +++ add-missing-algorithm-header-in-crx_install_error.cc.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -0,0 +1,29 @@ +From 2b9d6daa0ab5ce45ec5555466d5a5a583a020ea8 Mon Sep 17 00:00:00 2001 +From: Daniel Playfair Cal <daniel.playfair....@gmail.com> +Date: Sat, 18 Apr 2020 00:27:38 +0000 +Subject: [PATCH] Add missing algorithm header in crx_install_error.cc + +This is needed for the use of std::find. + +Change-Id: I2dc43b3887c467986c5346be5a9e27a987e1e5b3 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2152333 +Reviewed-by: Ken Rockot <roc...@google.com> +Commit-Queue: Ken Rockot <roc...@google.com> +Cr-Commit-Position: refs/heads/master@{#760272} +--- + extensions/browser/install/crx_install_error.cc | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/extensions/browser/install/crx_install_error.cc b/extensions/browser/install/crx_install_error.cc +index a9765bb0a5a..bd0d3e35a16 100644 +--- a/extensions/browser/install/crx_install_error.cc ++++ b/extensions/browser/install/crx_install_error.cc +@@ -4,6 +4,8 @@ + + #include "extensions/browser/install/crx_install_error.h" + ++#include <algorithm> ++ + #include "base/logging.h" + #include "extensions/browser/install/sandboxed_unpacker_failure_reason.h" + Deleted: avoid-double-destruction-of-ServiceWorkerObjectHost.patch =================================================================== --- avoid-double-destruction-of-ServiceWorkerObjectHost.patch 2020-06-16 01:13:03 UTC (rev 389287) +++ avoid-double-destruction-of-ServiceWorkerObjectHost.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -1,138 +0,0 @@ -From bd59ce32629ef684624821419c43967b73d2989e Mon Sep 17 00:00:00 2001 -From: Hiroki Nakagawa <nhir...@chromium.org> -Date: Fri, 8 May 2020 08:25:31 +0000 -Subject: [PATCH] ServiceWorker: Avoid double destruction of - ServiceWorkerObjectHost on connection error - -This CL avoids the case where ServiceWorkerObjectHost is destroyed twice -on ServiceWorkerObjectHost::OnConnectionError() when Chromium is built -with the GCC build toolchain. - -> How does the issue happen? - -ServiceWorkerObjectHost has a cyclic reference like this: - -ServiceWorkerObjectHost - --([1] scoped_refptr)--> ServiceWorkerVersion - --([2] std::unique_ptr)--> ServiceWorkerProviderHost - --([3] std::unique_ptr)--> ServiceWorkerContainerHost - --([4] std::unique_ptr)--> ServiceWorkerObjectHost - -Note that ServiceWorkerContainerHost manages ServiceWorkerObjectHost in -map<int64_t version_id, std::unique_ptr<ServiceWorkerObjectHost>>. - -When ServiceWorkerObjectHost::OnConnectionError() is called, the -function removes the reference [4] from the map, and destroys -ServiceWorkerObjectHost. If the object host has the last reference [1] -to ServiceWorkerVersion, the destruction also cuts off the references -[2] and [3], and destroys ServiceWorkerProviderHost and -ServiceWorkerContainerHost. - -This seems to work well on the Chromium's default toolchain, but not -work on the GCC toolchain. According to the report, destruction of -ServiceWorkerContainerHost happens while the map owned by the container -host is erasing the ServiceWorkerObjectHost, and this results in crash -due to double destruction of the object host. - -I don't know the reason why this happens only on the GCC toolchain, but -I suspect the order of object destruction on std::map::erase() could be -different depending on the toolchains. - -> How does this CL fix this? - -The ideal fix is to redesign the ownership model of -ServiceWorkerVersion, but it's not feasible in the short term. - -Instead, this CL avoids destruction of ServiceWorkerObjectHost on -std::map::erase(). The new code takes the ownership of the object host -from the map first, and then erases the entry from the map. This -separates timings to erase the map entry and to destroy the object host, -so the crash should no longer happen. - -Bug: 1056598 -Change-Id: Id30654cb575bc557c42044d6f0c6f1f9bfaed613 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2094496 -Reviewed-by: Makoto Shimazu <shim...@chromium.org> -Commit-Queue: Hiroki Nakagawa <nhir...@chromium.org> -Cr-Commit-Position: refs/heads/master@{#766770} ---- - .../service_worker_container_host.cc | 10 +++++ - .../service_worker_object_host_unittest.cc | 38 +++++++++++++++++++ - 2 files changed, 48 insertions(+) - -diff --git a/content/browser/service_worker/service_worker_container_host.cc b/content/browser/service_worker/service_worker_container_host.cc -index ec7fb1449af..98c62093b0e 100644 ---- a/content/browser/service_worker/service_worker_container_host.cc -+++ b/content/browser/service_worker/service_worker_container_host.cc -@@ -669,6 +669,16 @@ void ServiceWorkerContainerHost::RemoveServiceWorkerObjectHost( - int64_t version_id) { - DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId()); - DCHECK(base::Contains(service_worker_object_hosts_, version_id)); -+ -+ // ServiceWorkerObjectHost to be deleted may have the last reference to -+ // ServiceWorkerVersion that indirectly owns this ServiceWorkerContainerHost. -+ // If we erase the object host directly from the map, |this| could be deleted -+ // during the map operation and may crash. To avoid the case, we take the -+ // ownership of the object host from the map first, and then erase the entry -+ // from the map. See https://crbug.com/1056598 for details. -+ std::unique_ptr<ServiceWorkerObjectHost> to_be_deleted = -+ std::move(service_worker_object_hosts_[version_id]); -+ DCHECK(to_be_deleted); - service_worker_object_hosts_.erase(version_id); - } - -diff --git a/content/browser/service_worker/service_worker_object_host_unittest.cc b/content/browser/service_worker/service_worker_object_host_unittest.cc -index 408d7c1f9d1..6eab59040ab 100644 ---- a/content/browser/service_worker/service_worker_object_host_unittest.cc -+++ b/content/browser/service_worker/service_worker_object_host_unittest.cc -@@ -200,6 +200,19 @@ class ServiceWorkerObjectHostTest : public testing::Test { - return registration_info; - } - -+ void CallOnConnectionError(ServiceWorkerContainerHost* container_host, -+ int64_t version_id) { -+ // ServiceWorkerObjectHost has the last reference to the version. -+ ServiceWorkerObjectHost* object_host = -+ GetServiceWorkerObjectHost(container_host, version_id); -+ EXPECT_TRUE(object_host->version_->HasOneRef()); -+ -+ // Make sure that OnConnectionError induces destruction of the version and -+ // the object host. -+ object_host->receivers_.Clear(); -+ object_host->OnConnectionError(); -+ } -+ - BrowserTaskEnvironment task_environment_; - std::unique_ptr<EmbeddedWorkerTestHelper> helper_; - scoped_refptr<ServiceWorkerRegistration> registration_; -@@ -409,5 +422,30 @@ TEST_F(ServiceWorkerObjectHostTest, DispatchExtendableMessageEvent_FromClient) { - events[0]->source_info_for_client->client_type); - } - -+// This is a regression test for https://crbug.com/1056598. -+TEST_F(ServiceWorkerObjectHostTest, OnConnectionError) { -+ const GURL scope("https://www.example.com/"); -+ const GURL script_url("https://www.example.com/service_worker.js"); -+ Initialize(std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath())); -+ SetUpRegistration(scope, script_url); -+ -+ // Create the provider host. -+ ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk, -+ StartServiceWorker(version_.get())); -+ -+ // Set up the case where the last reference to the version is owned by the -+ // service worker object host. -+ ServiceWorkerContainerHost* container_host = -+ version_->provider_host()->container_host(); -+ ServiceWorkerVersion* version_rawptr = version_.get(); -+ version_ = nullptr; -+ ASSERT_TRUE(version_rawptr->HasOneRef()); -+ -+ // Simulate the connection error that induces the object host destruction. -+ // This shouldn't crash. -+ CallOnConnectionError(container_host, version_rawptr->version_id()); -+ base::RunLoop().RunUntilIdle(); -+} -+ - } // namespace service_worker_object_host_unittest - } // namespace content Copied: chromium/repos/extra-x86_64/avoid-double-destruction-of-ServiceWorkerObjectHost.patch (from rev 389287, chromium/trunk/avoid-double-destruction-of-ServiceWorkerObjectHost.patch) =================================================================== --- avoid-double-destruction-of-ServiceWorkerObjectHost.patch (rev 0) +++ avoid-double-destruction-of-ServiceWorkerObjectHost.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -0,0 +1,138 @@ +From bd59ce32629ef684624821419c43967b73d2989e Mon Sep 17 00:00:00 2001 +From: Hiroki Nakagawa <nhir...@chromium.org> +Date: Fri, 8 May 2020 08:25:31 +0000 +Subject: [PATCH] ServiceWorker: Avoid double destruction of + ServiceWorkerObjectHost on connection error + +This CL avoids the case where ServiceWorkerObjectHost is destroyed twice +on ServiceWorkerObjectHost::OnConnectionError() when Chromium is built +with the GCC build toolchain. + +> How does the issue happen? + +ServiceWorkerObjectHost has a cyclic reference like this: + +ServiceWorkerObjectHost + --([1] scoped_refptr)--> ServiceWorkerVersion + --([2] std::unique_ptr)--> ServiceWorkerProviderHost + --([3] std::unique_ptr)--> ServiceWorkerContainerHost + --([4] std::unique_ptr)--> ServiceWorkerObjectHost + +Note that ServiceWorkerContainerHost manages ServiceWorkerObjectHost in +map<int64_t version_id, std::unique_ptr<ServiceWorkerObjectHost>>. + +When ServiceWorkerObjectHost::OnConnectionError() is called, the +function removes the reference [4] from the map, and destroys +ServiceWorkerObjectHost. If the object host has the last reference [1] +to ServiceWorkerVersion, the destruction also cuts off the references +[2] and [3], and destroys ServiceWorkerProviderHost and +ServiceWorkerContainerHost. + +This seems to work well on the Chromium's default toolchain, but not +work on the GCC toolchain. According to the report, destruction of +ServiceWorkerContainerHost happens while the map owned by the container +host is erasing the ServiceWorkerObjectHost, and this results in crash +due to double destruction of the object host. + +I don't know the reason why this happens only on the GCC toolchain, but +I suspect the order of object destruction on std::map::erase() could be +different depending on the toolchains. + +> How does this CL fix this? + +The ideal fix is to redesign the ownership model of +ServiceWorkerVersion, but it's not feasible in the short term. + +Instead, this CL avoids destruction of ServiceWorkerObjectHost on +std::map::erase(). The new code takes the ownership of the object host +from the map first, and then erases the entry from the map. This +separates timings to erase the map entry and to destroy the object host, +so the crash should no longer happen. + +Bug: 1056598 +Change-Id: Id30654cb575bc557c42044d6f0c6f1f9bfaed613 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2094496 +Reviewed-by: Makoto Shimazu <shim...@chromium.org> +Commit-Queue: Hiroki Nakagawa <nhir...@chromium.org> +Cr-Commit-Position: refs/heads/master@{#766770} +--- + .../service_worker_container_host.cc | 10 +++++ + .../service_worker_object_host_unittest.cc | 38 +++++++++++++++++++ + 2 files changed, 48 insertions(+) + +diff --git a/content/browser/service_worker/service_worker_container_host.cc b/content/browser/service_worker/service_worker_container_host.cc +index ec7fb1449af..98c62093b0e 100644 +--- a/content/browser/service_worker/service_worker_container_host.cc ++++ b/content/browser/service_worker/service_worker_container_host.cc +@@ -669,6 +669,16 @@ void ServiceWorkerContainerHost::RemoveServiceWorkerObjectHost( + int64_t version_id) { + DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId()); + DCHECK(base::Contains(service_worker_object_hosts_, version_id)); ++ ++ // ServiceWorkerObjectHost to be deleted may have the last reference to ++ // ServiceWorkerVersion that indirectly owns this ServiceWorkerContainerHost. ++ // If we erase the object host directly from the map, |this| could be deleted ++ // during the map operation and may crash. To avoid the case, we take the ++ // ownership of the object host from the map first, and then erase the entry ++ // from the map. See https://crbug.com/1056598 for details. ++ std::unique_ptr<ServiceWorkerObjectHost> to_be_deleted = ++ std::move(service_worker_object_hosts_[version_id]); ++ DCHECK(to_be_deleted); + service_worker_object_hosts_.erase(version_id); + } + +diff --git a/content/browser/service_worker/service_worker_object_host_unittest.cc b/content/browser/service_worker/service_worker_object_host_unittest.cc +index 408d7c1f9d1..6eab59040ab 100644 +--- a/content/browser/service_worker/service_worker_object_host_unittest.cc ++++ b/content/browser/service_worker/service_worker_object_host_unittest.cc +@@ -200,6 +200,19 @@ class ServiceWorkerObjectHostTest : public testing::Test { + return registration_info; + } + ++ void CallOnConnectionError(ServiceWorkerContainerHost* container_host, ++ int64_t version_id) { ++ // ServiceWorkerObjectHost has the last reference to the version. ++ ServiceWorkerObjectHost* object_host = ++ GetServiceWorkerObjectHost(container_host, version_id); ++ EXPECT_TRUE(object_host->version_->HasOneRef()); ++ ++ // Make sure that OnConnectionError induces destruction of the version and ++ // the object host. ++ object_host->receivers_.Clear(); ++ object_host->OnConnectionError(); ++ } ++ + BrowserTaskEnvironment task_environment_; + std::unique_ptr<EmbeddedWorkerTestHelper> helper_; + scoped_refptr<ServiceWorkerRegistration> registration_; +@@ -409,5 +422,30 @@ TEST_F(ServiceWorkerObjectHostTest, DispatchExtendableMessageEvent_FromClient) { + events[0]->source_info_for_client->client_type); + } + ++// This is a regression test for https://crbug.com/1056598. ++TEST_F(ServiceWorkerObjectHostTest, OnConnectionError) { ++ const GURL scope("https://www.example.com/"); ++ const GURL script_url("https://www.example.com/service_worker.js"); ++ Initialize(std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath())); ++ SetUpRegistration(scope, script_url); ++ ++ // Create the provider host. ++ ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk, ++ StartServiceWorker(version_.get())); ++ ++ // Set up the case where the last reference to the version is owned by the ++ // service worker object host. ++ ServiceWorkerContainerHost* container_host = ++ version_->provider_host()->container_host(); ++ ServiceWorkerVersion* version_rawptr = version_.get(); ++ version_ = nullptr; ++ ASSERT_TRUE(version_rawptr->HasOneRef()); ++ ++ // Simulate the connection error that induces the object host destruction. ++ // This shouldn't crash. ++ CallOnConnectionError(container_host, version_rawptr->version_id()); ++ base::RunLoop().RunUntilIdle(); ++} ++ + } // namespace service_worker_object_host_unittest + } // namespace content Deleted: chromium-83-gcc-10.patch =================================================================== --- chromium-83-gcc-10.patch 2020-06-16 01:13:03 UTC (rev 389287) +++ chromium-83-gcc-10.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -1,64 +0,0 @@ -From e473f41284ccc8fa4bc4622d087194b18a1ec23a Mon Sep 17 00:00:00 2001 -From: Stephan Hartmann <sth...@googlemail.com> -Date: Tue, 7 Apr 2020 16:37:10 +0000 -Subject: [PATCH] GCC: fix includes for gcc-10 - ---- - chrome/browser/search/background/ntp_backgrounds.h | 1 + - third_party/webrtc/call/rtx_receive_stream.h | 1 + - .../webrtc/modules/audio_processing/aec3/clockdrift_detector.h | 1 + - ui/gfx/linux/drm_util_linux.h | 2 ++ - 5 files changed, 6 insertions(+) - -diff --git a/chrome/browser/search/background/ntp_backgrounds.h b/chrome/browser/search/background/ntp_backgrounds.h -index 7afc0a2..ea5818e 100644 ---- a/chrome/browser/search/background/ntp_backgrounds.h -+++ b/chrome/browser/search/background/ntp_backgrounds.h -@@ -6,6 +6,7 @@ - #define CHROME_BROWSER_SEARCH_BACKGROUND_NTP_BACKGROUNDS_H_ - - #include <array> -+#include <cstddef> - - class GURL; - -diff --git a/third_party/webrtc/call/rtx_receive_stream.h b/third_party/webrtc/call/rtx_receive_stream.h -index 8ffa440..113a816 100644 ---- a/third_party/webrtc/call/rtx_receive_stream.h -+++ b/third_party/webrtc/call/rtx_receive_stream.h -@@ -12,6 +12,7 @@ - #define CALL_RTX_RECEIVE_STREAM_H_ - - #include <map> -+#include <cstdint> - - #include "call/rtp_packet_sink_interface.h" - -diff --git a/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h b/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h -index 22528c9..69e624e 100644 ---- a/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h -+++ b/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h -@@ -12,6 +12,7 @@ - #define MODULES_AUDIO_PROCESSING_AEC3_CLOCKDRIFT_DETECTOR_H_ - - #include <array> -+#include <cstddef> - - namespace webrtc { - -diff --git a/ui/gfx/linux/drm_util_linux.h b/ui/gfx/linux/drm_util_linux.h -index 86ff2eb..990f12c 100644 ---- a/ui/gfx/linux/drm_util_linux.h -+++ b/ui/gfx/linux/drm_util_linux.h -@@ -7,6 +7,8 @@ - - #include "ui/gfx/buffer_types.h" - -+#include <cstdint> -+ - namespace ui { - - int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format); --- -2.24.1 - Copied: chromium/repos/extra-x86_64/chromium-83-gcc-10.patch (from rev 389287, chromium/trunk/chromium-83-gcc-10.patch) =================================================================== --- chromium-83-gcc-10.patch (rev 0) +++ chromium-83-gcc-10.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -0,0 +1,64 @@ +From e473f41284ccc8fa4bc4622d087194b18a1ec23a Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <sth...@googlemail.com> +Date: Tue, 7 Apr 2020 16:37:10 +0000 +Subject: [PATCH] GCC: fix includes for gcc-10 + +--- + chrome/browser/search/background/ntp_backgrounds.h | 1 + + third_party/webrtc/call/rtx_receive_stream.h | 1 + + .../webrtc/modules/audio_processing/aec3/clockdrift_detector.h | 1 + + ui/gfx/linux/drm_util_linux.h | 2 ++ + 5 files changed, 6 insertions(+) + +diff --git a/chrome/browser/search/background/ntp_backgrounds.h b/chrome/browser/search/background/ntp_backgrounds.h +index 7afc0a2..ea5818e 100644 +--- a/chrome/browser/search/background/ntp_backgrounds.h ++++ b/chrome/browser/search/background/ntp_backgrounds.h +@@ -6,6 +6,7 @@ + #define CHROME_BROWSER_SEARCH_BACKGROUND_NTP_BACKGROUNDS_H_ + + #include <array> ++#include <cstddef> + + class GURL; + +diff --git a/third_party/webrtc/call/rtx_receive_stream.h b/third_party/webrtc/call/rtx_receive_stream.h +index 8ffa440..113a816 100644 +--- a/third_party/webrtc/call/rtx_receive_stream.h ++++ b/third_party/webrtc/call/rtx_receive_stream.h +@@ -12,6 +12,7 @@ + #define CALL_RTX_RECEIVE_STREAM_H_ + + #include <map> ++#include <cstdint> + + #include "call/rtp_packet_sink_interface.h" + +diff --git a/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h b/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h +index 22528c9..69e624e 100644 +--- a/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h ++++ b/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h +@@ -12,6 +12,7 @@ + #define MODULES_AUDIO_PROCESSING_AEC3_CLOCKDRIFT_DETECTOR_H_ + + #include <array> ++#include <cstddef> + + namespace webrtc { + +diff --git a/ui/gfx/linux/drm_util_linux.h b/ui/gfx/linux/drm_util_linux.h +index 86ff2eb..990f12c 100644 +--- a/ui/gfx/linux/drm_util_linux.h ++++ b/ui/gfx/linux/drm_util_linux.h +@@ -7,6 +7,8 @@ + + #include "ui/gfx/buffer_types.h" + ++#include <cstdint> ++ + namespace ui { + + int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format); +-- +2.24.1 + Deleted: chromium-skia-harmony.patch =================================================================== --- chromium-skia-harmony.patch 2020-06-16 01:13:03 UTC (rev 389287) +++ chromium-skia-harmony.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -1,14 +0,0 @@ ---- third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig 2019-07-19 11:08:34.770972665 +0000 -+++ third_party/skia/src/ports/SkFontHost_FreeType.cpp 2019-07-19 11:08:44.274442065 +0000 -@@ -128,9 +128,9 @@ public: - : fGetVarDesignCoordinates(nullptr) - , fGetVarAxisFlags(nullptr) - , fLibrary(nullptr) -- , fIsLCDSupported(false) -+ , fIsLCDSupported(true) - , fLightHintingIsYOnly(false) -- , fLCDExtra(0) -+ , fLCDExtra(2) - { - if (FT_New_Library(&gFTMemory, &fLibrary)) { - return; Copied: chromium/repos/extra-x86_64/chromium-skia-harmony.patch (from rev 389287, chromium/trunk/chromium-skia-harmony.patch) =================================================================== --- chromium-skia-harmony.patch (rev 0) +++ chromium-skia-harmony.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -0,0 +1,14 @@ +--- third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig 2019-07-19 11:08:34.770972665 +0000 ++++ third_party/skia/src/ports/SkFontHost_FreeType.cpp 2019-07-19 11:08:44.274442065 +0000 +@@ -128,9 +128,9 @@ public: + : fGetVarDesignCoordinates(nullptr) + , fGetVarAxisFlags(nullptr) + , fLibrary(nullptr) +- , fIsLCDSupported(false) ++ , fIsLCDSupported(true) + , fLightHintingIsYOnly(false) +- , fLCDExtra(0) ++ , fLCDExtra(2) + { + if (FT_New_Library(&gFTMemory, &fLibrary)) { + return; Deleted: chromium.install =================================================================== --- chromium.install 2020-06-16 01:13:03 UTC (rev 389287) +++ chromium.install 2020-06-16 01:13:16 UTC (rev 389288) @@ -1,16 +0,0 @@ -post_upgrade() { - if (($(vercmp $2 42.0.2311.90-1) < 0)); then - echo ':: This Chromium package no longer supports custom flags passed via the' - echo ' /etc/chromium/default file (or any other files under /etc/chromium/).' - echo - echo ' The new /usr/bin/chromium launcher script will automatically detect' - echo ' Pepper Flash (if installed) and pass the correct flags to Chromium.' - echo - echo ' If you need to pass extra command-line arguments to Chromium, you' - echo ' can put them in a "chromium-flags.conf" file under $HOME/.config/' - echo ' (or $XDG_CONFIG_HOME). Arguments are split on whitespace and shell' - echo ' quoting rules apply but no further parsing is performed.' - fi -} - -# vim:set ts=2 sw=2 et: Copied: chromium/repos/extra-x86_64/chromium.install (from rev 389287, chromium/trunk/chromium.install) =================================================================== --- chromium.install (rev 0) +++ chromium.install 2020-06-16 01:13:16 UTC (rev 389288) @@ -0,0 +1,16 @@ +post_upgrade() { + if (($(vercmp $2 42.0.2311.90-1) < 0)); then + echo ':: This Chromium package no longer supports custom flags passed via the' + echo ' /etc/chromium/default file (or any other files under /etc/chromium/).' + echo + echo ' The new /usr/bin/chromium launcher script will automatically detect' + echo ' Pepper Flash (if installed) and pass the correct flags to Chromium.' + echo + echo ' If you need to pass extra command-line arguments to Chromium, you' + echo ' can put them in a "chromium-flags.conf" file under $HOME/.config/' + echo ' (or $XDG_CONFIG_HOME). Arguments are split on whitespace and shell' + echo ' quoting rules apply but no further parsing is performed.' + fi +} + +# vim:set ts=2 sw=2 et: Deleted: clean-up-a-call-to-set_utf8.patch =================================================================== --- clean-up-a-call-to-set_utf8.patch 2020-06-16 01:13:03 UTC (rev 389287) +++ clean-up-a-call-to-set_utf8.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -1,34 +0,0 @@ -From ede390a0b18e4565abf8ac1e1ff717e1d43fc320 Mon Sep 17 00:00:00 2001 -From: Paul Wankadia <jun...@chromium.org> -Date: Tue, 14 Apr 2020 16:54:51 +0000 -Subject: [PATCH] Clean up a call to set_utf8(). - -This is part of an effort to rewrite calls to utf8() and set_utf8() -(in RE2::Options) as calls to encoding() and set_encoding(), -respectively. utf8() and set_utf8() have been marked as the "legacy" -interface since 2008, so it is long past time that we get rid of them. - -R=parast...@google.com - -Change-Id: I62c48cd575a55b519d5264ed857f927c163068b2 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2145261 -Reviewed-by: Parastoo Geranmayeh <parast...@google.com> -Commit-Queue: Paul Wankadia <jun...@chromium.org> -Cr-Commit-Position: refs/heads/master@{#758886} ---- - components/autofill/core/browser/address_rewriter.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/components/autofill/core/browser/address_rewriter.cc b/components/autofill/core/browser/address_rewriter.cc -index 1b85a50974c..030a5aba146 100644 ---- a/components/autofill/core/browser/address_rewriter.cc -+++ b/components/autofill/core/browser/address_rewriter.cc -@@ -57,7 +57,7 @@ void CompileRulesFromData(const std::string& data_string, - CompiledRuleVector* compiled_rules) { - base::StringPiece data = data_string; - re2::RE2::Options options; -- options.set_utf8(true); -+ options.set_encoding(RE2::Options::EncodingUTF8); - options.set_word_boundary(true); - - size_t token_end = 0; Copied: chromium/repos/extra-x86_64/clean-up-a-call-to-set_utf8.patch (from rev 389287, chromium/trunk/clean-up-a-call-to-set_utf8.patch) =================================================================== --- clean-up-a-call-to-set_utf8.patch (rev 0) +++ clean-up-a-call-to-set_utf8.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -0,0 +1,34 @@ +From ede390a0b18e4565abf8ac1e1ff717e1d43fc320 Mon Sep 17 00:00:00 2001 +From: Paul Wankadia <jun...@chromium.org> +Date: Tue, 14 Apr 2020 16:54:51 +0000 +Subject: [PATCH] Clean up a call to set_utf8(). + +This is part of an effort to rewrite calls to utf8() and set_utf8() +(in RE2::Options) as calls to encoding() and set_encoding(), +respectively. utf8() and set_utf8() have been marked as the "legacy" +interface since 2008, so it is long past time that we get rid of them. + +R=parast...@google.com + +Change-Id: I62c48cd575a55b519d5264ed857f927c163068b2 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2145261 +Reviewed-by: Parastoo Geranmayeh <parast...@google.com> +Commit-Queue: Paul Wankadia <jun...@chromium.org> +Cr-Commit-Position: refs/heads/master@{#758886} +--- + components/autofill/core/browser/address_rewriter.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/components/autofill/core/browser/address_rewriter.cc b/components/autofill/core/browser/address_rewriter.cc +index 1b85a50974c..030a5aba146 100644 +--- a/components/autofill/core/browser/address_rewriter.cc ++++ b/components/autofill/core/browser/address_rewriter.cc +@@ -57,7 +57,7 @@ void CompileRulesFromData(const std::string& data_string, + CompiledRuleVector* compiled_rules) { + base::StringPiece data = data_string; + re2::RE2::Options options; +- options.set_utf8(true); ++ options.set_encoding(RE2::Options::EncodingUTF8); + options.set_word_boundary(true); + + size_t token_end = 0; Deleted: include-memory-header-to-get-the-definition-of-std-u.patch =================================================================== --- include-memory-header-to-get-the-definition-of-std-u.patch 2020-06-16 01:13:03 UTC (rev 389287) +++ include-memory-header-to-get-the-definition-of-std-u.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -1,32 +0,0 @@ -From 40d994e4aa2e4d5077c1810e4623549618a19c05 Mon Sep 17 00:00:00 2001 -From: Piotr Tworek <ptwo...@vewd.com> -Date: Mon, 27 Apr 2020 16:31:46 +0000 -Subject: [PATCH] Include "memory" header to get the definition of - std::unique_ptr. - -Right now the code im the affected fails to build when using libstdc++ -instead of bundled libcxx. Apparently libcxx pulls the necessary header -indirectly. - -Change-Id: Ie5e86f228434ab16d622ae7a912d9ce607258931 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2164645 -Reviewed-by: Jochen Eisinger <joc...@chromium.org> -Commit-Queue: Jochen Eisinger <joc...@chromium.org> -Cr-Commit-Position: refs/heads/master@{#762881} ---- - .../blink/renderer/core/html/trust_token_attribute_parsing.h | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h b/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h -index f5a7ab03892..ef19cfaf680 100644 ---- a/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h -+++ b/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h -@@ -5,6 +5,8 @@ - #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRUST_TOKEN_ATTRIBUTE_PARSING_H_ - #define THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRUST_TOKEN_ATTRIBUTE_PARSING_H_ - -+#include <memory> -+ - #include "base/optional.h" - #include "services/network/public/mojom/trust_tokens.mojom-blink-forward.h" - #include "third_party/blink/renderer/core/core_export.h" Copied: chromium/repos/extra-x86_64/include-memory-header-to-get-the-definition-of-std-u.patch (from rev 389287, chromium/trunk/include-memory-header-to-get-the-definition-of-std-u.patch) =================================================================== --- include-memory-header-to-get-the-definition-of-std-u.patch (rev 0) +++ include-memory-header-to-get-the-definition-of-std-u.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -0,0 +1,32 @@ +From 40d994e4aa2e4d5077c1810e4623549618a19c05 Mon Sep 17 00:00:00 2001 +From: Piotr Tworek <ptwo...@vewd.com> +Date: Mon, 27 Apr 2020 16:31:46 +0000 +Subject: [PATCH] Include "memory" header to get the definition of + std::unique_ptr. + +Right now the code im the affected fails to build when using libstdc++ +instead of bundled libcxx. Apparently libcxx pulls the necessary header +indirectly. + +Change-Id: Ie5e86f228434ab16d622ae7a912d9ce607258931 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2164645 +Reviewed-by: Jochen Eisinger <joc...@chromium.org> +Commit-Queue: Jochen Eisinger <joc...@chromium.org> +Cr-Commit-Position: refs/heads/master@{#762881} +--- + .../blink/renderer/core/html/trust_token_attribute_parsing.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h b/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h +index f5a7ab03892..ef19cfaf680 100644 +--- a/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h ++++ b/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h +@@ -5,6 +5,8 @@ + #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRUST_TOKEN_ATTRIBUTE_PARSING_H_ + #define THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRUST_TOKEN_ATTRIBUTE_PARSING_H_ + ++#include <memory> ++ + #include "base/optional.h" + #include "services/network/public/mojom/trust_tokens.mojom-blink-forward.h" + #include "third_party/blink/renderer/core/core_export.h" Deleted: iwyu-std-numeric_limits-is-defined-in-limits.patch =================================================================== --- iwyu-std-numeric_limits-is-defined-in-limits.patch 2020-06-16 01:13:03 UTC (rev 389287) +++ iwyu-std-numeric_limits-is-defined-in-limits.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -1,29 +0,0 @@ -From 74f76a6be385ef056b0be2362c32c728141cca16 Mon Sep 17 00:00:00 2001 -From: Stephan Hartmann <sth...@googlemail.com> -Date: Fri, 17 Apr 2020 16:04:12 +0000 -Subject: [PATCH] IWYU: std::numeric_limits is defined in limits -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Change-Id: Ifbc379adc5bb7242c21e7da0bcfc28f49e4dd06f -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2153111 -Reviewed-by: François Doray <fdo...@chromium.org> -Commit-Queue: François Doray <fdo...@chromium.org> -Cr-Commit-Position: refs/heads/master@{#760075} ---- - .../graph/policies/background_tab_loading_policy_helpers.cc | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc -index 4881c010bb9..593501d16a7 100644 ---- a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc -+++ b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc -@@ -5,6 +5,7 @@ - #include "chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.h" - - #include <math.h> -+#include <limits> - - #include "base/logging.h" - Copied: chromium/repos/extra-x86_64/iwyu-std-numeric_limits-is-defined-in-limits.patch (from rev 389287, chromium/trunk/iwyu-std-numeric_limits-is-defined-in-limits.patch) =================================================================== --- iwyu-std-numeric_limits-is-defined-in-limits.patch (rev 0) +++ iwyu-std-numeric_limits-is-defined-in-limits.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -0,0 +1,29 @@ +From 74f76a6be385ef056b0be2362c32c728141cca16 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <sth...@googlemail.com> +Date: Fri, 17 Apr 2020 16:04:12 +0000 +Subject: [PATCH] IWYU: std::numeric_limits is defined in limits +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Change-Id: Ifbc379adc5bb7242c21e7da0bcfc28f49e4dd06f +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2153111 +Reviewed-by: François Doray <fdo...@chromium.org> +Commit-Queue: François Doray <fdo...@chromium.org> +Cr-Commit-Position: refs/heads/master@{#760075} +--- + .../graph/policies/background_tab_loading_policy_helpers.cc | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc +index 4881c010bb9..593501d16a7 100644 +--- a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc ++++ b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc +@@ -5,6 +5,7 @@ + #include "chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.h" + + #include <math.h> ++#include <limits> + + #include "base/logging.h" + Deleted: libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch =================================================================== --- libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch 2020-06-16 01:13:03 UTC (rev 389287) +++ libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -1,62 +0,0 @@ -From aeef68888d4c00b69facead2b934095a8cd17329 Mon Sep 17 00:00:00 2001 -From: Stephan Hartmann <sth...@googlemail.com> -Date: Mon, 20 Apr 2020 18:21:43 +0000 -Subject: [PATCH] libstdc++: fix incomplete-type in AXTree for - NodeSetSizePosInSetInfo - -has only forward declaration of NodeSetSizePosInSetInfo. Therefore, -move declaration from ax_tree.cc. - -std: :unordered_map<T, U> requires U to be fully declared. ax_tree.h -Bug: 957519 -Change-Id: Ic1f4bf3ebfea229ece84251e46d4461b31873868 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2132403 -Reviewed-by: David Tseng <dts...@chromium.org> -Commit-Queue: David Tseng <dts...@chromium.org> -Cr-Commit-Position: refs/heads/master@{#760588} ---- - ui/accessibility/ax_tree.cc | 10 ++-------- - ui/accessibility/ax_tree.h | 9 ++++++++- - 2 files changed, 10 insertions(+), 9 deletions(-) - -diff --git a/ui/accessibility/ax_tree.cc b/ui/accessibility/ax_tree.cc -index 7b8d9b1b161..e9154028d66 100644 ---- a/ui/accessibility/ax_tree.cc -+++ b/ui/accessibility/ax_tree.cc -@@ -567,14 +567,8 @@ struct AXTreeUpdateState { - const AXTree& tree; - }; - --struct AXTree::NodeSetSizePosInSetInfo { -- NodeSetSizePosInSetInfo() = default; -- ~NodeSetSizePosInSetInfo() = default; -- -- int32_t pos_in_set = 0; -- int32_t set_size = 0; -- base::Optional<int> lowest_hierarchical_level; --}; -+AXTree::NodeSetSizePosInSetInfo::NodeSetSizePosInSetInfo() = default; -+AXTree::NodeSetSizePosInSetInfo::~NodeSetSizePosInSetInfo() = default; - - struct AXTree::OrderedSetContent { - explicit OrderedSetContent(const AXNode* ordered_set = nullptr) -diff --git a/ui/accessibility/ax_tree.h b/ui/accessibility/ax_tree.h -index a51ca8de4c8..8c1c57517ac 100644 ---- a/ui/accessibility/ax_tree.h -+++ b/ui/accessibility/ax_tree.h -@@ -328,7 +328,14 @@ class AX_EXPORT AXTree : public AXNode::OwnerTree { - bool enable_extra_mac_nodes_ = false; - - // Contains pos_in_set and set_size data for an AXNode. -- struct NodeSetSizePosInSetInfo; -+ struct NodeSetSizePosInSetInfo { -+ NodeSetSizePosInSetInfo(); -+ ~NodeSetSizePosInSetInfo(); -+ -+ int32_t pos_in_set = 0; -+ int32_t set_size = 0; -+ base::Optional<int> lowest_hierarchical_level; -+ }; - - // Represents the content of an ordered set which includes the ordered set - // items and the ordered set container if it exists. Copied: chromium/repos/extra-x86_64/libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch (from rev 389287, chromium/trunk/libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch) =================================================================== --- libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch (rev 0) +++ libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -0,0 +1,62 @@ +From aeef68888d4c00b69facead2b934095a8cd17329 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <sth...@googlemail.com> +Date: Mon, 20 Apr 2020 18:21:43 +0000 +Subject: [PATCH] libstdc++: fix incomplete-type in AXTree for + NodeSetSizePosInSetInfo + +has only forward declaration of NodeSetSizePosInSetInfo. Therefore, +move declaration from ax_tree.cc. + +std: :unordered_map<T, U> requires U to be fully declared. ax_tree.h +Bug: 957519 +Change-Id: Ic1f4bf3ebfea229ece84251e46d4461b31873868 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2132403 +Reviewed-by: David Tseng <dts...@chromium.org> +Commit-Queue: David Tseng <dts...@chromium.org> +Cr-Commit-Position: refs/heads/master@{#760588} +--- + ui/accessibility/ax_tree.cc | 10 ++-------- + ui/accessibility/ax_tree.h | 9 ++++++++- + 2 files changed, 10 insertions(+), 9 deletions(-) + +diff --git a/ui/accessibility/ax_tree.cc b/ui/accessibility/ax_tree.cc +index 7b8d9b1b161..e9154028d66 100644 +--- a/ui/accessibility/ax_tree.cc ++++ b/ui/accessibility/ax_tree.cc +@@ -567,14 +567,8 @@ struct AXTreeUpdateState { + const AXTree& tree; + }; + +-struct AXTree::NodeSetSizePosInSetInfo { +- NodeSetSizePosInSetInfo() = default; +- ~NodeSetSizePosInSetInfo() = default; +- +- int32_t pos_in_set = 0; +- int32_t set_size = 0; +- base::Optional<int> lowest_hierarchical_level; +-}; ++AXTree::NodeSetSizePosInSetInfo::NodeSetSizePosInSetInfo() = default; ++AXTree::NodeSetSizePosInSetInfo::~NodeSetSizePosInSetInfo() = default; + + struct AXTree::OrderedSetContent { + explicit OrderedSetContent(const AXNode* ordered_set = nullptr) +diff --git a/ui/accessibility/ax_tree.h b/ui/accessibility/ax_tree.h +index a51ca8de4c8..8c1c57517ac 100644 +--- a/ui/accessibility/ax_tree.h ++++ b/ui/accessibility/ax_tree.h +@@ -328,7 +328,14 @@ class AX_EXPORT AXTree : public AXNode::OwnerTree { + bool enable_extra_mac_nodes_ = false; + + // Contains pos_in_set and set_size data for an AXNode. +- struct NodeSetSizePosInSetInfo; ++ struct NodeSetSizePosInSetInfo { ++ NodeSetSizePosInSetInfo(); ++ ~NodeSetSizePosInSetInfo(); ++ ++ int32_t pos_in_set = 0; ++ int32_t set_size = 0; ++ base::Optional<int> lowest_hierarchical_level; ++ }; + + // Represents the content of an ordered set which includes the ordered set + // items and the ordered set container if it exists. Deleted: make-some-of-blink-custom-iterators-STL-compatible.patch =================================================================== --- make-some-of-blink-custom-iterators-STL-compatible.patch 2020-06-16 01:13:03 UTC (rev 389287) +++ make-some-of-blink-custom-iterators-STL-compatible.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -1,95 +0,0 @@ -From d3cabbc7321d349a9bffda482df5afc0d4df1ac2 Mon Sep 17 00:00:00 2001 -From: Piotr Tworek <ptwo...@vewd.com> -Date: Thu, 30 Apr 2020 21:33:47 +0000 -Subject: [PATCH] Make some of blink custom iterators STL compatible. - -Blink has recently started using functions like std::any_of with some of -the custom iterators it provides. On Linux this works in the default -setup using libcxx, but fails with even the most recent versions of -libstdc++. In all cases the error message (text in bug report) complains -about lack of matching std::__iterator_category definition. - -From what I understand the error message is basically saying those -iterators are not STL compatible due to missing traits as described -in https://en.cppreference.com/w/cpp/iterator/iterator_traits. Such -traits are provided by custom iterators defined in //base, or //cc. - -This patch adds the necessary traits to iterators that are currently -affected by this problem. - -Bug: 1076869 -Change-Id: I9950a7100c32499ba96647317fa70b87dc22eaf9 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2174199 -Reviewed-by: Kentaro Hara <hara...@chromium.org> -Commit-Queue: Piotr Tworek <ptwo...@vewd.com> -Cr-Commit-Position: refs/heads/master@{#764426} ---- - .../core/layout/ng/ng_physical_container_fragment.h | 6 ++++++ - .../blink/renderer/platform/wtf/hash_iterators.h | 12 ++++++++++++ - third_party/blink/renderer/platform/wtf/hash_table.h | 6 ++++++ - 3 files changed, 24 insertions(+) - -diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h -index 1256e77c146..8b93107f2fc 100644 ---- a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h -+++ b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h -@@ -38,6 +38,12 @@ class CORE_EXPORT NGPhysicalContainerFragment : public NGPhysicalFragment { - STACK_ALLOCATED(); - - public: -+ using iterator_category = std::bidirectional_iterator_tag; -+ using value_type = NGLink; -+ using difference_type = ptrdiff_t; -+ using pointer = value_type*; -+ using reference = value_type&; -+ - ConstIterator(const NGLink* current) : current_(current) {} - - const NGLink& operator*() const { return *PostLayoutOrCurrent(); } -diff --git a/third_party/blink/renderer/platform/wtf/hash_iterators.h b/third_party/blink/renderer/platform/wtf/hash_iterators.h -index f8e66e6be85..6003d02c509 100644 ---- a/third_party/blink/renderer/platform/wtf/hash_iterators.h -+++ b/third_party/blink/renderer/platform/wtf/hash_iterators.h -@@ -53,6 +53,12 @@ struct HashTableConstIteratorAdapter<HashTableType, - typedef HashTableConstValuesIterator<HashTableType, KeyType, MappedType> - ValuesIterator; - -+ using iterator_category = std::bidirectional_iterator_tag; -+ using value_type = HashTableType; -+ using difference_type = ptrdiff_t; -+ using pointer = value_type*; -+ using reference = value_type&; -+ - HashTableConstIteratorAdapter() = default; - HashTableConstIteratorAdapter( - const typename HashTableType::const_iterator& impl) -@@ -94,6 +100,12 @@ struct HashTableIteratorAdapter<HashTableType, - typedef HashTableValuesIterator<HashTableType, KeyType, MappedType> - ValuesIterator; - -+ using iterator_category = std::bidirectional_iterator_tag; -+ using value_type = HashTableType; -+ using difference_type = ptrdiff_t; -+ using pointer = value_type*; -+ using reference = value_type&; -+ - HashTableIteratorAdapter() = default; - HashTableIteratorAdapter(const typename HashTableType::iterator& impl) - : impl_(impl) {} -diff --git a/third_party/blink/renderer/platform/wtf/hash_table.h b/third_party/blink/renderer/platform/wtf/hash_table.h -index f596fb5d41e..5a4468d6bd1 100644 ---- a/third_party/blink/renderer/platform/wtf/hash_table.h -+++ b/third_party/blink/renderer/platform/wtf/hash_table.h -@@ -2204,6 +2204,12 @@ struct HashTableConstIteratorAdapter { - STACK_ALLOCATED(); - - public: -+ using iterator_category = std::bidirectional_iterator_tag; -+ using value_type = HashTableType; -+ using difference_type = ptrdiff_t; -+ using pointer = value_type*; -+ using reference = value_type&; -+ - HashTableConstIteratorAdapter() = default; - HashTableConstIteratorAdapter( - const typename HashTableType::const_iterator& impl) Copied: chromium/repos/extra-x86_64/make-some-of-blink-custom-iterators-STL-compatible.patch (from rev 389287, chromium/trunk/make-some-of-blink-custom-iterators-STL-compatible.patch) =================================================================== --- make-some-of-blink-custom-iterators-STL-compatible.patch (rev 0) +++ make-some-of-blink-custom-iterators-STL-compatible.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -0,0 +1,95 @@ +From d3cabbc7321d349a9bffda482df5afc0d4df1ac2 Mon Sep 17 00:00:00 2001 +From: Piotr Tworek <ptwo...@vewd.com> +Date: Thu, 30 Apr 2020 21:33:47 +0000 +Subject: [PATCH] Make some of blink custom iterators STL compatible. + +Blink has recently started using functions like std::any_of with some of +the custom iterators it provides. On Linux this works in the default +setup using libcxx, but fails with even the most recent versions of +libstdc++. In all cases the error message (text in bug report) complains +about lack of matching std::__iterator_category definition. + +From what I understand the error message is basically saying those +iterators are not STL compatible due to missing traits as described +in https://en.cppreference.com/w/cpp/iterator/iterator_traits. Such +traits are provided by custom iterators defined in //base, or //cc. + +This patch adds the necessary traits to iterators that are currently +affected by this problem. + +Bug: 1076869 +Change-Id: I9950a7100c32499ba96647317fa70b87dc22eaf9 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2174199 +Reviewed-by: Kentaro Hara <hara...@chromium.org> +Commit-Queue: Piotr Tworek <ptwo...@vewd.com> +Cr-Commit-Position: refs/heads/master@{#764426} +--- + .../core/layout/ng/ng_physical_container_fragment.h | 6 ++++++ + .../blink/renderer/platform/wtf/hash_iterators.h | 12 ++++++++++++ + third_party/blink/renderer/platform/wtf/hash_table.h | 6 ++++++ + 3 files changed, 24 insertions(+) + +diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h +index 1256e77c146..8b93107f2fc 100644 +--- a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h ++++ b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h +@@ -38,6 +38,12 @@ class CORE_EXPORT NGPhysicalContainerFragment : public NGPhysicalFragment { + STACK_ALLOCATED(); + + public: ++ using iterator_category = std::bidirectional_iterator_tag; ++ using value_type = NGLink; ++ using difference_type = ptrdiff_t; ++ using pointer = value_type*; ++ using reference = value_type&; ++ + ConstIterator(const NGLink* current) : current_(current) {} + + const NGLink& operator*() const { return *PostLayoutOrCurrent(); } +diff --git a/third_party/blink/renderer/platform/wtf/hash_iterators.h b/third_party/blink/renderer/platform/wtf/hash_iterators.h +index f8e66e6be85..6003d02c509 100644 +--- a/third_party/blink/renderer/platform/wtf/hash_iterators.h ++++ b/third_party/blink/renderer/platform/wtf/hash_iterators.h +@@ -53,6 +53,12 @@ struct HashTableConstIteratorAdapter<HashTableType, + typedef HashTableConstValuesIterator<HashTableType, KeyType, MappedType> + ValuesIterator; + ++ using iterator_category = std::bidirectional_iterator_tag; ++ using value_type = HashTableType; ++ using difference_type = ptrdiff_t; ++ using pointer = value_type*; ++ using reference = value_type&; ++ + HashTableConstIteratorAdapter() = default; + HashTableConstIteratorAdapter( + const typename HashTableType::const_iterator& impl) +@@ -94,6 +100,12 @@ struct HashTableIteratorAdapter<HashTableType, + typedef HashTableValuesIterator<HashTableType, KeyType, MappedType> + ValuesIterator; + ++ using iterator_category = std::bidirectional_iterator_tag; ++ using value_type = HashTableType; ++ using difference_type = ptrdiff_t; ++ using pointer = value_type*; ++ using reference = value_type&; ++ + HashTableIteratorAdapter() = default; + HashTableIteratorAdapter(const typename HashTableType::iterator& impl) + : impl_(impl) {} +diff --git a/third_party/blink/renderer/platform/wtf/hash_table.h b/third_party/blink/renderer/platform/wtf/hash_table.h +index f596fb5d41e..5a4468d6bd1 100644 +--- a/third_party/blink/renderer/platform/wtf/hash_table.h ++++ b/third_party/blink/renderer/platform/wtf/hash_table.h +@@ -2204,6 +2204,12 @@ struct HashTableConstIteratorAdapter { + STACK_ALLOCATED(); + + public: ++ using iterator_category = std::bidirectional_iterator_tag; ++ using value_type = HashTableType; ++ using difference_type = ptrdiff_t; ++ using pointer = value_type*; ++ using reference = value_type&; ++ + HashTableConstIteratorAdapter() = default; + HashTableConstIteratorAdapter( + const typename HashTableType::const_iterator& impl) Deleted: v8-remove-soon-to-be-removed-getAllFieldPositions.patch =================================================================== --- v8-remove-soon-to-be-removed-getAllFieldPositions.patch 2020-06-16 01:13:03 UTC (rev 389287) +++ v8-remove-soon-to-be-removed-getAllFieldPositions.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -1,172 +0,0 @@ -From 3f8dc4b2e5baf77b463334c769af85b79d8c1463 Mon Sep 17 00:00:00 2001 -From: Frank Tang <ft...@chromium.org> -Date: Fri, 3 Apr 2020 23:13:54 -0700 -Subject: [PATCH] [intl] Remove soon-to-be removed getAllFieldPositions - -Needed to land ICU67.1 soon. - -Bug: v8:10393 -Change-Id: I3c7737ca600d6ccfdc46ffaddfb318ce60bc7618 -Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2136489 -Reviewed-by: Jakob Kummerow <jkumme...@chromium.org> -Commit-Queue: Frank Tang <ft...@chromium.org> -Cr-Commit-Position: refs/heads/master@{#67027} ---- - src/objects/js-number-format.cc | 77 +++++++++++++++++---------------- - 1 file changed, 39 insertions(+), 38 deletions(-) - -diff --git a/src/objects/js-number-format.cc b/src/objects/js-number-format.cc -index ad831c5c36..bcd44031d5 100644 ---- a/src/objects/js-number-format.cc -+++ b/src/objects/js-number-format.cc -@@ -1241,44 +1241,33 @@ MaybeHandle<JSNumberFormat> JSNumberFormat::New(Isolate* isolate, - } - - namespace { --Maybe<icu::UnicodeString> IcuFormatNumber( -+Maybe<bool> IcuFormatNumber( - Isolate* isolate, - const icu::number::LocalizedNumberFormatter& number_format, -- Handle<Object> numeric_obj, icu::FieldPositionIterator* fp_iter) { -+ Handle<Object> numeric_obj, icu::number::FormattedNumber* formatted) { - // If it is BigInt, handle it differently. - UErrorCode status = U_ZERO_ERROR; -- icu::number::FormattedNumber formatted; - if (numeric_obj->IsBigInt()) { - Handle<BigInt> big_int = Handle<BigInt>::cast(numeric_obj); - Handle<String> big_int_string; - ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, big_int_string, - BigInt::ToString(isolate, big_int), -- Nothing<icu::UnicodeString>()); -- formatted = number_format.formatDecimal( -+ Nothing<bool>()); -+ *formatted = number_format.formatDecimal( - {big_int_string->ToCString().get(), big_int_string->length()}, status); - } else { - double number = numeric_obj->IsNaN() - ? std::numeric_limits<double>::quiet_NaN() - : numeric_obj->Number(); -- formatted = number_format.formatDouble(number, status); -+ *formatted = number_format.formatDouble(number, status); - } - if (U_FAILURE(status)) { - // This happen because of icu data trimming trim out "unit". - // See https://bugs.chromium.org/p/v8/issues/detail?id=8641 -- THROW_NEW_ERROR_RETURN_VALUE(isolate, -- NewTypeError(MessageTemplate::kIcuError), -- Nothing<icu::UnicodeString>()); -- } -- if (fp_iter) { -- formatted.getAllFieldPositions(*fp_iter, status); -- } -- icu::UnicodeString result = formatted.toString(status); -- if (U_FAILURE(status)) { -- THROW_NEW_ERROR_RETURN_VALUE(isolate, -- NewTypeError(MessageTemplate::kIcuError), -- Nothing<icu::UnicodeString>()); -+ THROW_NEW_ERROR_RETURN_VALUE( -+ isolate, NewTypeError(MessageTemplate::kIcuError), Nothing<bool>()); - } -- return Just(result); -+ return Just(true); - } - - } // namespace -@@ -1289,10 +1278,16 @@ MaybeHandle<String> JSNumberFormat::FormatNumeric( - Handle<Object> numeric_obj) { - DCHECK(numeric_obj->IsNumeric()); - -- Maybe<icu::UnicodeString> maybe_format = -- IcuFormatNumber(isolate, number_format, numeric_obj, nullptr); -+ icu::number::FormattedNumber formatted; -+ Maybe<bool> maybe_format = -+ IcuFormatNumber(isolate, number_format, numeric_obj, &formatted); - MAYBE_RETURN(maybe_format, Handle<String>()); -- return Intl::ToString(isolate, maybe_format.FromJust()); -+ UErrorCode status = U_ZERO_ERROR; -+ icu::UnicodeString result = formatted.toString(status); -+ if (U_FAILURE(status)) { -+ THROW_NEW_ERROR(isolate, NewTypeError(MessageTemplate::kIcuError), String); -+ } -+ return Intl::ToString(isolate, result); - } - - namespace { -@@ -1405,12 +1400,18 @@ std::vector<NumberFormatSpan> FlattenRegionsToParts( - } - - namespace { --Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, -- icu::FieldPositionIterator* fp_iter, -+Maybe<int> ConstructParts(Isolate* isolate, -+ icu::number::FormattedNumber* formatted, - Handle<JSArray> result, int start_index, - Handle<Object> numeric_obj, bool style_is_unit) { -+ UErrorCode status = U_ZERO_ERROR; -+ icu::UnicodeString formatted_text = formatted->toString(status); -+ if (U_FAILURE(status)) { -+ THROW_NEW_ERROR_RETURN_VALUE( -+ isolate, NewTypeError(MessageTemplate::kIcuError), Nothing<int>()); -+ } - DCHECK(numeric_obj->IsNumeric()); -- int32_t length = formatted.length(); -+ int32_t length = formatted_text.length(); - int index = start_index; - if (length == 0) return Just(index); - -@@ -1419,13 +1420,14 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, - // other region covers some part of the formatted string. It's possible - // there's another field with exactly the same begin and end as this backdrop, - // in which case the backdrop's field_id of -1 will give it lower priority. -- regions.push_back(NumberFormatSpan(-1, 0, formatted.length())); -+ regions.push_back(NumberFormatSpan(-1, 0, formatted_text.length())); - - { -- icu::FieldPosition fp; -- while (fp_iter->next(fp)) { -- regions.push_back(NumberFormatSpan(fp.getField(), fp.getBeginIndex(), -- fp.getEndIndex())); -+ icu::ConstrainedFieldPosition cfp; -+ cfp.constrainCategory(UFIELD_CATEGORY_NUMBER); -+ while (formatted->nextPosition(cfp, status)) { -+ regions.push_back( -+ NumberFormatSpan(cfp.getField(), cfp.getStart(), cfp.getLimit())); - } - } - -@@ -1447,7 +1449,7 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, - Handle<String> substring; - ASSIGN_RETURN_ON_EXCEPTION_VALUE( - isolate, substring, -- Intl::ToString(isolate, formatted, part.begin_pos, part.end_pos), -+ Intl::ToString(isolate, formatted_text, part.begin_pos, part.end_pos), - Nothing<int>()); - Intl::AddElement(isolate, result, index, field_type_string, substring); - ++index; -@@ -1467,20 +1469,19 @@ MaybeHandle<JSArray> JSNumberFormat::FormatToParts( - number_format->icu_number_formatter().raw(); - CHECK_NOT_NULL(fmt); - -- icu::FieldPositionIterator fp_iter; -- Maybe<icu::UnicodeString> maybe_format = -- IcuFormatNumber(isolate, *fmt, numeric_obj, &fp_iter); -+ icu::number::FormattedNumber formatted; -+ Maybe<bool> maybe_format = -+ IcuFormatNumber(isolate, *fmt, numeric_obj, &formatted); - MAYBE_RETURN(maybe_format, Handle<JSArray>()); -- - UErrorCode status = U_ZERO_ERROR; -+ - bool style_is_unit = - Style::UNIT == StyleFromSkeleton(fmt->toSkeleton(status)); - CHECK(U_SUCCESS(status)); - - Handle<JSArray> result = factory->NewJSArray(0); -- Maybe<int> maybe_format_to_parts = -- ConstructParts(isolate, maybe_format.FromJust(), &fp_iter, result, 0, -- numeric_obj, style_is_unit); -+ Maybe<int> maybe_format_to_parts = ConstructParts( -+ isolate, &formatted, result, 0, numeric_obj, style_is_unit); - MAYBE_RETURN(maybe_format_to_parts, Handle<JSArray>()); - - return result; Copied: chromium/repos/extra-x86_64/v8-remove-soon-to-be-removed-getAllFieldPositions.patch (from rev 389287, chromium/trunk/v8-remove-soon-to-be-removed-getAllFieldPositions.patch) =================================================================== --- v8-remove-soon-to-be-removed-getAllFieldPositions.patch (rev 0) +++ v8-remove-soon-to-be-removed-getAllFieldPositions.patch 2020-06-16 01:13:16 UTC (rev 389288) @@ -0,0 +1,172 @@ +From 3f8dc4b2e5baf77b463334c769af85b79d8c1463 Mon Sep 17 00:00:00 2001 +From: Frank Tang <ft...@chromium.org> +Date: Fri, 3 Apr 2020 23:13:54 -0700 +Subject: [PATCH] [intl] Remove soon-to-be removed getAllFieldPositions + +Needed to land ICU67.1 soon. + +Bug: v8:10393 +Change-Id: I3c7737ca600d6ccfdc46ffaddfb318ce60bc7618 +Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2136489 +Reviewed-by: Jakob Kummerow <jkumme...@chromium.org> +Commit-Queue: Frank Tang <ft...@chromium.org> +Cr-Commit-Position: refs/heads/master@{#67027} +--- + src/objects/js-number-format.cc | 77 +++++++++++++++++---------------- + 1 file changed, 39 insertions(+), 38 deletions(-) + +diff --git a/src/objects/js-number-format.cc b/src/objects/js-number-format.cc +index ad831c5c36..bcd44031d5 100644 +--- a/src/objects/js-number-format.cc ++++ b/src/objects/js-number-format.cc +@@ -1241,44 +1241,33 @@ MaybeHandle<JSNumberFormat> JSNumberFormat::New(Isolate* isolate, + } + + namespace { +-Maybe<icu::UnicodeString> IcuFormatNumber( ++Maybe<bool> IcuFormatNumber( + Isolate* isolate, + const icu::number::LocalizedNumberFormatter& number_format, +- Handle<Object> numeric_obj, icu::FieldPositionIterator* fp_iter) { ++ Handle<Object> numeric_obj, icu::number::FormattedNumber* formatted) { + // If it is BigInt, handle it differently. + UErrorCode status = U_ZERO_ERROR; +- icu::number::FormattedNumber formatted; + if (numeric_obj->IsBigInt()) { + Handle<BigInt> big_int = Handle<BigInt>::cast(numeric_obj); + Handle<String> big_int_string; + ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, big_int_string, + BigInt::ToString(isolate, big_int), +- Nothing<icu::UnicodeString>()); +- formatted = number_format.formatDecimal( ++ Nothing<bool>()); ++ *formatted = number_format.formatDecimal( + {big_int_string->ToCString().get(), big_int_string->length()}, status); + } else { + double number = numeric_obj->IsNaN() + ? std::numeric_limits<double>::quiet_NaN() + : numeric_obj->Number(); +- formatted = number_format.formatDouble(number, status); ++ *formatted = number_format.formatDouble(number, status); + } + if (U_FAILURE(status)) { + // This happen because of icu data trimming trim out "unit". + // See https://bugs.chromium.org/p/v8/issues/detail?id=8641 +- THROW_NEW_ERROR_RETURN_VALUE(isolate, +- NewTypeError(MessageTemplate::kIcuError), +- Nothing<icu::UnicodeString>()); +- } +- if (fp_iter) { +- formatted.getAllFieldPositions(*fp_iter, status); +- } +- icu::UnicodeString result = formatted.toString(status); +- if (U_FAILURE(status)) { +- THROW_NEW_ERROR_RETURN_VALUE(isolate, +- NewTypeError(MessageTemplate::kIcuError), +- Nothing<icu::UnicodeString>()); ++ THROW_NEW_ERROR_RETURN_VALUE( ++ isolate, NewTypeError(MessageTemplate::kIcuError), Nothing<bool>()); + } +- return Just(result); ++ return Just(true); + } + + } // namespace +@@ -1289,10 +1278,16 @@ MaybeHandle<String> JSNumberFormat::FormatNumeric( + Handle<Object> numeric_obj) { + DCHECK(numeric_obj->IsNumeric()); + +- Maybe<icu::UnicodeString> maybe_format = +- IcuFormatNumber(isolate, number_format, numeric_obj, nullptr); ++ icu::number::FormattedNumber formatted; ++ Maybe<bool> maybe_format = ++ IcuFormatNumber(isolate, number_format, numeric_obj, &formatted); + MAYBE_RETURN(maybe_format, Handle<String>()); +- return Intl::ToString(isolate, maybe_format.FromJust()); ++ UErrorCode status = U_ZERO_ERROR; ++ icu::UnicodeString result = formatted.toString(status); ++ if (U_FAILURE(status)) { ++ THROW_NEW_ERROR(isolate, NewTypeError(MessageTemplate::kIcuError), String); ++ } ++ return Intl::ToString(isolate, result); + } + + namespace { +@@ -1405,12 +1400,18 @@ std::vector<NumberFormatSpan> FlattenRegionsToParts( + } + + namespace { +-Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, +- icu::FieldPositionIterator* fp_iter, ++Maybe<int> ConstructParts(Isolate* isolate, ++ icu::number::FormattedNumber* formatted, + Handle<JSArray> result, int start_index, + Handle<Object> numeric_obj, bool style_is_unit) { ++ UErrorCode status = U_ZERO_ERROR; ++ icu::UnicodeString formatted_text = formatted->toString(status); ++ if (U_FAILURE(status)) { ++ THROW_NEW_ERROR_RETURN_VALUE( ++ isolate, NewTypeError(MessageTemplate::kIcuError), Nothing<int>()); ++ } + DCHECK(numeric_obj->IsNumeric()); +- int32_t length = formatted.length(); ++ int32_t length = formatted_text.length(); + int index = start_index; + if (length == 0) return Just(index); + +@@ -1419,13 +1420,14 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, + // other region covers some part of the formatted string. It's possible + // there's another field with exactly the same begin and end as this backdrop, + // in which case the backdrop's field_id of -1 will give it lower priority. +- regions.push_back(NumberFormatSpan(-1, 0, formatted.length())); ++ regions.push_back(NumberFormatSpan(-1, 0, formatted_text.length())); + + { +- icu::FieldPosition fp; +- while (fp_iter->next(fp)) { +- regions.push_back(NumberFormatSpan(fp.getField(), fp.getBeginIndex(), +- fp.getEndIndex())); ++ icu::ConstrainedFieldPosition cfp; ++ cfp.constrainCategory(UFIELD_CATEGORY_NUMBER); ++ while (formatted->nextPosition(cfp, status)) { ++ regions.push_back( ++ NumberFormatSpan(cfp.getField(), cfp.getStart(), cfp.getLimit())); + } + } + +@@ -1447,7 +1449,7 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, + Handle<String> substring; + ASSIGN_RETURN_ON_EXCEPTION_VALUE( + isolate, substring, +- Intl::ToString(isolate, formatted, part.begin_pos, part.end_pos), ++ Intl::ToString(isolate, formatted_text, part.begin_pos, part.end_pos), + Nothing<int>()); + Intl::AddElement(isolate, result, index, field_type_string, substring); + ++index; +@@ -1467,20 +1469,19 @@ MaybeHandle<JSArray> JSNumberFormat::FormatToParts( + number_format->icu_number_formatter().raw(); + CHECK_NOT_NULL(fmt); + +- icu::FieldPositionIterator fp_iter; +- Maybe<icu::UnicodeString> maybe_format = +- IcuFormatNumber(isolate, *fmt, numeric_obj, &fp_iter); ++ icu::number::FormattedNumber formatted; ++ Maybe<bool> maybe_format = ++ IcuFormatNumber(isolate, *fmt, numeric_obj, &formatted); + MAYBE_RETURN(maybe_format, Handle<JSArray>()); +- + UErrorCode status = U_ZERO_ERROR; ++ + bool style_is_unit = + Style::UNIT == StyleFromSkeleton(fmt->toSkeleton(status)); + CHECK(U_SUCCESS(status)); + + Handle<JSArray> result = factory->NewJSArray(0); +- Maybe<int> maybe_format_to_parts = +- ConstructParts(isolate, maybe_format.FromJust(), &fp_iter, result, 0, +- numeric_obj, style_is_unit); ++ Maybe<int> maybe_format_to_parts = ConstructParts( ++ isolate, &formatted, result, 0, numeric_obj, style_is_unit); + MAYBE_RETURN(maybe_format_to_parts, Handle<JSArray>()); + + return result;