extra/chromium to 87.0.4280.66-1

This commit is contained in:
Kevin Mihelich 2020-11-18 14:56:55 +00:00
parent cb06e56b39
commit 4c7679cdff
6 changed files with 6 additions and 354 deletions

View file

@ -15,10 +15,10 @@ buildarch=12
highmem=1
pkgname=chromium
pkgver=86.0.4240.198
pkgver=87.0.4280.66
pkgrel=1
_launcher_ver=6
_gcc_patchset=6
_gcc_patchset=9
pkgdesc="A web browser built for speed, simplicity, and security"
arch=('x86_64')
url="https://www.chromium.org/Home"
@ -38,22 +38,12 @@ 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
https://github.com/stha09/chromium-patches/releases/download/chromium-${pkgver%%.*}-patchset-$_gcc_patchset/chromium-${pkgver%%.*}-patchset-$_gcc_patchset.tar.xz
fix-invalid-end-iterator-usage-in-CookieMonster.patch
only-fall-back-to-the-i965-driver-if-we-re-on-iHD.patch
remove-dead-reloc-in-nonalloc-LD-flags.patch
check-for-enable-accelerated-video-decode-on-Linux.patch
xproto-fix-underflow-in-Fp1616ToDouble.patch
chromium-skia-harmony.patch
0001-crashpad-include-limits.patch
chromium-81.0.4044.122-Fix-sandbox-Aw-snap-for-syscalls-403-and-407.patch)
sha256sums=('a0ab825e527becab4ab3e11ef889e842436fe11a4fb7874419d1970e680c7a44'
sha256sums=('29a8e4ea82edec2fdcf34ece68323bec7ab90f3d5669e6b77f58cff9c278f741'
'04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1'
'6f9ab35fa2c9e6e34ec454b829b7b87adaebc10cacecd1ac1daa67035ee44aba'
'69d8b7a439db1af4713245ddf5f44ca647283ba833a8733e848033ebdaf03cdc'
'7514c6c81a64a5457b66494a366fbb39005563eecc48d1a39033dd06aec4e300'
'7cace84d7494190e7882d3e637820646ec8d64808f0a2128c515bd44991a3790'
'03d03a39b2afa40083eb8ccb9616a51619f71da92348effc8ee289cbda10128b'
'1ec617b362bf97cce4254debd04d8396f17dec0ae1071b52ec8c1c3d86dbd322'
'c99934bcd2f3ae8ea9620f5f59a94338b2cf739647f04c28c8a551d9083fa7e9'
'771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1'
'df99f49ad58b70c9a3e1827d7e80b62e4363419334ed83373cf55b79c17b6f10'
'4837f797a910795bf3161805a3302d5f3701573ca90da8af32b2f4aa62510d20')
@ -116,14 +106,10 @@ prepare() {
third_party/libxml/chromium/*.cc
# Upstream fixes
patch -Np1 -i ../fix-invalid-end-iterator-usage-in-CookieMonster.patch
patch -Np1 -i ../only-fall-back-to-the-i965-driver-if-we-re-on-iHD.patch
patch -Np1 -i ../remove-dead-reloc-in-nonalloc-LD-flags.patch
patch -Np1 -i ../check-for-enable-accelerated-video-decode-on-Linux.patch
patch -Np1 -i ../xproto-fix-underflow-in-Fp1616ToDouble.patch
# Fixes for building with libstdc++ instead of libc++
patch -Np1 -i ../patches/chromium-86-nearby-include.patch
patch -Np1 -i ../patches/chromium-87-ServiceWorkerContainerHost-crash.patch
patch -Np1 -i ../patches/chromium-87-openscreen-include.patch
# https://crbug.com/skia/6663#c10
patch -Np0 -i ../chromium-skia-harmony.patch

View file

@ -1,43 +0,0 @@
From 54deb9811ca9bd2327def5c05ba6987b8c7a0897 Mon Sep 17 00:00:00 2001
From: Evangelos Foutras <evangelos@foutrelis.com>
Date: Tue, 29 Sep 2020 01:02:22 +0000
Subject: [PATCH] Check for enable-accelerated-video-decode on Linux
Video decoding was being accelerated on Linux even though the newly
added "enable-accelerated-video-decode" flag was not specified. The
chrome://gpu page was misleadingly showing this feature as disabled:
> Video Decode: Software only. Hardware acceleration disabled
This change adds a check for --enable-accelerated-video-decode when
considering if video decoding should be activated. (Only on Linux.)
Extra context: https://crbug.com/1097029#c18 (and also comment 20).
Bug: 1066176, 1097029
Change-Id: I534115f5f6ceed0ee3511fcf5c2d0f1dd04b9b7e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2431434
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Ted Meyer <tmathmeyer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#811480}
---
content/renderer/render_thread_impl.cc | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index f13c94ddab7..0352f127171 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -1121,7 +1121,11 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl::GetGpuFactories() {
kGpuStreamPriorityMedia);
const bool enable_video_accelerator =
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
+ cmd_line->HasSwitch(switches::kEnableAcceleratedVideoDecode) &&
+#else
!cmd_line->HasSwitch(switches::kDisableAcceleratedVideoDecode) &&
+#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
(gpu_channel_host->gpu_feature_info()
.status_values[gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE] ==
gpu::kGpuFeatureStatusEnabled);

View file

@ -1,78 +0,0 @@
From 53478caee862624fc6d73516f8d64253854b146f Mon Sep 17 00:00:00 2001
From: Piotr Tworek <ptworek@vewd.com>
Date: Mon, 31 Aug 2020 21:03:58 +0000
Subject: [PATCH] Fix invalid "end" iterator usage in CookieMonster.
Commit 229623d76e8baf714c8569c9f4efc5de266cef8b has introduced the following
code in cookie_monster.cc.
// If this is the first cookie in |cookies_| with this key, increment the
// |num_keys_| counter.
bool different_prev =
inserted == cookies_.begin() || std::prev(inserted)->first != key;
bool different_next =
inserted == cookies_.end() || std::next(inserted)->first != key;
if (different_prev && different_next)
++num_keys_;
The "inserted" iterator is something that has been returned from
std::multimap::insert. At first glance it looks reasonable. The code
tries to determine if there are already similar elements with the same
key in the map. Unfortunately the expression calculating the value of
different_next can potentially use the end iterator to the map. The
"inserted == cookies_.end()" part of the expression will always evaluate
to false since the newly inserted element has to be in the map and
cookies_.end() points to the first element outside the map. If the
inserted happens to be the last element in the map the second part of
the expression will grab the end iterator by calling std::next(inserted)
and then will try to use it leading to invalid memory access.
Given the fact that cookies_ is a std::multimap we should not even need
to calculate the value of different_next. It should always be true.
"If the container has elements with equivalent key, inserts at the
upper bound of that range.(since C++11)"
See: https://en.cppreference.com/w/cpp/container/multimap/insert
Bug: 1120240
Change-Id: I8928c294ac4daf72349a2331b31b017c1d015da0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2368872
Reviewed-by: Maksim Orlovich <morlovich@chromium.org>
Commit-Queue: Piotr Tworek <ptworek@vewd.com>
Cr-Commit-Position: refs/heads/master@{#803260}
---
net/cookies/cookie_monster.cc | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc
index 265deed0e52..140b61a81dc 100644
--- a/net/cookies/cookie_monster.cc
+++ b/net/cookies/cookie_monster.cc
@@ -1151,9 +1151,14 @@ CookieMonster::CookieMap::iterator CookieMonster::InternalInsertCookie(
// |num_keys_| counter.
bool different_prev =
inserted == cookies_.begin() || std::prev(inserted)->first != key;
- bool different_next =
- inserted == cookies_.end() || std::next(inserted)->first != key;
- if (different_prev && different_next)
+ // According to std::multiqueue documentation:
+ // "If the container has elements with equivalent key, inserts at the upper
+ // bound of that range. (since C++11)"
+ // This means that "inserted" iterator either points to the last element in
+ // the map, or the element succeeding it has to have different key.
+ DCHECK(std::next(inserted) == cookies_.end() ||
+ std::next(inserted)->first != key);
+ if (different_prev)
++num_keys_;
return inserted;
@@ -1381,7 +1386,7 @@ void CookieMonster::InternalDeleteCookie(CookieMap::iterator it,
bool different_prev =
it == cookies_.begin() || std::prev(it)->first != it->first;
bool different_next =
- it == cookies_.end() || std::next(it)->first != it->first;
+ std::next(it) == cookies_.end() || std::next(it)->first != it->first;
if (different_prev && different_next)
--num_keys_;

View file

@ -1,139 +0,0 @@
From fbd756ab55f9351165f923b0411c31dd71319c78 Mon Sep 17 00:00:00 2001
From: Ted Meyer <tmathmeyer@chromium.org>
Date: Wed, 16 Sep 2020 17:42:03 +0000
Subject: [PATCH] Only fall back to the i965 driver if we're on iHD
I got my hands on an old AMD laptop, and the gallium driver worked very
well and was saving power even at 720p, so there's no reason to block
that for now.
Bug: 1116703
Change-Id: Ib15bc2b93f33e99adad7569dd825e167b503a0ea
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2409967
Commit-Queue: Ted Meyer <tmathmeyer@chromium.org>
Reviewed-by: Andres Calderon Jaramillo <andrescj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#807550}
---
media/gpu/vaapi/vaapi_wrapper.cc | 73 ++++++++++++++++++++------------
1 file changed, 47 insertions(+), 26 deletions(-)
diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
index 2ad0b997e56..e30d1dfb73b 100644
--- a/media/gpu/vaapi/vaapi_wrapper.cc
+++ b/media/gpu/vaapi/vaapi_wrapper.cc
@@ -409,6 +409,8 @@ class VADisplayState {
// Implementation of Initialize() called only once.
bool InitializeOnce() EXCLUSIVE_LOCKS_REQUIRED(va_lock_);
+ bool InitializeVaDisplay_Locked() EXCLUSIVE_LOCKS_REQUIRED(va_lock_);
+ bool InitializeVaDriver_Locked() EXCLUSIVE_LOCKS_REQUIRED(va_lock_);
int refcount_ GUARDED_BY(va_lock_);
@@ -472,11 +474,7 @@ bool VADisplayState::Initialize() {
return success;
}
-bool VADisplayState::InitializeOnce() {
- static_assert(
- VA_MAJOR_VERSION >= 2 || (VA_MAJOR_VERSION == 1 && VA_MINOR_VERSION >= 1),
- "Requires VA-API >= 1.1.0");
-
+bool VADisplayState::InitializeVaDisplay_Locked() {
switch (gl::GetGLImplementation()) {
case gl::kGLImplementationEGLGLES2:
va_display_ = vaGetDisplayDRM(drm_fd_.get());
@@ -519,25 +517,10 @@ bool VADisplayState::InitializeOnce() {
return false;
}
- // Set VA logging level and driver name, unless already set.
- constexpr char libva_log_level_env[] = "LIBVA_MESSAGING_LEVEL";
- std::unique_ptr<base::Environment> env(base::Environment::Create());
- if (!env->HasVar(libva_log_level_env))
- env->SetVar(libva_log_level_env, "1");
-
-#if defined(USE_X11)
- if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE) {
- DCHECK(!features::IsUsingOzonePlatform());
- constexpr char libva_driver_impl_env[] = "LIBVA_DRIVER_NAME";
- // TODO(crbug/1116703) The libva intel-media driver has a known segfault in
- // vaPutSurface, so until this is fixed, fall back to the i965 driver. There
- // is discussion of the issue here:
- // https://github.com/intel/media-driver/issues/818
- if (!env->HasVar(libva_driver_impl_env))
- env->SetVar(libva_driver_impl_env, "i965");
- }
-#endif // USE_X11
+ return true;
+}
+bool VADisplayState::InitializeVaDriver_Locked() {
// The VAAPI version.
int major_version, minor_version;
VAStatus va_res = vaInitialize(va_display_, &major_version, &minor_version);
@@ -545,9 +528,6 @@ bool VADisplayState::InitializeOnce() {
LOG(ERROR) << "vaInitialize failed: " << vaErrorStr(va_res);
return false;
}
-
- va_initialized_ = true;
-
const std::string va_vendor_string = vaQueryVendorString(va_display_);
DLOG_IF(WARNING, va_vendor_string.empty())
<< "Vendor string empty or error reading.";
@@ -555,6 +535,8 @@ bool VADisplayState::InitializeOnce() {
<< va_vendor_string;
implementation_type_ = VendorStringToImplementationType(va_vendor_string);
+ va_initialized_ = true;
+
// The VAAPI version is determined from what is loaded on the system by
// calling vaInitialize(). Since the libva is now ABI-compatible, relax the
// version check which helps in upgrading the libva, without breaking any
@@ -571,6 +553,45 @@ bool VADisplayState::InitializeOnce() {
return true;
}
+bool VADisplayState::InitializeOnce() {
+ static_assert(
+ VA_MAJOR_VERSION >= 2 || (VA_MAJOR_VERSION == 1 && VA_MINOR_VERSION >= 1),
+ "Requires VA-API >= 1.1.0");
+
+ // Set VA logging level, unless already set.
+ constexpr char libva_log_level_env[] = "LIBVA_MESSAGING_LEVEL";
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ if (!env->HasVar(libva_log_level_env))
+ env->SetVar(libva_log_level_env, "1");
+
+ if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
+ return false;
+
+#if defined(USE_X11)
+ if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE &&
+ implementation_type_ == VAImplementation::kIntelIHD) {
+ DCHECK(!features::IsUsingOzonePlatform());
+ constexpr char libva_driver_impl_env[] = "LIBVA_DRIVER_NAME";
+ // TODO(crbug/1116703) The libva intel-media driver has a known segfault in
+ // vaPutSurface, so until this is fixed, fall back to the i965 driver. There
+ // is discussion of the issue here:
+ // https://github.com/intel/media-driver/issues/818
+ if (!env->HasVar(libva_driver_impl_env))
+ env->SetVar(libva_driver_impl_env, "i965");
+
+ // Re-initialize with the new driver.
+ va_display_ = nullptr;
+ va_initialized_ = false;
+ implementation_type_ = VAImplementation::kInvalid;
+
+ if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
+ return false;
+ }
+#endif // USE_X11
+
+ return true;
+}
+
VAStatus VADisplayState::Deinitialize() {
base::AutoLock auto_lock(va_lock_);
VAStatus va_res = VA_STATUS_SUCCESS;

View file

@ -1,37 +0,0 @@
From 74b0cb5b86f7d7f8f7c1172d85b09096bef147b7 Mon Sep 17 00:00:00 2001
From: Daniel Nicoara <dnicoara@chromium.org>
Date: Thu, 24 Sep 2020 02:34:24 +0000
Subject: [PATCH] Remove dead-reloc-in-nonalloc LD flags
Breakpad change landed. Revert workaround.
Bug: 1105559
Test: components/crash/content/tools/generate_breakpad_symbols.py --build-dir=out/andrd --binary=out/andrd/lib.unstripped/libcontent_shell_content_view.so --symbols-dir=/tmp/foo --platform=android
Change-Id: I519534002898a97b15a57b9b87ac78ef3f216dee
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2427349
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#810066}
---
build/config/compiler/BUILD.gn | 8 --------
1 file changed, 8 deletions(-)
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index aa9eca20bd2..42839cfba3f 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -396,14 +396,6 @@ config("compiler") {
"-Wl,--as-needed",
]
}
- if (use_lld && !is_chromeos_device) {
- # TODO(thakis): Fix dump_syms to not need this and then remove it,
- # https://crbug.com/1105559
- ldflags += [
- "-Wl,-z,dead-reloc-in-nonalloc=*=0",
- "-Wl,-z,dead-reloc-in-nonalloc=.debug_ranges=1",
- ]
- }
}
# Linux-specific compiler flags setup.

View file

@ -1,37 +0,0 @@
From 5ade494a9966c7a9675af86dc42aca62fb4d806d Mon Sep 17 00:00:00 2001
From: Tom Anderson <thomasanderson@chromium.org>
Date: Wed, 21 Oct 2020 22:02:35 +0000
Subject: [PATCH] [XProto] Fix underflow in Fp1616ToDouble
x11::Input::Fp1616 should be treated as a signed integer, otherwise
-1 will underflow to 65535. When dragging a scrollbar, this would
cause the scrollbar to snap to the bottom when the cursor is dragged
above the window's y=0 coordinate. Verified that the issue is fixed
after this CL.
BUG=1139623,1136352
R=sky
Change-Id: Ie318006ceadde9b9ce3e267fb453ddeba0e81da0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2485620
Auto-Submit: Thomas Anderson <thomasanderson@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#819538}
---
ui/events/x/events_x_utils.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ui/events/x/events_x_utils.cc b/ui/events/x/events_x_utils.cc
index 3010db5f40c..856dfb221e7 100644
--- a/ui/events/x/events_x_utils.cc
+++ b/ui/events/x/events_x_utils.cc
@@ -376,7 +376,7 @@ base::TimeTicks TimeTicksFromXEvent(const x11::Event& xev) {
// This is ported from libxi's FP1616toDBL in XExtInt.c
double Fp1616ToDouble(x11::Input::Fp1616 x) {
- auto x32 = static_cast<uint32_t>(x);
+ auto x32 = static_cast<int32_t>(x);
return x32 * 1.0 / (1 << 16);
}