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"
