mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-18 22:54:00 +00:00
extra/chromium to 84.0.4147.89-1
This commit is contained in:
parent
14e6e6bae7
commit
f5d31cdf31
13 changed files with 173 additions and 709 deletions
|
@ -15,9 +15,10 @@ buildarch=12
|
||||||
highmem=1
|
highmem=1
|
||||||
|
|
||||||
pkgname=chromium
|
pkgname=chromium
|
||||||
pkgver=83.0.4103.116
|
pkgver=84.0.4147.89
|
||||||
pkgrel=3
|
pkgrel=1
|
||||||
_launcher_ver=6
|
_launcher_ver=6
|
||||||
|
_gcc_patchset=3
|
||||||
pkgdesc="A web browser built for speed, simplicity, and security"
|
pkgdesc="A web browser built for speed, simplicity, and security"
|
||||||
arch=('x86_64')
|
arch=('x86_64')
|
||||||
url="https://www.chromium.org/Home"
|
url="https://www.chromium.org/Home"
|
||||||
|
@ -25,44 +26,34 @@ license=('BSD')
|
||||||
depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
|
depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
|
||||||
'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib'
|
'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib'
|
||||||
'desktop-file-utils' 'hicolor-icon-theme')
|
'desktop-file-utils' 'hicolor-icon-theme')
|
||||||
makedepends=('python' 'python2' 'gperf' 'yasm' 'mesa' 'ninja' 'nodejs' 'git'
|
makedepends=('python' 'python2' 'gperf' 'mesa' 'ninja' 'nodejs' 'git' 'libva'
|
||||||
'libpipewire02' 'libva' 'clang' 'lld' 'gn' 'java-runtime-headless'
|
'libpipewire02' 'clang' 'lld' 'gn' 'java-runtime-headless'
|
||||||
'python2-setuptools')
|
'python2-setuptools')
|
||||||
optdepends=('libpipewire02: WebRTC desktop sharing under Wayland'
|
optdepends=('libpipewire02: WebRTC desktop sharing under Wayland'
|
||||||
'libva: hardware-accelerated video decode (experimental)'
|
'libva: hardware-accelerated video decode [experimental]'
|
||||||
'kdialog: needed for file dialogs in KDE'
|
'kdialog: needed for file dialogs in KDE'
|
||||||
'org.freedesktop.secrets: password storage backend on GNOME / Xfce'
|
'org.freedesktop.secrets: password storage backend on GNOME / Xfce'
|
||||||
'kwallet: for storing passwords in KWallet on KDE desktops')
|
'kwallet: for storing passwords in KWallet on KDE desktops')
|
||||||
install=chromium.install
|
install=chromium.install
|
||||||
source=(https://commondatastorage.googleapis.com/chromium-browser-official/$pkgname-$pkgver.tar.xz
|
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
|
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
|
https://github.com/stha09/chromium-patches/releases/download/chromium-${pkgver%%.*}-patchset-$_gcc_patchset/chromium-${pkgver%%.*}-patchset-$_gcc_patchset.tar.xz
|
||||||
iwyu-std-numeric_limits-is-defined-in-limits.patch
|
remove-NotifyError-calls-and-just-send-a-normal-message.patch
|
||||||
add-missing-algorithm-header-in-crx_install_error.cc.patch
|
avoid-calling-DeleteForCurrentDocument-from-destructor.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
|
|
||||||
force-mp3-files-to-have-a-start-time-of-zero.patch
|
force-mp3-files-to-have-a-start-time-of-zero.patch
|
||||||
v8-remove-soon-to-be-removed-getAllFieldPositions.patch
|
chromium-ffmpeg-4.3.patch
|
||||||
chromium-fix-vaapi-on-intel.patch
|
chromium-fix-vaapi-on-intel.patch
|
||||||
chromium-83-gcc-10.patch
|
|
||||||
chromium-skia-harmony.patch
|
chromium-skia-harmony.patch
|
||||||
0001-crashpad-include-limits.patch
|
0001-crashpad-include-limits.patch
|
||||||
chromium-81.0.4044.122-Fix-sandbox-Aw-snap-for-syscalls-403-and-407.patch)
|
chromium-81.0.4044.122-Fix-sandbox-Aw-snap-for-syscalls-403-and-407.patch)
|
||||||
sha256sums=('bb0c7e8dfee9f3a5e30eca7f34fc9f21caefa82a86c058c552f52b1ae2da2ac3'
|
sha256sums=('17970d998c125b40765141f2cd346d1674f05dbd4a28fdcf31f9e3540890c679'
|
||||||
'04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1'
|
'04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1'
|
||||||
'58c41713eb6fb33b6eef120f4324fa1fb8123b1fbc4ecbe5662f1f9779b9b6af'
|
'f77088dd59b170b767ba91c6b410abb778ff2e68553433b24124d398fa4d3ce7'
|
||||||
'675fb3d6276cce569a641436465f58d5709d1d4a5f62b7052989479fd4aaea24'
|
'3b10917f646f88ae988ca18be9cbef82025abb6a6e5cb00b77a11077192ce32c'
|
||||||
'0e2a78e4aa7272ab0ff4a4c467750e01bad692a026ad9828aaf06d2a9418b9d8'
|
'4e41cb637e96bcef98c119ed052ba1aeab45fca5b89d65955583dab002de783e'
|
||||||
'50687079426094f2056d1f4806dc30fc8d6bad16190520e57ba087ec5db1d778'
|
|
||||||
'071326135bc25226aa165639dff80a03670a17548f2d2ff5cc4f40982b39c52a'
|
|
||||||
'3d7f20e1d2ee7d73ed25e708c0d59a0cb215fcce10a379e3d48a856533c4b0b7'
|
|
||||||
'd793842e9584bf75e3779918297ba0ffa6dd05394ef5b2bf5fb73aa9c86a7e2f'
|
|
||||||
'abc3fad113408332c3b187b083bf33eba59eb5c87fa3ce859023984b5804623c'
|
'abc3fad113408332c3b187b083bf33eba59eb5c87fa3ce859023984b5804623c'
|
||||||
'e042024423027ad3ef729a7e4709bdf9714aea49d64cfbbf46a645a05703abc2'
|
'5390304b5f544868985ce00a3ec082d4ece2dacb1c73cdb35dd4facfea12449a'
|
||||||
'e495f2477091557b15bff2c99831e0a3db64ea2ebde7dcb22857a6469c944b9a'
|
'e495f2477091557b15bff2c99831e0a3db64ea2ebde7dcb22857a6469c944b9a'
|
||||||
'3e5ba8c0a70a4bc673deec0c61eb2b58f05a4c784cbdb7c8118be1eb6580db6d'
|
|
||||||
'771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1'
|
'771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1'
|
||||||
'df99f49ad58b70c9a3e1827d7e80b62e4363419334ed83373cf55b79c17b6f10'
|
'df99f49ad58b70c9a3e1827d7e80b62e4363419334ed83373cf55b79c17b6f10'
|
||||||
'4837f797a910795bf3161805a3302d5f3701573ca90da8af32b2f4aa62510d20')
|
'4837f797a910795bf3161805a3302d5f3701573ca90da8af32b2f4aa62510d20')
|
||||||
|
@ -78,7 +69,7 @@ declare -gA _system_libs=(
|
||||||
[icu]=icu
|
[icu]=icu
|
||||||
[libdrm]=
|
[libdrm]=
|
||||||
[libjpeg]=libjpeg
|
[libjpeg]=libjpeg
|
||||||
#[libpng]=libpng # https://crbug.com/752403#c10
|
[libpng]=libpng # https://crbug.com/752403#c10
|
||||||
[libvpx]=libvpx
|
[libvpx]=libvpx
|
||||||
[libwebp]=libwebp
|
[libwebp]=libwebp
|
||||||
[libxml]=libxml2
|
[libxml]=libxml2
|
||||||
|
@ -86,7 +77,6 @@ declare -gA _system_libs=(
|
||||||
[opus]=opus
|
[opus]=opus
|
||||||
[re2]=re2
|
[re2]=re2
|
||||||
[snappy]=snappy
|
[snappy]=snappy
|
||||||
[yasm]=
|
|
||||||
[zlib]=minizip
|
[zlib]=minizip
|
||||||
)
|
)
|
||||||
_unwanted_bundled_libs=(
|
_unwanted_bundled_libs=(
|
||||||
|
@ -125,45 +115,39 @@ prepare() {
|
||||||
third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \
|
third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \
|
||||||
third_party/libxml/chromium/*.cc
|
third_party/libxml/chromium/*.cc
|
||||||
|
|
||||||
# https://chromium-review.googlesource.com/c/chromium/src/+/2145261
|
# https://chromium-review.googlesource.com/c/chromium/src/+/2223010
|
||||||
patch -Np1 -i ../clean-up-a-call-to-set_utf8.patch
|
patch -Np1 -i ../remove-NotifyError-calls-and-just-send-a-normal-message.patch
|
||||||
|
|
||||||
# https://chromium-review.googlesource.com/c/chromium/src/+/2153111
|
# https://chromium-review.googlesource.com/c/chromium/src/+/2224737
|
||||||
patch -Np1 -F3 -i ../iwyu-std-numeric_limits-is-defined-in-limits.patch
|
patch -Np1 -i ../avoid-calling-DeleteForCurrentDocument-from-destructor.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://chromium-review.googlesource.com/c/chromium/src/+/2268221
|
# https://chromium-review.googlesource.com/c/chromium/src/+/2268221
|
||||||
patch -Np1 -i ../force-mp3-files-to-have-a-start-time-of-zero.patch
|
patch -Np1 -i ../force-mp3-files-to-have-a-start-time-of-zero.patch
|
||||||
|
|
||||||
# https://crbug.com/v8/10393
|
# Fixes for building with libstdc++ instead of libc++
|
||||||
patch -Np1 -d v8 <../v8-remove-soon-to-be-removed-getAllFieldPositions.patch
|
patch -Np1 -i ../patches/chromium-84-AXObject-stl-iterator.patch
|
||||||
|
patch -Np1 -i ../patches/chromium-84-ListContainerHelper-include-cstring.patch
|
||||||
|
patch -Np1 -i ../patches/chromium-84-crashpad-include-cstring.patch
|
||||||
|
patch -Np1 -i ../patches/chromium-84-gcc-10-include-stddef.patch
|
||||||
|
patch -Np1 -i ../patches/chromium-84-gcc-10-webrtc-include-stddef.patch
|
||||||
|
patch -Np1 -i ../patches/chromium-84-gcc-DCHECK_EQ-unique_ptr.patch
|
||||||
|
patch -Np1 -i ../patches/chromium-84-std-vector-const.patch
|
||||||
|
|
||||||
# Fixes from Gentoo
|
# https://crbug.com/1095962
|
||||||
patch -Np1 -i ../chromium-83-gcc-10.patch
|
patch -Np1 -i ../chromium-ffmpeg-4.3.patch
|
||||||
|
|
||||||
# https://crbug.com/skia/6663#c10
|
|
||||||
patch -Np0 -i ../chromium-skia-harmony.patch
|
|
||||||
|
|
||||||
# Patch from rpmfusion: chromium-freeworld
|
# Patch from rpmfusion: chromium-freeworld
|
||||||
patch -Np1 -i ../chromium-fix-vaapi-on-intel.patch
|
patch -Np1 -i ../chromium-fix-vaapi-on-intel.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
|
# Force script incompatible with Python 3 to use /usr/bin/python2
|
||||||
sed -i '1s|python$|&2|' third_party/dom_distiller_js/protoc_plugins/*.py
|
sed -i '1s|python$|&2|' third_party/dom_distiller_js/protoc_plugins/*.py
|
||||||
|
|
||||||
|
# Make xcbgen available to ui/gfx/x/gen_xproto.py running under Python 2
|
||||||
|
ln -s /usr/lib/python3.*/site-packages/xcbgen "$srcdir/"
|
||||||
|
|
||||||
mkdir -p third_party/node/linux/node-linux-x64/bin
|
mkdir -p third_party/node/linux/node-linux-x64/bin
|
||||||
ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/
|
ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/
|
||||||
|
|
||||||
|
@ -176,7 +160,6 @@ prepare() {
|
||||||
\! -path "third_party/$_lib/chromium/*" \
|
\! -path "third_party/$_lib/chromium/*" \
|
||||||
\! -path "third_party/$_lib/google/*" \
|
\! -path "third_party/$_lib/google/*" \
|
||||||
\! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \
|
\! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \
|
||||||
\! -path 'third_party/yasm/run_yasm.py' \
|
|
||||||
\! -regex '.*\.\(gn\|gni\|isolate\)' \
|
\! -regex '.*\.\(gn\|gni\|isolate\)' \
|
||||||
-delete
|
-delete
|
||||||
done
|
done
|
||||||
|
@ -195,6 +178,9 @@ build() {
|
||||||
export CCACHE_SLOPPINESS=time_macros
|
export CCACHE_SLOPPINESS=time_macros
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# ui/gfx/x/gen_xproto.py needs xcbgen
|
||||||
|
export PYTHONPATH=$srcdir
|
||||||
|
|
||||||
export CC=clang
|
export CC=clang
|
||||||
export CXX=clang++
|
export CXX=clang++
|
||||||
export AR=ar
|
export AR=ar
|
||||||
|
@ -217,7 +203,6 @@ build() {
|
||||||
'use_gnome_keyring=false'
|
'use_gnome_keyring=false'
|
||||||
'use_gold=false'
|
'use_gold=false'
|
||||||
'use_sysroot=false'
|
'use_sysroot=false'
|
||||||
'linux_use_bundled_binutils=false'
|
|
||||||
'use_custom_libcxx=false'
|
'use_custom_libcxx=false'
|
||||||
'enable_hangout_services_extension=true'
|
'enable_hangout_services_extension=true'
|
||||||
'enable_widevine=true'
|
'enable_widevine=true'
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
From 2b9d6daa0ab5ce45ec5555466d5a5a583a020ea8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Daniel Playfair Cal <daniel.playfair.cal@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 <rockot@google.com>
|
|
||||||
Commit-Queue: Ken Rockot <rockot@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"
|
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
From 128869693a2519578896b41765df029d7adc4ae0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Yuzu Saijo <yuzus@chromium.org>
|
||||||
|
Date: Tue, 2 Jun 2020 04:51:11 +0000
|
||||||
|
Subject: [PATCH] [content] Avoid calling DeleteForCurrentDocument from
|
||||||
|
destructor
|
||||||
|
|
||||||
|
This CL removes the call to DeleteForCurrentDocument from the destructor
|
||||||
|
of ManifestManagerHost.
|
||||||
|
|
||||||
|
This intends to fix a crash which happens from time to time using
|
||||||
|
RenderDocumentHostUserData.
|
||||||
|
|
||||||
|
Change-Id: I1336fb62328dcb0cf9991499f399bf3665d29b75
|
||||||
|
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2224737
|
||||||
|
Reviewed-by: Rakina Zata Amni <rakina@chromium.org>
|
||||||
|
Reviewed-by: Alexander Timin <altimin@chromium.org>
|
||||||
|
Reviewed-by: Sreeja Kamishetty <sreejakshetty@chromium.org>
|
||||||
|
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
|
||||||
|
Commit-Queue: Yuzu Saijo <yuzus@chromium.org>
|
||||||
|
Cr-Commit-Position: refs/heads/master@{#774006}
|
||||||
|
---
|
||||||
|
content/browser/manifest/manifest_manager_host.cc | 7 +++++--
|
||||||
|
content/browser/manifest/manifest_manager_host.h | 2 ++
|
||||||
|
2 files changed, 7 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/content/browser/manifest/manifest_manager_host.cc b/content/browser/manifest/manifest_manager_host.cc
|
||||||
|
index 3a2efba889a..1bd88d91edc 100644
|
||||||
|
--- a/content/browser/manifest/manifest_manager_host.cc
|
||||||
|
+++ b/content/browser/manifest/manifest_manager_host.cc
|
||||||
|
@@ -22,7 +22,7 @@ ManifestManagerHost::ManifestManagerHost(RenderFrameHost* render_frame_host)
|
||||||
|
}
|
||||||
|
|
||||||
|
ManifestManagerHost::~ManifestManagerHost() {
|
||||||
|
- OnConnectionError();
|
||||||
|
+ DispatchPendingCallbacks();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ManifestManagerHost::BindObserver(
|
||||||
|
@@ -55,7 +55,7 @@ blink::mojom::ManifestManager& ManifestManagerHost::GetManifestManager() {
|
||||||
|
return *manifest_manager_;
|
||||||
|
}
|
||||||
|
|
||||||
|
-void ManifestManagerHost::OnConnectionError() {
|
||||||
|
+void ManifestManagerHost::DispatchPendingCallbacks() {
|
||||||
|
std::vector<GetManifestCallback> callbacks;
|
||||||
|
for (CallbackMap::iterator it(&callbacks_); !it.IsAtEnd(); it.Advance()) {
|
||||||
|
callbacks.push_back(std::move(*it.GetCurrentValue()));
|
||||||
|
@@ -63,7 +63,10 @@ void ManifestManagerHost::OnConnectionError() {
|
||||||
|
callbacks_.Clear();
|
||||||
|
for (auto& callback : callbacks)
|
||||||
|
std::move(callback).Run(GURL(), blink::Manifest());
|
||||||
|
+}
|
||||||
|
|
||||||
|
+void ManifestManagerHost::OnConnectionError() {
|
||||||
|
+ DispatchPendingCallbacks();
|
||||||
|
if (GetForCurrentDocument(manifest_manager_frame_)) {
|
||||||
|
DeleteForCurrentDocument(manifest_manager_frame_);
|
||||||
|
}
|
||||||
|
diff --git a/content/browser/manifest/manifest_manager_host.h b/content/browser/manifest/manifest_manager_host.h
|
||||||
|
index 96951ae30bc..f706c20bdb8 100644
|
||||||
|
--- a/content/browser/manifest/manifest_manager_host.h
|
||||||
|
+++ b/content/browser/manifest/manifest_manager_host.h
|
||||||
|
@@ -55,6 +55,8 @@ class ManifestManagerHost
|
||||||
|
using CallbackMap = base::IDMap<std::unique_ptr<GetManifestCallback>>;
|
||||||
|
|
||||||
|
blink::mojom::ManifestManager& GetManifestManager();
|
||||||
|
+
|
||||||
|
+ void DispatchPendingCallbacks();
|
||||||
|
void OnConnectionError();
|
||||||
|
|
||||||
|
void OnRequestManifestResponse(int request_id,
|
|
@ -1,138 +0,0 @@
|
||||||
From bd59ce32629ef684624821419c43967b73d2989e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hiroki Nakagawa <nhiroki@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 <shimazu@chromium.org>
|
|
||||||
Commit-Queue: Hiroki Nakagawa <nhiroki@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
|
|
|
@ -1,64 +0,0 @@
|
||||||
From e473f41284ccc8fa4bc4622d087194b18a1ec23a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stephan Hartmann <stha09@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
|
|
||||||
|
|
21
extra/chromium/chromium-ffmpeg-4.3.patch
Normal file
21
extra/chromium/chromium-ffmpeg-4.3.patch
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
diff --git a/media/base/media.cc b/media/base/media.cc
|
||||||
|
index c282ee49a03..a298b40c79b 100644
|
||||||
|
--- a/media/base/media.cc
|
||||||
|
+++ b/media/base/media.cc
|
||||||
|
@@ -14,6 +14,7 @@
|
||||||
|
#include "third_party/libyuv/include/libyuv.h"
|
||||||
|
|
||||||
|
#if BUILDFLAG(ENABLE_FFMPEG)
|
||||||
|
+#include <limits>
|
||||||
|
#include "third_party/ffmpeg/ffmpeg_features.h" // nogncheck
|
||||||
|
extern "C" {
|
||||||
|
#include <libavutil/cpu.h>
|
||||||
|
@@ -41,7 +42,7 @@ class MediaInitializer {
|
||||||
|
|
||||||
|
#if BUILDFLAG(USE_ALLOCATOR_SHIM)
|
||||||
|
// Remove allocation limit from ffmpeg, so calls go down to shim layer.
|
||||||
|
- av_max_alloc(0);
|
||||||
|
+ av_max_alloc(std::numeric_limits<size_t>::max());
|
||||||
|
#endif // BUILDFLAG(USE_ALLOCATOR_SHIM)
|
||||||
|
|
||||||
|
#endif // BUILDFLAG(ENABLE_FFMPEG)
|
|
@ -1,34 +0,0 @@
|
||||||
From ede390a0b18e4565abf8ac1e1ff717e1d43fc320 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Paul Wankadia <junyer@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=parastoog@google.com
|
|
||||||
|
|
||||||
Change-Id: I62c48cd575a55b519d5264ed857f927c163068b2
|
|
||||||
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2145261
|
|
||||||
Reviewed-by: Parastoo Geranmayeh <parastoog@google.com>
|
|
||||||
Commit-Queue: Paul Wankadia <junyer@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;
|
|
|
@ -1,32 +0,0 @@
|
||||||
From 40d994e4aa2e4d5077c1810e4623549618a19c05 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Piotr Tworek <ptworek@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 <jochen@chromium.org>
|
|
||||||
Commit-Queue: Jochen Eisinger <jochen@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"
|
|
|
@ -1,29 +0,0 @@
|
||||||
From 74f76a6be385ef056b0be2362c32c728141cca16 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stephan Hartmann <stha09@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 <fdoray@chromium.org>
|
|
||||||
Commit-Queue: François Doray <fdoray@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"
|
|
||||||
|
|
|
@ -1,62 +0,0 @@
|
||||||
From aeef68888d4c00b69facead2b934095a8cd17329 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stephan Hartmann <stha09@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 <dtseng@chromium.org>
|
|
||||||
Commit-Queue: David Tseng <dtseng@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.
|
|
|
@ -1,95 +0,0 @@
|
||||||
From d3cabbc7321d349a9bffda482df5afc0d4df1ac2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Piotr Tworek <ptworek@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 <haraken@chromium.org>
|
|
||||||
Commit-Queue: Piotr Tworek <ptworek@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)
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
From 3bfec15358b788a2b7e1beefaa177ba84a6da328 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ted Meyer <tmathmeyer@chromium.org>
|
||||||
|
Date: Mon, 1 Jun 2020 19:31:18 +0000
|
||||||
|
Subject: [PATCH] Remove NotifyError calls and just send a normal message
|
||||||
|
instead
|
||||||
|
|
||||||
|
rewrote the TODO as well.
|
||||||
|
|
||||||
|
Bug: 1088055
|
||||||
|
Change-Id: If83ceeb3a786a1813e41bd3ac6c7309791e92400
|
||||||
|
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2223010
|
||||||
|
Auto-Submit: Ted Meyer <tmathmeyer@chromium.org>
|
||||||
|
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
|
||||||
|
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
|
||||||
|
Cr-Commit-Position: refs/heads/master@{#773776}
|
||||||
|
---
|
||||||
|
media/filters/decoder_selector.cc | 12 +++++-------
|
||||||
|
1 file changed, 5 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/media/filters/decoder_selector.cc b/media/filters/decoder_selector.cc
|
||||||
|
index bb06378b92d..9f510bb578c 100644
|
||||||
|
--- a/media/filters/decoder_selector.cc
|
||||||
|
+++ b/media/filters/decoder_selector.cc
|
||||||
|
@@ -165,13 +165,11 @@ void DecoderSelector<StreamType>::OnDecoderInitializeDone(Status status) {
|
||||||
|
DCHECK(task_runner_->BelongsToCurrentThread());
|
||||||
|
|
||||||
|
if (!status.is_ok()) {
|
||||||
|
- // TODO(tmathmeyer) this might be noisy in media log. Consider batching
|
||||||
|
- // all failures as causes to a single Status object and only surfacing it if
|
||||||
|
- // decoder selection fails entirely.
|
||||||
|
- media_log_->NotifyError(
|
||||||
|
- Status(StatusCode::kDecoderFailedInitialization)
|
||||||
|
- .WithData("Decoder name", decoder_->GetDisplayName())
|
||||||
|
- .AddCause(std::move(status)));
|
||||||
|
+ // TODO(tmathmeyer) this was too noisy in media log. Batch all the logs
|
||||||
|
+ // together and then send them as an informational notice instead of
|
||||||
|
+ // using NotifyError.
|
||||||
|
+ MEDIA_LOG(INFO, media_log_)
|
||||||
|
+ << "Failed to initialize " << decoder_->GetDisplayName();
|
||||||
|
|
||||||
|
// Try the next decoder on the list.
|
||||||
|
decoder_.reset();
|
|
@ -1,172 +0,0 @@
|
||||||
From 3f8dc4b2e5baf77b463334c769af85b79d8c1463 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Frank Tang <ftang@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 <jkummerow@chromium.org>
|
|
||||||
Commit-Queue: Frank Tang <ftang@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;
|
|
Loading…
Reference in a new issue