commit 317fc8038e44bf89a885860c4ba5e429c3a67d0f
Author: Vasiliy Glazov <vascom2(a)gmail.com>
Date: Tue Sep 10 12:23:10 2019 +0300
Update to 76.0.3809.132.
..._squares_2d_i16_neon-Make-s2-a-uint64x1_t.patch | 54 --
chromium-46.0.2490.71-notest.patch | 11 -
...0.2564.116-libusb_interrupt_event_handler.patch | 15 -
chromium-52.0.2743.116-unset-madv_free.patch | 15 -
chromium-52.0.2743.82-arm-webrtc.patch | 51 --
chromium-52.0.2743.82-master-prefs-path.patch | 15 -
chromium-55.0.2883.75-cups22.patch | 29 -
chromium-55.0.2883.75-sandbox-pie.patch | 30 -
chromium-56.0.2924.87-fpermissive.patch | 13 -
chromium-56.0.2924.87-gcc5.patch | 354 -----------
chromium-59.0.3071.115-ucontext-fix.patch | 214 -------
chromium-59.0.3071.86-ffmpeg-stdatomic.patch | 17 -
chromium-59.0.3071.86-nullfix.patch | 43 --
chromium-59.0.3071.86-system-clang.patch | 10 -
chromium-60.0.3112.78-gn-system.patch | 221 -------
chromium-60.0.3112.78-last-commit-position.patch | 28 -
chromium-60.0.3112.90-vulkan-force-c99.patch | 11 -
chromium-61.0.3163.79-aarch64-glibc-2.26.90.patch | 12 -
chromium-61.0.3163.79-fix-ffmpeg-aarch64.patch | 12 -
chromium-61.0.3163.79-setopaque.patch | 12 -
...mium-62.0.3202.62-correct-cplusplus-check.patch | 20 -
chromium-62.0.3202.62-dde535-gcc-fix.patch | 13 -
chromium-62.0.3202.62-enable-mp3.patch | 484 ---------------
...-epel7-no-nullptr-assignment-on-StructPtr.patch | 12 -
chromium-62.0.3202.62-gcc-nc.patch | 11 -
chromium-62.0.3202.62-gcc7.patch | 11 -
chromium-62.0.3202.62-rvalue-fix.patch | 45 --
chromium-63.0.3289.84-aarch64-glibc-2.26.90.patch | 12 -
chromium-63.0.3289.84-enable-mp3.patch | 485 ---------------
chromium-63.0.3289.84-fix-ffmpeg-aarch64.patch | 12 -
chromium-63.0.3289.84-fix-ft-hb-unbundle.patch | 36 --
chromium-63.0.3289.84-gcc-round-fix.patch | 11 -
chromium-63.0.3289.84-gcc5-r3.patch | 104 ----
chromium-63.0.3289.84-nolibc++.patch | 15 -
chromium-63.0.3289.84-setopaque.patch | 12 -
chromium-64.0.3282.119-enable-mp3.patch | 54 --
chromium-64.0.3282.119-gcc-constexpr-fix.patch | 70 ---
chromium-64.0.3282.119-gcc-round-fix.patch | 12 -
chromium-64.0.3282.119-gcc5-r3.patch | 75 ---
chromium-64.0.3282.119-gcc5.patch | 57 --
chromium-64.0.3282.119-gcc7.patch | 11 -
chromium-64.0.3282.119-memcpy-fix.patch | 11 -
chromium-64.0.3282.167-gcc8-fabi11.patch | 15 -
...46-Fix-non-copyable-class-s-optional-move.patch | 41 --
...C-IDB-methods-String-renamed-to-GetString.patch | 108 ----
...kImageProvider-Settings-do-not-provide-co.patch | 22 -
...ix-base-Optional-T-requires-the-full-decl.patch | 33 --
...tely-std-move-to-base-Optional-instead-of.patch | 24 -
...fully-declare-ConfigurationPolicyProvider.patch | 18 -
...onditional-copy-move-ctors-assign-operato.patch | 91 ---
...t-converting-constructors-from-Optional-U.patch | 116 ----
...5.146-Implement-value-forward-constructor.patch | 72 ---
...Update-non-copy-non-move-assign-operators.patch | 144 -----
...e-affirmative-expression-in-base-Optional.patch | 265 ---------
chromium-65.0.3325.146-gcc5-r3.patch | 74 ---
chromium-65.0.3325.146-gcc7.patch | 11 -
...7-is_trivially_copy_constructable-failure.patch | 55 --
...lpan-Remove-GC-checks-from-WTF-Optional-T.patch | 61 --
chromium-65.0.3325.146-wtf-vector-fix.patch | 54 --
chromium-65.0.3325.162-boolfix.patch | 36 --
chromium-65.0.3325.162-skia-aarch64-buildfix.patch | 21 -
...ix-base-Optional-T-requires-the-full-decl.patch | 33 --
...use-initializer-list-for-NoDestructor-of-.patch | 12 -
...um-66.0.3359.117-gcc-copy-constructor-fix.patch | 49 --
...ium-66.0.3359.117-gcc-optional-move-fixes.patch | 45 --
....3359.117-gcc-vector-copy-constructor-fix.patch | 53 --
chromium-66.0.3359.117-gcc5-r3.patch | 38 --
chromium-66.0.3359.117-missing-files.patch | 272 ---------
chromium-66.0.3359.117-nounrar.patch | 16 -
chromium-66.0.3359.139-arm-init-fix.patch | 12 -
chromium-66.0.3359.170-gcc8-alignof.patch | 18 -
chromium-67.0.3396.62-boolfix.patch | 36 --
...um-67.0.3396.62-crashpad-aarch64-buildfix.patch | 13 -
....3396.62-epel7-use-old-python-exec-syntax.patch | 12 -
chromium-67.0.3396.62-skia-aarch64-buildfix.patch | 21 -
chromium-67.0.3396.87-fedora-user-agent.patch | 12 -
chromium-67.0.3396.99-py2-bootstrap.patch | 42 --
chromium-68.0.3440.106-fedora-user-agent.patch | 12 -
...8.0.3440.106-fix-build-networking_private.patch | 12 -
chromium-68.0.3440.106-notest.patch | 11 -
chromium-68.0.3440.84-cors-string.patch | 51 --
chromium-68.0.3440.84-libjpeg.patch | 62 --
chromium-68.0.3440.84-libwebp-shim.patch | 43 --
chromium-68.0.3440.84-move-unique-ptr.patch | 65 --
chromium-69.0.3497.81-gcc8-alignof.patch | 18 -
chromium-69.0.3497.81-norar.patch | 79 ---
chromium-69.0.3497.81-py2-bootstrap.patch | 33 --
chromium-69.0.3497.81-widevine-r2.patch | 23 -
...mium-70.0.3538.110-remove-sysroot-options.patch | 23 -
chromium-70.0.3538.77-harfbuzz2-fix.patch | 80 ---
chromium-71-gcc-0.patch | 57 --
chromium-71.0.3578.98-norar.patch | 79 ---
chromium-71.0.3578.98-remove-sysroot-options.patch | 23 -
chromium-72.0.3626.121-fix-va-check.patch | 29 -
chromium-72.0.3626.121-norar.patch | 79 ---
chromium-73.0.3683.75-pipewire-cstring-fix.patch | 11 -
chromium-75.0.3770.100-el7-fix-noexcept.patch | 54 --
chromium-75.0.3770.100-git00281713.patch | 34 --
...ium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch | 14 -
chromium-75.0.3770.80-gcc-no-assume.patch | 21 -
chromium-76.0.3809.100-el7-noexcept.patch | 129 ++++
....0.3809.100-gcc-accountinfo-move-noexcept.patch | 53 ++
chromium-76.0.3809.100-gcc-cc-no-except.patch | 105 ++++
...m-76.0.3809.100-gcc-feature-policy-parser.patch | 76 +++
...m-76.0.3809.100-gcc-hasfraction-constexpr.patch | 32 +
...m-76.0.3809.100-gcc-history-move-noexcept.patch | 42 ++
...um-76.0.3809.100-gcc-initialization-order.patch | 33 ++
...3809.100-gcc-move-explicit-initialization.patch | 97 +++
chromium-76.0.3809.100-gcc-net-fetcher.patch | 63 ++
...m-76.0.3809.100-gcc-no-alignas-and-export.patch | 14 +
...mium-76.0.3809.100-gcc-remoting-constexpr.patch | 27 +
...m-76.0.3809.100-gcc-themeservice-includes.patch | 36 ++
chromium-76.0.3809.100-gcc-vulkan.patch | 115 ++++
...0.3809.100-libusb_interrupt_event_handler.patch | 15 +
chromium-76.0.3809.100-pulse-api-change.patch | 47 ++
chromium-76.0.3809.100-quiche-compile-fix.patch | 225 +++++++
chromium-76.0.3809.100-throttling-dead-beef.patch | 30 +
...ium-76.0.3809.100-vtable-symbol-undefined.patch | 11 +
chromium-76.0.3809.100-weak-ptr-no-except.patch | 66 +++
...um-76.0.3809.132-certificate-transparency.patch | 539 +++++++++++++++++
...-76.0.3809.132-gcc-ambigous-instantiation.patch | 21 +
chromium-freeworld.spec | 444 +++++++-------
chromium-gcc5-r3.patch | 98 ---
chromium-gcc8-r588316.patch | 98 ---
chromium-gcc8-r588547.patch | 30 -
chromium-gcc8-r589614.patch | 37 --
chromium-gcc8-r591015.patch | 70 ---
chromium-gn-bootstrap-r17.patch | 68 ---
chromium-math.h-r0.patch | 29 -
chromium-stdint.patch | 21 -
relax-libva-version.patch | 56 --
revert-gn-4960.patch | 655 ---------------------
revert-gn-4980.patch | 134 -----
sources | 2 +-
134 files changed, 2003 insertions(+), 7113 deletions(-)
---
diff --git a/chromium-76.0.3809.100-el7-noexcept.patch
b/chromium-76.0.3809.100-el7-noexcept.patch
new file mode 100644
index 0000000..407f8de
--- /dev/null
+++ b/chromium-76.0.3809.100-el7-noexcept.patch
@@ -0,0 +1,129 @@
+diff -up chromium-76.0.3809.100/chrome/common/media_router/media_sink.cc.el7-noexcept
chromium-76.0.3809.100/chrome/common/media_router/media_sink.cc
+---
chromium-76.0.3809.100/chrome/common/media_router/media_sink.cc.el7-noexcept 2019-08-23
13:41:04.842597850 +0200
++++ chromium-76.0.3809.100/chrome/common/media_router/media_sink.cc 2019-08-23
13:41:04.842597850 +0200
+@@ -19,12 +19,12 @@ MediaSink::MediaSink(const MediaSink::Id
+ provider_id_(provider_id) {}
+
+ MediaSink::MediaSink(const MediaSink& other) = default;
+-MediaSink::MediaSink(MediaSink&& other) noexcept = default;
++MediaSink::MediaSink(MediaSink&& other) = default;
+ MediaSink::MediaSink() = default;
+ MediaSink::~MediaSink() = default;
+
+ MediaSink& MediaSink::operator=(const MediaSink& other) = default;
+-MediaSink& MediaSink::operator=(MediaSink&& other) noexcept = default;
++MediaSink& MediaSink::operator=(MediaSink&& other) = default;
+
+ bool MediaSink::IsMaybeCloudSink() const {
+ switch (icon_type_) {
+diff -up
chromium-76.0.3809.100/components/history/core/browser/history_types.cc.el7-noexcept
chromium-76.0.3809.100/components/history/core/browser/history_types.cc
+---
chromium-76.0.3809.100/components/history/core/browser/history_types.cc.el7-noexcept 2019-08-23
13:45:57.673815531 +0200
++++ chromium-76.0.3809.100/components/history/core/browser/history_types.cc 2019-08-26
10:13:00.815409764 +0200
+@@ -42,7 +42,7 @@ QueryResults::QueryResults(QueryResults&
+ Swap(&other);
+ }
+
+-QueryResults& QueryResults::operator=(QueryResults&& other) noexcept {
++QueryResults& QueryResults::operator=(QueryResults&& other) {
+ Swap(&other);
+ return *this;
+ }
+@@ -186,7 +186,7 @@ QueryURLResult::QueryURLResult(QueryURLR
+
+ QueryURLResult& QueryURLResult::operator=(const QueryURLResult&) = default;
+
+-QueryURLResult& QueryURLResult::operator=(QueryURLResult&&) noexcept =
default;
++QueryURLResult& QueryURLResult::operator=(QueryURLResult&&) = default;
+
+ // MostVisitedURL --------------------------------------------------------------
+
+diff -up
chromium-76.0.3809.100/components/history/core/browser/history_types.h.el7-noexcept
chromium-76.0.3809.100/components/history/core/browser/history_types.h
+---
chromium-76.0.3809.100/components/history/core/browser/history_types.h.el7-noexcept 2019-08-23
13:46:11.455966965 +0200
++++ chromium-76.0.3809.100/components/history/core/browser/history_types.h 2019-08-26
10:13:49.951881558 +0200
+@@ -143,7 +143,7 @@ class QueryResults {
+ ~QueryResults();
+
+ QueryResults(QueryResults&& other) noexcept;
+- QueryResults& operator=(QueryResults&& other) noexcept;
++ QueryResults& operator=(QueryResults&& other);
+
+ void set_reached_beginning(bool reached) { reached_beginning_ = reached; }
+ bool reached_beginning() { return reached_beginning_; }
+@@ -278,7 +278,7 @@ struct QueryURLResult {
+ QueryURLResult(const QueryURLResult&);
+ QueryURLResult(QueryURLResult&&) noexcept;
+ QueryURLResult& operator=(const QueryURLResult&);
+- QueryURLResult& operator=(QueryURLResult&&) noexcept;
++ QueryURLResult& operator=(QueryURLResult&&);
+ ~QueryURLResult();
+
+ // Indicates whether the call to HistoryBackend::QueryURL was successfull
+diff -up chromium-76.0.3809.100/components/policy/core/common/policy_map.cc.el7-noexcept
chromium-76.0.3809.100/components/policy/core/common/policy_map.cc
+---
chromium-76.0.3809.100/components/policy/core/common/policy_map.cc.el7-noexcept 2019-08-23
13:40:42.633353810 +0200
++++ chromium-76.0.3809.100/components/policy/core/common/policy_map.cc 2019-08-23
13:40:42.576353183 +0200
+@@ -52,7 +52,7 @@ PolicyMap::Entry::Entry(
+ PolicyMap::Entry::~Entry() = default;
+
+ PolicyMap::Entry::Entry(Entry&&) noexcept = default;
+-PolicyMap::Entry& PolicyMap::Entry::operator=(Entry&&) noexcept = default;
++PolicyMap::Entry& PolicyMap::Entry::operator=(Entry&&) = default;
+
+ PolicyMap::Entry PolicyMap::Entry::DeepCopy() const {
+ Entry copy;
+diff -up
chromium-76.0.3809.100/components/signin/core/browser/account_info.cc.el7-noexcept
chromium-76.0.3809.100/components/signin/core/browser/account_info.cc
+---
chromium-76.0.3809.100/components/signin/core/browser/account_info.cc.el7-noexcept 2019-08-23
13:40:44.224371292 +0200
++++ chromium-76.0.3809.100/components/signin/core/browser/account_info.cc 2019-08-23
13:40:44.190370918 +0200
+@@ -52,7 +52,7 @@ CoreAccountInfo::CoreAccountInfo(CoreAcc
+ CoreAccountInfo& CoreAccountInfo::operator=(const CoreAccountInfo& other) =
+ default;
+
+-CoreAccountInfo& CoreAccountInfo::operator=(CoreAccountInfo&& other)
noexcept =
++CoreAccountInfo& CoreAccountInfo::operator=(CoreAccountInfo&& other) =
+ default;
+
+ bool CoreAccountInfo::IsEmpty() const {
+@@ -69,7 +69,7 @@ AccountInfo::AccountInfo(AccountInfo&& o
+
+ AccountInfo& AccountInfo::operator=(const AccountInfo& other) = default;
+
+-AccountInfo& AccountInfo::operator=(AccountInfo&& other) noexcept =
default;
++AccountInfo& AccountInfo::operator=(AccountInfo&& other) = default;
+
+ bool AccountInfo::IsEmpty() const {
+ return CoreAccountInfo::IsEmpty() && hosted_domain.empty() &&
+diff -up chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc.el7-noexcept
chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc
+--- chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc.el7-noexcept 2019-08-23
13:40:25.468165195 +0200
++++ chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc 2019-08-23
13:40:25.481165338 +0200
+@@ -14,7 +14,7 @@ CoreAccountId::~CoreAccountId() = defaul
+
+ CoreAccountId& CoreAccountId::operator=(const CoreAccountId&) = default;
+
+-CoreAccountId& CoreAccountId::operator=(CoreAccountId&&) noexcept =
default;
++CoreAccountId& CoreAccountId::operator=(CoreAccountId&&) = default;
+
+ CoreAccountId::CoreAccountId(const char* id) : id(id) {}
+
+diff -up chromium-76.0.3809.100/google_apis/gaia/core_account_id.h.el7-noexcept
chromium-76.0.3809.100/google_apis/gaia/core_account_id.h
+--- chromium-76.0.3809.100/google_apis/gaia/core_account_id.h.el7-noexcept 2019-08-23
13:40:25.468165195 +0200
++++ chromium-76.0.3809.100/google_apis/gaia/core_account_id.h 2019-08-23
13:40:25.481165338 +0200
+@@ -19,7 +19,7 @@ struct CoreAccountId {
+ ~CoreAccountId();
+
+ CoreAccountId& operator=(const CoreAccountId&);
+- CoreAccountId& operator=(CoreAccountId&&) noexcept;
++ CoreAccountId& operator=(CoreAccountId&&);
+
+ // Those implicit constructor and conversion operator allow to
+ // progressively migrate the code to use this struct. Removing
+diff -up chromium-76.0.3809.100/gpu/config/gpu_info.cc.el7-noexcept
chromium-76.0.3809.100/gpu/config/gpu_info.cc
+--- chromium-76.0.3809.100/gpu/config/gpu_info.cc.el7-noexcept 2019-08-09
16:48:01.000000000 +0200
++++ chromium-76.0.3809.100/gpu/config/gpu_info.cc 2019-08-23 13:40:25.482165349 +0200
+@@ -166,7 +166,7 @@ GPUInfo::GPUDevice& GPUInfo::GPUDevice::
+ const GPUInfo::GPUDevice& other) = default;
+
+ GPUInfo::GPUDevice& GPUInfo::GPUDevice::operator=(
+- GPUInfo::GPUDevice&& other) noexcept = default;
++ GPUInfo::GPUDevice&& other) = default;
+
+ GPUInfo::GPUInfo()
+ : optimus(false),
diff --git a/chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch
b/chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch
new file mode 100644
index 0000000..5f45a8f
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch
@@ -0,0 +1,53 @@
+From 719df31ffd4d52b473509cf77acd9c02ec112acb Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 04 Jun 2019 18:38:12 +0200
+Subject: [PATCH] GCC: fix noexcept from move constructor and assign operators of
AccountInfo
+
+AccountInfo declares them as noexcept and uses default implementation,
+so all its members (including AccountId) should be noexcept. But AccountId
+is not noexcept. To fix it we just need to make CoreAccountId move
+operator/assign operator noexcept.
+
+Bug: 819294
+Change-Id: Ice38654ab7cf3b9eaa6f54aa36e1fec329264f98
+---
+
+diff --git a/google_apis/gaia/core_account_id.cc b/google_apis/gaia/core_account_id.cc
+index d808082..12eefe3 100644
+--- a/google_apis/gaia/core_account_id.cc
++++ b/google_apis/gaia/core_account_id.cc
+@@ -6,8 +6,16 @@
+
+ CoreAccountId::CoreAccountId() = default;
+
++CoreAccountId::CoreAccountId(const CoreAccountId&) = default;
++
++CoreAccountId::CoreAccountId(CoreAccountId&&) noexcept = default;
++
+ CoreAccountId::~CoreAccountId() = default;
+
++CoreAccountId& CoreAccountId::operator=(const CoreAccountId&) = default;
++
++CoreAccountId& CoreAccountId::operator=(CoreAccountId&&) noexcept =
default;
++
+ CoreAccountId::CoreAccountId(const char* id) : id(id) {}
+
+ CoreAccountId::CoreAccountId(std::string&& id) : id(std::move(id)) {}
+diff --git a/google_apis/gaia/core_account_id.h b/google_apis/gaia/core_account_id.h
+index 5ea602a..c2d1911 100644
+--- a/google_apis/gaia/core_account_id.h
++++ b/google_apis/gaia/core_account_id.h
+@@ -14,8 +14,13 @@
+ // for design and tracking).
+ struct CoreAccountId {
+ CoreAccountId();
++ CoreAccountId(const CoreAccountId&);
++ CoreAccountId(CoreAccountId&&) noexcept;
+ ~CoreAccountId();
+
++ CoreAccountId& operator=(const CoreAccountId&);
++ CoreAccountId& operator=(CoreAccountId&&) noexcept;
++
+ // Those implicit constructor and conversion operator allow to
+ // progressively migrate the code to use this struct. Removing
+ // them is tracked by
https://crbug.com/959161
diff --git a/chromium-76.0.3809.100-gcc-cc-no-except.patch
b/chromium-76.0.3809.100-gcc-cc-no-except.patch
new file mode 100644
index 0000000..e4d754a
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-cc-no-except.patch
@@ -0,0 +1,105 @@
+From 84c91abab33966f928497c24db4a39f436d2dca8 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Fri, 07 Jun 2019 09:50:11 +0000
+Subject: [PATCH] Make SharedMemoryMapping move constructor noexcept
+
+As LayerTreeHostImpl::UIResourceData move constructor is declared
+noexcept with default implementation, the move constructor of its
+members should also be noexcept. GCC will fail to build otherwise
+for mismatching noexcept declaration.
+
+We also set the move assignment operator.
+
+Bug: 819294
+Change-Id: Icd663da83b882e15f7d16780c9241972e09bc492
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1645297
+Commit-Queue: José Dapena Paz <jose.dapena(a)lge.com>
+Reviewed-by: Daniel Cheng <dcheng(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#667064}
+---
+
+diff --git a/base/memory/shared_memory_mapping.cc b/base/memory/shared_memory_mapping.cc
+index 2be2570..8426fa8 100644
+--- a/base/memory/shared_memory_mapping.cc
++++ b/base/memory/shared_memory_mapping.cc
+@@ -33,7 +33,7 @@
+
+ SharedMemoryMapping::SharedMemoryMapping() = default;
+
+-SharedMemoryMapping::SharedMemoryMapping(SharedMemoryMapping&& mapping)
++SharedMemoryMapping::SharedMemoryMapping(SharedMemoryMapping&& mapping)
noexcept
+ : memory_(mapping.memory_),
+ size_(mapping.size_),
+ mapped_size_(mapping.mapped_size_),
+@@ -42,7 +42,7 @@
+ }
+
+ SharedMemoryMapping& SharedMemoryMapping::operator=(
+- SharedMemoryMapping&& mapping) {
++ SharedMemoryMapping&& mapping) noexcept {
+ Unmap();
+ memory_ = mapping.memory_;
+ size_ = mapping.size_;
+@@ -90,9 +90,9 @@
+
+ ReadOnlySharedMemoryMapping::ReadOnlySharedMemoryMapping() = default;
+ ReadOnlySharedMemoryMapping::ReadOnlySharedMemoryMapping(
+- ReadOnlySharedMemoryMapping&&) = default;
++ ReadOnlySharedMemoryMapping&&) noexcept = default;
+ ReadOnlySharedMemoryMapping& ReadOnlySharedMemoryMapping::operator=(
+- ReadOnlySharedMemoryMapping&&) = default;
++ ReadOnlySharedMemoryMapping&&) noexcept = default;
+ ReadOnlySharedMemoryMapping::ReadOnlySharedMemoryMapping(
+ void* address,
+ size_t size,
+@@ -102,9 +102,9 @@
+
+ WritableSharedMemoryMapping::WritableSharedMemoryMapping() = default;
+ WritableSharedMemoryMapping::WritableSharedMemoryMapping(
+- WritableSharedMemoryMapping&&) = default;
++ WritableSharedMemoryMapping&&) noexcept = default;
+ WritableSharedMemoryMapping& WritableSharedMemoryMapping::operator=(
+- WritableSharedMemoryMapping&&) = default;
++ WritableSharedMemoryMapping&&) noexcept = default;
+ WritableSharedMemoryMapping::WritableSharedMemoryMapping(
+ void* address,
+ size_t size,
+diff --git a/base/memory/shared_memory_mapping.h b/base/memory/shared_memory_mapping.h
+index d9569af..2b8858e 100644
+--- a/base/memory/shared_memory_mapping.h
++++ b/base/memory/shared_memory_mapping.h
+@@ -32,8 +32,8 @@
+ SharedMemoryMapping();
+
+ // Move operations are allowed.
+- SharedMemoryMapping(SharedMemoryMapping&& mapping);
+- SharedMemoryMapping& operator=(SharedMemoryMapping&& mapping);
++ SharedMemoryMapping(SharedMemoryMapping&& mapping) noexcept;
++ SharedMemoryMapping& operator=(SharedMemoryMapping&& mapping) noexcept;
+
+ // Unmaps the region if the mapping is valid.
+ virtual ~SharedMemoryMapping();
+@@ -93,8 +93,9 @@
+ ReadOnlySharedMemoryMapping();
+
+ // Move operations are allowed.
+- ReadOnlySharedMemoryMapping(ReadOnlySharedMemoryMapping&&);
+- ReadOnlySharedMemoryMapping& operator=(ReadOnlySharedMemoryMapping&&);
++ ReadOnlySharedMemoryMapping(ReadOnlySharedMemoryMapping&&) noexcept;
++ ReadOnlySharedMemoryMapping& operator=(
++ ReadOnlySharedMemoryMapping&&) noexcept;
+
+ // Returns the base address of the mapping. This is read-only memory. This is
+ // page-aligned. This is nullptr for invalid instances.
+@@ -171,8 +172,9 @@
+ WritableSharedMemoryMapping();
+
+ // Move operations are allowed.
+- WritableSharedMemoryMapping(WritableSharedMemoryMapping&&);
+- WritableSharedMemoryMapping& operator=(WritableSharedMemoryMapping&&);
++ WritableSharedMemoryMapping(WritableSharedMemoryMapping&&) noexcept;
++ WritableSharedMemoryMapping& operator=(
++ WritableSharedMemoryMapping&&) noexcept;
+
+ // Returns the base address of the mapping. This is writable memory. This is
+ // page-aligned. This is nullptr for invalid instances.
diff --git a/chromium-76.0.3809.100-gcc-feature-policy-parser.patch
b/chromium-76.0.3809.100-gcc-feature-policy-parser.patch
new file mode 100644
index 0000000..0dbffd5
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-feature-policy-parser.patch
@@ -0,0 +1,76 @@
+From 0aca7b8dea0f52ba7bd58dfce4ac236ee60670a8 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 04 Jun 2019 19:44:58 +0200
+Subject: [PATCH] GCC: FeaturePolicyParser ParseValueForFuzzer is not in anonymous
namespace
+
+Compilation fails because we are declaring ParseValueForFuzzer as friend method,
+but we are declaring it is in anonymous namespace. Moving to global namespace
+still fails (in this case in Clang).
+
+So final solution is making it a public static method of FeaturePolicyParser.
+
+Bug: 819294
+Change-Id: Iea307cb6faef675b748d6eb5da2175dcbb17fdc7
+---
+
+diff --git a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc
b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc
+index 3b7f4a9..eaee409 100644
+--- a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc
++++ b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc
+@@ -317,6 +317,13 @@
+ return value;
+ }
+
++void FeaturePolicyParser::ParseValueForFuzzer(
++ blink::mojom::PolicyValueType feature_type,
++ const WTF::String& value_string) {
++ bool ok;
++ ParseValueForType(feature_type, value_string, &ok);
++}
++
+ bool IsFeatureDeclared(mojom::FeaturePolicyFeature feature,
+ const ParsedFeaturePolicy& policy) {
+ return std::any_of(policy.begin(), policy.end(),
+diff --git a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h
b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h
+index fd25d90..36af405 100644
+--- a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h
++++ b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h
+@@ -16,9 +16,6 @@
+ #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
+ #include "third_party/blink/renderer/platform/wtf/vector.h"
+
+-// Forward declare for friendship.
+-void ParseValueForFuzzer(blink::mojom::PolicyValueType, const WTF::String&);
+-
+ namespace blink {
+
+ class Document;
+@@ -79,8 +76,9 @@
+ const FeatureNameMap& feature_names,
+ ExecutionContext* execution_context = nullptr);
+
++ static void ParseValueForFuzzer(mojom::PolicyValueType, const String&);
++
+ private:
+- friend void ::ParseValueForFuzzer(mojom::PolicyValueType, const String&);
+ static PolicyValue GetFallbackValueForFeature(
+ mojom::FeaturePolicyFeature feature);
+ static PolicyValue ParseValueForType(mojom::PolicyValueType feature_type,
+diff --git
a/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc
b/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc
+index 7f8e6aa..53350e43 100644
+--- a/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc
++++ b/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc
+@@ -23,9 +23,9 @@
+ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ static blink::BlinkFuzzerTestSupport test_support =
+ blink::BlinkFuzzerTestSupport();
+- ParseValueForFuzzer(blink::mojom::PolicyValueType::kBool,
+- WTF::String(data, size));
+- ParseValueForFuzzer(blink::mojom::PolicyValueType::kDecDouble,
+- WTF::String(data, size));
++ blink::FeaturePolicyParser::ParseValueForFuzzer(
++ blink::mojom::PolicyValueType::kBool, WTF::String(data, size));
++ blink::FeaturePolicyParser::ParseValueForFuzzer(
++ blink::mojom::PolicyValueType::kDecDouble, WTF::String(data, size));
+ return 0;
+ }
diff --git a/chromium-76.0.3809.100-gcc-hasfraction-constexpr.patch
b/chromium-76.0.3809.100-gcc-hasfraction-constexpr.patch
new file mode 100644
index 0000000..26bba05
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-hasfraction-constexpr.patch
@@ -0,0 +1,32 @@
+From cf6d6b40d711fce93a24a2cf517fa3becdbae8bb Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Wed, 05 Jun 2019 17:18:40 +0000
+Subject: [PATCH] Make blink::LayoutUnit::HasFraction constexpr
+
+Other HasFraction methods as in PhysicalUnit are declared already
+constexpr and using it. It breaks GCC build.
+
+Bug: 819294.
+Change-Id: I0c4bd9bd206d45cf31f7fa815ce8533718a425cb
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1645222
+Reviewed-by: vmpstr <vmpstr(a)chromium.org>
+Reviewed-by: Xianzhu Wang <wangxianzhu(a)chromium.org>
+Commit-Queue: José Dapena Paz <jose.dapena(a)lge.com>
+Cr-Commit-Position: refs/heads/master@{#666336}
+---
+
+diff --git a/third_party/blink/renderer/platform/geometry/layout_unit.h
b/third_party/blink/renderer/platform/geometry/layout_unit.h
+index f073986..b6dbc76 100644
+--- a/third_party/blink/renderer/platform/geometry/layout_unit.h
++++ b/third_party/blink/renderer/platform/geometry/layout_unit.h
+@@ -202,7 +202,9 @@
+ return value_ > 0 ? LayoutUnit() : *this;
+ }
+
+- bool HasFraction() const { return RawValue() % kFixedPointDenominator; }
++ constexpr bool HasFraction() const {
++ return RawValue() % kFixedPointDenominator;
++ }
+
+ LayoutUnit Fraction() const {
+ // Compute fraction using the mod operator to preserve the sign of the value
diff --git a/chromium-76.0.3809.100-gcc-history-move-noexcept.patch
b/chromium-76.0.3809.100-gcc-history-move-noexcept.patch
new file mode 100644
index 0000000..2876de4
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-history-move-noexcept.patch
@@ -0,0 +1,42 @@
+From abe74a7f0c53a43a9706a42d71b7ff4a5da53380 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 11 Jun 2019 10:27:19 +0200
+Subject: [PATCH] GCC: add noexcept move assignment in history::URLRow
+
+In GCC, build is failing because history::QueryURLResult declares its move
+assignment operator as noexcept using default implementation. That requires
+its members to provide a move assignment operator that is noexcept too.
+
+But URLRow was missing noexcept declaration in move assignment operator (even
+though it was providing noexcept to its move constructor).
+
+Bug: 819294
+Change-Id: I726e3cf7a4a50c9206a5d0fba8a561d363483d4f
+---
+
+diff --git a/components/history/core/browser/url_row.cc
b/components/history/core/browser/url_row.cc
+index 44c22fd..aec0101 100644
+--- a/components/history/core/browser/url_row.cc
++++ b/components/history/core/browser/url_row.cc
+@@ -26,7 +26,7 @@
+ }
+
+ URLRow& URLRow::operator=(const URLRow& other) = default;
+-URLRow& URLRow::operator=(URLRow&& other) = default;
++URLRow& URLRow::operator=(URLRow&& other) noexcept = default;
+
+ void URLRow::Swap(URLRow* other) {
+ std::swap(id_, other->id_);
+diff --git a/components/history/core/browser/url_row.h
b/components/history/core/browser/url_row.h
+index 8f6f9cf..31a1ef8 100644
+--- a/components/history/core/browser/url_row.h
++++ b/components/history/core/browser/url_row.h
+@@ -35,7 +35,7 @@
+
+ virtual ~URLRow();
+ URLRow& operator=(const URLRow& other);
+- URLRow& operator=(URLRow&& other);
++ URLRow& operator=(URLRow&& other) noexcept;
+
+ URLID id() const { return id_; }
+
diff --git a/chromium-76.0.3809.100-gcc-initialization-order.patch
b/chromium-76.0.3809.100-gcc-initialization-order.patch
new file mode 100644
index 0000000..3bf394f
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-initialization-order.patch
@@ -0,0 +1,33 @@
+From 7dc76c8d9f4cfbce7cf11424120aa6f6094916dc Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Wed, 05 Jun 2019 21:09:01 +0000
+Subject: [PATCH] GCC: XSetWindowAttributes struct initialization should keep order of
declaration
+
+XSetWindowAttributes initialization of attributes in GLSurfaceGLX is not in the
+same order of the declaration. GCC fails because of that.
+
+Bug: 819294
+Change-Id: I8a97da980d5961a35a47ae4d0d8d558b85291f1f
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1646253
+Reviewed-by: Zhenyao Mo <zmo(a)chromium.org>
+Commit-Queue: José Dapena Paz <jose.dapena(a)lge.com>
+Cr-Commit-Position: refs/heads/master@{#666436}
+---
+
+diff --git a/ui/gl/gl_surface_glx.cc b/ui/gl/gl_surface_glx.cc
+index f649dd4..0aa6892 100644
+--- a/ui/gl/gl_surface_glx.cc
++++ b/ui/gl/gl_surface_glx.cc
+@@ -583,10 +583,10 @@
+
+ XSetWindowAttributes swa = {
+ .background_pixmap = 0,
+- .bit_gravity = NorthWestGravity,
+- .colormap = g_colormap,
+ .background_pixel = 0, // ARGB(0,0,0,0) for compositing WM
+ .border_pixel = 0,
++ .bit_gravity = NorthWestGravity,
++ .colormap = g_colormap,
+ };
+ auto value_mask = CWBackPixmap | CWBitGravity | CWColormap | CWBorderPixel;
+ if (ui::IsCompositingManagerPresent() &&
diff --git a/chromium-76.0.3809.100-gcc-move-explicit-initialization.patch
b/chromium-76.0.3809.100-gcc-move-explicit-initialization.patch
new file mode 100644
index 0000000..1d4b90f
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-move-explicit-initialization.patch
@@ -0,0 +1,97 @@
+From dcb55fb8f18abe5f43d260aa67b14b2dc996f992 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 11 Jun 2019 08:00:13 +0000
+Subject: [PATCH] GCC: move explicit specialization out of RunInfo
+
+Explicit specialization in non-namespace scope is not allowed in C++, and GCC breaks
+build because of that. Move the template specializations out of RunInfo declaration
+in shape_result_inline_headeres.h to fix the GCC build issue.
+
+Bug: 819294
+Change-Id: Id083852bcf8e9efbdc911fdad28fd8767d2905d0
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1651728
+Reviewed-by: Kinuko Yasuda <kinuko(a)chromium.org>
+Commit-Queue: José Dapena Paz <jose.dapena(a)lge.com>
+Cr-Commit-Position: refs/heads/master@{#667901}
+---
+
+diff --git
a/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h
b/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h
+index 76ee6091..c14d3a0 100644
+--- a/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h
++++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h
+@@ -251,37 +251,6 @@
+ template <bool has_non_zero_glyph_offsets>
+ struct iterator final {};
+
+- // For non-zero glyph offset array
+- template <>
+- struct iterator<true> final {
+- // The constructor for ShapeResult
+- explicit iterator(const GlyphOffsetArray& array)
+- : pointer(array.storage_.get()) {
+- DCHECK(pointer);
+- }
+-
+- // The constructor for ShapeResultView
+- explicit iterator(const GlyphDataRange& range) : pointer(range.offsets) {
+- DCHECK(pointer);
+- }
+-
+- GlyphOffset operator*() const { return *pointer; }
+- void operator++() { ++pointer; }
+-
+- const GlyphOffset* pointer;
+- };
+-
+- // For zero glyph offset array
+- template <>
+- struct iterator<false> final {
+- explicit iterator(const GlyphOffsetArray& array) {
+- DCHECK(!array.HasStorage());
+- }
+- explicit iterator(const GlyphDataRange& range) { DCHECK(!range.offsets); }
+- GlyphOffset operator*() const { return GlyphOffset(); }
+- void operator++() {}
+- };
+-
+ template <bool has_non_zero_glyph_offsets>
+ iterator<has_non_zero_glyph_offsets> GetIterator() const {
+ return iterator<has_non_zero_glyph_offsets>(*this);
+@@ -495,6 +464,37 @@
+ float width_;
+ };
+
++// For non-zero glyph offset array
++template <>
++struct ShapeResult::RunInfo::GlyphOffsetArray::iterator<true> final {
++ // The constructor for ShapeResult
++ explicit iterator(const GlyphOffsetArray& array)
++ : pointer(array.storage_.get()) {
++ DCHECK(pointer);
++ }
++
++ // The constructor for ShapeResultView
++ explicit iterator(const GlyphDataRange& range) : pointer(range.offsets) {
++ DCHECK(pointer);
++ }
++
++ GlyphOffset operator*() const { return *pointer; }
++ void operator++() { ++pointer; }
++
++ const GlyphOffset* pointer;
++};
++
++// For zero glyph offset array
++template <>
++struct ShapeResult::RunInfo::GlyphOffsetArray::iterator<false> final {
++ explicit iterator(const GlyphOffsetArray& array) {
++ DCHECK(!array.HasStorage());
++ }
++ explicit iterator(const GlyphDataRange& range) { DCHECK(!range.offsets); }
++ GlyphOffset operator*() const { return GlyphOffset(); }
++ void operator++() {}
++};
++
+ // Find the range of HarfBuzzRunGlyphData for the specified character index
+ // range. This function uses binary search twice, hence O(2 log n).
+ inline ShapeResult::RunInfo::GlyphDataRange
diff --git a/chromium-76.0.3809.100-gcc-net-fetcher.patch
b/chromium-76.0.3809.100-gcc-net-fetcher.patch
new file mode 100644
index 0000000..bc0ed98
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-net-fetcher.patch
@@ -0,0 +1,63 @@
+From 502e6e42633d2571c8236c8649b031fe9915eb5b Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 11 Jun 2019 16:56:27 +0000
+Subject: [PATCH] GCC: CertNetFetcherImpl declares Job as a friend but it is in the
anonymous namespace
+
+GCC does not allow friendship declaration to anonymous namespace as done with Job
+object in the CertNetFetcherImpl. This fix removes the friend declaration, and just
+makes RemoveJob method public, that was the only reason to make Job a friend.
+
+Error was:
+./../net/cert_net/cert_net_fetcher_impl.cc: In member function ‘void
net::{anonymous}::Job::DetachRequest(net::CertNetFetcherImpl::RequestCore*)’:
+../../net/cert_net/cert_net_fetcher_impl.cc:458:42: error:
‘std::unique_ptr<net::{anonymous}::Job>
net::CertNetFetcherImpl::AsyncCertNetFetcherImpl::RemoveJob(net::{anonymous}::Job*)’ is
private within this context
+ delete_this = parent_->RemoveJob(this);
+ ^
+../../net/cert_net/cert_net_fetcher_impl.cc:151:24: note: declared private here
+ std::unique_ptr<Job> RemoveJob(Job* job);
+ ^~~~~~~~~
+../../net/cert_net/cert_net_fetcher_impl.cc: In member function ‘void
net::{anonymous}::Job::OnJobCompleted(net::Error)’:
+../../net/cert_net/cert_net_fetcher_impl.cc:610:61: error:
‘std::unique_ptr<net::{anonymous}::Job>
net::CertNetFetcherImpl::AsyncCertNetFetcherImpl::RemoveJob(net::{anonymous}::Job*)’ is
private within this context
+ std::unique_ptr<Job> delete_this = parent_->RemoveJob(this);
+ ^
+../../net/cert_net/cert_net_fetcher_impl.cc:151:24: note: declared private here
+ std::unique_ptr<Job> RemoveJob(Job* job);
+ ^~~~~~~~~
+
+Bug: 819294
+Change-Id: I3609f4558e570741395366de6a4cd40577d91450
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1651783
+Commit-Queue: Eric Roman <eroman(a)chromium.org>
+Reviewed-by: Eric Roman <eroman(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#668015}
+---
+
+diff --git a/net/cert_net/cert_net_fetcher_impl.cc
b/net/cert_net/cert_net_fetcher_impl.cc
+index 11a1166..349c656 100644
+--- a/net/cert_net/cert_net_fetcher_impl.cc
++++ b/net/cert_net/cert_net_fetcher_impl.cc
+@@ -135,21 +135,19 @@
+ void Fetch(std::unique_ptr<RequestParams> request_params,
+ scoped_refptr<RequestCore> request);
+
++ // Removes |job| from the in progress jobs and transfers ownership to the
++ // caller.
++ std::unique_ptr<Job> RemoveJob(Job* job);
++
+ // Cancels outstanding jobs, which stops network requests and signals the
+ // corresponding RequestCores that the requests have completed.
+ void Shutdown();
+
+ private:
+- friend class Job;
+-
+ // Finds a job with a matching RequestPararms or returns nullptr if there was
+ // no match.
+ Job* FindJob(const RequestParams& params);
+
+- // Removes |job| from the in progress jobs and transfers ownership to the
+- // caller.
+- std::unique_ptr<Job> RemoveJob(Job* job);
+-
+ // The in-progress jobs. This set does not contain the job which is actively
+ // invoking callbacks (OnJobCompleted).
+ JobSet jobs_;
diff --git a/chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
b/chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
new file mode 100644
index 0000000..cc91d1e
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
@@ -0,0 +1,14 @@
+diff -up
chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h.gcc-no-alignas
chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h
+---
chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h.gcc-no-alignas 2019-08-09
16:48:13.000000000 +0200
++++
chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h 2019-08-15
21:04:30.231532746 +0200
+@@ -176,8 +176,8 @@ class CSSLazyPropertyParser
+ DISALLOW_COPY_AND_ASSIGN(CSSLazyPropertyParser);
+ };
+
+-class CORE_EXPORT alignas(Member<const CSSValue>) alignas(
+- CSSPropertyValueMetadata) ImmutableCSSPropertyValueSet
++class CORE_EXPORT ALIGNAS(alignof(Member<const CSSValue>))
++ ALIGNAS(alignof(CSSPropertyValueMetadata)) ImmutableCSSPropertyValueSet
+ : public CSSPropertyValueSet {
+ public:
+ ImmutableCSSPropertyValueSet(const CSSPropertyValue*,
diff --git a/chromium-76.0.3809.100-gcc-remoting-constexpr.patch
b/chromium-76.0.3809.100-gcc-remoting-constexpr.patch
new file mode 100644
index 0000000..aec3107
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-remoting-constexpr.patch
@@ -0,0 +1,27 @@
+diff -up chromium-76.0.3809.100/remoting/signaling/message_tracker.cc.gcc-constexpr
chromium-76.0.3809.100/remoting/signaling/message_tracker.cc
+--- chromium-76.0.3809.100/remoting/signaling/message_tracker.cc.gcc-constexpr 2019-08-09
16:48:08.000000000 +0200
++++ chromium-76.0.3809.100/remoting/signaling/message_tracker.cc 2019-08-20
21:29:14.545465656 +0200
+@@ -9,8 +9,7 @@
+ namespace remoting {
+
+ // static
+-const base::TimeDelta MessageTracker::kCleanupInterval =
+- base::TimeDelta::FromMinutes(2);
++constexpr base::TimeDelta MessageTracker::kCleanupInterval;
+
+ MessageTracker::MessageTracker() = default;
+
+diff -up chromium-76.0.3809.100/remoting/signaling/message_tracker.h.gcc-constexpr
chromium-76.0.3809.100/remoting/signaling/message_tracker.h
+--- chromium-76.0.3809.100/remoting/signaling/message_tracker.h.gcc-constexpr 2019-08-20
22:02:25.625970954 +0200
++++ chromium-76.0.3809.100/remoting/signaling/message_tracker.h 2019-08-20
21:28:23.371952434 +0200
+@@ -36,7 +36,8 @@ class MessageTracker final {
+
+ // All IDs older than now - kCleanupInterval will be eventually removed, but
+ // they are not guaranteed to be immediately removed after the interval.
+- static const base::TimeDelta kCleanupInterval;
++ static constexpr base::TimeDelta kCleanupInterval =
++ base::TimeDelta::FromMinutes(2);
+
+ void RemoveExpiredIds();
+
+diff -up
chromium-76.0.3809.100/remoting/signaling/message_tracker_unittest.cc.gcc-constexpr
chromium-76.0.3809.100/remoting/signaling/message_tracker_unittest.cc
diff --git a/chromium-76.0.3809.100-gcc-themeservice-includes.patch
b/chromium-76.0.3809.100-gcc-themeservice-includes.patch
new file mode 100644
index 0000000..ad40bb9
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-themeservice-includes.patch
@@ -0,0 +1,36 @@
+From d08ea83acc2f5ff395c1fe54f52687e92fe51c3b Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 04 Jun 2019 22:01:03 +0200
+Subject: [PATCH] IWYU: ThemeService requires NativeTheme
+
+As ThemeService referes to NativeTheme through a ScopedObserver,
+the full declaration is required.
+
+Bug: 819294
+Change-Id: I9d5bd2e87cfaa76e87f9b5509daea24848906a63
+---
+
+diff --git a/chrome/browser/themes/theme_service.cc
b/chrome/browser/themes/theme_service.cc
+index d65388e2..23dc86d 100644
+--- a/chrome/browser/themes/theme_service.cc
++++ b/chrome/browser/themes/theme_service.cc
+@@ -54,7 +54,6 @@
+ #include "ui/gfx/color_palette.h"
+ #include "ui/gfx/image/image_skia.h"
+ #include "ui/native_theme/common_theme.h"
+-#include "ui/native_theme/native_theme.h"
+
+ #if BUILDFLAG(ENABLE_EXTENSIONS)
+ #include "base/scoped_observer.h"
+diff --git a/chrome/browser/themes/theme_service.h
b/chrome/browser/themes/theme_service.h
+index 6c79c72..f93dc0d 100644
+--- a/chrome/browser/themes/theme_service.h
++++ b/chrome/browser/themes/theme_service.h
+@@ -25,6 +25,7 @@
+ #include "extensions/buildflags/buildflags.h"
+ #include "extensions/common/extension_id.h"
+ #include "ui/base/theme_provider.h"
++#include "ui/native_theme/native_theme.h"
+ #include "ui/native_theme/native_theme_observer.h"
+
+ class BrowserThemePack;
diff --git a/chromium-76.0.3809.100-gcc-vulkan.patch
b/chromium-76.0.3809.100-gcc-vulkan.patch
new file mode 100644
index 0000000..cf93bce
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-vulkan.patch
@@ -0,0 +1,115 @@
+From fdb3bb1f8c41d044a5b0cb80257a26dd3c8f83a3 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 11 Jun 2019 17:39:38 +0000
+Subject: [PATCH] GCC: do not use old C notation to assign struct with property names.
+
+The notation for initialization of structs referring to its properties
+is invalid in C++. This is not accepted in GCC. It was making build
+fail in VulkanCommandBuffer.
+
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc: In member function
'void gpu::VulkanCommandBuffer::TransitionImageLayout(VkImage, VkImageLayout,
VkImageLayout)':
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:214:7: error:
expected primary-expression before '.' token
+ .subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:215:7: error:
expected primary-expression before '.' token
+ .subresourceRange.baseMipLevel = 0,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:216:7: error:
expected primary-expression before '.' token
+ .subresourceRange.levelCount = 1,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:217:7: error:
expected primary-expression before '.' token
+ .subresourceRange.baseArrayLayer = 0,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:218:7: error:
expected primary-expression before '.' token
+ .subresourceRange.layerCount = 1,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc: In member function
'void gpu::VulkanCommandBuffer::CopyBufferToImage(VkBuffer, VkImage, uint32_t,
uint32_t, uint32_t, uint32_t)':
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:235:7: error:
expected primary-expression before '.' token
+ .imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:236:7: error:
expected primary-expression before '.' token
+ .imageSubresource.mipLevel = 0,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:237:7: error:
expected primary-expression before '.' token
+ .imageSubresource.baseArrayLayer = 0,
+ ^
+./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:238:7: error:
expected primary-expression before '.' token
+ .imageSubresource.layerCount = 1,
+ ^
+Bug: 819294
+
+Change-Id: I999abece0c727e77964789183642ba62009c2c22
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1651802
+Commit-Queue: José Dapena Paz <jose.dapena(a)lge.com>
+Reviewed-by: Antoine Labour <piman(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#668033}
+---
+
+diff --git a/gpu/vulkan/vulkan_command_buffer.cc b/gpu/vulkan/vulkan_command_buffer.cc
+index ba776e4..4f14c85 100644
+--- a/gpu/vulkan/vulkan_command_buffer.cc
++++ b/gpu/vulkan/vulkan_command_buffer.cc
+@@ -207,21 +207,20 @@
+ void VulkanCommandBuffer::TransitionImageLayout(VkImage image,
+ VkImageLayout old_layout,
+ VkImageLayout new_layout) {
+- VkImageMemoryBarrier barrier = {
+- .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
+- .srcAccessMask = GetAccessMask(old_layout),
+- .dstAccessMask = GetAccessMask(new_layout),
+- .oldLayout = old_layout,
+- .newLayout = new_layout,
+- .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
+- .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
+- .image = image,
+- .subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
+- .subresourceRange.baseMipLevel = 0,
+- .subresourceRange.levelCount = 1,
+- .subresourceRange.baseArrayLayer = 0,
+- .subresourceRange.layerCount = 1,
+- };
++ VkImageMemoryBarrier barrier = {};
++ barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
++ barrier.srcAccessMask = GetAccessMask(old_layout);
++ barrier.dstAccessMask = GetAccessMask(new_layout);
++ barrier.oldLayout = old_layout;
++ barrier.newLayout = new_layout;
++ barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
++ barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
++ barrier.image = image;
++ barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
++ barrier.subresourceRange.baseMipLevel = 0;
++ barrier.subresourceRange.levelCount = 1;
++ barrier.subresourceRange.baseArrayLayer = 0;
++ barrier.subresourceRange.layerCount = 1;
+ vkCmdPipelineBarrier(command_buffer_, GetPipelineStageFlags(old_layout),
+ GetPipelineStageFlags(new_layout), 0, 0, nullptr, 0,
+ nullptr, 1, &barrier);
+@@ -233,17 +232,16 @@
+ uint32_t buffer_height,
+ uint32_t width,
+ uint32_t height) {
+- VkBufferImageCopy region = {
+- .bufferOffset = 0,
+- .bufferRowLength = buffer_width,
+- .bufferImageHeight = buffer_height,
+- .imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
+- .imageSubresource.mipLevel = 0,
+- .imageSubresource.baseArrayLayer = 0,
+- .imageSubresource.layerCount = 1,
+- .imageOffset = {0, 0, 0},
+- .imageExtent = {width, height, 1},
+- };
++ VkBufferImageCopy region = {};
++ region.bufferOffset = 0;
++ region.bufferRowLength = buffer_width;
++ region.bufferImageHeight = buffer_height;
++ region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
++ region.imageSubresource.mipLevel = 0;
++ region.imageSubresource.baseArrayLayer = 0;
++ region.imageSubresource.layerCount = 1;
++ region.imageOffset = {0, 0, 0};
++ region.imageExtent = {width, height, 1};
+ vkCmdCopyBufferToImage(command_buffer_, buffer, image,
+ VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ®ion);
+ }
diff --git a/chromium-76.0.3809.100-libusb_interrupt_event_handler.patch
b/chromium-76.0.3809.100-libusb_interrupt_event_handler.patch
new file mode 100644
index 0000000..690f0f9
--- /dev/null
+++ b/chromium-76.0.3809.100-libusb_interrupt_event_handler.patch
@@ -0,0 +1,15 @@
+diff -up chromium-76.0.3809.100/services/device/usb/usb_context.cc.modern-libusbx
chromium-76.0.3809.100/services/device/usb/usb_context.cc
+--- chromium-76.0.3809.100/services/device/usb/usb_context.cc.modern-libusbx 2019-08-12
15:40:49.034170484 +0200
++++ chromium-76.0.3809.100/services/device/usb/usb_context.cc 2019-08-12
15:41:23.775558867 +0200
+@@ -58,7 +58,11 @@ void UsbContext::UsbEventHandler::Run()
+
+ void UsbContext::UsbEventHandler::Stop() {
+ base::subtle::Release_Store(&running_, 0);
++#ifdef LIBUSB_API_VERSION >= 0x01000105
++ libusb_interrupt_event_handler(context_);
++#else
+ libusb_interrupt_handle_event(context_);
++#endif
+ }
+
+ UsbContext::UsbContext(PlatformUsbContext context) : context_(context) {
diff --git a/chromium-76.0.3809.100-pulse-api-change.patch
b/chromium-76.0.3809.100-pulse-api-change.patch
new file mode 100644
index 0000000..d4e2b46
--- /dev/null
+++ b/chromium-76.0.3809.100-pulse-api-change.patch
@@ -0,0 +1,47 @@
+diff -up chromium-76.0.3809.100/media/audio/pulse/pulse.sigs.pulse-api-change
chromium-76.0.3809.100/media/audio/pulse/pulse.sigs
+--- chromium-76.0.3809.100/media/audio/pulse/pulse.sigs.pulse-api-change 2019-08-14
23:18:59.624627870 +0200
++++ chromium-76.0.3809.100/media/audio/pulse/pulse.sigs 2019-08-14 23:19:41.258104998
+0200
+@@ -24,11 +24,11 @@ pa_operation* pa_context_get_source_info
+ pa_operation* pa_context_get_source_info_by_name(pa_context* c, const char* name,
pa_source_info_cb_t cb, void *userdata);
+ pa_operation* pa_context_get_source_info_list(pa_context* c, pa_source_info_cb_t cb,
void* userdata);
+ pa_operation* pa_context_get_sink_info_list(pa_context* c, pa_sink_info_cb_t cb, void*
userdata);
+-pa_context_state_t pa_context_get_state(pa_context* c);
++pa_context_state_t pa_context_get_state(const pa_context* c);
+ pa_context* pa_context_new(pa_mainloop_api* mainloop, const char* name);
+ pa_operation* pa_context_set_source_volume_by_index(pa_context* c, uint32_t idx, const
pa_cvolume* volume, pa_context_success_cb_t cb, void* userdata);
+ void pa_context_set_state_callback(pa_context* c, pa_context_notify_cb_t cb, void*
userdata);
+-pa_operation_state_t pa_operation_get_state(pa_operation* o);
++pa_operation_state_t pa_operation_get_state(const pa_operation* o);
+ void pa_context_unref(pa_context* c);
+ void pa_operation_unref(pa_operation* o);
+ int pa_stream_begin_write(pa_stream* p, void** data, size_t* nbytes);
+@@ -38,23 +38,23 @@ pa_operation* pa_stream_cork(pa_stream*
+ int pa_stream_disconnect(pa_stream* s);
+ int pa_stream_drop(pa_stream *p);
+ pa_operation* pa_stream_flush(pa_stream* s, pa_stream_success_cb_t cb, void* userdata);
+-uint32_t pa_stream_get_device_index(pa_stream* s);
++uint32_t pa_stream_get_device_index(const pa_stream* s);
+ int pa_stream_get_latency(pa_stream* s, pa_usec_t* r_usec, int* negative);
+-pa_stream_state_t pa_stream_get_state(pa_stream* p);
++pa_stream_state_t pa_stream_get_state(const pa_stream* p);
+ pa_stream* pa_stream_new(pa_context* c, const char* name, const pa_sample_spec* ss,
const pa_channel_map * map);
+ pa_stream* pa_stream_new_with_proplist(pa_context* c, const char* name, const
pa_sample_spec* ss, const pa_channel_map* map, pa_proplist* p);
+ pa_proplist* pa_proplist_new(void);
+-int pa_proplist_contains(pa_proplist* p, const char* key);
++int pa_proplist_contains(const pa_proplist* p, const char* key);
+ void pa_proplist_free(pa_proplist* p);
+-const char* pa_proplist_gets(pa_proplist* p, const char* key);
++const char* pa_proplist_gets(const pa_proplist* p, const char* key);
+ int pa_proplist_sets(pa_proplist* p, const char* key, const char* value);
+-size_t pa_stream_readable_size(pa_stream *p);
++size_t pa_stream_readable_size(const pa_stream *p);
+ int pa_stream_peek(pa_stream* p, const void** data, size_t* nbytes);
+ void pa_stream_set_read_callback(pa_stream* p, pa_stream_request_cb_t cb, void*
userdata);
+ void pa_stream_set_state_callback(pa_stream* s, pa_stream_notify_cb_t cb, void*
userdata);
+ int pa_stream_write(pa_stream* p, const void* data, size_t nbytes, pa_free_cb_t free_cb,
int64_t offset, pa_seek_mode_t seek);
+ void pa_stream_set_write_callback(pa_stream *p, pa_stream_request_cb_t cb, void
*userdata);
+ void pa_stream_unref(pa_stream* s);
+-int pa_context_errno(pa_context *c);
++int pa_context_errno(const pa_context *c);
+ const char* pa_strerror(int error);
+ pa_cvolume* pa_cvolume_set(pa_cvolume* a, unsigned channels, pa_volume_t v);
diff --git a/chromium-76.0.3809.100-quiche-compile-fix.patch
b/chromium-76.0.3809.100-quiche-compile-fix.patch
new file mode 100644
index 0000000..98789d9
--- /dev/null
+++ b/chromium-76.0.3809.100-quiche-compile-fix.patch
@@ -0,0 +1,225 @@
+diff -up
chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc.quiche-compile-fix
chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc
+---
chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc.quiche-compile-fix 2019-08-14
09:58:07.721193200 +0200
++++
chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc 2019-08-14
09:59:33.131041525 +0200
+@@ -62,37 +62,37 @@ const size_t kStatelessResetTokenLength
+ std::string TransportParameterIdToString(
+ TransportParameters::TransportParameterId param_id) {
+ switch (param_id) {
+- case kOriginalConnectionId:
++ case TransportParameters::kOriginalConnectionId:
+ return "original_connection_id";
+- case kIdleTimeout:
++ case TransportParameters::kIdleTimeout:
+ return "idle_timeout";
+- case kStatelessResetToken:
++ case TransportParameters::kStatelessResetToken:
+ return "stateless_reset_token";
+- case kMaxPacketSize:
++ case TransportParameters::kMaxPacketSize:
+ return "max_packet_size";
+- case kInitialMaxData:
++ case TransportParameters::kInitialMaxData:
+ return "initial_max_data";
+- case kInitialMaxStreamDataBidiLocal:
++ case TransportParameters::kInitialMaxStreamDataBidiLocal:
+ return "initial_max_stream_data_bidi_local";
+- case kInitialMaxStreamDataBidiRemote:
++ case TransportParameters::kInitialMaxStreamDataBidiRemote:
+ return "initial_max_stream_data_bidi_remote";
+- case kInitialMaxStreamDataUni:
++ case TransportParameters::kInitialMaxStreamDataUni:
+ return "initial_max_stream_data_uni";
+- case kInitialMaxStreamsBidi:
++ case TransportParameters::kInitialMaxStreamsBidi:
+ return "initial_max_streams_bidi";
+- case kInitialMaxStreamsUni:
++ case TransportParameters::kInitialMaxStreamsUni:
+ return "initial_max_streams_uni";
+- case kAckDelayExponent:
++ case TransportParameters::kAckDelayExponent:
+ return "ack_delay_exponent";
+- case kMaxAckDelay:
++ case TransportParameters::kMaxAckDelay:
+ return "max_ack_delay";
+- case kDisableMigration:
++ case TransportParameters::kDisableMigration:
+ return "disable_migration";
+- case kPreferredAddress:
++ case TransportParameters::kPreferredAddress:
+ return "preferred_address";
+- case kGoogleQuicParam:
++ case TransportParameters::kGoogleQuicParam:
+ return "google";
+- case kGoogleQuicVersion:
++ case TransportParameters::kGoogleQuicVersion:
+ return "google-version";
+ }
+ return "Unknown(" + QuicTextUtils::Uint64ToString(param_id) +
")";
+@@ -390,7 +390,7 @@ bool SerializeTransportParameters(const
+ CBB original_connection_id_param;
+ if (!in.original_connection_id.IsEmpty()) {
+ DCHECK_EQ(Perspective::IS_SERVER, in.perspective);
+- if (!CBB_add_u16(¶ms, kOriginalConnectionId) ||
++ if (!CBB_add_u16(¶ms, TransportParameters::kOriginalConnectionId) ||
+ !CBB_add_u16_length_prefixed(¶ms, &original_connection_id_param) ||
+ !CBB_add_bytes(
+ &original_connection_id_param,
+@@ -412,7 +412,7 @@ bool SerializeTransportParameters(const
+ if (!in.stateless_reset_token.empty()) {
+ DCHECK_EQ(kStatelessResetTokenLength, in.stateless_reset_token.size());
+ DCHECK_EQ(Perspective::IS_SERVER, in.perspective);
+- if (!CBB_add_u16(¶ms, kStatelessResetToken) ||
++ if (!CBB_add_u16(¶ms, TransportParameters::kStatelessResetToken) ||
+ !CBB_add_u16_length_prefixed(¶ms, &stateless_reset_token_param) ||
+ !CBB_add_bytes(&stateless_reset_token_param,
+ in.stateless_reset_token.data(),
+@@ -438,7 +438,7 @@ bool SerializeTransportParameters(const
+
+ // disable_migration
+ if (in.disable_migration) {
+- if (!CBB_add_u16(¶ms, kDisableMigration) ||
++ if (!CBB_add_u16(¶ms, TransportParameters::kDisableMigration) ||
+ !CBB_add_u16(¶ms, 0u)) { // 0 is the length of this parameter.
+ QUIC_BUG << "Failed to write disable_migration for " << in;
+ return false;
+@@ -458,7 +458,7 @@ bool SerializeTransportParameters(const
+ QUIC_BUG << "Bad lengths " << *in.preferred_address;
+ return false;
+ }
+- if (!CBB_add_u16(¶ms, kPreferredAddress) ||
++ if (!CBB_add_u16(¶ms, TransportParameters::kPreferredAddress) ||
+ !CBB_add_u16_length_prefixed(¶ms, &preferred_address_params) ||
+ !CBB_add_bytes(
+ &preferred_address_params,
+@@ -491,7 +491,7 @@ bool SerializeTransportParameters(const
+ if (in.google_quic_params) {
+ const QuicData& serialized_google_quic_params =
+ in.google_quic_params->GetSerialized();
+- if (!CBB_add_u16(¶ms, kGoogleQuicParam) ||
++ if (!CBB_add_u16(¶ms, TransportParameters::kGoogleQuicParam) ||
+ !CBB_add_u16_length_prefixed(¶ms, &google_quic_params) ||
+ !CBB_add_bytes(&google_quic_params,
+ reinterpret_cast<const uint8_t*>(
+@@ -505,7 +505,7 @@ bool SerializeTransportParameters(const
+
+ // Google-specific version extension.
+ CBB google_version_params;
+- if (!CBB_add_u16(¶ms, kGoogleQuicVersion) ||
++ if (!CBB_add_u16(¶ms, TransportParameters::kGoogleQuicVersion) ||
+ !CBB_add_u16_length_prefixed(¶ms, &google_version_params) ||
+ !CBB_add_u32(&google_version_params, in.version)) {
+ QUIC_BUG << "Failed to write Google version extension for " <<
in;
+@@ -565,7 +565,7 @@ bool ParseTransportParameters(const uint
+ }
+ bool parse_success = true;
+ switch (param_id) {
+- case kOriginalConnectionId:
++ case TransportParameters::kOriginalConnectionId:
+ if (!out->original_connection_id.IsEmpty()) {
+ QUIC_DLOG(ERROR) << "Received a second original connection
ID";
+ return false;
+@@ -581,10 +581,10 @@ bool ParseTransportParameters(const uint
+ CBS_len(&value));
+ }
+ break;
+- case kIdleTimeout:
++ case TransportParameters::kIdleTimeout:
+ parse_success = out->idle_timeout_milliseconds.ReadFromCbs(&value);
+ break;
+- case kStatelessResetToken:
++ case TransportParameters::kStatelessResetToken:
+ if (!out->stateless_reset_token.empty()) {
+ QUIC_DLOG(ERROR) << "Received a second stateless reset
token";
+ return false;
+@@ -597,36 +597,36 @@ bool ParseTransportParameters(const uint
+ out->stateless_reset_token.assign(CBS_data(&value),
+ CBS_data(&value) + CBS_len(&value));
+ break;
+- case kMaxPacketSize:
++ case TransportParameters::kMaxPacketSize:
+ parse_success = out->max_packet_size.ReadFromCbs(&value);
+ break;
+- case kInitialMaxData:
++ case TransportParameters::kInitialMaxData:
+ parse_success = out->initial_max_data.ReadFromCbs(&value);
+ break;
+- case kInitialMaxStreamDataBidiLocal:
++ case TransportParameters::kInitialMaxStreamDataBidiLocal:
+ parse_success =
+ out->initial_max_stream_data_bidi_local.ReadFromCbs(&value);
+ break;
+- case kInitialMaxStreamDataBidiRemote:
++ case TransportParameters::kInitialMaxStreamDataBidiRemote:
+ parse_success =
+ out->initial_max_stream_data_bidi_remote.ReadFromCbs(&value);
+ break;
+- case kInitialMaxStreamDataUni:
++ case TransportParameters::kInitialMaxStreamDataUni:
+ parse_success = out->initial_max_stream_data_uni.ReadFromCbs(&value);
+ break;
+- case kInitialMaxStreamsBidi:
++ case TransportParameters::kInitialMaxStreamsBidi:
+ parse_success = out->initial_max_streams_bidi.ReadFromCbs(&value);
+ break;
+- case kInitialMaxStreamsUni:
++ case TransportParameters::kInitialMaxStreamsUni:
+ parse_success = out->initial_max_streams_uni.ReadFromCbs(&value);
+ break;
+- case kAckDelayExponent:
++ case TransportParameters::kAckDelayExponent:
+ parse_success = out->ack_delay_exponent.ReadFromCbs(&value);
+ break;
+- case kMaxAckDelay:
++ case TransportParameters::kMaxAckDelay:
+ parse_success = out->max_ack_delay.ReadFromCbs(&value);
+ break;
+- case kDisableMigration:
++ case TransportParameters::kDisableMigration:
+ if (out->disable_migration) {
+ QUIC_DLOG(ERROR) << "Received a second disable migration";
+ return false;
+@@ -638,7 +638,7 @@ bool ParseTransportParameters(const uint
+ }
+ out->disable_migration = true;
+ break;
+- case kPreferredAddress: {
++ case TransportParameters::kPreferredAddress: {
+ uint16_t ipv4_port, ipv6_port;
+ in_addr ipv4_address;
+ in6_addr ipv6_address;
+@@ -692,7 +692,7 @@ bool ParseTransportParameters(const uint
+ QuicMakeUnique<TransportParameters::PreferredAddress>(
+ preferred_address);
+ } break;
+- case kGoogleQuicParam: {
++ case TransportParameters::kGoogleQuicParam: {
+ if (out->google_quic_params) {
+ QUIC_DLOG(ERROR) << "Received a second Google parameter";
+ return false;
+@@ -701,7 +701,7 @@ bool ParseTransportParameters(const uint
+ reinterpret_cast<const char*>(CBS_data(&value)),
CBS_len(&value));
+ out->google_quic_params = CryptoFramer::ParseMessage(serialized_params);
+ } break;
+- case kGoogleQuicVersion: {
++ case TransportParameters::kGoogleQuicVersion: {
+ if (!CBS_get_u32(&value, &out->version)) {
+ QUIC_DLOG(ERROR) << "Failed to parse Google version
extension";
+ return false;
+diff -up
chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/quic_socket_address_coder.cc.quiche-compile-fix
chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/quic_socket_address_coder.cc
+---
chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/quic_socket_address_coder.cc.quiche-compile-fix 2019-08-14
09:59:19.139902052 +0200
++++
chromium-76.0.3809.100/net/third_party/quiche/src/quic/core/quic_socket_address_coder.cc 2019-08-14
09:59:33.132041535 +0200
+@@ -2,10 +2,12 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
+-#include <string>
+-
+ #include "net/third_party/quiche/src/quic/core/quic_socket_address_coder.h"
+
++#include <cstring>
++#include <string>
++#include <vector>
++
+ namespace quic {
+
+ namespace {
diff --git a/chromium-76.0.3809.100-throttling-dead-beef.patch
b/chromium-76.0.3809.100-throttling-dead-beef.patch
new file mode 100644
index 0000000..5e392e6
--- /dev/null
+++ b/chromium-76.0.3809.100-throttling-dead-beef.patch
@@ -0,0 +1,30 @@
+From 53bb5a463ee956c70230eaa5450022185d0ddc3c Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Thu, 06 Jun 2019 07:54:05 +0000
+Subject: [PATCH] ThrottlingController::Liveness needs to be uint32_t
+
+We are setting kAlive and kDead values assigning values that
+are bigger than the maximum signed int32. It is better to use
+uint32_t in this case.
+
+Bug: 819294
+Change-Id: If72b48291a66a3a9db24b4c8e2d11d31936a66ee
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1645772
+Reviewed-by: Kinuko Yasuda <kinuko(a)chromium.org>
+Commit-Queue: José Dapena Paz <jose.dapena(a)lge.com>
+Cr-Commit-Position: refs/heads/master@{#666619}
+---
+
+diff --git a/services/network/throttling/throttling_controller.h
b/services/network/throttling/throttling_controller.h
+index 43751c4..3c6f87b 100644
+--- a/services/network/throttling/throttling_controller.h
++++ b/services/network/throttling/throttling_controller.h
+@@ -38,7 +38,7 @@
+
+ //
TODO(https://crbug.com/960874): Debugging code to try and shed some light
+ // on why the owned maps are invalid.
+- enum class Liveness : int32_t {
++ enum class Liveness : uint32_t {
+ kAlive = 0xCA11AB13,
+ kDead = 0xDEADBEEF,
+ };
diff --git a/chromium-76.0.3809.100-vtable-symbol-undefined.patch
b/chromium-76.0.3809.100-vtable-symbol-undefined.patch
new file mode 100644
index 0000000..64532df
--- /dev/null
+++ b/chromium-76.0.3809.100-vtable-symbol-undefined.patch
@@ -0,0 +1,11 @@
+diff -up
chromium-76.0.3809.100/net/quic/platform/impl/quic_default_proof_providers_impl.cc.vtable-symbol-undefined
chromium-76.0.3809.100/net/quic/platform/impl/quic_default_proof_providers_impl.cc
+---
chromium-76.0.3809.100/net/quic/platform/impl/quic_default_proof_providers_impl.cc.vtable-symbol-undefined 2019-08-20
21:21:24.901899270 +0200
++++
chromium-76.0.3809.100/net/quic/platform/impl/quic_default_proof_providers_impl.cc 2019-08-20
21:19:30.361746211 +0200
+@@ -18,6 +18,7 @@
+ #include "net/quic/crypto/proof_verifier_chromium.h"
+ #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
+ #include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h"
++#include "net/quic/platform/impl/quic_flags_impl.cc"
+
+ DEFINE_QUIC_COMMAND_LINE_FLAG(std::string,
+ certificate_file,
diff --git a/chromium-76.0.3809.100-weak-ptr-no-except.patch
b/chromium-76.0.3809.100-weak-ptr-no-except.patch
new file mode 100644
index 0000000..a392971
--- /dev/null
+++ b/chromium-76.0.3809.100-weak-ptr-no-except.patch
@@ -0,0 +1,66 @@
+From 0370838723e786b51e7ec8ab55014811ec3e3aa3 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Thu, 18 Jul 2019 14:26:11 +0200
+Subject: [PATCH] Make base::WeakPtr move constructor/operator noexcept to fix GCC build
regression
+
+A GCC build regression has happened on DisjointRangeLockManager, as its move
+operator and constructor were declared noexcept. This was failing because the
+default implementation depended on base::WeakPtr, that did not provide
+noexcept declaration for them.
+
+So make base::WeakPtr noexcept.
+
+Bug: 819294
+Change-Id: I936784b881c7c1afea136ceedbe9341e76464f95
+---
+
+diff --git a/base/memory/weak_ptr.cc b/base/memory/weak_ptr.cc
+index 64fd499..0efcc44 100644
+--- a/base/memory/weak_ptr.cc
++++ b/base/memory/weak_ptr.cc
+@@ -46,7 +46,7 @@
+
+ WeakReference::~WeakReference() = default;
+
+-WeakReference::WeakReference(WeakReference&& other) = default;
++WeakReference::WeakReference(WeakReference&& other) noexcept = default;
+
+ WeakReference::WeakReference(const WeakReference& other) = default;
+
+diff --git a/base/memory/weak_ptr.h b/base/memory/weak_ptr.h
+index 72b5f1f..ccd22fd13 100644
+--- a/base/memory/weak_ptr.h
++++ b/base/memory/weak_ptr.h
+@@ -116,9 +116,9 @@
+ explicit WeakReference(const scoped_refptr<Flag>& flag);
+ ~WeakReference();
+
+- WeakReference(WeakReference&& other);
++ WeakReference(WeakReference&& other) noexcept;
+ WeakReference(const WeakReference& other);
+- WeakReference& operator=(WeakReference&& other) = default;
++ WeakReference& operator=(WeakReference&& other) noexcept = default;
+ WeakReference& operator=(const WeakReference& other) = default;
+
+ bool IsValid() const;
+@@ -153,9 +153,9 @@
+ ~WeakPtrBase();
+
+ WeakPtrBase(const WeakPtrBase& other) = default;
+- WeakPtrBase(WeakPtrBase&& other) = default;
++ WeakPtrBase(WeakPtrBase&& other) noexcept = default;
+ WeakPtrBase& operator=(const WeakPtrBase& other) = default;
+- WeakPtrBase& operator=(WeakPtrBase&& other) = default;
++ WeakPtrBase& operator=(WeakPtrBase&& other) noexcept = default;
+
+ void reset() {
+ ref_ = internal::WeakReference();
+@@ -236,7 +236,7 @@
+ ptr_ = reinterpret_cast<uintptr_t>(t);
+ }
+ template <typename U>
+- WeakPtr(WeakPtr<U>&& other) : WeakPtrBase(std::move(other)) {
++ WeakPtr(WeakPtr<U>&& other) noexcept : WeakPtrBase(std::move(other)) {
+ // Need to cast from U* to T* to do pointer adjustment in case of multiple
+ // inheritance. This also enforces the "U is a T" rule.
+ T* t = reinterpret_cast<U*>(other.ptr_);
diff --git a/chromium-76.0.3809.132-certificate-transparency.patch
b/chromium-76.0.3809.132-certificate-transparency.patch
new file mode 100644
index 0000000..8bfbced
--- /dev/null
+++ b/chromium-76.0.3809.132-certificate-transparency.patch
@@ -0,0 +1,539 @@
+diff -up
chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager_browsertest.cc.certificate-transparency
chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager_browsertest.cc
+---
chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager_browsertest.cc.certificate-transparency 2019-09-03
22:08:28.931786496 +0200
++++
chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager_browsertest.cc 2019-09-03
22:15:24.743555759 +0200
+@@ -17,6 +17,7 @@
+ #include "chrome/common/pref_names.h"
+ #include "chrome/test/base/in_process_browser_test.h"
+ #include "components/prefs/pref_service.h"
++#include "services/network/public/cpp/network_service_buildflags.h"
+ #include "services/network/public/mojom/network_context.mojom.h"
+ #include "services/network/public/mojom/network_service.mojom.h"
+ #include "testing/gmock/include/gmock/gmock.h"
+@@ -297,3 +298,55 @@ IN_PROC_BROWSER_TEST_P(SystemNetworkCont
+ INSTANTIATE_TEST_SUITE_P(,
+ SystemNetworkContextManagerStubResolverBrowsertest,
+ ::testing::Values(false, true));
++
++class SystemNetworkContextManagerCertificateTransparencyBrowsertest
++ : public SystemNetworkContextManagerBrowsertest,
++ public testing::WithParamInterface<base::Optional<bool>> {
++ public:
++ SystemNetworkContextManagerCertificateTransparencyBrowsertest() {
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ GetParam());
++ }
++ ~SystemNetworkContextManagerCertificateTransparencyBrowsertest() override {
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ base::nullopt);
++ }
++};
++
++#if BUILDFLAG(IS_CT_SUPPORTED)
++IN_PROC_BROWSER_TEST_P(
++ SystemNetworkContextManagerCertificateTransparencyBrowsertest,
++ CertificateTransparencyConfig) {
++ network::mojom::NetworkContextParamsPtr context_params =
++ g_browser_process->system_network_context_manager()
++ ->CreateDefaultNetworkContextParams();
++
++ const bool kDefault =
++#if defined(GOOGLE_CHROME_BUILD) && defined(OFFICIAL_BUILD) && \
++ !defined(OS_ANDROID)
++ true;
++#else
++ false;
++#endif
++
++ EXPECT_EQ(GetParam().value_or(kDefault),
++ context_params->enforce_chrome_ct_policy);
++ EXPECT_NE(GetParam().value_or(kDefault), context_params->ct_logs.empty());
++
++ if (GetParam().value_or(kDefault)) {
++ bool has_google_log = false;
++ bool has_disqualified_log = false;
++ for (const auto& ct_log : context_params->ct_logs) {
++ has_google_log |= ct_log->operated_by_google;
++ has_disqualified_log |= ct_log->disqualified_at.has_value();
++ }
++ EXPECT_TRUE(has_google_log);
++ EXPECT_TRUE(has_disqualified_log);
++ }
++}
++#endif
++
++INSTANTIATE_TEST_SUITE_P(
++ ,
++ SystemNetworkContextManagerCertificateTransparencyBrowsertest,
++ ::testing::Values(base::nullopt, true, false));
+diff -up
chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.cc.certificate-transparency
chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.cc
+---
chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.cc.certificate-transparency 2019-08-26
21:02:05.000000000 +0200
++++
chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.cc 2019-09-03
22:13:26.451198970 +0200
+@@ -4,11 +4,13 @@
+
+ #include "chrome/browser/net/system_network_context_manager.h"
+
++#include <algorithm>
+ #include <set>
+ #include <unordered_map>
+ #include <utility>
+
+ #include "base/bind.h"
++#include "base/build_time.h"
+ #include "base/command_line.h"
+ #include "base/feature_list.h"
+ #include "base/logging.h"
+@@ -51,6 +53,7 @@
+ #include "content/public/common/mime_handler_view_mode.h"
+ #include "content/public/common/service_names.mojom.h"
+ #include "content/public/common/user_agent.h"
++#include "crypto/sha2.h"
+ #include "mojo/public/cpp/bindings/associated_interface_ptr.h"
+ #include "net/dns/public/util.h"
+ #include "net/net_buildflags.h"
+@@ -81,6 +84,20 @@
+
+ namespace {
+
++constexpr bool kCertificateTransparencyEnabled =
++#if defined(GOOGLE_CHROME_BUILD) && defined(OFFICIAL_BUILD) && \
++ !defined(OS_ANDROID)
++ // Certificate Transparency is only enabled if:
++ // - Desktop (!OS_ANDROID); OS_IOS does not use this file
++ // - base::GetBuildTime() is deterministic to the source (OFFICIAL_BUILD)
++ // - The build in reliably updatable (GOOGLE_CHROME_BUILD)
++ true;
++#else
++ false;
++#endif
++
++bool g_enable_certificate_transparency = kCertificateTransparencyEnabled;
++
+ // The global instance of the SystemNetworkContextmanager.
+ SystemNetworkContextManager* g_system_network_context_manager = nullptr;
+
+@@ -686,14 +703,35 @@ SystemNetworkContextManager::CreateDefau
+
+ bool http_09_on_non_default_ports_enabled = false;
+ #if !defined(OS_ANDROID)
+- // CT is only enabled on Desktop platforms for now.
+- network_context_params->enforce_chrome_ct_policy = true;
+- for (const auto& ct_log : certificate_transparency::GetKnownLogs()) {
+- // TODO(rsleevi):
https://crbug.com/702062 - Remove this duplication.
+- network::mojom::CTLogInfoPtr log_info = network::mojom::CTLogInfo::New();
+- log_info->public_key = std::string(ct_log.log_key, ct_log.log_key_length);
+- log_info->name = ct_log.log_name;
+- network_context_params->ct_logs.push_back(std::move(log_info));
++
++ if (g_enable_certificate_transparency) {
++ network_context_params->enforce_chrome_ct_policy = true;
++ network_context_params->ct_log_update_time = base::GetBuildTime();
++
++ std::vector<std::string> operated_by_google_logs =
++ certificate_transparency::GetLogsOperatedByGoogle();
++ std::vector<std::pair<std::string, base::TimeDelta>> disqualified_logs
=
++ certificate_transparency::GetDisqualifiedLogs();
++ for (const auto& ct_log : certificate_transparency::GetKnownLogs()) {
++ // TODO(rsleevi):
https://crbug.com/702062 - Remove this duplication.
++ network::mojom::CTLogInfoPtr log_info = network::mojom::CTLogInfo::New();
++ log_info->public_key = std::string(ct_log.log_key, ct_log.log_key_length);
++ log_info->name = ct_log.log_name;
++
++ std::string log_id = crypto::SHA256HashString(log_info->public_key);
++ log_info->operated_by_google =
++ std::binary_search(std::begin(operated_by_google_logs),
++ std::end(operated_by_google_logs), log_id);
++ auto it = std::lower_bound(
++ std::begin(disqualified_logs), std::end(disqualified_logs), log_id,
++ [](const auto& disqualified_log, const std::string& log_id) {
++ return disqualified_log.first < log_id;
++ });
++ if (it != std::end(disqualified_logs) && it->first == log_id) {
++ log_info->disqualified_at = it->second;
++ }
++ network_context_params->ct_logs.push_back(std::move(log_info));
++ }
+ }
+
+ const base::Value* value =
+@@ -756,6 +794,12 @@ SystemNetworkContextManager::GetHttpAuth
+ return CreateHttpAuthDynamicParams(g_browser_process->local_state());
+ }
+
++void SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ base::Optional<bool> enabled) {
++ g_enable_certificate_transparency =
++ enabled.value_or(kCertificateTransparencyEnabled);
++}
++
+ network::mojom::NetworkContextParamsPtr
+ SystemNetworkContextManager::CreateNetworkContextParams() {
+ // TODO(mmenke): Set up parameters here (in memory cookie store, etc).
+diff -up
chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.h.certificate-transparency
chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.h
+---
chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.h.certificate-transparency 2019-08-26
21:02:05.000000000 +0200
++++ chromium-76.0.3809.132/chrome/browser/net/system_network_context_manager.h 2019-09-03
22:08:28.931786496 +0200
+@@ -158,6 +158,12 @@ class SystemNetworkContextManager {
+ static network::mojom::HttpAuthDynamicParamsPtr
+ GetHttpAuthDynamicParamsForTesting();
+
++ // Enables Certificate Transparency and enforcing the Chrome Certificate
++ // Transparency Policy. For test use only. Use base::nullopt_t to reset to
++ // the default state.
++ static void SetEnableCertificateTransparencyForTesting(
++ base::Optional<bool> enabled);
++
+ private:
+ class URLLoaderFactoryForSystem;
+
+diff -up
chromium-76.0.3809.132/chrome/browser/policy/policy_browsertest.cc.certificate-transparency
chromium-76.0.3809.132/chrome/browser/policy/policy_browsertest.cc
+---
chromium-76.0.3809.132/chrome/browser/policy/policy_browsertest.cc.certificate-transparency 2019-08-26
21:02:05.000000000 +0200
++++ chromium-76.0.3809.132/chrome/browser/policy/policy_browsertest.cc 2019-09-03
22:08:28.932786508 +0200
+@@ -4834,7 +4834,7 @@ IN_PROC_BROWSER_TEST_P(SSLPolicyTestComm
+ browser()->tab_strip_model()->GetActiveWebContents()->GetTitle());
+ }
+
+-IN_PROC_BROWSER_TEST_F(PolicyTest,
++IN_PROC_BROWSER_TEST_F(CertificateTransparencyPolicyTest,
+ CertificateTransparencyEnforcementDisabledForCas) {
+ net::EmbeddedTestServer https_server_ok(net::EmbeddedTestServer::TYPE_HTTPS);
+ https_server_ok.SetSSLConfig(net::EmbeddedTestServer::CERT_OK);
+diff -up
chromium-76.0.3809.132/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc.certificate-transparency
chromium-76.0.3809.132/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc
+---
chromium-76.0.3809.132/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc.certificate-transparency 2019-08-26
21:02:07.000000000 +0200
++++
chromium-76.0.3809.132/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc 2019-09-03
22:08:28.932786508 +0200
+@@ -8,6 +8,7 @@
+ #include "base/callback.h"
+ #include "base/run_loop.h"
+ #include "base/test/scoped_feature_list.h"
++#include "chrome/browser/net/system_network_context_manager.h"
+ #include "chrome/browser/profiles/profile.h"
+ #include "chrome/browser/ssl/cert_verifier_browser_test.h"
+ #include "chrome/browser/ui/browser.h"
+@@ -27,7 +28,17 @@ namespace {
+ // received by a server.
+ class ExpectCTBrowserTest : public CertVerifierBrowserTest {
+ public:
+- ExpectCTBrowserTest() : CertVerifierBrowserTest() {}
++ ExpectCTBrowserTest() : CertVerifierBrowserTest() {
++ // Expect-CT reporting depends on actually enforcing Certificate
++ // Transparency.
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ true);
++ }
++
++ ~ExpectCTBrowserTest() override {
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ base::nullopt);
++ }
+
+ void SetUpOnMainThread() override {
+ run_loop_ = std::make_unique<base::RunLoop>();
+diff -up
chromium-76.0.3809.132/chrome/browser/ssl/security_state_tab_helper_browsertest.cc.certificate-transparency
chromium-76.0.3809.132/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
+---
chromium-76.0.3809.132/chrome/browser/ssl/security_state_tab_helper_browsertest.cc.certificate-transparency 2019-08-26
21:02:07.000000000 +0200
++++
chromium-76.0.3809.132/chrome/browser/ssl/security_state_tab_helper_browsertest.cc 2019-09-03
22:08:28.932786508 +0200
+@@ -457,6 +457,13 @@ class SecurityStateTabHelperTest : publi
+ SecurityStateTabHelperTest()
+ : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {
+ https_server_.ServeFilesFromSourceDirectory(GetChromeTestDataDir());
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ true);
++ }
++
++ ~SecurityStateTabHelperTest() override {
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ base::nullopt);
+ }
+
+ void SetUpOnMainThread() override {
+diff -up
chromium-76.0.3809.132/chrome/browser/ssl/ssl_browsertest.cc.certificate-transparency
chromium-76.0.3809.132/chrome/browser/ssl/ssl_browsertest.cc
+---
chromium-76.0.3809.132/chrome/browser/ssl/ssl_browsertest.cc.certificate-transparency 2019-08-26
21:02:07.000000000 +0200
++++ chromium-76.0.3809.132/chrome/browser/ssl/ssl_browsertest.cc 2019-09-03
22:08:28.934786531 +0200
+@@ -2008,8 +2008,14 @@ class CertificateTransparencySSLUITest :
+ public:
+ CertificateTransparencySSLUITest()
+ : CertVerifierBrowserTest(),
+- https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {}
+- ~CertificateTransparencySSLUITest() override {}
++ https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ true);
++ }
++ ~CertificateTransparencySSLUITest() override {
++ SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
++ base::nullopt);
++ }
+
+ void SetUpOnMainThread() override {
+ CertVerifierBrowserTest::SetUpOnMainThread();
+diff -up
chromium-76.0.3809.132/components/certificate_transparency/chrome_ct_policy_enforcer.h.certificate-transparency
chromium-76.0.3809.132/components/certificate_transparency/chrome_ct_policy_enforcer.h
+---
chromium-76.0.3809.132/components/certificate_transparency/chrome_ct_policy_enforcer.h.certificate-transparency 2019-08-26
21:02:14.000000000 +0200
++++
chromium-76.0.3809.132/components/certificate_transparency/chrome_ct_policy_enforcer.h 2019-09-03
22:08:28.934786531 +0200
+@@ -45,6 +45,19 @@ class ChromeCTPolicyEnforcer : public ne
+
+ void SetClockForTesting(const base::Clock* clock) { clock_ = clock; }
+
++ //
TODO(https://crbug.com/999240): These are exposed to allow end-to-end
++ // testing by higher layers (i.e. that the ChromeCTPolicyEnforcer is
++ // correctly constructed). When either this issue or
https://crbug.com/848277
++ // are fixed, the configuration can be tested independently, and these can
++ // be removed.
++ const std::vector<std::string>& operated_by_google_logs_for_testing() {
++ return operated_by_google_logs_;
++ }
++ const std::vector<std::pair<std::string, base::TimeDelta>>&
++ disqualified_logs_for_testing() {
++ return disqualified_logs_;
++ }
++
+ private:
+ // Returns true if the log identified by |log_id| (the SHA-256 hash of the
+ // log's DER-encoded SPKI) has been disqualified, and sets
+diff -up
chromium-76.0.3809.132/services/network/network_context.cc.certificate-transparency
chromium-76.0.3809.132/services/network/network_context.cc
+---
chromium-76.0.3809.132/services/network/network_context.cc.certificate-transparency 2019-08-26
21:02:33.000000000 +0200
++++ chromium-76.0.3809.132/services/network/network_context.cc 2019-09-03
22:17:27.977834857 +0200
+@@ -35,6 +35,7 @@
+ #include "components/prefs/pref_registry_simple.h"
+ #include "components/prefs/pref_service.h"
+ #include "components/prefs/pref_service_factory.h"
++#include "crypto/sha2.h"
+ #include "mojo/public/cpp/bindings/strong_binding.h"
+ #include "net/base/layered_network_delegate.h"
+ #include "net/base/load_flags.h"
+@@ -1851,16 +1852,6 @@ URLRequestContextOwner NetworkContext::A
+ base::FeatureList::IsEnabled(features::kNetworkErrorLogging));
+ #endif // BUILDFLAG(ENABLE_REPORTING)
+
+-#if BUILDFLAG(IS_CT_SUPPORTED)
+- if (params_->enforce_chrome_ct_policy) {
+- builder->set_ct_policy_enforcer(
+- std::make_unique<certificate_transparency::ChromeCTPolicyEnforcer>(
+- base::GetBuildTime(),
+- certificate_transparency::GetDisqualifiedLogs(),
+- certificate_transparency::GetLogsOperatedByGoogle()));
+- }
+-#endif // BUILDFLAG(IS_CT_SUPPORTED)
+-
+ net::HttpNetworkSession::Params session_params;
+ bool is_quic_force_disabled = false;
+ if (network_service_ && network_service_->quic_disabled())
+@@ -1910,8 +1901,20 @@ URLRequestContextOwner NetworkContext::A
+
+ #if BUILDFLAG(IS_CT_SUPPORTED)
+ std::vector<scoped_refptr<const net::CTLogVerifier>> ct_logs;
++ std::vector<std::pair<std::string, base::TimeDelta>> disqualified_logs;
++ std::vector<std::string> operated_by_google_logs;
++
+ if (!params_->ct_logs.empty()) {
+ for (const auto& log : params_->ct_logs) {
++ if (log->operated_by_google || log->disqualified_at) {
++ std::string log_id = crypto::SHA256HashString(log->public_key);
++ if (log->operated_by_google)
++ operated_by_google_logs.push_back(log_id);
++ if (log->disqualified_at) {
++ disqualified_logs.push_back(
++ std::make_pair(log_id, log->disqualified_at.value()));
++ }
++ }
+ scoped_refptr<const net::CTLogVerifier> log_verifier =
+ net::CTLogVerifier::Create(log->public_key, log->name);
+ if (!log_verifier) {
+@@ -1924,6 +1927,17 @@ URLRequestContextOwner NetworkContext::A
+ ct_verifier->AddLogs(ct_logs);
+ builder->set_ct_verifier(std::move(ct_verifier));
+ }
++
++ if (params_->enforce_chrome_ct_policy) {
++ std::sort(std::begin(operated_by_google_logs),
++ std::end(operated_by_google_logs));
++ std::sort(std::begin(disqualified_logs), std::end(disqualified_logs));
++
++ builder->set_ct_policy_enforcer(
++ std::make_unique<certificate_transparency::ChromeCTPolicyEnforcer>(
++ params_->ct_log_update_time, disqualified_logs,
++ operated_by_google_logs));
++ }
+ #endif // BUILDFLAG(IS_CT_SUPPORTED)
+
+ const base::CommandLine* command_line =
+diff -up
chromium-76.0.3809.132/services/network/network_context_unittest.cc.certificate-transparency
chromium-76.0.3809.132/services/network/network_context_unittest.cc
+---
chromium-76.0.3809.132/services/network/network_context_unittest.cc.certificate-transparency 2019-08-26
21:02:33.000000000 +0200
++++ chromium-76.0.3809.132/services/network/network_context_unittest.cc 2019-09-03
22:20:22.382888089 +0200
+@@ -2,6 +2,7 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
++#include <algorithm>
+ #include <map>
+ #include <memory>
+ #include <string>
+@@ -38,10 +39,12 @@
+ #include "base/threading/thread_task_runner_handle.h"
+ #include "base/time/default_clock.h"
+ #include "base/time/default_tick_clock.h"
++#include "base/time/time.h"
+ #include "build/build_config.h"
+ #include
"components/network_session_configurator/browser/network_session_configurator.h"
+ #include "components/network_session_configurator/common/network_switches.h"
+ #include "components/prefs/testing_pref_service.h"
++#include "crypto/sha2.h"
+ #include "mojo/public/cpp/bindings/interface_request.h"
+ #include "mojo/public/cpp/bindings/strong_binding.h"
+ #include "mojo/public/cpp/system/data_pipe_utils.h"
+@@ -113,6 +116,11 @@
+ #include "url/scheme_host_port.h"
+ #include "url/url_constants.h"
+
++#if BUILDFLAG(IS_CT_SUPPORTED)
++#include "components/certificate_transparency/chrome_ct_policy_enforcer.h"
++#include "services/network/public/mojom/ct_log_info.mojom.h"
++#endif
++
+ #if BUILDFLAG(ENABLE_REPORTING)
+ #include "net/network_error_logging/network_error_logging_service.h"
+ #include "net/reporting/reporting_cache.h"
+@@ -5566,6 +5574,72 @@ TEST_F(NetworkContextTest, BlockAllCooki
+ EXPECT_EQ("None", response_body);
+ }
+
++#if BUILDFLAG(IS_CT_SUPPORTED)
++TEST_F(NetworkContextTest, CertificateTransparencyConfig) {
++ mojom::NetworkContextParamsPtr params = CreateContextParams();
++ params->enforce_chrome_ct_policy = true;
++ params->ct_log_update_time = base::Time::Now();
++
++ // The log public keys do not matter for the test, so invalid keys are used.
++ // However, because the log IDs are derived from the SHA-256 hash of the log
++ // key, the log keys are generated such that qualified logs are in the form
++ // of four digits (e.g. "0000", "1111"), while disqualified logs
are in the
++ // form of four letters (e.g. "AAAA", "BBBB").
++
++ for (int i = 0; i < 6; ++i) {
++ network::mojom::CTLogInfoPtr log_info = network::mojom::CTLogInfo::New();
++ // Shift to ASCII '0' (0x30)
++ log_info->public_key = std::string(4, 0x30 + static_cast<char>(i));
++ log_info->name = std::string(4, 0x30 + static_cast<char>(i));
++ log_info->operated_by_google = i % 2;
++
++ params->ct_logs.push_back(std::move(log_info));
++ }
++ for (int i = 0; i < 3; ++i) {
++ network::mojom::CTLogInfoPtr log_info = network::mojom::CTLogInfo::New();
++ // Shift to ASCII 'A' (0x41)
++ log_info->public_key = std::string(4, 0x41 + static_cast<char>(i));
++ log_info->name = std::string(4, 0x41 + static_cast<char>(i));
++ log_info->operated_by_google = false;
++ log_info->disqualified_at = base::TimeDelta::FromSeconds(i);
++
++ params->ct_logs.push_back(std::move(log_info));
++ }
++ std::unique_ptr<NetworkContext> network_context =
++ CreateContextWithParams(std::move(params));
++
++ net::CTPolicyEnforcer* request_enforcer =
++ network_context->url_request_context()->ct_policy_enforcer();
++ ASSERT_TRUE(request_enforcer);
++
++ // Completely unsafe if |enforce_chrome_ct_policy| is false.
++ certificate_transparency::ChromeCTPolicyEnforcer* policy_enforcer =
++ reinterpret_cast<certificate_transparency::ChromeCTPolicyEnforcer*>(
++ request_enforcer);
++
++ EXPECT_TRUE(std::is_sorted(
++ policy_enforcer->operated_by_google_logs_for_testing().begin(),
++ policy_enforcer->operated_by_google_logs_for_testing().end()));
++ EXPECT_TRUE(
++ std::is_sorted(policy_enforcer->disqualified_logs_for_testing().begin(),
++ policy_enforcer->disqualified_logs_for_testing().end()));
++
++ EXPECT_THAT(
++ policy_enforcer->operated_by_google_logs_for_testing(),
++ ::testing::UnorderedElementsAreArray({crypto::SHA256HashString("1111"),
++ crypto::SHA256HashString("3333"),
++
crypto::SHA256HashString("5555")}));
++ EXPECT_THAT(policy_enforcer->disqualified_logs_for_testing(),
++ ::testing::UnorderedElementsAre(
++ ::testing::Pair(crypto::SHA256HashString("AAAA"),
++ base::TimeDelta::FromSeconds(0)),
++ ::testing::Pair(crypto::SHA256HashString("BBBB"),
++ base::TimeDelta::FromSeconds(1)),
++ ::testing::Pair(crypto::SHA256HashString("CCCC"),
++ base::TimeDelta::FromSeconds(2))));
++}
++#endif
++
+ } // namespace
+
+ } // namespace network
+diff -up
chromium-76.0.3809.132/services/network/public/mojom/ct_log_info.mojom.certificate-transparency
chromium-76.0.3809.132/services/network/public/mojom/ct_log_info.mojom
+---
chromium-76.0.3809.132/services/network/public/mojom/ct_log_info.mojom.certificate-transparency 2019-08-26
21:02:33.000000000 +0200
++++ chromium-76.0.3809.132/services/network/public/mojom/ct_log_info.mojom 2019-09-03
22:08:28.936786554 +0200
+@@ -4,6 +4,8 @@
+
+ module network.mojom;
+
++import "mojo/public/mojom/base/time.mojom";
++
+ // A single Certificate Transparency Log configuration.
+ struct CTLogInfo {
+ // The DER-encoded SubjectPublicKeyInfo of the log.
+@@ -14,4 +16,13 @@ struct CTLogInfo {
+ // The human-readable, log-supplied log name. Note that this will not be
+ // translated.
+ string name;
++
++ // Whether or not the log should should be considered a Google Log for the
++ // purposes of enforcing the "Certificate Transparency in Chrome" policy.
++ bool operated_by_google = false;
++
++ // If set, the time since the Unix Epoch when the log was disqualified. This
++ // is used to determine the "once or currently qualified" status of the
log.
++ // If the log is currently qualified, this will not be set.
++ mojo_base.mojom.TimeDelta? disqualified_at;
+ };
+diff -up
chromium-76.0.3809.132/services/network/public/mojom/network_context.mojom.certificate-transparency
chromium-76.0.3809.132/services/network/public/mojom/network_context.mojom
+---
chromium-76.0.3809.132/services/network/public/mojom/network_context.mojom.certificate-transparency 2019-08-26
21:02:33.000000000 +0200
++++ chromium-76.0.3809.132/services/network/public/mojom/network_context.mojom 2019-09-03
22:08:28.936786554 +0200
+@@ -238,15 +238,6 @@ struct NetworkContextParams {
+ [EnableIf=is_android]
+ bool check_clear_text_permitted = false;
+
+- // True if the "Certificate Transparency in Chrome" policy (see
+- //
https://github.com/chromium/ct-policy/blob/master/ct_policy.md) should
+- // be enforced for certificates and connections.
+- //
+- // See //net/docs/certificate-transparency.md before setting this flag to
+- // true.
+- [EnableIf=is_ct_supported]
+- bool enforce_chrome_ct_policy = false;
+-
+ // Enables HTTP/0.9 on ports other than 80 for HTTP and 443 for HTTPS.
+ bool http_09_on_non_default_ports_enabled = false;
+
+@@ -299,6 +290,15 @@ struct NetworkContextParams {
+ // servers, so they can discover misconfigurations.
+ bool enable_certificate_reporting = false;
+
++ // True if the "Certificate Transparency in Chrome" policy (see
++ //
https://github.com/chromium/ct-policy/blob/master/ct_policy.md) should
++ // be enforced for certificates and connections.
++ //
++ // See //net/docs/certificate-transparency.md before setting this flag to
++ // true.
++ [EnableIf=is_ct_supported]
++ bool enforce_chrome_ct_policy = false;
++
+ // Enables Expect CT reporting, which sends reports for opted-in sites that
+ // don't serve sufficient Certificate Transparency information.
+ [EnableIf=is_ct_supported]
+@@ -310,6 +310,13 @@ struct NetworkContextParams {
+ [EnableIf=is_ct_supported]
+ array<CTLogInfo> ct_logs;
+
++ // When the Certificate Transparency logs in |ct_logs| were last updated. If
++ // |enforce_chrome_ct_policy| is set, and |ct_log_update_time| is not
++ // sufficiently recent, enforcement of the "Certificate Transparency in
++ // Chrome" policy will be disabled.
++ [EnableIf=is_ct_supported]
++ mojo_base.mojom.Time ct_log_update_time;
++
+ // Specifies the path to the directory where NSS will store its database.
+ [EnableIf=is_chromeos]
+ mojo_base.mojom.FilePath? nss_path;
diff --git a/chromium-76.0.3809.132-gcc-ambigous-instantiation.patch
b/chromium-76.0.3809.132-gcc-ambigous-instantiation.patch
new file mode 100644
index 0000000..73db4d4
--- /dev/null
+++ b/chromium-76.0.3809.132-gcc-ambigous-instantiation.patch
@@ -0,0 +1,21 @@
+diff -up
chromium-76.0.3809.132/services/network/cross_origin_read_blocking.cc.gcc-ambigous-instantiation
chromium-76.0.3809.132/services/network/cross_origin_read_blocking.cc
+---
chromium-76.0.3809.132/services/network/cross_origin_read_blocking.cc.gcc-ambigous-instantiation 2019-08-26
21:02:33.000000000 +0200
++++ chromium-76.0.3809.132/services/network/cross_origin_read_blocking.cc 2019-08-27
06:58:23.963821667 +0200
+@@ -207,7 +207,7 @@ std::set<int>& GetPluginProxyingProcesse
+ // confirmation sniffing because images, scripts, etc. are frequently
+ // mislabelled by http servers as HTML/JSON/XML).
+ base::flat_set<std::string>& GetNeverSniffedMimeTypes() {
+- static base::NoDestructor<base::flat_set<std::string>> s_types({
++ static base::NoDestructor<base::flat_set<std::string>> s_types{{
+ // The list below has been populated based on most commonly used content
+ // types according to HTTP Archive - see:
+ //
https://github.com/whatwg/fetch/issues/860#issuecomment-457330454
+@@ -219,7 +219,7 @@ base::flat_set<std::string>& GetNeverSni
+ "application/x-protobuf",
+ "application/zip",
+ "text/event-stream",
+- });
++ }};
+
+ // All items need to be lower-case, to support case-insensitive comparisons
+ // later.
diff --git a/chromium-freeworld.spec b/chromium-freeworld.spec
index c2e552c..737aad6 100644
--- a/chromium-freeworld.spec
+++ b/chromium-freeworld.spec
@@ -105,6 +105,10 @@ BuildRequires: libicu-devel >= 5.4
# 2017-06-08.
%global bundlelibxml 1
+# Fedora's Python 2 stack is being removed, we use the bundled Python libraries
+# This can be revisited once we upgrade to Python 3
+%global bundlepylibs 1
+
# Chromium used to break on wayland, hidpi, and colors with gtk3 enabled.
# Hopefully it does not anymore.
%global gtk3 1
@@ -141,6 +145,13 @@ BuildRequires: libicu-devel >= 5.4
%global bundleharfbuzz 0
%endif
+# Pulseaudio changed the API a little in 12.99.1
+%if 0%{?fedora} > 30
+%global pulseaudioapichange 1
+%else
+%global pulseaudioapichange 0
+%endif
+
### Google API keys (see
http://www.chromium.org/developers/how-tos/api-keys)
### Note: These are for Fedora use ONLY.
### For your own distribution, please get your own set of keys.
@@ -157,15 +168,15 @@ BuildRequires: libicu-devel >= 5.4
%global chromoting_client_id %nil
%endif
-%global majorversion 75
+%global majorversion 76
%if %{freeworld}
Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
%else
Name: chromium%{chromium_channel}
%endif
-Version: %{majorversion}.0.3770.100
-Release: 3%{?dist}
+Version: %{majorversion}.0.3809.132
+Release: 2%{?dist}
Summary: A WebKit (Blink) powered web browser
Url:
http://www.chromium.org/Home
License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and
(MPLv1.1 or GPLv2 or LGPLv2)
@@ -174,175 +185,157 @@ License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+
and ISC and Open
Patch0: chromium-67.0.3396.62-gcc5.patch
Patch1: chromium-45.0.2454.101-linux-path-max.patch
Patch2: chromium-55.0.2883.75-addrfix.patch
-Patch4: chromium-72.0.3626.121-notest.patch
-# In file included from ../linux/directory.c:21:
-# In file included from ../../../../native_client/src/nonsfi/linux/abi_conversion.h:20:
-# ../../../../native_client/src/nonsfi/linux/linux_syscall_structs.h:44:13: error:
GNU-style inline assembly is disabled
-# __asm__ __volatile__("mov %%gs, %0" : "=r"(gs));
-# ^
-# 1 error generated.
-Patch6: chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch
-# Ignore broken nacl open fd counter
-Patch7: chromium-47.0.2526.80-nacl-ignore-broken-fd-counter.patch
+Patch3: chromium-72.0.3626.121-notest.patch
# Use libusb_interrupt_event_handler from current libusbx (1.0.21-0.1.git448584a)
-Patch9: chromium-48.0.2564.116-libusb_interrupt_event_handler.patch
-# Ignore deprecations in cups 2.2
-#
https://bugs.chromium.org/p/chromium/issues/detail?id=622493
-Patch12: chromium-55.0.2883.75-cups22.patch
+Patch4: chromium-76.0.3809.100-libusb_interrupt_event_handler.patch
# Use PIE in the Linux sandbox (from openSUSE via Russian Fedora)
-Patch15: chromium-70.0.3538.67-sandbox-pie.patch
+Patch6: chromium-70.0.3538.67-sandbox-pie.patch
# Use /etc/chromium for master_prefs
-Patch18: chromium-68.0.3440.106-master-prefs-path.patch
-# Disable MADV_FREE (if set by glibc)
-#
https://bugzilla.redhat.com/show_bug.cgi?id=1361157
-Patch19: chromium-52.0.2743.116-unset-madv_free.patch
+Patch7: chromium-68.0.3440.106-master-prefs-path.patch
# Use gn system files
-Patch20: chromium-67.0.3396.62-gn-system.patch
-# Fix last commit position issue
-#
https://groups.google.com/a/chromium.org/forum/#!topic/gn-dev/7nlJv486bD4
-# Patch21: chromium-60.0.3112.78-last-commit-position.patch
+Patch8: chromium-67.0.3396.62-gn-system.patch
# Fix issue where timespec is not defined when sys/stat.h is included.
-Patch22: chromium-53.0.2785.92-boringssl-time-fix.patch
+Patch9: chromium-53.0.2785.92-boringssl-time-fix.patch
# I wouldn't have to do this if there was a standard way to append extra compiler
flags
-Patch24: chromium-63.0.3289.84-nullfix.patch
+Patch10: chromium-63.0.3289.84-nullfix.patch
# Add explicit includedir for jpeglib.h
-Patch25: chromium-54.0.2840.59-jpeg-include-dir.patch
+Patch11: chromium-54.0.2840.59-jpeg-include-dir.patch
# On i686, pass --no-keep-memory --reduce-memory-overheads to ld.
-Patch26: chromium-59.0.3071.86-i686-ld-memory-tricks.patch
-# obj/content/renderer/renderer/child_frame_compositing_helper.o: In function
`content::ChildFrameCompositingHelper::OnSetSurface(cc::SurfaceId const&, gfx::Size
const&, float, cc::SurfaceSequence const&)':
-#
/builddir/build/BUILD/chromium-54.0.2840.90/out/Release/../../content/renderer/child_frame_compositing_helper.cc:214:
undefined reference to `cc_blink::WebLayerImpl::setOpaque(bool)'
-# Patch27: chromium-63.0.3289.84-setopaque.patch
-# Use -fpermissive to build WebKit
-# Patch31: chromium-56.0.2924.87-fpermissive.patch
-# Fix issue with compilation on gcc7
-# Thanks to Ben Noordhuis
-# Patch33: chromium-65.0.3325.146-gcc7.patch
+Patch12: chromium-59.0.3071.86-i686-ld-memory-tricks.patch
# Revert
https://chromium.googlesource.com/chromium/src/+/b794998819088f76b4cf44c8...
#
https://bugs.chromium.org/p/chromium/issues/detail?id=712737
#
https://bugzilla.redhat.com/show_bug.cgi?id=1446851
-Patch36: chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
+Patch13: chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
# Correctly compile the stdatomic.h in ffmpeg with gcc 4.8
-Patch37: chromium-64.0.3282.119-ffmpeg-stdatomic.patch
+Patch14: chromium-64.0.3282.119-ffmpeg-stdatomic.patch
# Nacl can't die soon enough
-Patch39: chromium-66.0.3359.117-system-clang.patch
+Patch15: chromium-66.0.3359.117-system-clang.patch
# Do not prefix libpng functions
-Patch42: chromium-60.0.3112.78-no-libpng-prefix.patch
+Patch16: chromium-60.0.3112.78-no-libpng-prefix.patch
# Do not mangle libjpeg
-Patch43: chromium-60.0.3112.78-jpeg-nomangle.patch
+Patch17: chromium-60.0.3112.78-jpeg-nomangle.patch
# Do not mangle zlib
-Patch45: chromium-75.0.3770.80-no-zlib-mangle.patch
-# Apply these changes to work around EPEL7 compiler issues
-Patch46: chromium-62.0.3202.62-kmaxskip-constexpr.patch
-Patch47: chromium-60.0.3112.90-vulkan-force-c99.patch
+Patch18: chromium-75.0.3770.80-no-zlib-mangle.patch
# Fix libavutil include pathing to find arch specific timer.h
# For some reason, this only fails on aarch64. No idea why.
-Patch50: chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch
+Patch19: chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch
# from gentoo
-Patch53: chromium-61.0.3163.79-gcc-no-opt-safe-math.patch
-# Only needed when glibc 2.26.90 or later is used
-Patch57: chromium-63.0.3289.84-aarch64-glibc-2.26.90.patch
+Patch20: chromium-61.0.3163.79-gcc-no-opt-safe-math.patch
# From gentoo
-Patch62: chromium-72.0.3626.121-gcc5-r3.patch
-# Do not try to use libc++ in the remoting stack
-# Patch63: chromium-63.0.3289.84-nolibc++.patch
+Patch21: chromium-72.0.3626.121-gcc5-r3.patch
# To use round with gcc, you need to #include <cmath>
-Patch65: chromium-65.0.3325.146-gcc-round-fix.patch
+Patch22: chromium-65.0.3325.146-gcc-round-fix.patch
# Include proper headers to invoke memcpy()
-Patch67: chromium-65.0.3325.146-memcpy-fix.patch
+Patch23: chromium-65.0.3325.146-memcpy-fix.patch
# ../../mojo/public/cpp/bindings/associated_interface_ptr_info.h:48:43: error: cannot
convert 'const mojo::ScopedInterfaceEndpointHandle' to 'bool' in return
-Patch85: chromium-68.0.3440.106-boolfix.patch
+Patch24: chromium-68.0.3440.106-boolfix.patch
# From Debian
-Patch86: chromium-71.0.3578.98-skia-aarch64-buildfix.patch
-# Use lstdc++ on EPEL7 only
-Patch87: chromium-75.0.3770.100-epel7-stdc++.patch
-# Missing files in tarball
-Patch88: chromium-66.0.3359.117-missing-files.patch
-#
https://chromium.googlesource.com/chromium/src/+/ba4141e451f4e0b1b19410b1...
-# Patch89: chromium-66.0.3359.117-gcc-optional-move-fixes.patch
-#
https://chromium.googlesource.com/chromium/src/+/4f2b52281ce1649ea8347489...
-# Patch90: chromium-66.0.3359.117-gcc-copy-constructor-fix.patch
-#
https://bugs.chromium.org/p/chromium/issues/detail?id=816952
-# Patch91: chromium-66.0.3359.117-gcc-vector-copy-constructor-fix.patch
+Patch25: chromium-71.0.3578.98-skia-aarch64-buildfix.patch
# Do not use unrar code, it is non-free
-Patch92: chromium-73.0.3683.75-norar.patch
+Patch27: chromium-73.0.3683.75-norar.patch
# Upstream GCC fixes
-Patch93: chromium-66.0.3359.117-GCC-build-fix-base-Optional-T-requires-the-full-decl.patch
-Patch94: chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch
-# Patch95: chromium-65.0.3325.146-GCC-IDB-methods-String-renamed-to-GetString.patch
-#
https://github.com/archlinuxarm/PKGBUILDs/blob/master/extra/chromium/0006...
-#
Patch96: chromium-66.0.3359.117-GCC-do-not-use-initializer-list-for-NoDestructor-of-.patch
-#
https://chromium.googlesource.com/chromium/src/+/b84682f31dc99b9c90f5a049...
-# Patch97: chromium-66.0.3359.139-arm-init-fix.patch
-# GCC8 has changed the alignof operator to return the minimal alignment required by the
target ABI
-# instead of the preferred alignment. This means int64_t is now 4 on i686 (instead of
8).
-# Use __alignof__ to get the value we expect (and chromium checks for).
-# Patch98: chromium-69.0.3497.81-gcc8-alignof.patch
-# RHEL 7 has a bug in its python2.7 which does not propely handle exec with a tuple
-#
https://bugs.python.org/issue21591
-Patch100: chromium-67.0.3396.62-epel7-use-old-python-exec-syntax.patch
+Patch28: chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch
# Add "Fedora" to the user agent string
-Patch101: chromium-72.0.3626.121-fedora-user-agent.patch
+Patch29: chromium-72.0.3626.121-fedora-user-agent.patch
# Try to fix version.py for Rawhide
-Patch103: chromium-71.0.3578.98-py2-bootstrap.patch
+Patch30: chromium-71.0.3578.98-py2-bootstrap.patch
# Fix default on redeclaration error
#
https://chromium.googlesource.com/chromium/src/+/122692ccee62223f266a988c...
-Patch110: chromium-68.0.3440.106-fix-default-on-redeclaration.patch
+Patch31: chromium-68.0.3440.106-fix-default-on-redeclaration.patch
# Use Gentoo's Widevine hack
#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
-Patch111: chromium-71.0.3578.98-widevine-r3.patch
+Patch32: chromium-71.0.3578.98-widevine-r3.patch
# Do not require sysroot
# Forget about trying to make libc++
# BUILD SANELY PLEASE
-Patch112: chromium-69.0.3497.81-build-sanely-please.patch
-# Still moar GCC cleanups from upstream
-# Patch113: chromium-gcc8-r588316.patch
-# Patch114: chromium-gcc8-r588547.patch
-# Patch115: chromium-gcc8-r589614.patch
-# Patch116: chromium-gcc8-r591015.patch
+Patch33: chromium-69.0.3497.81-build-sanely-please.patch
# Disable fontconfig cache magic that breaks remoting
-Patch117: chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch
+Patch34: chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch
# Fix aarch64 build against latest linux kernel headers
-Patch119: chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch
-# Enable VAAPI support on Linux
-# NOTE: This patch will never land upstream
-Patch121: enable-vaapi.patch
-Patch122: chromium-75.0.3770.80-vaapi-i686-fpermissive.patch
-# Fix compatibility with VA-API library (libva) version 1
-Patch124: chromium-75.0.3770.80-vaapi-libva1-compatibility.patch
+Patch35: chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch
# drop rsp clobber, which breaks gcc9 (thanks to Jeff Law)
-Patch126: chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
-# Thanks Ubuntu
-# Disable these two patches when v75 lands
-Patch130: revert-gn-4980.patch
-Patch131: revert-gn-4960.patch
+Patch36: chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
# Try to load widevine from other places
-Patch132: chromium-widevine-other-locations.patch
+Patch37: chromium-widevine-other-locations.patch
# Disable -fno-delete-null-pointer-checks
-Patch135: chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch
-# Add #include <cstring> to get pipewire code to build
-Patch136: chromium-73.0.3683.75-pipewire-cstring-fix.patch
-# el7 only patch
-Patch139: chromium-75.0.3770.100-el7-fix-noexcept.patch
-# gcc does not have __assume
-Patch140: chromium-75.0.3770.80-gcc-no-assume.patch
+Patch38: chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch
# Linux 5.2 defines SIOCGSTAMP in a slightly different way, so we need to teach chromium
where to find it
-Patch141: chromium-75.0.3770.80-SIOCGSTAMP.patch
-#
https://chromium.googlesource.com/chromium/src/+/aeed4d1f15ce84a17ea0bc21...
-Patch142: chromium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch
+Patch41: chromium-75.0.3770.80-SIOCGSTAMP.patch
# Revert
https://chromium.googlesource.com/chromium/src/+/daff6b66faae53a0cefb8898...
# It might make clang happy but it breaks gcc. F*** clang.
-Patch143: chromium-75.0.3770.80-revert-daff6b.patch
+Patch43: chromium-75.0.3770.80-revert-daff6b.patch
# Avoid pure virtual crash destroying RenderProcessUserData
#
https://chromium.googlesource.com/chromium/src/+/cdf306db81efaaaa95448758...
-Patch144: chromium-75.0.3770.80-pure-virtual-crash-fix.patch
+Patch44: chromium-75.0.3770.80-pure-virtual-crash-fix.patch
# rename function to avoid conflict with rawhide glibc "gettid()"
-Patch145: chromium-75.0.3770.80-grpc-gettid-fix.patch
+Patch45: chromium-75.0.3770.80-grpc-gettid-fix.patch
# fix v8 compile with gcc
#
https://chromium.googlesource.com/v8/v8/+/3b8c624bda58d05aea80dd9626cd550...
-Patch146: chromium-75.0.3770.100-fix-v8-gcc.patch
-#
https://chromium.googlesource.com/chromium/src/+/00281713519dbd84b90d2996...
-Patch147: chromium-75.0.3770.100-git00281713.patch
+Patch46: chromium-75.0.3770.100-fix-v8-gcc.patch
+# Fix Vulkan compilation with gcc
+#
https://chromium.googlesource.com/chromium/src/+/fdb3bb1f8c41d044a5b0cb80...
+Patch47: chromium-76.0.3809.100-gcc-vulkan.patch
+#
https://chromium-review.googlesource.com/c/chromium/src/+/1645297
+Patch48: chromium-76.0.3809.100-gcc-cc-no-except.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/502e6e42633d2571c823...
+Patch49: chromium-76.0.3809.100-gcc-net-fetcher.patch
+#
https://quiche.googlesource.com/quiche.git/+/9424add9d73432a794b794479025...
+Patch50: chromium-76.0.3809.100-quiche-compile-fix.patch
+#
https://chromium.googlesource.com/chromium/src/+/53bb5a463ee956c70230eaa5...
+Patch51: chromium-76.0.3809.100-throttling-dead-beef.patch
+#
https://chromium.googlesource.com/chromium/src/+/52b5ceac95b67491b1c71f0e...
+Patch52: chromium-76.0.3809.132-gcc-ambigous-instantiation.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/715cb38eac889625de0c...
+Patch53: chromium-76.0.3809.100-weak-ptr-no-except.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/c6afbd59c997c2b64f11...
+Patch54: chromium-76.0.3809.100-gcc-feature-policy-parser.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/cf6d6b40d711fce93a24...
+Patch55: chromium-76.0.3809.100-gcc-hasfraction-constexpr.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/dcb55fb8f18abe5f43d2...
+Patch56: chromium-76.0.3809.100-gcc-move-explicit-initialization.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/7dc76c8d9f4cfbce7cf1...
+Patch57: chromium-76.0.3809.100-gcc-initialization-order.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/138904af5d6a4158ef42...
+Patch58: chromium-76.0.3809.100-gcc-history-move-noexcept.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/bdc24128b75008743d81...
+Patch59: chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/5d7f227fa844e79568df...
+Patch60: chromium-76.0.3809.100-gcc-themeservice-includes.patch
+# In GCC one can't use alignas() for exported classes
+#
https://chromium.googlesource.com/chromium/src.git/+/8148fd96ae04a1150a9c...
+Patch61: chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
+# Needs to be submitted..
+Patch62: chromium-76.0.3809.100-gcc-remoting-constexpr.patch
+# Needs to be submitted.. (ugly hack, needs to be added properly to GN files)
+Patch63: chromium-76.0.3809.100-vtable-symbol-undefined.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/3c9720245e440c4b7222...
+Patch64: chromium-76.0.3809.132-certificate-transparency.patch
+
+# Apply these changes to work around EPEL7 compiler issues
+Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
+# Use lstdc++ on EPEL7 only
+Patch101: chromium-75.0.3770.100-epel7-stdc++.patch
+# el7 only patch
+Patch102: chromium-76.0.3809.100-el7-noexcept.patch
+
+# In file included from ../linux/directory.c:21:
+# In file included from ../../../../native_client/src/nonsfi/linux/abi_conversion.h:20:
+# ../../../../native_client/src/nonsfi/linux/linux_syscall_structs.h:44:13: error:
GNU-style inline assembly is disabled
+# __asm__ __volatile__("mov %%gs, %0" : "=r"(gs));
+# ^
+# 1 error generated.
+Patch200: chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch
+# Ignore broken nacl open fd counter
+Patch201: chromium-47.0.2526.80-nacl-ignore-broken-fd-counter.patch
+# Enable VAAPI support on Linux
+# NOTE: This patch will never land upstream
+Patch202: enable-vaapi.patch
+Patch203: chromium-75.0.3770.80-vaapi-i686-fpermissive.patch
+# Fix compatibility with VA-API library (libva) version 1
+Patch204: chromium-75.0.3770.80-vaapi-libva1-compatibility.patch
+# Pulseaudio changed the API a little in 12.99.1
+Patch205: chromium-76.0.3809.100-pulse-api-change.patch
# Use chromium-latest.py to generate clean tarball from released build tarballs, found
here:
#
http://build.chromium.org/buildbot/official/
@@ -528,9 +521,11 @@ BuildRequires: pkgconfig(gtk+-3.0)
%else
BuildRequires: pkgconfig(gtk+-2.0)
%endif
-BuildRequires: pulseaudio-libs-devel
-BuildRequires: python2-devel
-%if 0%{?fedora} > 27
+BuildRequires: /usr/bin/python2
+%if 0%{?bundlepylibs}
+# Using bundled bits, do nothing.
+%else
+%if 0%{?fedora}
BuildRequires: python2-beautifulsoup4
BuildRequires: python2-beautifulsoup
BuildRequires: python2-html5lib
@@ -544,6 +539,8 @@ BuildRequires: python-markupsafe
BuildRequires: python-ply
%endif
BuildRequires: python2-simplejson
+BuildRequires: python2-devel
+%endif
%if 0%{?bundlere2}
# Using bundled bits, do nothing.
%else
@@ -767,7 +764,7 @@ Shared libraries used by chromium (and chrome-remote-desktop).
Summary: Chromium media libraries built with all possible codecs
Provides: chromium-libs-media = %{version}-%{release}
Provides: chromium-libs-media%{_isa} = %{version}-%{release}
-Requires: chromium-libs%{_isa} = %{version}-%{release}
+Requires: chromium-libs%{_isa} = %{version}
Requires(post): %{_sbindir}/update-alternatives
Requires(preun): %{_sbindir}/update-alternatives
@@ -837,97 +834,90 @@ udev.
%patch0 -p1 -b .gcc5
%patch1 -p1 -b .pathmax
%patch2 -p1 -b .addrfix
-%patch4 -p1 -b .notest
-# %%patch6 -p1 -b .gnu-inline
-%patch7 -p1 -b .ignore-fd-count
-%patch9 -p1 -b .modern-libusbx
-%patch12 -p1 -b .cups22
-%patch15 -p1 -b .sandboxpie
-%patch18 -p1 -b .etc
-# %%patch19 -p1 -b .madv_free
-%patch20 -p1 -b .gnsystem
-# %%patch21 -p1 -b .lastcommit
-%patch22 -p1 -b .timefix
-%patch24 -p1 -b .nullfix
-%patch25 -p1 -b .jpegfix
-%patch26 -p1 -b .ldmemory
-# %%patch27 -p1 -b .setopaque
-# %%patch31 -p1 -b .permissive
-# %%patch33 -p1 -b .gcc7
-%patch36 -p1 -b .revert
-%patch37 -p1 -b .ffmpeg-stdatomic
-%patch39 -p1 -b .system-clang
-%patch42 -p1 -b .noprefix
-%patch43 -p1 -b .nomangle
-%patch45 -p1 -b .nozmangle
+%patch3 -p1 -b .notest
+%patch4 -p1 -b .modern-libusbx
+%patch6 -p1 -b .sandboxpie
+%patch7 -p1 -b .etc
+%patch8 -p1 -b .gnsystem
+%patch9 -p1 -b .timefix
+%patch10 -p1 -b .nullfix
+%patch11 -p1 -b .jpegfix
+%patch12 -p1 -b .ldmemory
+%patch13 -p1 -b .revert
+%patch14 -p1 -b .ffmpeg-stdatomic
+%patch15 -p1 -b .system-clang
+%patch16 -p1 -b .noprefix
+%patch17 -p1 -b .nomangle
+%patch18 -p1 -b .nozmangle
+%patch19 -p1 -b .pathfix
+%patch20 -p1 -b .nogccoptmath
+%patch21 -p1 -b .gcc5-r3
+%patch22 -p1 -b .gcc-round-fix
+%patch23 -p1 -b .memcpyfix
+%patch24 -p1 -b .boolfix
+%patch25 -p1 -b .aarch64fix
+%patch27 -p1 -b .nounrar
+%patch28 -p1 -b .gcc-cpolicyprovider
+%patch29 -p1 -b .fedora-user-agent
+%patch30 -p1 -b .py2
+%patch31 -p1 -b .fix-default-redeclaration
+%patch32 -p1 -b .wvhack
+%patch33 -p1 -b .sanebuild
+%patch34 -p1 -b .nofc
+%patch35 -p1 -b .aarch64-new-stat
+%patch36 -p1 -b .gcc9
+%patch37 -p1 -b .widevine-other-locations
+%patch38 -p1 -b .disable-ndnpc
+%patch41 -p1 -b .SIOCGSTAMP
+%patch43 -p1 -b .revert-daff6b
+%patch44 -p1 -b .pure-virtual-fix
+%patch45 -p1 -b .gettid-fix
+%patch46 -p1 -b .fix-v8-gcc
+%patch47 -p1 -b .gcc-vulkan
+%patch48 -p1 -b .gcc-cc-no-except
+%patch49 -p1 -b .gcc-net-fetcher
+%patch50 -p1 -b .quiche-compile-fix
+%patch51 -p1 -b .throttling-dead-beef
+%patch52 -p1 -b .gcc-ambigous-instantiation
+%patch53 -p1 -b .weak-ptr-no-except
+%patch54 -p1 -b .gcc-feature-policy-parser
+%patch55 -p1 -b .gcc-hasfraction-constexpr
+%patch56 -p1 -b .gcc-move-explicit-initialization
+%patch57 -p1 -b .gcc-initialization-order
+%patch58 -p1 -b .gcc-history-move-noexcept
+%patch59 -p1 -b .gcc-accountinfo-move-noexcept
+%patch60 -p1 -b .gcc-themeservice-includes
+%patch61 -p1 -b .gcc-no-alignas-and-export
+%patch62 -p1 -b .gcc-remoting-constexpr
+%patch63 -p1 -b .vtable-symbol-undefined
+%patch64 -p1 -b .certificate-transparency
+
+# EPEL specific patches
%if 0%{?rhel} == 7
-%patch46 -p1 -b .kmaxskip
-# %%patch47 -p1 -b .c99
-%endif
-%patch50 -p1 -b .pathfix
-%patch53 -p1 -b .nogccoptmath
-# %%if 0%%{?fedora} >= 28
-# %%patch57 -p1 -b .aarch64glibc
-# %%endif
-%patch62 -p1 -b .gcc5-r3
-# %%patch63 -p1 -b .nolibc++
-%patch65 -p1 -b .gcc-round-fix
-%patch67 -p1 -b .memcpyfix
-%patch85 -p1 -b .boolfix
-%patch86 -p1 -b .aarch64fix
-%if 0%{?rhel} == 7
-%patch87 -p1 -b .epel7
-%endif
-%patch88 -p1 -b .missing
-# %%patch89 -p1 -b .gccomove
-# %%patch90 -p1 -b .copycon
-# %%patch91 -p1 -b .944404
-%patch92 -p1 -b .nounrar
-# %%patch93 -p1 -b .gcc-full-decl
-%patch94 -p1 -b .gcc-cpolicyprovider
-# %%patch95 -p1 -b .gcc-getstring
-# %%patch96 -p1 -b .flatsetfix
-# %%patch97 -p1 -b .arm-init-fix
-# %%patch98 -p1 -b .gcc8-alignof
-%if 0%{?rhel} == 7
-# %%patch100 -p1 -b .oldexec
-%endif
-%patch101 -p1 -b .fedora-user-agent
-%patch103 -p1 -b .py2
-# %%patch108 -p1 -b .move-unique-ptr
-%patch110 -p1 -b .fix-default-redeclaration
-%patch111 -p1 -b .wvhack
-%patch112 -p1 -b .sanebuild
-# %%patch113 -p1 -b .r588316
-# %%patch114 -p1 -b .r588547
-# %%patch115 -p1 -b .r589614
-# %%patch116 -p1 -b .r591015
-%patch117 -p1 -b .nofc
-%patch119 -p1 -b .aarch64-new-stat
-%if %{use_vaapi}
-%patch121 -p1 -b .vaapi
+%patch100 -p1 -b .kmaxskip
+%patch101 -p1 -b .epel7
+%patch102 -p1 -b .el7-noexcept
+# Revert patch58 because it's breaking the build on el7
+%patch58 -R -p1
%endif
+
+# Feature specific patches
+%if ! 0%{?killnacl}
+%patch200 -p1 -b .gnu-inline
+%patch201 -p1 -b .ignore-fd-count
+%endif
+
+%if %{use_vaapi}
+%patch202 -p1 -b .vaapi
%ifarch i686
-%patch122 -p1 -b .i686permissive
-%endif
-%patch124 -p1 -b .va1compat
-%patch126 -p1 -b .gcc9
-# %%patch130 -p1 -b .revert-gn-4980
-# %%patch131 -p1 -b .revert-gn-4960
-%patch132 -p1 -b .widevine-other-locations
-%patch135 -p1 -b .disable-ndnpc
-%patch136 -p1 -b .cstring-fix
-%if 0%{?rhel} == 7
-%patch139 -p1 -b .el7-noexcept
+%patch203 -p1 -b .i686permissive
+%patch204 -p1 -b .va1compat
+%endif
+%endif
+
+%if 0%{?pulseaudioapichange}
+%patch205 -p1 -b .pulseaudioapichange
%endif
-%patch140 -p1 -b .gcc-assume
-%patch141 -p1 -b .SIOCGSTAMP
-%patch142 -p1 -b .gcc-dcheck_ne-fix
-%patch143 -p1 -b .revert-daff6b
-%patch144 -p1 -b .pure-virtual-fix
-%patch145 -p1 -b .gettid-fix
-%patch146 -p1 -b .fix-v8-gcc
-%patch147 -p1 -b .git00281713
# Change shebang in all relevant files in this directory and all subdirectories
# See `man find` for how the `-exec command {} +` syntax works
@@ -1152,6 +1142,7 @@ ln -s %{_bindir}/node
third_party/node/linux/node-linux-x64/bin/node
# Remove most of the bundled libraries. Libraries specified below (taken from
# Gentoo's Chromium ebuild) are the libraries that needs to be preserved.
build/linux/unbundle/remove_bundled_libraries.py \
+ 'base/third_party/cityhash' \
'base/third_party/dmg_fp' \
'base/third_party/dynamic_annotations' \
'base/third_party/icu' \
@@ -1192,6 +1183,9 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/blink' \
'third_party/boringssl' \
'third_party/boringssl/src/third_party/fiat' \
+ 'third_party/boringssl/src/third_party/sike' \
+ 'third_party/boringssl/linux-x86_64/crypto/third_party/sike' \
+ 'third_party/boringssl/linux-aarch64/crypto/third_party/sike' \
'third_party/breakpad' \
'third_party/breakpad/breakpad/src/third_party/curl' \
'third_party/brotli' \
@@ -1232,6 +1226,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/google_input_tools' \
'third_party/google_input_tools/third_party/closure_library' \
'third_party/google_input_tools/third_party/closure_library/third_party/closure'
\
+ 'third_party/google_trust_services' \
'third_party/googletest' \
'third_party/glslang' \
'third_party/grpc' \
@@ -1274,7 +1269,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
%endif
'third_party/lss' \
'third_party/lzma_sdk' \
-%if 0
+%if 0%{?bundlepylibs}
'third_party/markupsafe' \
%endif
'third_party/mesa' \
@@ -1286,7 +1281,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
%if %{freeworld}
'third_party/openh264' \
%endif
- 'third_party/openmax_dl' \
+ 'third_party/openscreen' \
'third_party/opus' \
'third_party/ots' \
'third_party/pdfium' \
@@ -1318,6 +1313,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/sinonjs' \
'third_party/skia' \
'third_party/skia/include/third_party/vulkan' \
+ 'third_party/skia/include/third_party/skcms' \
'third_party/skia/third_party/gif' \
'third_party/skia/third_party/skcms' \
'third_party/skia/third_party/vulkan' \
@@ -1329,7 +1325,6 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/sqlite' \
'third_party/swiftshader' \
'third_party/swiftshader/third_party/subzero' \
- 'third_party/swiftshader/third_party/LLVM' \
'third_party/swiftshader/third_party/llvm-subzero' \
'third_party/swiftshader/third_party/llvm-7.0' \
'third_party/tcmalloc' \
@@ -1362,10 +1357,12 @@ build/linux/unbundle/remove_bundled_libraries.py \
'v8/third_party/inspector_protocol' \
--do-remove
+%if ! 0%{?bundlepylibs}
# Look, I don't know. This package is spit and chewing gum. Sorry.
rm -rf third_party/markupsafe
ln -s %{python2_sitearch}/markupsafe third_party/markupsafe
# We should look on removing other python2 packages as well i.e. ply
+%endif
# Fix hardcoded path in remoting code
sed -i 's|/opt/google/chrome-remote-desktop|%{crd_path}|g'
remoting/host/setup/daemon_controller_delegate_linux.cc
@@ -1772,7 +1769,6 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%{chromium_path}/chrome_*.pak
%{chromium_path}/resources.pak
%{chromium_path}/icudtl.dat
-%{chromium_path}/views_mus_resources.pak
%{chromium_path}/%{chromium_browser_channel}
%{chromium_path}/%{chromium_browser_channel}.sh
%{chromium_path}/MEIPreload/
@@ -1926,6 +1922,18 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
+* Tue Sep 03 2019 Tomas Popela <tpopela(a)redhat.com> - 76.0.3809.132-2
+- Backport patch to fix certificate transparency
+
+* Tue Aug 27 2019 Tomas Popela <tpopela(a)redhat.com> - 76.0.3809.132-1
+- Update to 76.0.3809.132
+
+* Tue Aug 13 2019 Tomas Popela <tpopela(a)redhat.com> - 76.0.3809.100-1
+- Update to 76.0.3809.100
+
+* Wed Jul 24 2019 Fedora Release Engineering <releng(a)fedoraproject.org> -
75.0.3770.100-4
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
* Tue Jul 2 2019 Tom Callaway <spot(a)fedoraproject.org> - 75.0.3770.100-3
- apply upstream fix to resolve issue where it is dangerous to post a
task with a RenderProcessHost pointer because the RenderProcessHost
diff --git a/sources b/sources
index dced2ee..6264fce 100644
--- a/sources
+++ b/sources
@@ -16,4 +16,4 @@ fa87472a877e70c5bce22e42be5c25a9 Arimo-Italic.ttf
314394b29c1d15a73c3f00316003810a MuktiNarrow-0.94.tar.bz2
4d610887ff4d445cbc639aae7828d139 gelasio.zip
49a7f897775cce21d2b69968b8af1cea depot_tools.git-master.tar.gz
-89e08b5a7f6f7ad006ce8eeec858a4d8 chromium-75.0.3770.100.tar.xz
+389e62cd2f0d7a21159241e3a31df0c0 chromium-76.0.3809.132.tar.xz