Hello community,

here is the log from the commit of package chromium for openSUSE:Factory 
checked in at 2020-07-21 15:41:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/chromium (Old)
 and      /work/SRC/openSUSE:Factory/.chromium.new.3592 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "chromium"

Tue Jul 21 15:41:15 2020 rev:261 rq:821455 version:84.0.4147.89

Changes:
--------
--- /work/SRC/openSUSE:Factory/chromium/chromium.changes        2020-06-30 
21:55:00.130487235 +0200
+++ /work/SRC/openSUSE:Factory/.chromium.new.3592/chromium.changes      
2020-07-21 15:44:35.539859006 +0200
@@ -1,0 +2,77 @@
+Fri Jul 17 07:00:20 UTC 2020 - Tomáš Chvátal <[email protected]>
+
+- Try to fix non-wayland build for Leap builds
+
+-------------------------------------------------------------------
+Thu Jul 16 11:33:24 UTC 2020 - Tomáš Chvátal <[email protected]>
+
+- Update to 84.0.4147.89 bsc#1174189:
+  * Critical CVE-2020-6510: Heap buffer overflow in background fetch. 
+  * High CVE-2020-6511: Side-channel information leakage in content security 
policy. 
+  * High CVE-2020-6512: Type Confusion in V8. 
+  * High CVE-2020-6513: Heap buffer overflow in PDFium. 
+  * High CVE-2020-6514: Inappropriate implementation in WebRTC. 
+  * High CVE-2020-6515: Use after free in tab strip. 
+  * High CVE-2020-6516: Policy bypass in CORS. 
+  * High CVE-2020-6517: Heap buffer overflow in history. 
+  * Medium CVE-2020-6518: Use after free in developer tools. 
+  * Medium CVE-2020-6519: Policy bypass in CSP. 
+  * Medium CVE-2020-6520: Heap buffer overflow in Skia. 
+  * Medium CVE-2020-6521: Side-channel information leakage in autofill.
+  * Medium CVE-2020-6522: Inappropriate implementation in external protocol 
handlers. 
+  * Medium CVE-2020-6523: Out of bounds write in Skia. 
+  * Medium CVE-2020-6524: Heap buffer overflow in WebAudio. 
+  * Medium CVE-2020-6525: Heap buffer overflow in Skia. 
+  * Low CVE-2020-6526: Inappropriate implementation in iframe sandbox. 
+  * Low CVE-2020-6527: Insufficient policy enforcement in CSP. 
+  * Low CVE-2020-6528: Incorrect security UI in basic auth. 
+  * Low CVE-2020-6529: Inappropriate implementation in WebRTC. 
+  * Low CVE-2020-6530: Out of bounds memory access in developer tools. 
+  * Low CVE-2020-6531: Side-channel information leakage in scroll to text. 
+  * Low CVE-2020-6533: Type Confusion in V8. 
+  * Low CVE-2020-6534: Heap buffer overflow in WebRTC. 
+  * Low CVE-2020-6535: Insufficient data validation in WebUI. 
+  * Low CVE-2020-6536: Incorrect security UI in PWAs.
+- Use bundled xcb-proto as we need to generate py2 bindings
+- Add new patches:
+  * chromium-84-AXObject-stl-iterator.patch
+  * chromium-84-FilePath-add-noexcept.patch
+  * chromium-84-base-has_bultin.patch
+  * chromium-84-blink-disable-clang-format.patch
+  * chromium-84-fix-decltype.patch
+  * chromium-84-gcc-DOMRect-constexpr.patch
+  * chromium-84-gcc-include.patch
+  * chromium-84-gcc-noexcept.patch
+  * chromium-84-gcc-template.patch
+  * chromium-84-gcc-unique_ptr.patch
+  * chromium-84-gcc-use-brace-initializer.patch
+  * chromium-84-nss-include.patch
+  * chromium-84-ozone-include.patch
+  * chromium-84-revert-manage-ManifestManagerHost-per-document.patch
+  * chromium-84-std-vector-const.patch
+  * chromium-84.0.4147.89.tar.xz
+  * chromium-blink-gcc-diagnostic-pragma.patch
+  * chromium-clang_lto_visibility_public.patch
+  * chromium-quiche-invalid-offsetof.patch
+  * system-libdrm.patch
+- Remove no longer needed patches:
+  * chromium-81-re2-0.2020.05.01.patch
+  * chromium-82-gcc-incomplete-type.patch
+  * chromium-82-gcc-iterator.patch
+  * chromium-82-gcc-noexcept.patch
+  * chromium-83-gcc-include.patch
+  * chromium-83-gcc-iterator.patch
+  * chromium-83-gcc-permissive.patch
+  * chromium-83-gcc-serviceworker.patch
+  * chromium-83-gcc-template.patch
+  * chromium-83-icu67.patch
+  * chromium-83.0.4103.97-skia-gcc-no_sanitize-fixes.patch
+  * chromium-dev-shm.patch
+- Rebase and update patches:
+  * build-with-pipewire-0.3.patch
+  * chromium-83-gcc-10.patch
+  * chromium-84-mediaalloc.patch
+  * chromium-norar.patch
+  * chromium-vaapi-fix.patch
+
+-------------------------------------------------------------------

Old:
----
  chromium-81-re2-0.2020.05.01.patch
  chromium-82-gcc-incomplete-type.patch
  chromium-82-gcc-iterator.patch
  chromium-82-gcc-noexcept.patch
  chromium-83-gcc-include.patch
  chromium-83-gcc-iterator.patch
  chromium-83-gcc-permissive.patch
  chromium-83-gcc-serviceworker.patch
  chromium-83-gcc-template.patch
  chromium-83-icu67.patch
  chromium-83.0.4103.116.tar.xz
  chromium-83.0.4103.97-skia-gcc-no_sanitize-fixes.patch
  chromium-dev-shm.patch

New:
----
  chromium-84-AXObject-stl-iterator.patch
  chromium-84-FilePath-add-noexcept.patch
  chromium-84-base-has_bultin.patch
  chromium-84-blink-disable-clang-format.patch
  chromium-84-fix-decltype.patch
  chromium-84-gcc-DOMRect-constexpr.patch
  chromium-84-gcc-include.patch
  chromium-84-gcc-noexcept.patch
  chromium-84-gcc-template.patch
  chromium-84-gcc-unique_ptr.patch
  chromium-84-gcc-use-brace-initializer.patch
  chromium-84-nss-include.patch
  chromium-84-ozone-include.patch
  chromium-84-revert-manage-ManifestManagerHost-per-document.patch
  chromium-84-std-vector-const.patch
  chromium-84.0.4147.89.tar.xz
  chromium-blink-gcc-diagnostic-pragma.patch
  chromium-clang_lto_visibility_public.patch
  chromium-quiche-invalid-offsetof.patch
  system-libdrm.patch
  xcb-proto-1.14.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ chromium.spec ++++++
--- /var/tmp/diff_new_pack.D51Lx3/_old  2020-07-21 15:44:46.023872830 +0200
+++ /var/tmp/diff_new_pack.D51Lx3/_new  2020-07-21 15:44:46.027872835 +0200
@@ -19,7 +19,7 @@
 %define rname chromium
 # bsc#1108175
 %define __provides_exclude ^lib.*\\.so.*$
-%if 0%{?suse_vesrion} > 1500
+%if 0%{?suse_version} > 1500
 %bcond_without system_icu
 %bcond_without system_vpx
 %bcond_without wayland
@@ -51,12 +51,14 @@
 %endif
 %bcond_with clang
 Name:           chromium
-Version:        83.0.4103.116
+Version:        84.0.4147.89
 Release:        0
 Summary:        Google's open source browser project
 License:        BSD-3-Clause AND LGPL-2.1-or-later
 URL:            https://www.chromium.org/
 Source0:        
https://commondatastorage.googleapis.com/chromium-browser-official/%{rname}-%{version}.tar.xz
+# we need to bundle this because we need py2 version until google switches to 
python3
+Source1:        
https://www.x.org/releases/individual/proto/xcb-proto-1.14.tar.xz
 # Toolchain definitions
 Source30:       master_preferences
 Source100:      chromium-browser.sh
@@ -76,31 +78,38 @@
 Patch6:         chromium-drm.patch
 Patch9:         chromium-system-libusb.patch
 Patch10:        gcc-enable-lto.patch
-Patch12:        chromium-79-gcc-alignas.patch
-Patch13:        chromium-80-gcc-quiche.patch
-Patch14:        chromium-fix-char_traits.patch
-Patch15:        gpu-timeout.patch
-Patch16:        build-with-pipewire-0.3.patch
-Patch17:        chromium-82-gcc-constexpr.patch
-Patch18:        chromium-82-gcc-incomplete-type.patch
-Patch19:        chromium-82-gcc-iterator.patch
-Patch20:        chromium-82-gcc-noexcept.patch
-Patch21:        chromium-82-gcc-template.patch
-Patch22:        chromium-83-gcc-template.patch
-Patch23:        chromium-83-icu67.patch
-Patch24:        chromium-83-gcc-serviceworker.patch
-Patch25:        chromium-83-gcc-permissive.patch
-Patch26:        chromium-83-gcc-iterator.patch
-Patch27:        chromium-83-gcc-include.patch
-Patch28:        chromium-83-gcc-10.patch
-Patch29:        chromium-81-re2-0.2020.05.01.patch
+Patch11:        chromium-79-gcc-alignas.patch
+Patch12:        chromium-80-gcc-quiche.patch
+Patch13:        chromium-fix-char_traits.patch
+Patch14:        gpu-timeout.patch
+Patch15:        build-with-pipewire-0.3.patch
+Patch16:        chromium-82-gcc-constexpr.patch
+Patch18:        chromium-82-gcc-template.patch
+Patch20:        chromium-83-gcc-10.patch
+Patch21:        chromium-84-gcc-include.patch
+Patch22:        chromium-84-gcc-noexcept.patch
+Patch23:        chromium-84-gcc-template.patch
+Patch24:        chromium-84-gcc-unique_ptr.patch
 # Do not use unrar code, it is non-free
-Patch30:        chromium-norar.patch
-# specific patch to disable location on Leap; works on 15.2 but not on 15.1
-Patch31:        no-location-leap151.patch
-Patch32:        chromium-dev-shm.patch
-Patch33:        chromium-83.0.4103.97-skia-gcc-no_sanitize-fixes.patch
-Patch34:        chromium-84-mediaalloc.patch
+Patch26:        chromium-norar.patch
+Patch27:        chromium-84-blink-disable-clang-format.patch
+Patch28:        chromium-84-AXObject-stl-iterator.patch
+Patch29:        chromium-84-base-has_bultin.patch
+Patch30:        chromium-84-FilePath-add-noexcept.patch
+Patch31:        chromium-84-fix-decltype.patch
+Patch32:        chromium-84-gcc-DOMRect-constexpr.patch
+Patch33:        chromium-84-gcc-use-brace-initializer.patch
+Patch34:        
chromium-84-revert-manage-ManifestManagerHost-per-document.patch
+Patch35:        chromium-84-std-vector-const.patch
+# revert location on old GCC on 15.1, 15.2 gets it right tho
+Patch36:        no-location-leap151.patch
+Patch37:        chromium-84-mediaalloc.patch
+Patch38:        chromium-84-nss-include.patch
+Patch39:        chromium-84-ozone-include.patch
+Patch40:        chromium-blink-gcc-diagnostic-pragma.patch
+Patch41:        chromium-quiche-invalid-offsetof.patch
+Patch42:        chromium-clang_lto_visibility_public.patch
+Patch43:        system-libdrm.patch
 # Google seem not too keen on merging this but GPU accel is quite important
 #  https://chromium-review.googlesource.com/c/chromium/src/+/532294
 #  
https://github.com/saiarcot895/chromium-ubuntu-build/tree/master/debian/patches
@@ -143,8 +152,6 @@
 BuildRequires:  update-desktop-files
 BuildRequires:  util-linux
 BuildRequires:  wdiff
-BuildRequires:  yasm
-BuildRequires:  yasm-devel
 BuildRequires:  perl(Switch)
 BuildRequires:  pkgconfig(alsa)
 BuildRequires:  pkgconfig(bzip2)
@@ -181,6 +188,7 @@
 BuildRequires:  pkgconfig(libssl)
 BuildRequires:  pkgconfig(libudev)
 BuildRequires:  pkgconfig(libusb-1.0)
+BuildRequires:  pkgconfig(libva)
 BuildRequires:  pkgconfig(libwebp) >= 0.4.0
 BuildRequires:  pkgconfig(libxml-2.0) >= 2.9.5
 BuildRequires:  pkgconfig(libxslt)
@@ -200,6 +208,7 @@
 BuildRequires:  pkgconfig(vorbis)
 BuildRequires:  pkgconfig(x11)
 BuildRequires:  pkgconfig(xcb-dri3)
+BuildRequires:  pkgconfig(xcb-proto)
 BuildRequires:  pkgconfig(xcomposite)
 BuildRequires:  pkgconfig(xcursor)
 BuildRequires:  pkgconfig(xdamage)
@@ -244,7 +253,6 @@
 BuildRequires:  pkgconfig(wayland-server)
 BuildRequires:  pkgconfig(xkbcommon)
 %endif
-BuildRequires:  pkgconfig(libva)
 %ifnarch aarch64
 # Current tcmalloc does not support AArch64
 BuildRequires:  pkgconfig(libtcmalloc)
@@ -285,6 +293,9 @@
 %setup -q -n %{rname}-%{version}
 %autopatch -p1
 
+# bundle xcb-proto for python2
+tar xJf %{SOURCE1}
+
 # Fix the path to nodejs binary
 mkdir -p third_party/node/linux/node-linux-x64/bin
 ln -s %{_bindir}/node third_party/node/linux/node-linux-x64/bin/node
@@ -363,6 +374,8 @@
     third_party/depot_tools/third_party/six
     third_party/devscripts
     third_party/devtools-frontend
+    third_party/devtools-frontend/src/front_end/third_party/acorn
+    third_party/devtools-frontend/src/front_end/third_party/codemirror
     third_party/devtools-frontend/src/front_end/third_party/fabricjs
     third_party/devtools-frontend/src/front_end/third_party/lighthouse
     third_party/devtools-frontend/src/front_end/third_party/wasmparser
@@ -390,6 +403,7 @@
     third_party/libaom
     third_party/libaom/source/libaom/third_party/vector
     third_party/libaom/source/libaom/third_party/x86inc
+    third_party/libavif
     third_party/libjingle
     third_party/libphonenumber
     third_party/libsecret
@@ -400,6 +414,7 @@
     third_party/libwebm
     third_party/libxml/chromium
     third_party/libyuv
+    third_party/lottie
     third_party/lss
     third_party/lzma_sdk
     third_party/mako
@@ -413,6 +428,7 @@
     third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2
     third_party/one_euro_filter
     third_party/openscreen
+    third_party/openscreen/src/third_party/mozilla
     third_party/openscreen/src/third_party/tinycbor/src/src
     third_party/ots
     third_party/pdfium
@@ -461,7 +477,7 @@
     third_party/web-animations-js
     third_party/webdriver
     third_party/webrtc
-    third_party/webrtc/common_audio/third_party/fft4g
+    third_party/webrtc/common_audio/third_party/ooura
     third_party/webrtc/common_audio/third_party/spl_sqrt_floor
     third_party/webrtc/modules/third_party/fft
     third_party/webrtc/modules/third_party/g711
@@ -482,7 +498,6 @@
 )
 %if %{with wayland}
 keeplibs+=(
-    third_party/libdrm/src/include
     third_party/v4l-utils
     third_party/wayland
     third_party/wayland-protocols
@@ -510,7 +525,6 @@
     third_party/speech-dispatcher
     third_party/usb_ids
     third_party/xdg-utils
-    third_party/yasm/run_yasm.py
 )
 build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove
 
@@ -581,7 +595,6 @@
     opus
     re2
     snappy
-    yasm
     zlib
 )
 %if %{with system_harfbuzz}
@@ -601,9 +614,10 @@
 # Create the configuration for GN
 # Available options: out/Release/gn args --list out/Release/
 myconf_gn=""
+# bundled xcb py2 variant
+myconf_gn+=" xcbproto_path=\"$PWD/xcb-proto-1.14/src\""
 myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\""
 myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\""
-myconf_gn+=" linux_use_bundled_binutils=false"
 myconf_gn+=" use_custom_libcxx=false"
 myconf_gn+=" is_debug=false"
 myconf_gn+=" enable_nacl=false"
@@ -638,7 +652,6 @@
 myconf_gn+=" treat_warnings_as_errors=false"
 myconf_gn+=" enable_widevine=true"
 myconf_gn+=" use_dbus=true"
-myconf_gn+=" use_system_minigbm=true"
 # See dependency logic in third_party/BUILD.gn
 %if %{with system_harfbuzz}
 myconf_gn+=" use_system_harfbuzz=true"
@@ -652,9 +665,14 @@
 %endif
 # ozone stuff
 %if %{with wayland}
-myconf_gn+=" use_ozone=true ozone_platform=\"x11\" ozone_platform_x11=true"
+myconf_gn+=" use_system_minigbm=true use_xkbcommon=true"
+myconf_gn+=" use_system_libdrm=true"
+myconf_gn+=" use_ozone=true ozone_auto_platforms=false"
+myconf_gn+=" ozone_platform=\"x11\" ozone_platform_x11=true 
ozone_platform_gbm=true"
+myconf_gn+=" ozone_platform_wayland=true"
 # use_v4l2_codec - uses patches in kernel-headers present on chromeos only
-myconf_gn+=" use_v4lplugin=true use_v4l2_codec=false use_linux_v4l2_only=true"
+myconf_gn+=" use_v4lplugin=true use_v4l2_codec=false"
+
 %endif
 %if %{with clang}
 myconf_gn+=" is_clang=true clang_base_path=\"/usr\" 
clang_use_chrome_plugins=false"
@@ -718,6 +736,9 @@
 #  https://bugs.chromium.org/p/chromium/issues/detail?id=642016
 gn gen --args="${myconf_gn}" out/Release
 
+# bundled xcb proto for python2
+export PYTHONPATH="$PWD/xcb-proto-1.14${PYTHONPATH+:}${PYTHONPATH}"
+
 ninja -v %{?_smp_mflags} -C out/Release chrome chromedriver
 
 %install

++++++ _constraints ++++++
--- /var/tmp/diff_new_pack.D51Lx3/_old  2020-07-21 15:44:46.055872872 +0200
+++ /var/tmp/diff_new_pack.D51Lx3/_new  2020-07-21 15:44:46.059872877 +0200
@@ -2,7 +2,7 @@
 <constraints>
   <hardware>
     <disk>
-      <size unit="G">20</size>
+      <size unit="G">16</size>
     </disk>
     <physicalmemory>
     <size unit="G">8</size>

++++++ chromium-83-gcc-10.patch ++++++
--- /var/tmp/diff_new_pack.D51Lx3/_old  2020-07-21 15:44:46.079872903 +0200
+++ /var/tmp/diff_new_pack.D51Lx3/_new  2020-07-21 15:44:46.079872903 +0200
@@ -10,10 +10,10 @@
  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
+Index: chromium-84.0.4147.30/chrome/browser/search/background/ntp_backgrounds.h
+===================================================================
+--- 
chromium-84.0.4147.30.orig/chrome/browser/search/background/ntp_backgrounds.h
++++ chromium-84.0.4147.30/chrome/browser/search/background/ntp_backgrounds.h
 @@ -6,6 +6,7 @@
  #define CHROME_BROWSER_SEARCH_BACKGROUND_NTP_BACKGROUNDS_H_
  
@@ -22,22 +22,22 @@
  
  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_
+Index: chromium-84.0.4147.30/third_party/webrtc/call/rtx_receive_stream.h
+===================================================================
+--- chromium-84.0.4147.30.orig/third_party/webrtc/call/rtx_receive_stream.h
++++ chromium-84.0.4147.30/third_party/webrtc/call/rtx_receive_stream.h
+@@ -13,6 +13,7 @@
  
+ #include <cstdint>
  #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
+Index: 
chromium-84.0.4147.30/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
+===================================================================
+--- 
chromium-84.0.4147.30.orig/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
++++ 
chromium-84.0.4147.30/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
 @@ -12,6 +12,7 @@
  #define MODULES_AUDIO_PROCESSING_AEC3_CLOCKDRIFT_DETECTOR_H_
  
@@ -46,11 +46,11 @@
  
  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 @@
+Index: chromium-84.0.4147.30/ui/gfx/linux/drm_util_linux.h
+===================================================================
+--- chromium-84.0.4147.30.orig/ui/gfx/linux/drm_util_linux.h
++++ chromium-84.0.4147.30/ui/gfx/linux/drm_util_linux.h
+@@ -9,6 +9,8 @@
  
  #include "ui/gfx/buffer_types.h"
  
@@ -59,6 +59,3 @@
  namespace ui {
  
  int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format);
--- 
-2.24.1
-

++++++ chromium-84-AXObject-stl-iterator.patch ++++++
>From f3dfe39f9fd3091cf1a7146b936d9de77a459435 Mon Sep 17 00:00:00 2001
From: Piotr Tworek <[email protected]>
Date: Mon, 18 May 2020 15:24:35 +0000
Subject: [PATCH] Make blink::AXObject::AncestorsIterator STL compatible.

Commit 31e5188ffc9a04295997d22bfdb68fc367bef047, "Used some methods from
AXRoleProperties in AXObject" started using std::any_of with this custom
iterator type. Unfortunately this iterator does not provide traits
mandated by the standard. This works fine for libcxx, but fails when
compiling the code against libstdc++.

Bug: 819294
Change-Id: I78fe25475593d73ce255f1de955aa41e936dff86
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2207112
Reviewed-by: Kentaro Hara <[email protected]>
Commit-Queue: Piotr Tworek <[email protected]>
Cr-Commit-Position: refs/heads/master@{#769713}
---

diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.h 
b/third_party/blink/renderer/modules/accessibility/ax_object.h
index 841715b..fbb87bf 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object.h
+++ b/third_party/blink/renderer/modules/accessibility/ax_object.h
@@ -274,6 +274,12 @@
   class MODULES_EXPORT AncestorsIterator final
       : public GarbageCollected<AncestorsIterator> {
    public:
+    using iterator_category = std::forward_iterator_tag;
+    using value_type = AXObject;
+    using difference_type = ptrdiff_t;
+    using pointer = value_type*;
+    using reference = value_type&;
+
     ~AncestorsIterator() = default;
 
     AncestorsIterator(const AncestorsIterator& other)
++++++ chromium-84-FilePath-add-noexcept.patch ++++++
>From c65b4d03c76da607b6b678c4a46baa75ca0cf7b3 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <[email protected]>
Date: Wed, 27 May 2020 18:46:40 +0000
Subject: [PATCH] GCC: make base::FilePath move assignment operator noexcept

The move assignment operator in PaintPreviewClient::PaintPreviewData is
noexcept. Because this class has a member of type base::FilePath, the
move assignment operator of base::FilePath must be noexcept too.

Otherwise GCC fails like this:

../../components/paint_preview/browser/paint_preview_client.cc:107:1:

error: function 'paint_preview::PaintPreviewClient::PaintPreviewData&
paint_preview::PaintPreviewClient::PaintPreviewData::operator=
(paint_preview::PaintPreviewClient::PaintPreviewData&&)' defaulted on
its redeclaration with an exception-specification that differs from
the implicit exception-specification ''
  107 | PaintPreviewClient::PaintPreviewData::operator=(
      | ^~~~~~~~~~~~~~~~~~

Bug: 819294
Change-Id: I87b88a81e8af6b7e61f0d1a8c8444fd6707e50d2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2218168
Commit-Queue: Lei Zhang <[email protected]>
Reviewed-by: Lei Zhang <[email protected]>
Cr-Commit-Position: refs/heads/master@{#772348}
---

diff --git a/base/files/file_path.cc b/base/files/file_path.cc
index 6dc6854..56c02d2b 100644
--- a/base/files/file_path.cc
+++ b/base/files/file_path.cc
@@ -186,7 +186,7 @@
 
 FilePath& FilePath::operator=(const FilePath& that) = default;
 
-FilePath& FilePath::operator=(FilePath&& that) = default;
+FilePath& FilePath::operator=(FilePath&& that) noexcept = default;
 
 bool FilePath::operator==(const FilePath& that) const {
 #if defined(FILE_PATH_USES_DRIVE_LETTERS)
diff --git a/base/files/file_path.h b/base/files/file_path.h
index 4e23f71a..2160fda 100644
--- a/base/files/file_path.h
+++ b/base/files/file_path.h
@@ -193,7 +193,7 @@
   FilePath(FilePath&& that) noexcept;
   // Replaces the contents with those of |that|, which is left in valid but
   // unspecified state.
-  FilePath& operator=(FilePath&& that);
+  FilePath& operator=(FilePath&& that) noexcept;
 
   bool operator==(const FilePath& that) const;
 
++++++ chromium-84-base-has_bultin.patch ++++++
>From f2076c6a4c9c14538d71a3ef9c9e4fd40ee6ee00 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <[email protected]>
Date: Sun, 31 May 2020 11:46:05 +0000
Subject: [PATCH] GCC: fix __has_builtin defines for non-clang compilers

Defining __has_builtin to 0 for non-clang compilers in base headers can
lead to wrong detection of features. For example in base/location.h
checking for __has_builtin macros succeeds for non-clang compilers,
because base/check_op.h defines __has_builtin to 0 and is included
before base/location.h. Instead of defining __has_builtin to 0 for
non-clang compilers, define an independent preprocessor symbol that
reflects support for requested feature. Undefine the symbol to avoid
collision.

While we're at it fix base/memory/aligned_memory.h too.

Bug: 819294
Change-Id: Iac40dc44e7356b600e7d06aa4ccd1294bb09ebce
---

diff --git a/base/check_op.h b/base/check_op.h
index 04b0c6f..28f4263a 100644
--- a/base/check_op.h
+++ b/base/check_op.h
@@ -48,8 +48,10 @@
                                  void (*stream_func)(std::ostream&,
                                                      const void*));
 
-#ifndef __has_builtin
-#define __has_builtin(x) 0  // Compatibility with non-clang compilers.
+#ifdef __has_builtin
+#define SUPPORTS_BUILTIN_ADDRESSOF (__has_builtin(__builtin_addressof))
+#else
+#define SUPPORTS_BUILTIN_ADDRESSOF 0
 #endif
 
 template <typename T>
@@ -65,7 +67,7 @@
   // operator& might be overloaded, so do the std::addressof dance.
   // __builtin_addressof is preferred since it also handles Obj-C ARC pointers.
   // Some casting is still needed, because T might be volatile.
-#if __has_builtin(__builtin_addressof)
+#if SUPPORTS_BUILTIN_ADDRESSOF
   const void* vp = const_cast<const void*>(
       reinterpret_cast<const volatile void*>(__builtin_addressof(v)));
 #else
@@ -75,6 +77,8 @@
   return StreamValToStr(vp, f);
 }
 
+#undef SUPPORTS_BUILTIN_ADDRESSOF
+
 // Overload for types that have no operator<< but do have .ToString() defined.
 template <typename T>
 inline typename std::enable_if<
diff --git a/base/memory/aligned_memory.h b/base/memory/aligned_memory.h
index d1cba0c..a0d9f13 100644
--- a/base/memory/aligned_memory.h
+++ b/base/memory/aligned_memory.h
@@ -57,13 +57,15 @@
   }
 };
 
-#ifndef __has_builtin
-#define __has_builtin(x) 0  // Compatibility with non-clang compilers.
+#ifdef __has_builtin
+#define SUPPORTS_BUILTIN_IS_ALIGNED (__has_builtin(__builtin_is_aligned))
+#else
+#define SUPPORTS_BUILTIN_IS_ALIGNED 0
 #endif
 
 inline bool IsAligned(uintptr_t val, size_t alignment) {
   // If the compiler supports builtin alignment checks prefer them.
-#if __has_builtin(__builtin_is_aligned)
+#if SUPPORTS_BUILTIN_IS_ALIGNED
   return __builtin_is_aligned(val, alignment);
 #else
   DCHECK(!((alignment - 1) & alignment))
@@ -72,6 +74,8 @@
 #endif
 }
 
+#undef SUPPORTS_BUILTIN_IS_ALIGNED
+
 inline bool IsAligned(void* val, size_t alignment) {
   return IsAligned(reinterpret_cast<uintptr_t>(val), alignment);
 }
++++++ chromium-84-blink-disable-clang-format.patch ++++++
>From 08ac7188f414218ac9d764e29e7aa64a6bfc2f96 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <[email protected]>
Date: Sun, 31 May 2020 10:02:03 +0000
Subject: [PATCH] disable clang-format for generated code in blink

For GCC builds clang-format might be not available. Additionally,
current scripts look for clang-format within chromium sources and
don't consider system clang-format.
---
 .../bindings/scripts/bind_gen/codegen_utils.py         | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git 
a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py 
b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py
index 7021f1a..33bf5bf 100644
--- a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py
+++ b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py
@@ -150,12 +150,4 @@ def write_code_node_to_file(code_node, filepath):
 
     rendered_text = render_code_node(code_node)
 
-    format_result = style_format.auto_format(rendered_text, filename=filepath)
-    if not format_result.did_succeed:
-        raise RuntimeError("Style-formatting failed: filename = {filename}\n"
-                           "---- stderr ----\n"
-                           "{stderr}:".format(
-                               filename=format_result.filename,
-                               stderr=format_result.error_message))
-
-    web_idl.file_io.write_to_file_if_changed(filepath, format_result.contents)
+    web_idl.file_io.write_to_file_if_changed(filepath, rendered_text)
-- 
2.26.2

++++++ chromium-84-fix-decltype.patch ++++++
>From df413313083a9dabdc573545aaf70343aa0830ca Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <[email protected]>
Date: Wed, 27 May 2020 17:03:03 +0000
Subject: [PATCH] GCC: fix decltype to get a valid function pointer

The decltype(<func>) passed as template parameter to
CBBFunctionToVector does not return a function pointer
and GCC complains like this:

../../device/fido/virtual_fido_device.cc:104:68: error:
 'int(struct cbb_st*, const struct evp_pkey_st*)' is not a valid type
 for a template non-type parameter
  104 |                         EVP_marshal_private_key>(pkey_.get());
      |                                                           ^

Fix this by passing decltype(&<func>).

Bug: 819294
Change-Id: I8114c3d75c9865779d58c0b6a6c48e6affd3175b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2217414
Reviewed-by: Adam Langley <[email protected]>
Commit-Queue: Adam Langley <[email protected]>
Cr-Commit-Position: refs/heads/master@{#772283}
---

diff --git a/device/fido/virtual_fido_device.cc 
b/device/fido/virtual_fido_device.cc
index 0256c6a..72423d3 100644
--- a/device/fido/virtual_fido_device.cc
+++ b/device/fido/virtual_fido_device.cc
@@ -51,7 +51,7 @@
 
 // CBBFunctionToVector converts a BoringSSL function that writes to a CBB to 
one
 // that returns a std::vector. Invoke for a function, f, with:
-//   CBBFunctionToVector<decltype(f), f>(args, to, f);
+//   CBBFunctionToVector<decltype(&f), f>(args, to, f);
 template <typename F, F function, typename... Args>
 std::vector<uint8_t> CBBFunctionToVector(Args&&... args) {
   uint8_t* der = nullptr;
@@ -102,7 +102,7 @@
   }
 
   std::vector<uint8_t> GetPKCS8PrivateKey() const override {
-    return CBBFunctionToVector<decltype(EVP_marshal_private_key),
+    return CBBFunctionToVector<decltype(&EVP_marshal_private_key),
                                EVP_marshal_private_key>(pkey_.get());
   }
 
@@ -122,7 +122,7 @@
 
   std::vector<uint8_t> GetX962PublicKey() const override {
     const EC_KEY* ec_key = EVP_PKEY_get0_EC_KEY(pkey_.get());
-    return CBBFunctionToVector<decltype(EC_POINT_point2cbb),
+    return CBBFunctionToVector<decltype(&EC_POINT_point2cbb),
                                EC_POINT_point2cbb>(
         EC_KEY_get0_group(ec_key), EC_KEY_get0_public_key(ec_key),
         POINT_CONVERSION_UNCOMPRESSED, /*ctx=*/nullptr);
@@ -172,7 +172,7 @@
         cbor::Writer::Write(cbor::Value(std::move(map))));
 
     std::vector<uint8_t> der_bytes(
-        CBBFunctionToVector<decltype(EVP_marshal_public_key),
+        CBBFunctionToVector<decltype(&EVP_marshal_public_key),
                             EVP_marshal_public_key>(pkey_.get()));
 
     return std::make_unique<PublicKey>(
++++++ chromium-84-gcc-DOMRect-constexpr.patch ++++++
>From 62f633b8ca2b2376ca3273e6df910feb4bd93578 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <[email protected]>
Date: Wed, 27 May 2020 19:23:12 +0000
Subject: [PATCH] GCC: DOMRect constexpr equal operator depends on non constexpr 
operators

Make operators 'inline' only.

Bug: 819294
Change-Id: If07442258b4ebce26c013c4dff830c1d61dff9e3
---

diff --git a/third_party/blink/renderer/core/geometry/dom_rect.h 
b/third_party/blink/renderer/core/geometry/dom_rect.h
index fede005..058c60a 100644
--- a/third_party/blink/renderer/core/geometry/dom_rect.h
+++ b/third_party/blink/renderer/core/geometry/dom_rect.h
@@ -34,11 +34,11 @@
   void setHeight(double height) { height_ = height; }
 };
 
-constexpr bool operator==(const DOMRect& lhs, const DOMRect& rhs) {
+inline bool operator==(const DOMRect& lhs, const DOMRect& rhs) {
   return lhs.x() == rhs.x() && lhs.y() == rhs.y() &&
          lhs.width() == rhs.width() && lhs.height() == rhs.height();
 }
-constexpr bool operator!=(const DOMRect& lhs, const DOMRect& rhs) {
+inline bool operator!=(const DOMRect& lhs, const DOMRect& rhs) {
   return !(lhs == rhs);
 }
 }  // namespace blink
++++++ chromium-83-gcc-include.patch -> chromium-84-gcc-include.patch ++++++
--- /work/SRC/openSUSE:Factory/chromium/chromium-83-gcc-include.patch   
2020-05-26 17:16:10.299566854 +0200
+++ /work/SRC/openSUSE:Factory/.chromium.new.3592/chromium-84-gcc-include.patch 
2020-07-21 15:43:23.575764114 +0200
@@ -1,75 +1,108 @@
-From 3681c96f54b34f60493cbbf5ec830f158e469799 Mon Sep 17 00:00:00 2001
+From 60e856c553f4532c2035b087dbdbdde42dbb5f09 Mon Sep 17 00:00:00 2001
 From: Stephan Hartmann <[email protected]>
-Date: Thu, 2 Apr 2020 14:35:44 +0000
-Subject: [PATCH] IWYU: std::find is defined in algorithm
+Date: Sat, 9 May 2020 11:33:04 +0000
+Subject: [PATCH] IWYU: memcpy is defined in cstring
 
 ---
- extensions/browser/install/crx_install_error.cc | 2 ++
- 1 file changed, 2 insertions(+)
+ cc/base/list_container_helper.cc | 1 +
+ 1 file changed, 1 insertion(+)
 
-diff --git a/extensions/browser/install/crx_install_error.cc 
b/extensions/browser/install/crx_install_error.cc
-index a9765bb..bd0d3e3 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"
+Index: chromium-84.0.4147.30/cc/base/list_container_helper.cc
+===================================================================
+--- chromium-84.0.4147.30.orig/cc/base/list_container_helper.cc
++++ chromium-84.0.4147.30/cc/base/list_container_helper.cc
+@@ -7,6 +7,7 @@
+ #include <stddef.h>
+ 
+ #include <algorithm>
++#include <cstring>
+ #include <vector>
+ 
+ #include "base/check_op.h"
+Index: chromium-84.0.4147.30/third_party/blink/common/input/web_touch_event.cc
+===================================================================
+--- 
chromium-84.0.4147.30.orig/third_party/blink/common/input/web_touch_event.cc
++++ chromium-84.0.4147.30/third_party/blink/common/input/web_touch_event.cc
+@@ -2,6 +2,8 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
  
-+#include <algorithm>
++#include <bitset>
 +
- #include "base/logging.h"
- #include "extensions/browser/install/sandboxed_unpacker_failure_reason.h"
+ #include "third_party/blink/public/common/input/web_touch_event.h"
  
--- 
-2.24.1
-
-From 80044e30e0014c4c322178e4b56ddbb10eede304 Mon Sep 17 00:00:00 2001
-From: Stephan Hartmann <[email protected]>
-Date: Thu, 9 Apr 2020 17:58:06 +0000
-Subject: [PATCH] IWYU: std::unique_ptr is defined in memory
-
----
- .../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 f5a7ab0..ef19cfa 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 <bitset>
+Index: 
chromium-84.0.4147.30/third_party/crashpad/crashpad/snapshot/minidump/minidump_context_converter.cc
+===================================================================
+--- 
chromium-84.0.4147.30.orig/third_party/crashpad/crashpad/snapshot/minidump/minidump_context_converter.cc
++++ 
chromium-84.0.4147.30/third_party/crashpad/crashpad/snapshot/minidump/minidump_context_converter.cc
+@@ -14,6 +14,8 @@
  
-+#include <memory>
+ #include "snapshot/minidump/minidump_context_converter.h"
+ 
++#include <cstring>
 +
- #include "base/optional.h"
- #include "services/network/public/mojom/trust_tokens.mojom-blink-forward.h"
- #include "third_party/blink/renderer/core/core_export.h"
--- 
-2.24.1
-
-From 4f4d0a6d453bc22a6397dadaf6d866b4eb2d6b95 Mon Sep 17 00:00:00 2001
-From: Stephan Hartmann <[email protected]>
-Date: Fri, 10 Apr 2020 08:31:08 +0000
-Subject: [PATCH] IWYU: std::numeric_limits is defined in limits
-
----
- .../graph/policies/background_tab_loading_policy_helpers.cc     | 2 ++
- 1 file changed, 2 insertions(+)
-
-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 6ab117b..43aa602 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
-@@ -2,6 +2,8 @@
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
+ #include "base/stl_util.h"
+ #include "minidump/minidump_context.h"
+ 
+Index: 
chromium-84.0.4147.30/third_party/crashpad/crashpad/util/linux/ptrace_client.cc
+===================================================================
+--- 
chromium-84.0.4147.30.orig/third_party/crashpad/crashpad/util/linux/ptrace_client.cc
++++ 
chromium-84.0.4147.30/third_party/crashpad/crashpad/util/linux/ptrace_client.cc
+@@ -17,6 +17,7 @@
+ #include <errno.h>
+ #include <stdio.h>
+ 
++#include <cstring>
+ #include <string>
+ 
+ #include "base/logging.h"
+Index: 
chromium-84.0.4147.30/third_party/crashpad/crashpad/util/net/http_multipart_builder.cc
+===================================================================
+--- 
chromium-84.0.4147.30.orig/third_party/crashpad/crashpad/util/net/http_multipart_builder.cc
++++ 
chromium-84.0.4147.30/third_party/crashpad/crashpad/util/net/http_multipart_builder.cc
+@@ -16,6 +16,7 @@
+ 
+ #include <sys/types.h>
+ 
++#include <cstring>
+ #include <utility>
+ #include <vector>
+ 
+Index: 
chromium-84.0.4147.30/third_party/crashpad/crashpad/util/net/http_transport_socket.cc
+===================================================================
+--- 
chromium-84.0.4147.30.orig/third_party/crashpad/crashpad/util/net/http_transport_socket.cc
++++ 
chromium-84.0.4147.30/third_party/crashpad/crashpad/util/net/http_transport_socket.cc
+@@ -19,6 +19,8 @@
+ #include <poll.h>
+ #include <sys/socket.h>
  
-+#include <limits>
++#include <cstring>
 +
- #include 
"chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.h"
+ #include "base/logging.h"
+ #include "base/macros.h"
+ #include "base/numerics/safe_conversions.h"
+Index: 
chromium-84.0.4147.30/third_party/crashpad/crashpad/util/process/process_memory.cc
+===================================================================
+--- 
chromium-84.0.4147.30.orig/third_party/crashpad/crashpad/util/process/process_memory.cc
++++ 
chromium-84.0.4147.30/third_party/crashpad/crashpad/util/process/process_memory.cc
+@@ -15,6 +15,7 @@
+ #include "util/process/process_memory.h"
+ 
+ #include <algorithm>
++#include <cstring>
+ 
+ #include "base/logging.h"
+ #include "util/numeric/safe_assignment.h"
+Index: 
chromium-84.0.4147.30/third_party/crashpad/crashpad/util/stream/log_output_stream.cc
+===================================================================
+--- 
chromium-84.0.4147.30.orig/third_party/crashpad/crashpad/util/stream/log_output_stream.cc
++++ 
chromium-84.0.4147.30/third_party/crashpad/crashpad/util/stream/log_output_stream.cc
+@@ -15,6 +15,7 @@
+ #include "util/stream/log_output_stream.h"
+ 
+ #include <algorithm>
++#include <cstring>
+ 
  #include "base/logging.h"
  
--- 
-2.24.1
-

++++++ chromium-82-gcc-noexcept.patch -> chromium-84-gcc-noexcept.patch ++++++
--- /work/SRC/openSUSE:Factory/chromium/chromium-82-gcc-noexcept.patch  
2020-05-26 17:16:08.671563325 +0200
+++ 
/work/SRC/openSUSE:Factory/.chromium.new.3592/chromium-84-gcc-noexcept.patch    
    2020-07-21 15:43:24.263765021 +0200
@@ -1,16 +1,3 @@
-diff --git a/ui/color/color_set.cc b/ui/color/color_set.cc
-index 56564d7..2798a3c 100644
---- a/ui/color/color_set.cc
-+++ b/ui/color/color_set.cc
-@@ -11,7 +11,7 @@ ColorSet::ColorSet(ColorSetId id, ColorMap&& colors)
- 
- ColorSet::ColorSet(ColorSet&&) noexcept = default;
- 
--ColorSet& ColorSet::operator=(ColorSet&&) noexcept = default;
-+ColorSet& ColorSet::operator=(ColorSet&&) = default;
- 
- ColorSet::~ColorSet() = default;
- 
 diff --git a/third_party/blink/public/platform/cross_variant_mojo_util.h 
b/third_party/blink/public/platform/cross_variant_mojo_util.h
 index dee0b95..0c83580 100644
 --- a/third_party/blink/public/platform/cross_variant_mojo_util.h
@@ -33,3 +20,38 @@
    CrossVariantMojoAssociatedRemote& operator=(
        CrossVariantMojoAssociatedRemote&&) noexcept = default;
  
+diff --git a/base/containers/flat_map.h b/base/containers/flat_map.h
+index ed82c5d..1af6b40 100644
+--- a/base/containers/flat_map.h
++++ b/base/containers/flat_map.h
+@@ -202,7 +202,7 @@ class flat_map : public ::base::internal::flat_tree<
+   ~flat_map() = default;
+ 
+   flat_map& operator=(const flat_map&) = default;
+-  flat_map& operator=(flat_map&&) = default;
++  flat_map& operator=(flat_map&&) noexcept = default;
+   // Takes the first if there are duplicates in the initializer list.
+   flat_map& operator=(std::initializer_list<value_type> ilist);
+ 
+diff --git a/base/containers/flat_tree.h b/base/containers/flat_tree.h
+index 9412ff6..8ecc1fa 100644
+--- a/base/containers/flat_tree.h
++++ b/base/containers/flat_tree.h
+@@ -125,7 +125,7 @@ class flat_tree {
+   // Assume that move assignment invalidates iterators and references.
+ 
+   flat_tree& operator=(const flat_tree&);
+-  flat_tree& operator=(flat_tree&&);
++  flat_tree& operator=(flat_tree&&) noexcept;
+   // Takes the first if there are duplicates in the initializer list.
+   flat_tree& operator=(std::initializer_list<value_type> ilist);
+ 
+@@ -519,7 +519,7 @@ auto flat_tree<Key, Value, GetKeyFromValue, 
KeyCompare>::operator=(
+ 
+ template <class Key, class Value, class GetKeyFromValue, class KeyCompare>
+ auto flat_tree<Key, Value, GetKeyFromValue, KeyCompare>::operator=(flat_tree 
&&)
+-    -> flat_tree& = default;
++    noexcept -> flat_tree& = default;
+ 
+ template <class Key, class Value, class GetKeyFromValue, class KeyCompare>
+ auto flat_tree<Key, Value, GetKeyFromValue, KeyCompare>::operator=(

++++++ chromium-83-gcc-template.patch -> chromium-84-gcc-template.patch ++++++
--- /work/SRC/openSUSE:Factory/chromium/chromium-83-gcc-template.patch  
2020-05-26 17:16:14.107575108 +0200
+++ 
/work/SRC/openSUSE:Factory/.chromium.new.3592/chromium-84-gcc-template.patch    
    2020-07-21 15:43:24.831765770 +0200
@@ -1,69 +1,146 @@
-From 8d115ddda495d0d2e1e1447392db6e9e6a8a1b32 Mon Sep 17 00:00:00 2001
+From 2cd1ba11c364fc0f2f06c5fa3c15ff75ee860966 Mon Sep 17 00:00:00 2001
 From: Stephan Hartmann <[email protected]>
-Date: Tue, 07 Apr 2020 00:23:57 +0000
-Subject: [PATCH] GCC: fix template specialization in WTF::VectorMover
+Date: Sat, 2 May 2020 16:42:38 +0000
+Subject: [PATCH] GCC: fix template specialization in WTF::VectorBuffer
 
 GCC complains that explicit specialization in non-namespace scope
-is happening for MoveOverlappingImpl. However, secialization is
+is happening for InitInlinedBuffer. However, specialization is
 not really necessary here with templates and can be moved
-into MoveOverlappingImpl method without changing generated code.
-
-Bug: 819294
-Change-Id: I90b893b9701748302f7b900fbcc2c341685fe0d3
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2126290
-Reviewed-by: Kent Tamura <[email protected]>
-Commit-Queue: Kent Tamura <[email protected]>
-Cr-Commit-Position: refs/heads/master@{#756880}
+into InitInlinedBuffer method without changing generated code.
 ---
+ third_party/blink/renderer/platform/wtf/vector.h | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
 
 diff --git a/third_party/blink/renderer/platform/wtf/vector.h 
b/third_party/blink/renderer/platform/wtf/vector.h
-index 632d308..82aaf96 100644
+index 81a4e7b..30ffa89 100644
 --- a/third_party/blink/renderer/platform/wtf/vector.h
 +++ b/third_party/blink/renderer/platform/wtf/vector.h
-@@ -205,30 +205,23 @@
-     }
+@@ -950,11 +950,10 @@ class VectorBuffer : protected VectorBufferBase<T, 
Allocator> {
+     return unsafe_reinterpret_cast_ptr<const T*>(inline_buffer_);
    }
  
 -  template <bool = Allocator::kIsGarbageCollected>
--  static void MoveOverlappingImpl(const T* src, const T* src_end, T* dst);
+-  void InitInlinedBuffer() {}
 -  template <>
--  static void MoveOverlappingImpl<false>(const T* src,
--                                         const T* src_end,
--                                         T* dst) {
--    memmove(dst, src,
--            reinterpret_cast<const char*>(src_end) -
--                reinterpret_cast<const char*>(src));
+-  void InitInlinedBuffer<true>() {
+-    memset(&inline_buffer_, 0, kInlineBufferSize);
++  void InitInlinedBuffer() {
++    if ( Allocator::kIsGarbageCollected ) {
++      memset(&inline_buffer_, 0, kInlineBufferSize);
++    }
+   }
+ 
+   alignas(T) char inline_buffer_[kInlineBufferSize];
+-- 
+2.26.2
+From 421aca221966c7d736c4bc5f268a730199f02fb9 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <[email protected]>
+Date: Sat, 9 May 2020 14:59:07 +0000
+Subject: [PATCH] GCC: fix template specialization in TraceInCollectionTrait
+
+GCC complains that explicit specialization in non-namespace scope
+is happening for TraceImpl. Move TraceImpl implementations into
+different nested classes and select implementation using
+std::conditional.
+---
+ .../heap_hash_table_backing.h                 | 80 ++++++++++---------
+ 1 file changed, 41 insertions(+), 39 deletions(-)
+
+diff --git 
a/third_party/blink/renderer/platform/heap/collection_support/heap_hash_table_backing.h
 
b/third_party/blink/renderer/platform/heap/collection_support/heap_hash_table_backing.h
+index a6c73f5..068ab8e 100644
+--- 
a/third_party/blink/renderer/platform/heap/collection_support/heap_hash_table_backing.h
++++ 
b/third_party/blink/renderer/platform/heap/collection_support/heap_hash_table_backing.h
+@@ -241,50 +241,52 @@ struct TraceInCollectionTrait<kNoWeakHandling,
+ 
+   static void Trace(blink::Visitor* visitor,
+                     const KeyValuePair<Key, Value>& self) {
+-    TraceImpl(visitor, self);
++    TraceImpl::TraceImpl(visitor, self);
+   }
+ 
+  private:
+-  template <bool = EphemeronHelper::is_ephemeron>
+-  static void TraceImpl(blink::Visitor* visitor,
+-                        const KeyValuePair<Key, Value>& self);
+-
+-  // Strongification of ephemerons, i.e., Weak/Strong and Strong/Weak.
+-  template <>
+-  static void TraceImpl<true>(blink::Visitor* visitor,
+-                              const KeyValuePair<Key, Value>& self) {
++  struct TraceImplEphemerons {
+     // Strongification of ephemerons, i.e., Weak/Strong and Strong/Weak.
+-    // The helper ensures that helper.key always refers to the weak part and
+-    // helper.value always refers to the dependent part.
+-    // We distinguish ephemeron from Weak/Weak and Strong/Strong to allow 
users
+-    // to override visitation behavior. An example is creating a heap 
snapshot,
+-    // where it is useful to annotate values as being kept alive from keys
+-    // rather than the table.
+-    EphemeronHelper helper(&self.key, &self.value);
+-    // Strongify the weak part.
+-    blink::TraceCollectionIfEnabled<
+-        kNoWeakHandling, typename EphemeronHelper::KeyType,
+-        typename EphemeronHelper::KeyTraits>::Trace(visitor, helper.key);
+-    // Strongify the dependent part.
+-    visitor->TraceEphemeron(
+-        *helper.key, helper.value,
+-        blink::TraceCollectionIfEnabled<
+-            kNoWeakHandling, typename EphemeronHelper::ValueType,
+-            typename EphemeronHelper::ValueTraits>::Trace);
 -  }
++    static void TraceImpl(blink::Visitor* visitor,
++                          const KeyValuePair<Key, Value>& self) {
++      // Strongification of ephemerons, i.e., Weak/Strong and Strong/Weak.
++      // The helper ensures that helper.key always refers to the weak part and
++      // helper.value always refers to the dependent part.
++      // We distinguish ephemeron from Weak/Weak and Strong/Strong to allow 
users
++      // to override visitation behavior. An example is creating a heap 
snapshot,
++      // where it is useful to annotate values as being kept alive from keys
++      // rather than the table.
++      EphemeronHelper helper(&self.key, &self.value);
++      // Strongify the weak part.
++      blink::TraceCollectionIfEnabled<
++          kNoWeakHandling, typename EphemeronHelper::KeyType,
++          typename EphemeronHelper::KeyTraits>::Trace(visitor, helper.key);
++      // Strongify the dependent part.
++      visitor->TraceEphemeron(
++          *helper.key, helper.value,
++          blink::TraceCollectionIfEnabled<
++              kNoWeakHandling, typename EphemeronHelper::ValueType,
++              typename EphemeronHelper::ValueTraits>::Trace);
++    }
++  };
+ 
 -  template <>
--  static void MoveOverlappingImpl<true>(const T* src,
--                                        const T* src_end,
--                                        T* dst) {
--    if (src == dst)
--      return;
--    if (dst < src) {
--      for (; src < src_end; ++src, ++dst)
--        AtomicWriteMemcpy<sizeof(T)>(dst, src);
-+  static void MoveOverlappingImpl(const T* src, const T* src_end, T* dst) {
-+    if (Allocator::kIsGarbageCollected) {
-+      if (src == dst)
-+        return;
-+      if (dst < src) {
-+        for (; src < src_end; ++src, ++dst)
-+          AtomicWriteMemcpy<sizeof(T)>(dst, src);
-+      } else {
-+        --src_end;
-+        T* dst_end = dst + (src_end - src);
-+        for (; src_end >= src; --src_end, --dst_end)
-+          AtomicWriteMemcpy<sizeof(T)>(dst_end, src_end);
-+      }
-     } else {
--      --src_end;
--      T* dst_end = dst + (src_end - src);
--      for (; src_end >= src; --src_end, --dst_end)
--        AtomicWriteMemcpy<sizeof(T)>(dst_end, src_end);
-+      memmove(dst, src,
-+              reinterpret_cast<const char*>(src_end) -
-+                  reinterpret_cast<const char*>(src));
-     }
-   }
+-  static void TraceImpl<false>(blink::Visitor* visitor,
+-                               const KeyValuePair<Key, Value>& self) {
+-    // Strongification of non-ephemeron KVP, i.e., Strong/Strong or Weak/Weak.
+-    // Order does not matter here.
+-    blink::TraceCollectionIfEnabled<
+-        kNoWeakHandling, Key, typename Traits::KeyTraits>::Trace(visitor,
+-                                                                 &self.key);
+-    blink::TraceCollectionIfEnabled<
+-        kNoWeakHandling, Value,
+-        typename Traits::ValueTraits>::Trace(visitor, &self.value);
+-  }
++  struct TraceImplDefault {
++    static void TraceImpl(blink::Visitor* visitor,
++                          const KeyValuePair<Key, Value>& self) {
++      // Strongification of non-ephemeron KVP, i.e., Strong/Strong or 
Weak/Weak.
++      // Order does not matter here.
++      blink::TraceCollectionIfEnabled<
++          kNoWeakHandling, Key, typename Traits::KeyTraits>::Trace(visitor,
++                                                                   &self.key);
++      blink::TraceCollectionIfEnabled<
++          kNoWeakHandling, Value,
++          typename Traits::ValueTraits>::Trace(visitor, &self.value);
++    }
++  };
++
++  using TraceImpl = typename std::conditional<EphemeronHelper::is_ephemeron,
++                                              TraceImplEphemerons,
++                                              TraceImplDefault>::type;
+ };
  
+ template <typename Key, typename Value, typename Traits>
+-- 
+2.26.2

++++++ chromium-84-gcc-unique_ptr.patch ++++++
>From 9b749dc5c7fdb0f4b1bd0df5901beb6af1b81ff1 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <[email protected]>
Date: Sat, 9 May 2020 16:46:07 +0000
Subject: [PATCH] GCC: fix DCHECK_EQ in NGInlineNode::SegmentScriptRuns

data->segments is a std::unique_ptr, but underlying CheckOpValueStr
has no overloaded function for std::unique_ptr.
However, overloaded function with const void* exists and can be
used with std::unique_ptr::get().
---
 .../blink/renderer/core/layout/ng/inline/ng_inline_node.cc      | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc 
b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc
index 55ca9e3..ee691df 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc
@@ -891,7 +891,7 @@ void NGInlineNode::SegmentText(NGInlineNodeData* data) {
 
 // Segment NGInlineItem by script, Emoji, and orientation using RunSegmenter.
 void NGInlineNode::SegmentScriptRuns(NGInlineNodeData* data) {
-  DCHECK_EQ(data->segments, nullptr);
+  DCHECK_EQ(data->segments.get(), nullptr);
 
   String& text_content = data->text_content;
   if (text_content.IsEmpty()) {
-- 
2.26.2

++++++ chromium-84-gcc-use-brace-initializer.patch ++++++
>From fff3279bcf904673d312893b09bfc53811028490 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <[email protected]>
Date: Thu, 28 May 2020 03:17:09 +0000
Subject: [PATCH] GCC: use brace-initializer for QuotaClientType base::flat_set

Constructing base::flat_set of QuotaClientType with parenthesis
constructor is ambiguous in GCC. Use brace-initializer to avoid
that problem.

Bug: 819294
Change-Id: Id33256a25d2af98d7be6ee570e2535a8b7bdf031
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2217554
Reviewed-by: Kinuko Yasuda <[email protected]>
Commit-Queue: Kinuko Yasuda <[email protected]>
Cr-Commit-Position: refs/heads/master@{#772542}
---

diff --git a/storage/browser/quota/quota_client_type.cc 
b/storage/browser/quota/quota_client_type.cc
index b9e9f62..a2daaa2 100644
--- a/storage/browser/quota/quota_client_type.cc
+++ b/storage/browser/quota/quota_client_type.cc
@@ -9,7 +9,7 @@
 namespace storage {
 
 const QuotaClientTypes& AllQuotaClientTypes() {
-  static base::NoDestructor<QuotaClientTypes> all({
+  static base::NoDestructor<QuotaClientTypes> all{{
       QuotaClientType::kFileSystem,
       QuotaClientType::kDatabase,
       QuotaClientType::kAppcache,
@@ -17,7 +17,7 @@
       QuotaClientType::kServiceWorkerCache,
       QuotaClientType::kServiceWorker,
       QuotaClientType::kBackgroundFetch,
-  });
+  }};
   return *all;
 }
 
++++++ chromium-84-mediaalloc.patch ++++++
--- /var/tmp/diff_new_pack.D51Lx3/_old  2020-07-21 15:44:46.175873030 +0200
+++ /var/tmp/diff_new_pack.D51Lx3/_new  2020-07-21 15:44:46.175873030 +0200
@@ -1,9 +1,7 @@
 https://bugs.chromium.org/p/chromium/issues/detail?id=1095962
 
-Index: chromium-83.0.4103.116/media/base/media.cc
-===================================================================
---- chromium-83.0.4103.116.orig/media/base/media.cc
-+++ chromium-83.0.4103.116/media/base/media.cc
+--- /media/base/media.cc
++++ /media/base/media.cc
 @@ -2,6 +2,8 @@
  // Use of this source code is governed by a BSD-style license that can be
  // found in the LICENSE file.
@@ -13,7 +11,7 @@
  #include "media/base/media.h"
  
  #include "base/allocator/buildflags.h"
-@@ -41,7 +43,7 @@ class MediaInitializer {
+@@ -41,7 +43,7 @@
  
  #if BUILDFLAG(USE_ALLOCATOR_SHIM)
      // Remove allocation limit from ffmpeg, so calls go down to shim layer.

++++++ chromium-84-nss-include.patch ++++++
>From 3a3effdd81e97bfc4f2698cd1f41b008355b0469 Mon Sep 17 00:00:00 2001
From: Raphael Kubo da Costa <[email protected]>
Date: Tue, 26 May 2020 16:34:45 +0000
Subject: [PATCH] scoped_nss_types.h: Include <certt.h> instead of
 <nss/certt.h>

Follow-up to commit 701cae5de ("Introduce a function to format a DER-encoded
SPKI for UI").

That is the format used by other files that include <certt.h>, and the
pkg-config configuration already passes -I/path/to/nss to the compiler.

This can potentially fix the non-sysroot build, as the NSS headers might be
installed in e.g. /usr/include/nss3 rather than /usr/include/nss.

Change-Id: I0461a7a7f8c93459f2281ea71c96434a74687ee8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2214390
Auto-Submit: Raphael Kubo da Costa <[email protected]>
Commit-Queue: David Benjamin <[email protected]>
Reviewed-by: David Benjamin <[email protected]>
Cr-Commit-Position: refs/heads/master@{#771840}
---
 crypto/scoped_nss_types.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/crypto/scoped_nss_types.h b/crypto/scoped_nss_types.h
index 2a3a6e1b25179..0a663ea7c3b37 100644
--- a/crypto/scoped_nss_types.h
+++ b/crypto/scoped_nss_types.h
@@ -5,9 +5,9 @@
 #ifndef CRYPTO_SCOPED_NSS_TYPES_H_
 #define CRYPTO_SCOPED_NSS_TYPES_H_
 
+#include <certt.h>
 #include <keyhi.h>
 #include <nss.h>
-#include <nss/certt.h>
 #include <pk11pub.h>
 #include <plarena.h>
 
++++++ chromium-84-ozone-include.patch ++++++
>From 70ea8ba2c50be2a4bc476261e7640d824b938c99 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <[email protected]>
Date: Sat, 13 Jun 2020 18:16:27 +0000
Subject: [PATCH] IWYU: add missing include for memset

---
 ui/events/ozone/evdev/event_device_info.cc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/ui/events/ozone/evdev/event_device_info.cc 
b/ui/events/ozone/evdev/event_device_info.cc
index efbc258..0c5f0a3 100644
--- a/ui/events/ozone/evdev/event_device_info.cc
+++ b/ui/events/ozone/evdev/event_device_info.cc
@@ -5,6 +5,7 @@
 #include "ui/events/ozone/evdev/event_device_info.h"
 
 #include <linux/input.h>
+#include <string.h>
 
 #include "base/files/file_path.h"
 #include "base/logging.h"
-- 
2.26.2

++++++ chromium-84-revert-manage-ManifestManagerHost-per-document.patch ++++++
commit fce18322d66ea6e67275e13242dae2a8c06d3ae2
Author: Yuzu Saijo <[email protected]>
Date:   Thu May 14 05:02:09 2020 +0000

    [content] Manage ManifestManagerHost per-document
    
    This CL converts ManifestManagerHost class away from being owned by
    WebContents and makes it a part of RenderDocumentHostUserData.
    
    We used to create an instance per-WebContents, but now it is created for
    document, and only for main-frame.
    
    Bug: 1077170
    Change-Id: I2a185a6cd6f290d3b904d359b55638bf09eaa79f
    Reviewed-on: 
https://chromium-review.googlesource.com/c/chromium/src/+/2147485
    Commit-Queue: Yuzu Saijo <[email protected]>
    Reviewed-by: Kinuko Yasuda <[email protected]>
    Reviewed-by: Kentaro Hara <[email protected]>
    Reviewed-by: Sreeja Kamishetty <[email protected]>
    Reviewed-by: Alexander Timin <[email protected]>
    Cr-Commit-Position: refs/heads/master@{#768647}

diff --git b/content/browser/devtools/protocol/page_handler.cc 
a/content/browser/devtools/protocol/page_handler.cc
index b1821434b975..929b63ab875e 100644
--- b/content/browser/devtools/protocol/page_handler.cc
+++ a/content/browser/devtools/protocol/page_handler.cc
@@ -961,14 +961,14 @@ Response PageHandler::SetDownloadBehavior(const 
std::string& behavior,
 
 void PageHandler::GetAppManifest(
     std::unique_ptr<GetAppManifestCallback> callback) {
-  if (!host_) {
+  WebContentsImpl* web_contents = GetWebContents();
+  if (!web_contents || !web_contents->GetManifestManagerHost()) {
     callback->sendFailure(Response::ServerError("Cannot retrieve manifest"));
     return;
   }
-  ManifestManagerHost::GetOrCreateForCurrentDocument(host_->GetMainFrame())
-      ->RequestManifestDebugInfo(base::BindOnce(&PageHandler::GotManifest,
-                                                weak_factory_.GetWeakPtr(),
-                                                std::move(callback)));
+  web_contents->GetManifestManagerHost()->RequestManifestDebugInfo(
+      base::BindOnce(&PageHandler::GotManifest, weak_factory_.GetWeakPtr(),
+                     std::move(callback)));
 }
 
 WebContentsImpl* PageHandler::GetWebContents() {
diff --git 
b/content/browser/frame_host/render_document_host_user_data_browsertest.cc 
a/content/browser/frame_host/render_document_host_user_data_browsertest.cc
index 09dff7842517..290e5509b448 100644
--- b/content/browser/frame_host/render_document_host_user_data_browsertest.cc
+++ a/content/browser/frame_host/render_document_host_user_data_browsertest.cc
@@ -88,7 +88,7 @@ class RenderDocumentHostUserDataTest : public 
ContentBrowserTest {
 
 // Test basic functionality of RenderDocumentHostUserData.
 IN_PROC_BROWSER_TEST_F(RenderDocumentHostUserDataTest,
-                       GetCreateAndDeleteForCurrentDocument) {
+                       GetAndCreateForCurrentDocument) {
   ASSERT_TRUE(embedded_test_server()->Start());
   GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html"));
 
@@ -104,14 +104,8 @@ IN_PROC_BROWSER_TEST_F(RenderDocumentHostUserDataTest,
   // 3) Create Data and check that GetForCurrentDocument shouldn't return null
   // now.
   Data::CreateForCurrentDocument(rfh_a);
-  base::WeakPtr<Data> created_data =
-      Data::GetForCurrentDocument(rfh_a)->GetWeakPtr();
-  EXPECT_TRUE(created_data);
-
-  // 4) Delete Data and check that GetForCurrentDocument should return null.
-  Data::DeleteForCurrentDocument(rfh_a);
-  EXPECT_FALSE(created_data);
-  EXPECT_FALSE(Data::GetForCurrentDocument(rfh_a));
+  data = Data::GetForCurrentDocument(rfh_a);
+  EXPECT_TRUE(data);
 }
 
 // Tests that RenderDocumentHostUserData objects are different for each
diff --git b/content/browser/frame_host/render_frame_host_impl.cc 
a/content/browser/frame_host/render_frame_host_impl.cc
index 30bc648d74ef..d10d99df7f1f 100644
--- b/content/browser/frame_host/render_frame_host_impl.cc
+++ a/content/browser/frame_host/render_frame_host_impl.cc
@@ -75,7 +75,6 @@
 #include "content/browser/loader/navigation_url_loader_impl.h"
 #include "content/browser/loader/prefetch_url_loader_service.h"
 #include "content/browser/log_console_message.h"
-#include "content/browser/manifest/manifest_manager_host.h"
 #include "content/browser/media/capture/audio_mirroring_manager.h"
 #include "content/browser/media/media_interface_proxy.h"
 #include "content/browser/media/webaudio/audio_context_manager_impl.h"
@@ -6146,15 +6145,6 @@ void RenderFrameHostImpl::SetUpMojoIfNeeded() {
               std::make_unique<ActiveURLMessageFilter>(impl));
         },
         base::Unretained(this)));
-
-    associated_registry_->AddInterface(base::BindRepeating(
-        [](RenderFrameHostImpl* impl,
-           mojo::PendingAssociatedReceiver<
-               blink::mojom::ManifestUrlChangeObserver> receiver) {
-          ManifestManagerHost::GetOrCreateForCurrentDocument(impl)
-              ->BindObserver(std::move(receiver));
-        },
-        base::Unretained(this)));
   }
 
   associated_registry_->AddInterface(base::BindRepeating(
diff --git b/content/browser/frame_host/render_frame_host_impl.h 
a/content/browser/frame_host/render_frame_host_impl.h
index bfd421386795..2bba134e0dc0 100644
--- b/content/browser/frame_host/render_frame_host_impl.h
+++ a/content/browser/frame_host/render_frame_host_impl.h
@@ -1595,10 +1595,6 @@ class CONTENT_EXPORT RenderFrameHostImpl
     document_associated_data_.SetUserData(key, std::move(data));
   }
 
-  void RemoveRenderDocumentHostUserData(const void* key) {
-    document_associated_data_.RemoveUserData(key);
-  }
-
   // Returns the child RenderFrameHostImpl if |child_frame_routing_id| is an
   // immediate child of this FrameTreeNode. |child_frame_routing_id| is
   // considered untrusted, so the renderer process is killed if it refers to a
diff --git b/content/browser/manifest/manifest_manager_host.cc 
a/content/browser/manifest/manifest_manager_host.cc
index 68ea016c62eb..b063e0d1e98e 100644
--- b/content/browser/manifest/manifest_manager_host.cc
+++ a/content/browser/manifest/manifest_manager_host.cc
@@ -9,34 +9,25 @@
 #include "base/bind.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/web_contents.h"
 #include "services/service_manager/public/cpp/interface_provider.h"
 #include 
"third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
 #include "third_party/blink/public/common/manifest/manifest.h"
 
 namespace content {
 
-ManifestManagerHost::ManifestManagerHost(RenderFrameHost* render_frame_host)
-    : manifest_manager_frame_(render_frame_host) {
-  // Check that |manifest_manager_frame_| is a main frame.
-  DCHECK(!manifest_manager_frame_->GetParent());
-}
+ManifestManagerHost::ManifestManagerHost(WebContents* web_contents)
+    : WebContentsObserver(web_contents),
+      manifest_url_change_observer_receivers_(web_contents, this) {}
 
 ManifestManagerHost::~ManifestManagerHost() {
   OnConnectionError();
 }
 
-void ManifestManagerHost::BindObserver(
-    mojo::PendingAssociatedReceiver<blink::mojom::ManifestUrlChangeObserver>
-        receiver) {
-  manifest_url_change_observer_receiver_.Bind(std::move(receiver));
-}
-
-ManifestManagerHost* ManifestManagerHost::GetOrCreateForCurrentDocument(
-    RenderFrameHostImpl* rfh) {
-  DCHECK(rfh->is_main_frame());
-  if (!GetForCurrentDocument(rfh))
-    CreateForCurrentDocument(rfh);
-  return GetForCurrentDocument(rfh);
+void ManifestManagerHost::RenderFrameDeleted(
+    RenderFrameHost* render_frame_host) {
+  if (render_frame_host == manifest_manager_frame_)
+    OnConnectionError();
 }
 
 void ManifestManagerHost::GetManifest(GetManifestCallback callback) {
@@ -54,7 +45,11 @@ void ManifestManagerHost::RequestManifestDebugInfo(
 }
 
 blink::mojom::ManifestManager& ManifestManagerHost::GetManifestManager() {
+  if (manifest_manager_frame_ != web_contents()->GetMainFrame())
+    OnConnectionError();
+
   if (!manifest_manager_) {
+    manifest_manager_frame_ = web_contents()->GetMainFrame();
     manifest_manager_frame_->GetRemoteInterfaces()->GetInterface(
         manifest_manager_.BindNewPipeAndPassReceiver());
     manifest_manager_.set_disconnect_handler(base::BindOnce(
@@ -64,6 +59,8 @@ blink::mojom::ManifestManager& 
ManifestManagerHost::GetManifestManager() {
 }
 
 void ManifestManagerHost::OnConnectionError() {
+  manifest_manager_frame_ = nullptr;
+  manifest_manager_.reset();
   std::vector<GetManifestCallback> callbacks;
   for (CallbackMap::iterator it(&callbacks_); !it.IsAtEnd(); it.Advance()) {
     callbacks.push_back(std::move(*it.GetCurrentValue()));
@@ -71,10 +68,6 @@ void ManifestManagerHost::OnConnectionError() {
   callbacks_.Clear();
   for (auto& callback : callbacks)
     std::move(callback).Run(GURL(), blink::Manifest());
-
-  if (GetForCurrentDocument(manifest_manager_frame_)) {
-    DeleteForCurrentDocument(manifest_manager_frame_);
-  }
 }
 
 void ManifestManagerHost::OnRequestManifestResponse(
@@ -88,16 +81,12 @@ void ManifestManagerHost::OnRequestManifestResponse(
 
 void ManifestManagerHost::ManifestUrlChanged(
     const base::Optional<GURL>& manifest_url) {
-  if (!manifest_manager_frame_->IsCurrent())
+  if (manifest_url_change_observer_receivers_.GetCurrentTargetFrame() !=
+      web_contents()->GetMainFrame()) {
     return;
-
-  // TODO(yuzus): |NotifyManifestUrlChanged| should start taking a
-  // |RenderFrameHost| parameter.
-  WebContents* web_contents =
-      WebContents::FromRenderFrameHost(manifest_manager_frame_);
-  static_cast<WebContentsImpl*>(web_contents)
+  }
+  static_cast<WebContentsImpl*>(web_contents())
       ->NotifyManifestUrlChanged(manifest_url);
 }
 
-RENDER_DOCUMENT_HOST_USER_DATA_KEY_IMPL(ManifestManagerHost)
 }  // namespace content
diff --git b/content/browser/manifest/manifest_manager_host.h 
a/content/browser/manifest/manifest_manager_host.h
index 57f51dc9fad7..3dc0bbf6e1ad 100644
--- b/content/browser/manifest/manifest_manager_host.h
+++ a/content/browser/manifest/manifest_manager_host.h
@@ -8,8 +8,8 @@
 #include "base/callback_forward.h"
 #include "base/containers/id_map.h"
 #include "base/macros.h"
-#include "content/public/browser/render_document_host_user_data.h"
-#include "mojo/public/cpp/bindings/associated_receiver.h"
+#include "content/public/browser/web_contents_observer.h"
+#include "content/public/browser/web_contents_receiver_set.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "third_party/blink/public/mojom/manifest/manifest_manager.mojom.h"
 #include "third_party/blink/public/mojom/manifest/manifest_observer.mojom.h"
@@ -21,16 +21,16 @@ struct Manifest;
 namespace content {
 
 class RenderFrameHost;
-class RenderFrameHostImpl;
+class WebContents;
 
 // ManifestManagerHost is a helper class that allows callers to get the 
Manifest
 // associated with the main frame of the observed WebContents. It handles the
 // IPC messaging with the child process.
 // TODO(mlamouri): keep a cached version and a dirty bit here.
-class ManifestManagerHost
-    : public RenderDocumentHostUserData<ManifestManagerHost>,
-      public blink::mojom::ManifestUrlChangeObserver {
+class ManifestManagerHost : public WebContentsObserver,
+                            public blink::mojom::ManifestUrlChangeObserver {
  public:
+  explicit ManifestManagerHost(WebContents* web_contents);
   ~ManifestManagerHost() override;
 
   using GetManifestCallback =
@@ -44,18 +44,10 @@ class ManifestManagerHost
   void RequestManifestDebugInfo(
       blink::mojom::ManifestManager::RequestManifestDebugInfoCallback 
callback);
 
-  void BindObserver(
-      mojo::PendingAssociatedReceiver<blink::mojom::ManifestUrlChangeObserver>
-          receiver);
-
-  static ManifestManagerHost* GetOrCreateForCurrentDocument(
-      RenderFrameHostImpl* rfh);
+  // WebContentsObserver
+  void RenderFrameDeleted(RenderFrameHost* render_frame_host) override;
 
  private:
-  explicit ManifestManagerHost(RenderFrameHost* render_frame_host);
-
-  friend class RenderDocumentHostUserData<ManifestManagerHost>;
-
   using CallbackMap = base::IDMap<std::unique_ptr<GetManifestCallback>>;
 
   blink::mojom::ManifestManager& GetManifestManager();
@@ -68,14 +60,13 @@ class ManifestManagerHost
   // blink::mojom::ManifestUrlChangeObserver:
   void ManifestUrlChanged(const base::Optional<GURL>& manifest_url) override;
 
-  RenderFrameHost* manifest_manager_frame_;
+  RenderFrameHost* manifest_manager_frame_ = nullptr;
   mojo::Remote<blink::mojom::ManifestManager> manifest_manager_;
   CallbackMap callbacks_;
 
-  mojo::AssociatedReceiver<blink::mojom::ManifestUrlChangeObserver>
-      manifest_url_change_observer_receiver_{this};
+  WebContentsFrameReceiverSet<blink::mojom::ManifestUrlChangeObserver>
+      manifest_url_change_observer_receivers_;
 
-  RENDER_DOCUMENT_HOST_USER_DATA_KEY_DECL();
   DISALLOW_COPY_AND_ASSIGN(ManifestManagerHost);
 };
 
diff --git b/content/browser/web_contents/web_contents_impl.cc 
a/content/browser/web_contents/web_contents_impl.cc
index 024415bb096e..115f480ce8c1 100644
--- b/content/browser/web_contents/web_contents_impl.cc
+++ a/content/browser/web_contents/web_contents_impl.cc
@@ -2122,6 +2122,8 @@ void WebContentsImpl::Init(const 
WebContents::CreateParams& params) {
 
   screen_orientation_provider_.reset(new ScreenOrientationProvider(this));
 
+  manifest_manager_host_.reset(new ManifestManagerHost(this));
+
 #if defined(OS_ANDROID)
   DateTimeChooserAndroid::CreateForWebContents(this);
 #endif
@@ -4202,10 +4204,7 @@ bool WebContentsImpl::WasEverAudible() {
 }
 
 void WebContentsImpl::GetManifest(GetManifestCallback callback) {
-  // TODO(yuzus, 1061899): Move this function to RenderFrameHostImpl.
-  ManifestManagerHost* manifest_manager_host =
-      ManifestManagerHost::GetOrCreateForCurrentDocument(GetMainFrame());
-  manifest_manager_host->GetManifest(std::move(callback));
+  manifest_manager_host_->GetManifest(std::move(callback));
 }
 
 void WebContentsImpl::ExitFullscreen(bool will_cause_resize) {
diff --git b/content/browser/web_contents/web_contents_impl.h 
a/content/browser/web_contents/web_contents_impl.h
index 59510b1f8744..e86be96fc23b 100644
--- b/content/browser/web_contents/web_contents_impl.h
+++ a/content/browser/web_contents/web_contents_impl.h
@@ -102,6 +102,7 @@ class DisplayCutoutHostImpl;
 class FindRequestManager;
 class JavaScriptDialogManager;
 class JavaScriptDialogNavigationDeferrer;
+class ManifestManagerHost;
 class MediaWebContentsObserver;
 class NFCHost;
 class PluginContentOriginAllowlist;
@@ -311,6 +312,10 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents,
 
   void NotifyManifestUrlChanged(const base::Optional<GURL>& manifest_url);
 
+  ManifestManagerHost* GetManifestManagerHost() const {
+    return manifest_manager_host_.get();
+  }
+
 #if defined(OS_ANDROID)
   void SetMainFrameImportance(ChildProcessImportance importance);
 #endif
@@ -1897,6 +1902,8 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents,
 
   std::unique_ptr<ScreenOrientationProvider> screen_orientation_provider_;
 
+  std::unique_ptr<ManifestManagerHost> manifest_manager_host_;
+
   // The accessibility mode for all frames. This is queried when each frame
   // is created, and broadcast to all frames when it changes.
   ui::AXMode accessibility_mode_;
diff --git b/content/public/browser/render_document_host_user_data.cc 
a/content/public/browser/render_document_host_user_data.cc
index 3b58bf8a3c5e..b1b385455e61 100644
--- b/content/public/browser/render_document_host_user_data.cc
+++ a/content/public/browser/render_document_host_user_data.cc
@@ -23,8 +23,4 @@ void SetRenderDocumentHostUserData(
       key, std::move(data));
 }
 
-void RemoveRenderDocumentHostUserData(RenderFrameHost* rfh, const void* key) {
-  
static_cast<RenderFrameHostImpl*>(rfh)->RemoveRenderDocumentHostUserData(key);
-}
-
 }  // namespace content
diff --git b/content/public/browser/render_document_host_user_data.h 
a/content/public/browser/render_document_host_user_data.h
index a138fd60aa2a..f55f24f60992 100644
--- b/content/public/browser/render_document_host_user_data.h
+++ a/content/public/browser/render_document_host_user_data.h
@@ -22,9 +22,6 @@ CONTENT_EXPORT void SetRenderDocumentHostUserData(
     const void* key,
     std::unique_ptr<base::SupportsUserData::Data> data);
 
-CONTENT_EXPORT void RemoveRenderDocumentHostUserData(RenderFrameHost* rfh,
-                                                     const void* key);
-
 // This class approximates the lifetime of a single blink::Document in the
 // browser process. At the moment RenderFrameHost can correspond to multiple
 // blink::Documents (when RenderFrameHost is reused for same-process
@@ -85,12 +82,6 @@ class RenderDocumentHostUserData : public 
base::SupportsUserData::Data {
     return static_cast<T*>(GetRenderDocumentHostUserData(rfh, UserDataKey()));
   }
 
-  static void DeleteForCurrentDocument(RenderFrameHost* rfh) {
-    DCHECK(rfh);
-    DCHECK(GetForCurrentDocument(rfh));
-    RemoveRenderDocumentHostUserData(rfh, UserDataKey());
-  }
-
   static const void* UserDataKey() { return &T::kUserDataKey; }
 };
 
++++++ chromium-84-std-vector-const.patch ++++++
>From df982a547c5e88777a6134e5d18a1482d933f1cf Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <[email protected]>
Date: Wed, 27 May 2020 10:38:26 +0000
Subject: [PATCH] libstdc++: std::vector must have non-const value_type

Bug: 957519
Change-Id: I535b3bcf318f98cecbf4be1520ffe4126abcacd8
---

diff --git a/extensions/common/features/feature_flags.cc 
b/extensions/common/features/feature_flags.cc
index 5b63764..7efa308 100644
--- a/extensions/common/features/feature_flags.cc
+++ b/extensions/common/features/feature_flags.cc
@@ -19,7 +19,7 @@
 constexpr base::Feature kFeatureFlags[] = {
     {"DeclarativeNetRequest", base::FEATURE_ENABLED_BY_DEFAULT}};
 
-const std::vector<const base::Feature>* g_feature_flags_test_override = 
nullptr;
+const std::vector<base::Feature>* g_feature_flags_test_override = nullptr;
 
 template <typename T>
 const base::Feature* GetFeature(T begin,
@@ -52,8 +52,8 @@
 }
 
 ScopedFeatureFlagsOverride CreateScopedFeatureFlagsOverrideForTesting(
-    const std::vector<const base::Feature>* features) {
-  return base::AutoReset<const std::vector<const base::Feature>*>(
+    const std::vector<base::Feature>* features) {
+  return base::AutoReset<const std::vector<base::Feature>*>(
       &g_feature_flags_test_override, features);
 }
 
diff --git a/extensions/common/features/feature_flags.h 
b/extensions/common/features/feature_flags.h
index d1a5dd3..b57740b 100644
--- a/extensions/common/features/feature_flags.h
+++ b/extensions/common/features/feature_flags.h
@@ -25,9 +25,9 @@
 // in scope. Clients must ensure that |features| remains alive (non-dangling)
 // while the returned value is in scope.
 using ScopedFeatureFlagsOverride =
-    base::AutoReset<const std::vector<const base::Feature>*>;
+    base::AutoReset<const std::vector<base::Feature>*>;
 ScopedFeatureFlagsOverride CreateScopedFeatureFlagsOverrideForTesting(
-    const std::vector<const base::Feature>* features);
+    const std::vector<base::Feature>* features);
 
 }  // namespace extensions
 
++++++ chromium-83.0.4103.116.tar.xz -> chromium-84.0.4147.89.tar.xz ++++++
/work/SRC/openSUSE:Factory/chromium/chromium-83.0.4103.116.tar.xz 
/work/SRC/openSUSE:Factory/.chromium.new.3592/chromium-84.0.4147.89.tar.xz 
differ: char 26, line 1

++++++ chromium-blink-gcc-diagnostic-pragma.patch ++++++
diff --git a/third_party/blink/renderer/platform/heap/finalizer_traits.h 
b/third_party/blink/renderer/platform/heap/finalizer_traits.h
index b72703232..17a3abc1f 100644
--- a/third_party/blink/renderer/platform/heap/finalizer_traits.h
+++ b/third_party/blink/renderer/platform/heap/finalizer_traits.h
@@ -43,10 +43,7 @@ struct FinalizerTraitImpl<T, true> {
 // an object's base class has a virtual destructor. In case there is no virtual
 // destructor present, the object is always finalized through its leaf type. In
 // other words: there is no finalization through a base pointer.
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdelete-non-abstract-non-virtual-dtor"
       static_cast<T*>(obj)->~T();
-#pragma GCC diagnostic pop
     }
   };
   using FinalizeImpl =
++++++ chromium-clang_lto_visibility_public.patch ++++++
>From 4e380a0e486c080f36adad5b035787d64cfedb3e Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <[email protected]>
Date: Sat, 27 Jun 2020 13:59:20 +0000
Subject: [PATCH] GCC: fix mixing __attribute__ with C++ attributes

GCC does not support mixing __attribute__ with [[...]] attributes.
On the other hand [[clang::lto_visibility_public]] isn't supported
by GCC and only emits a warning. Therefore define Clang specific
attribute and leave it empty for GCC.
---
 base/compiler_specific.h                           | 6 ++++++
 third_party/blink/renderer/core/frame/frame_view.h | 3 ++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/base/compiler_specific.h b/base/compiler_specific.h
index c8a7649..8fd2252 100644
--- a/base/compiler_specific.h
+++ b/base/compiler_specific.h
@@ -292,4 +292,10 @@ inline constexpr bool AnalyzerAssumeTrue(bool arg) {
 
 #endif  // defined(__clang_analyzer__)
 
+#if defined(__clang__)
+#define LTO_VISIBILITY_PUBLIC [[clang::lto_visibility_public]]
+#else
+#define LTO_VISIBILITY_PUBLIC
+#endif
+
 #endif  // BASE_COMPILER_SPECIFIC_H_
diff --git a/third_party/blink/renderer/core/frame/frame_view.h 
b/third_party/blink/renderer/core/frame/frame_view.h
index aa5e42a..ec93d89 100644
--- a/third_party/blink/renderer/core/frame/frame_view.h
+++ b/third_party/blink/renderer/core/frame/frame_view.h
@@ -5,6 +5,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_FRAME_VIEW_H_
 #define THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_FRAME_VIEW_H_
 
+#include "base/compiler_specific.h"
 #include "third_party/blink/public/mojom/frame/lifecycle.mojom-blink.h"
 #include "third_party/blink/public/platform/viewport_intersection_state.h"
 #include "third_party/blink/renderer/core/frame/embedded_content_view.h"
@@ -20,7 +21,7 @@ struct IntrinsicSizingInfo;
 // clang::lto_visibility_public is necessary to prevent the compiler from
 // performing a vtable optimization that crashes the renderer. See
 // crbug.com/1062006.
-class CORE_EXPORT [[clang::lto_visibility_public]] FrameView
+class CORE_EXPORT LTO_VISIBILITY_PUBLIC FrameView
     : public EmbeddedContentView {
  public:
   FrameView(const IntRect& frame_rect) : EmbeddedContentView(frame_rect) {}
-- 
2.26.2

++++++ chromium-norar.patch ++++++
--- /var/tmp/diff_new_pack.D51Lx3/_old  2020-07-21 15:44:46.287873178 +0200
+++ /var/tmp/diff_new_pack.D51Lx3/_new  2020-07-21 15:44:46.287873178 +0200
@@ -1,8 +1,8 @@
-Index: chromium-83.0.4103.61/chrome/common/safe_browsing/BUILD.gn
+Index: chromium-84.0.4136.5/chrome/common/safe_browsing/BUILD.gn
 ===================================================================
---- chromium-83.0.4103.61.orig/chrome/common/safe_browsing/BUILD.gn
-+++ chromium-83.0.4103.61/chrome/common/safe_browsing/BUILD.gn
-@@ -57,39 +57,6 @@ if (safe_browsing_mode == 1) {
+--- chromium-84.0.4136.5.orig/chrome/common/safe_browsing/BUILD.gn
++++ chromium-84.0.4136.5/chrome/common/safe_browsing/BUILD.gn
+@@ -54,39 +54,6 @@ if (safe_browsing_mode == 1) {
      public_deps = [ "//components/safe_browsing/core:csd_proto" ]
    }
  
@@ -42,7 +42,7 @@
    source_set("disk_image_type_sniffer_mac") {
      sources = [
        "disk_image_type_sniffer_mac.cc",
-@@ -156,7 +123,6 @@ source_set("safe_browsing") {
+@@ -153,7 +120,6 @@ source_set("safe_browsing") {
        ":archive_analyzer_results",
        ":binary_feature_extractor",
        ":download_type_util",
@@ -50,10 +50,10 @@
        "//components/safe_browsing/core:features",
      ]
  
-Index: chromium-83.0.4103.61/chrome/common/safe_browsing/DEPS
+Index: chromium-84.0.4136.5/chrome/common/safe_browsing/DEPS
 ===================================================================
---- chromium-83.0.4103.61.orig/chrome/common/safe_browsing/DEPS
-+++ chromium-83.0.4103.61/chrome/common/safe_browsing/DEPS
+--- chromium-84.0.4136.5.orig/chrome/common/safe_browsing/DEPS
++++ chromium-84.0.4136.5/chrome/common/safe_browsing/DEPS
 @@ -1,6 +1,5 @@
  include_rules = [
    "+components/safe_browsing",
@@ -61,10 +61,10 @@
 -  "+third_party/unrar",
    "+third_party/zlib",
  ]
-Index: chromium-83.0.4103.61/chrome/services/file_util/safe_archive_analyzer.cc
+Index: chromium-84.0.4136.5/chrome/services/file_util/safe_archive_analyzer.cc
 ===================================================================
---- 
chromium-83.0.4103.61.orig/chrome/services/file_util/safe_archive_analyzer.cc
-+++ chromium-83.0.4103.61/chrome/services/file_util/safe_archive_analyzer.cc
+--- 
chromium-84.0.4136.5.orig/chrome/services/file_util/safe_archive_analyzer.cc
++++ chromium-84.0.4136.5/chrome/services/file_util/safe_archive_analyzer.cc
 @@ -46,10 +46,14 @@ void SafeArchiveAnalyzer::AnalyzeDmgFile
  void SafeArchiveAnalyzer::AnalyzeRarFile(base::File rar_file,
                                           base::File temporary_file,

++++++ chromium-quiche-invalid-offsetof.patch ++++++
>From 4cea86e76af28b28aa72cb7c69ff7cf242b2bd5d Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <[email protected]>
Date: Sat, 27 Jun 2020 12:18:05 +0000
Subject: [PATCH] GCC: supress invalid-offsetof warning

GCC emits a warning if offsetof is used for non-POD
types. However, GCC supports this and prints only
the warning, because it might be nonportable code.
Disable the warning for GCC with a pragma.
---
 net/third_party/quiche/src/quic/core/frames/quic_frame.h   | 7 +++++++
 .../quiche/src/quic/core/frames/quic_inlined_frame.h       | 7 +++++++
 2 files changed, 14 insertions(+)

diff --git a/net/third_party/quiche/src/quic/core/frames/quic_frame.h 
b/net/third_party/quiche/src/quic/core/frames/quic_frame.h
index 756b69f..aceba76 100644
--- a/net/third_party/quiche/src/quic/core/frames/quic_frame.h
+++ b/net/third_party/quiche/src/quic/core/frames/quic_frame.h
@@ -110,8 +110,15 @@ struct QUIC_EXPORT_PRIVATE QuicFrame {
 
 static_assert(sizeof(QuicFrame) <= 24,
               "Frames larger than 24 bytes should be referenced by pointer.");
+#if defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Winvalid-offsetof"
+#endif
 static_assert(offsetof(QuicStreamFrame, type) == offsetof(QuicFrame, type),
               "Offset of |type| must match in QuicFrame and QuicStreamFrame");
+#if defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
 
 // A inline size of 1 is chosen to optimize the typical use case of
 // 1-stream-frame in QuicTransmissionInfo.retransmittable_frames.
diff --git a/net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h 
b/net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h
index 08c4869..804e4bb 100644
--- a/net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h
+++ b/net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h
@@ -17,8 +17,15 @@ namespace quic {
 template <typename DerivedT>
 struct QUIC_EXPORT_PRIVATE QuicInlinedFrame {
   QuicInlinedFrame(QuicFrameType type) : type(type) {
+#if defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Winvalid-offsetof"
+#endif
     static_assert(offsetof(DerivedT, type) == 0,
                   "type must be the first field.");
+#if defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
     static_assert(sizeof(DerivedT) <= 24,
                   "Frames larger than 24 bytes should not be inlined.");
   }
-- 
2.26.2


++++++ chromium-vaapi-fix.patch ++++++
--- /var/tmp/diff_new_pack.D51Lx3/_old  2020-07-21 15:44:46.315873215 +0200
+++ /var/tmp/diff_new_pack.D51Lx3/_new  2020-07-21 15:44:46.315873215 +0200
@@ -2,11 +2,11 @@
 author: Maxim Baz
 origin: chromium-vaapi patches from Arch linux
 
-Index: chromium-81.0.4044.43/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
+Index: chromium-84.0.4147.68/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
 ===================================================================
---- 
chromium-81.0.4044.43.orig/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-+++ chromium-81.0.4044.43/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-@@ -712,6 +712,7 @@ void VaapiVideoDecodeAccelerator::Assign
+--- 
chromium-84.0.4147.68.orig/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
++++ chromium-84.0.4147.68/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
+@@ -677,6 +677,7 @@ void VaapiVideoDecodeAccelerator::Assign
    // |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's
    // internal decoded frame.
    if (buffer_allocation_mode_ != BufferAllocationMode::kNone &&
@@ -14,7 +14,7 @@
        !vpp_vaapi_wrapper_) {
      vpp_vaapi_wrapper_ = VaapiWrapper::Create(
          VaapiWrapper::kVideoProcess, VAProfileNone,
-@@ -743,7 +744,8 @@ void VaapiVideoDecodeAccelerator::Assign
+@@ -708,7 +709,8 @@ void VaapiVideoDecodeAccelerator::Assign
              : gfx::Size();
  
      std::unique_ptr<VaapiPicture> picture = vaapi_picture_factory_->Create(
@@ -24,7 +24,7 @@
              ? vaapi_wrapper_
              : vpp_vaapi_wrapper_,
          make_context_current_cb_, bind_image_cb_, buffer, size_to_bind);
-@@ -1199,6 +1201,14 @@ VaapiVideoDecodeAccelerator::GetSupporte
+@@ -1164,6 +1166,14 @@ VaapiVideoDecodeAccelerator::GetSupporte
  
  VaapiVideoDecodeAccelerator::BufferAllocationMode
  VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
@@ -39,20 +39,20 @@
    // TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT
    // |output_mode_| as well.
    if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT)
-@@ -1211,7 +1221,7 @@ VaapiVideoDecodeAccelerator::DecideBuffe
-   // depends on the bitstream and sometimes it's not enough to cover the 
amount
-   // of frames needed by the client pipeline (see b/133733739).
+@@ -1174,7 +1184,7 @@ VaapiVideoDecodeAccelerator::DecideBuffe
+   // associated format reconciliation copy, avoiding all internal buffer
+   // allocations.
    // TODO(crbug.com/911754): Enable for VP9 Profile 2.
 -  if (IsGeminiLakeOrLater() &&
 +  if (false && IsGeminiLakeOrLater() &&
-       (profile_ == VP9PROFILE_PROFILE0 || profile_ == VP8PROFILE_ANY)) {
+       (profile_ == VP9PROFILE_PROFILE0 || profile_ == VP8PROFILE_ANY ||
+        (profile_ >= H264PROFILE_MIN && profile_ <= H264PROFILE_MAX))) {
      // Add one to the reference frames for the one being currently egressed, 
and
-     // an extra allocation for both |client_| and |decoder_|, see
-Index: chromium-81.0.4044.43/media/gpu/vaapi/vaapi_video_decode_accelerator.h
+Index: chromium-84.0.4147.68/media/gpu/vaapi/vaapi_video_decode_accelerator.h
 ===================================================================
---- chromium-81.0.4044.43.orig/media/gpu/vaapi/vaapi_video_decode_accelerator.h
-+++ chromium-81.0.4044.43/media/gpu/vaapi/vaapi_video_decode_accelerator.h
-@@ -208,6 +208,7 @@ class MEDIA_GPU_EXPORT VaapiVideoDecodeA
+--- chromium-84.0.4147.68.orig/media/gpu/vaapi/vaapi_video_decode_accelerator.h
++++ chromium-84.0.4147.68/media/gpu/vaapi/vaapi_video_decode_accelerator.h
+@@ -210,6 +210,7 @@ class MEDIA_GPU_EXPORT VaapiVideoDecodeA
      // Using |client_|s provided PictureBuffers and as many internally
      // allocated.
      kNormal,
@@ -60,11 +60,11 @@
    };
  
    // Decides the concrete buffer allocation mode, depending on the hardware
-Index: chromium-81.0.4044.43/media/gpu/vaapi/vaapi_wrapper.cc
+Index: chromium-84.0.4147.68/media/gpu/vaapi/vaapi_wrapper.cc
 ===================================================================
---- chromium-81.0.4044.43.orig/media/gpu/vaapi/vaapi_wrapper.cc
-+++ chromium-81.0.4044.43/media/gpu/vaapi/vaapi_wrapper.cc
-@@ -1137,6 +1137,11 @@ VAImplementation VaapiWrapper::GetImplem
+--- chromium-84.0.4147.68.orig/media/gpu/vaapi/vaapi_wrapper.cc
++++ chromium-84.0.4147.68/media/gpu/vaapi/vaapi_wrapper.cc
+@@ -1227,6 +1227,11 @@ VAImplementation VaapiWrapper::GetImplem
  }
  
  // static
@@ -76,11 +76,11 @@
  scoped_refptr<VaapiWrapper> VaapiWrapper::Create(
      CodecMode mode,
      VAProfile va_profile,
-Index: chromium-81.0.4044.43/media/gpu/vaapi/vaapi_wrapper.h
+Index: chromium-84.0.4147.68/media/gpu/vaapi/vaapi_wrapper.h
 ===================================================================
---- chromium-81.0.4044.43.orig/media/gpu/vaapi/vaapi_wrapper.h
-+++ chromium-81.0.4044.43/media/gpu/vaapi/vaapi_wrapper.h
-@@ -119,6 +119,9 @@ class MEDIA_GPU_EXPORT VaapiWrapper
+--- chromium-84.0.4147.68.orig/media/gpu/vaapi/vaapi_wrapper.h
++++ chromium-84.0.4147.68/media/gpu/vaapi/vaapi_wrapper.h
+@@ -121,6 +121,9 @@ class MEDIA_GPU_EXPORT VaapiWrapper
    // Returns the type of the underlying VA-API implementation.
    static VAImplementation GetImplementationType();
  

++++++ system-libdrm.patch ++++++
Index: 
chromium-84.0.4147.85/ui/ozone/platform/drm/gpu/hardware_display_controller.cc
===================================================================
--- 
chromium-84.0.4147.85.orig/ui/ozone/platform/drm/gpu/hardware_display_controller.cc
+++ 
chromium-84.0.4147.85/ui/ozone/platform/drm/gpu/hardware_display_controller.cc
@@ -5,6 +5,7 @@
 #include "ui/ozone/platform/drm/gpu/hardware_display_controller.h"
 
 #include <drm.h>
+#include <drm_fourcc.h>
 #include <string.h>
 #include <xf86drm.h>
 #include <memory>
@@ -14,7 +15,6 @@
 #include "base/logging.h"
 #include "base/stl_util.h"
 #include "base/trace_event/trace_event.h"
-#include "third_party/libdrm/src/include/drm/drm_fourcc.h"
 #include "third_party/skia/include/core/SkCanvas.h"
 #include "ui/gfx/geometry/point.h"
 #include "ui/gfx/geometry/size.h"

Reply via email to