The package rpms/chromium.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/chromium.git/commit/?id=f7aa602c5...
https://src.fedoraproject.org/cgit/rpms/chromium.git/commit/?id=1ef42a21d...
https://src.fedoraproject.org/cgit/rpms/chromium.git/commit/?id=5a0168685...
https://src.fedoraproject.org/cgit/rpms/chromium.git/commit/?id=e9192241d....
Change:
+%ifarch %{ix86}
-%ifarch x86_64
+%ifarch %{ix86}
-%ifarch x86_64
Thanks.
Full change:
============
commit 77f7b18d5f5f7fc1abe87f2704a3e1fc453a9f5d
Merge: e7f437f 5a0ab75
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Mon Oct 28 09:00:23 2019 -0400
merge fix
commit 5a0ab7571f0c7dd5eb02385589150ab3c958bfe3
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Mon Oct 28 08:57:05 2019 -0400
last bit of fixes
diff --git a/chromium-77-clang.patch b/chromium-77-clang.patch
new file mode 100644
index 0000000..a57b5a4
--- /dev/null
+++ b/chromium-77-clang.patch
@@ -0,0 +1,13 @@
+diff --git a/base/location.h b/base/location.h
+index c07e747..924db1c 100644
+--- a/base/location.h
++++ b/base/location.h
+@@ -18,7 +18,7 @@
+
+ namespace base {
+
+-#if defined(__has_builtin)
++#if defined(__clang__)
+ // Clang allows detection of these builtins.
+ #define SUPPORTS_LOCATION_BUILTINS \
+ (__has_builtin(__builtin_FUNCTION) && __has_builtin(__builtin_FILE) &&
\
diff --git a/chromium-78-revert-noexcept-r1.patch b/chromium-78-revert-noexcept-r1.patch
new file mode 100644
index 0000000..408d618
--- /dev/null
+++ b/chromium-78-revert-noexcept-r1.patch
@@ -0,0 +1,1471 @@
+From 37a95dd93e553888c00cf9443a5ec738ce658e65 Mon Sep 17 00:00:00 2001
+From: Zinovy Nis <zynis(a)yandex-team.ru>
+Date: Mon, 16 Sep 2019 13:08:17 +0000
+Subject: [PATCH] Revert "[clang-tidy] add noexcept for move ctors and operator= in
blink"
+
+This reverts commit 8f3eea10fe63a64ac67dc21542ebee6b896156a3.
+
+Reason for revert: code bloating
+
+Original change's description:
+> [clang-tidy] add noexcept for move ctors and operator= in blink
+>
+> Bug: 994915
+> Change-Id: I2e1bcf286a2d2fa6613e18b5268098a0d258fb2e
+> Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1759163
+> Commit-Queue: Zinovy Nis <zynis(a)yandex-team.ru>
+> Reviewed-by: Jeremy Roman <jbroman(a)chromium.org>
+> Reviewed-by: Mike West <mkwst(a)chromium.org>
+> Cr-Commit-Position: refs/heads/master@{#688676}
+
+TBR=jbroman@chromium.org,foolip@chromium.org,mkwst@chromium.org,zynis(a)yandex-team.ru
+
+# Not skipping CQ checks because original CL landed > 1 day ago.
+
+Bug: 994915
+Change-Id: I12b3ecc1186e27809082dc399c6d6864109ce307
+---
+
+diff --git a/third_party/blink/common/indexeddb/indexeddb_key_path.cc
b/third_party/blink/common/indexeddb/indexeddb_key_path.cc
+index ec2b618..552d541 100644
+--- a/third_party/blink/common/indexeddb/indexeddb_key_path.cc
++++ b/third_party/blink/common/indexeddb/indexeddb_key_path.cc
+@@ -18,12 +18,12 @@
+ : type_(mojom::IDBKeyPathType::Array), array_(array) {}
+
+ IndexedDBKeyPath::IndexedDBKeyPath(const IndexedDBKeyPath& other) = default;
+-IndexedDBKeyPath::IndexedDBKeyPath(IndexedDBKeyPath&& other) noexcept =
default;
++IndexedDBKeyPath::IndexedDBKeyPath(IndexedDBKeyPath&& other) = default;
+ IndexedDBKeyPath::~IndexedDBKeyPath() = default;
+ IndexedDBKeyPath& IndexedDBKeyPath::operator=(const IndexedDBKeyPath& other) =
+ default;
+-IndexedDBKeyPath& IndexedDBKeyPath::operator=(
+- IndexedDBKeyPath&& other) noexcept = default;
++IndexedDBKeyPath& IndexedDBKeyPath::operator=(IndexedDBKeyPath&& other) =
++ default;
+
+ const std::vector<base::string16>& IndexedDBKeyPath::array() const {
+ DCHECK(type_ == blink::mojom::IDBKeyPathType::Array);
+diff --git a/third_party/blink/common/indexeddb/indexeddb_metadata.cc
b/third_party/blink/common/indexeddb/indexeddb_metadata.cc
+index 50d5845..9349732 100644
+--- a/third_party/blink/common/indexeddb/indexeddb_metadata.cc
++++ b/third_party/blink/common/indexeddb/indexeddb_metadata.cc
+@@ -23,15 +23,15 @@
+
+ IndexedDBIndexMetadata::IndexedDBIndexMetadata(
+ const IndexedDBIndexMetadata& other) = default;
+-IndexedDBIndexMetadata::IndexedDBIndexMetadata(
+- IndexedDBIndexMetadata&& other) noexcept = default;
++IndexedDBIndexMetadata::IndexedDBIndexMetadata(IndexedDBIndexMetadata&& other)
=
++ default;
+
+ IndexedDBIndexMetadata::~IndexedDBIndexMetadata() = default;
+
+ IndexedDBIndexMetadata& IndexedDBIndexMetadata::operator=(
+ const IndexedDBIndexMetadata& other) = default;
+ IndexedDBIndexMetadata& IndexedDBIndexMetadata::operator=(
+- IndexedDBIndexMetadata&& other) noexcept = default;
++ IndexedDBIndexMetadata&& other) = default;
+
+ bool IndexedDBIndexMetadata::operator==(
+ const IndexedDBIndexMetadata& other) const {
+@@ -56,14 +56,14 @@
+ IndexedDBObjectStoreMetadata::IndexedDBObjectStoreMetadata(
+ const IndexedDBObjectStoreMetadata& other) = default;
+ IndexedDBObjectStoreMetadata::IndexedDBObjectStoreMetadata(
+- IndexedDBObjectStoreMetadata&& other) noexcept = default;
++ IndexedDBObjectStoreMetadata&& other) = default;
+
+ IndexedDBObjectStoreMetadata::~IndexedDBObjectStoreMetadata() = default;
+
+ IndexedDBObjectStoreMetadata& IndexedDBObjectStoreMetadata::operator=(
+ const IndexedDBObjectStoreMetadata& other) = default;
+ IndexedDBObjectStoreMetadata& IndexedDBObjectStoreMetadata::operator=(
+- IndexedDBObjectStoreMetadata&& other) noexcept = default;
++ IndexedDBObjectStoreMetadata&& other) = default;
+
+ bool IndexedDBObjectStoreMetadata::operator==(
+ const IndexedDBObjectStoreMetadata& other) const {
+@@ -87,14 +87,14 @@
+ IndexedDBDatabaseMetadata::IndexedDBDatabaseMetadata(
+ const IndexedDBDatabaseMetadata& other) = default;
+ IndexedDBDatabaseMetadata::IndexedDBDatabaseMetadata(
+- IndexedDBDatabaseMetadata&& other) noexcept = default;
++ IndexedDBDatabaseMetadata&& other) = default;
+
+ IndexedDBDatabaseMetadata::~IndexedDBDatabaseMetadata() = default;
+
+ IndexedDBDatabaseMetadata& IndexedDBDatabaseMetadata::operator=(
+ const IndexedDBDatabaseMetadata& other) = default;
+ IndexedDBDatabaseMetadata& IndexedDBDatabaseMetadata::operator=(
+- IndexedDBDatabaseMetadata&& other) noexcept = default;
++ IndexedDBDatabaseMetadata&& other) = default;
+
+ bool IndexedDBDatabaseMetadata::operator==(
+ const IndexedDBDatabaseMetadata& other) const {
+diff --git a/third_party/blink/common/mediastream/media_devices.cc
b/third_party/blink/common/mediastream/media_devices.cc
+index 93df201..3661b4b 100644
+--- a/third_party/blink/common/mediastream/media_devices.cc
++++ b/third_party/blink/common/mediastream/media_devices.cc
+@@ -13,8 +13,7 @@
+ WebMediaDeviceInfo::WebMediaDeviceInfo(const WebMediaDeviceInfo& other) =
+ default;
+
+-WebMediaDeviceInfo::WebMediaDeviceInfo(WebMediaDeviceInfo&& other) noexcept =
+- default;
++WebMediaDeviceInfo::WebMediaDeviceInfo(WebMediaDeviceInfo&& other) = default;
+
+ WebMediaDeviceInfo::WebMediaDeviceInfo(const std::string& device_id,
+ const std::string& label,
+@@ -36,8 +35,8 @@
+ WebMediaDeviceInfo& WebMediaDeviceInfo::operator=(
+ const WebMediaDeviceInfo& other) = default;
+
+-WebMediaDeviceInfo& WebMediaDeviceInfo::operator=(
+- WebMediaDeviceInfo&& other) noexcept = default;
++WebMediaDeviceInfo& WebMediaDeviceInfo::operator=(WebMediaDeviceInfo&&
other) =
++ default;
+
+ bool operator==(const WebMediaDeviceInfo& first,
+ const WebMediaDeviceInfo& second) {
+diff --git a/third_party/blink/common/messaging/cloneable_message.cc
b/third_party/blink/common/messaging/cloneable_message.cc
+index 2984fd1..5c3ee7e 100644
+--- a/third_party/blink/common/messaging/cloneable_message.cc
++++ b/third_party/blink/common/messaging/cloneable_message.cc
+@@ -12,9 +12,8 @@
+ namespace blink {
+
+ CloneableMessage::CloneableMessage() = default;
+-CloneableMessage::CloneableMessage(CloneableMessage&&) noexcept = default;
+-CloneableMessage& CloneableMessage::operator=(CloneableMessage&&) noexcept
=
+- default;
++CloneableMessage::CloneableMessage(CloneableMessage&&) = default;
++CloneableMessage& CloneableMessage::operator=(CloneableMessage&&) =
default;
+ CloneableMessage::~CloneableMessage() = default;
+
+ CloneableMessage CloneableMessage::ShallowClone() const {
+diff --git a/third_party/blink/common/messaging/transferable_message.cc
b/third_party/blink/common/messaging/transferable_message.cc
+index 07ac9bb..4a69d0a 100644
+--- a/third_party/blink/common/messaging/transferable_message.cc
++++ b/third_party/blink/common/messaging/transferable_message.cc
+@@ -9,10 +9,9 @@
+ namespace blink {
+
+ TransferableMessage::TransferableMessage() = default;
+-TransferableMessage::TransferableMessage(TransferableMessage&&) noexcept =
++TransferableMessage::TransferableMessage(TransferableMessage&&) = default;
++TransferableMessage& TransferableMessage::operator=(TransferableMessage&&)
=
+ default;
+-TransferableMessage& TransferableMessage::operator=(
+- TransferableMessage&&) noexcept = default;
+ TransferableMessage::~TransferableMessage() = default;
+
+ } // namespace blink
+diff --git a/third_party/blink/public/common/indexeddb/indexeddb_key_path.h
b/third_party/blink/public/common/indexeddb/indexeddb_key_path.h
+index 8ebe10c..9f5422c 100644
+--- a/third_party/blink/public/common/indexeddb/indexeddb_key_path.h
++++ b/third_party/blink/public/common/indexeddb/indexeddb_key_path.h
+@@ -22,10 +22,10 @@
+ explicit IndexedDBKeyPath(const base::string16&);
+ explicit IndexedDBKeyPath(const std::vector<base::string16>&);
+ IndexedDBKeyPath(const IndexedDBKeyPath& other);
+- IndexedDBKeyPath(IndexedDBKeyPath&& other) noexcept;
++ IndexedDBKeyPath(IndexedDBKeyPath&& other);
+ ~IndexedDBKeyPath();
+ IndexedDBKeyPath& operator=(const IndexedDBKeyPath& other);
+- IndexedDBKeyPath& operator=(IndexedDBKeyPath&& other) noexcept;
++ IndexedDBKeyPath& operator=(IndexedDBKeyPath&& other);
+
+ bool IsNull() const { return type_ == blink::mojom::IDBKeyPathType::Null; }
+ bool operator==(const IndexedDBKeyPath& other) const;
+diff --git a/third_party/blink/public/common/indexeddb/indexeddb_metadata.h
b/third_party/blink/public/common/indexeddb/indexeddb_metadata.h
+index 15663f6..7bb37c9 100644
+--- a/third_party/blink/public/common/indexeddb/indexeddb_metadata.h
++++ b/third_party/blink/public/common/indexeddb/indexeddb_metadata.h
+@@ -26,10 +26,10 @@
+ bool unique,
+ bool multi_entry);
+ IndexedDBIndexMetadata(const IndexedDBIndexMetadata& other);
+- IndexedDBIndexMetadata(IndexedDBIndexMetadata&& other) noexcept;
++ IndexedDBIndexMetadata(IndexedDBIndexMetadata&& other);
+ ~IndexedDBIndexMetadata();
+ IndexedDBIndexMetadata& operator=(const IndexedDBIndexMetadata& other);
+- IndexedDBIndexMetadata& operator=(IndexedDBIndexMetadata&& other)
noexcept;
++ IndexedDBIndexMetadata& operator=(IndexedDBIndexMetadata&& other);
+ bool operator==(const IndexedDBIndexMetadata& other) const;
+
+ base::string16 name;
+@@ -50,12 +50,11 @@
+ bool auto_increment,
+ int64_t max_index_id);
+ IndexedDBObjectStoreMetadata(const IndexedDBObjectStoreMetadata& other);
+- IndexedDBObjectStoreMetadata(IndexedDBObjectStoreMetadata&& other) noexcept;
++ IndexedDBObjectStoreMetadata(IndexedDBObjectStoreMetadata&& other);
+ ~IndexedDBObjectStoreMetadata();
+ IndexedDBObjectStoreMetadata& operator=(
+ const IndexedDBObjectStoreMetadata& other);
+- IndexedDBObjectStoreMetadata& operator=(
+- IndexedDBObjectStoreMetadata&& other) noexcept;
++ IndexedDBObjectStoreMetadata& operator=(IndexedDBObjectStoreMetadata&&
other);
+ bool operator==(const IndexedDBObjectStoreMetadata& other) const;
+
+ base::string16 name;
+@@ -77,11 +76,10 @@
+ int64_t version,
+ int64_t max_object_store_id);
+ IndexedDBDatabaseMetadata(const IndexedDBDatabaseMetadata& other);
+- IndexedDBDatabaseMetadata(IndexedDBDatabaseMetadata&& other) noexcept;
++ IndexedDBDatabaseMetadata(IndexedDBDatabaseMetadata&& other);
+ ~IndexedDBDatabaseMetadata();
+ IndexedDBDatabaseMetadata& operator=(const IndexedDBDatabaseMetadata& other);
+- IndexedDBDatabaseMetadata& operator=(
+- IndexedDBDatabaseMetadata&& other) noexcept;
++ IndexedDBDatabaseMetadata& operator=(IndexedDBDatabaseMetadata&& other);
+ bool operator==(const IndexedDBDatabaseMetadata& other) const;
+
+ base::string16 name;
+diff --git a/third_party/blink/public/common/mediastream/media_devices.h
b/third_party/blink/public/common/mediastream/media_devices.h
+index 0d63e575..d87affe 100644
+--- a/third_party/blink/public/common/mediastream/media_devices.h
++++ b/third_party/blink/public/common/mediastream/media_devices.h
+@@ -27,7 +27,7 @@
+ struct BLINK_COMMON_EXPORT WebMediaDeviceInfo {
+ WebMediaDeviceInfo();
+ WebMediaDeviceInfo(const WebMediaDeviceInfo& other);
+- WebMediaDeviceInfo(WebMediaDeviceInfo&& other) noexcept;
++ WebMediaDeviceInfo(WebMediaDeviceInfo&& other);
+ WebMediaDeviceInfo(
+ const std::string& device_id,
+ const std::string& label,
+@@ -37,7 +37,7 @@
+ const media::VideoCaptureDeviceDescriptor& descriptor);
+ ~WebMediaDeviceInfo();
+ WebMediaDeviceInfo& operator=(const WebMediaDeviceInfo& other);
+- WebMediaDeviceInfo& operator=(WebMediaDeviceInfo&& other) noexcept;
++ WebMediaDeviceInfo& operator=(WebMediaDeviceInfo&& other);
+
+ std::string device_id;
+ std::string label;
+diff --git a/third_party/blink/public/common/messaging/cloneable_message.h
b/third_party/blink/public/common/messaging/cloneable_message.h
+index de9952d..8dbd910 100644
+--- a/third_party/blink/public/common/messaging/cloneable_message.h
++++ b/third_party/blink/public/common/messaging/cloneable_message.h
+@@ -21,8 +21,8 @@
+ // This type can be serialized as a blink::mojom::CloneableMessage struct.
+ struct BLINK_COMMON_EXPORT CloneableMessage {
+ CloneableMessage();
+- CloneableMessage(CloneableMessage&&) noexcept;
+- CloneableMessage& operator=(CloneableMessage&&) noexcept;
++ CloneableMessage(CloneableMessage&&);
++ CloneableMessage& operator=(CloneableMessage&&);
+ ~CloneableMessage();
+
+ // Returns a shallow clone of this message. |encoded_message| in the clone
+diff --git a/third_party/blink/public/common/messaging/transferable_message.h
b/third_party/blink/public/common/messaging/transferable_message.h
+index 5eef63c..2d87363 100644
+--- a/third_party/blink/public/common/messaging/transferable_message.h
++++ b/third_party/blink/public/common/messaging/transferable_message.h
+@@ -22,8 +22,8 @@
+ // type can be serialized as a blink::mojom::TransferableMessage struct.
+ struct BLINK_COMMON_EXPORT TransferableMessage : public CloneableMessage {
+ TransferableMessage();
+- TransferableMessage(TransferableMessage&&) noexcept;
+- TransferableMessage& operator=(TransferableMessage&&) noexcept;
++ TransferableMessage(TransferableMessage&&);
++ TransferableMessage& operator=(TransferableMessage&&);
+ ~TransferableMessage();
+
+ // Any ports being transferred as part of this message.
+diff --git a/third_party/blink/public/platform/scheduler/web_scoped_virtual_time_pauser.h
b/third_party/blink/public/platform/scheduler/web_scoped_virtual_time_pauser.h
+index 75f3ae16..81edd69 100644
+--- a/third_party/blink/public/platform/scheduler/web_scoped_virtual_time_pauser.h
++++ b/third_party/blink/public/platform/scheduler/web_scoped_virtual_time_pauser.h
+@@ -42,9 +42,8 @@
+ WebScopedVirtualTimePauser();
+ ~WebScopedVirtualTimePauser();
+
+- WebScopedVirtualTimePauser(WebScopedVirtualTimePauser&& other) noexcept;
+- WebScopedVirtualTimePauser& operator=(
+- WebScopedVirtualTimePauser&& other) noexcept;
++ WebScopedVirtualTimePauser(WebScopedVirtualTimePauser&& other);
++ WebScopedVirtualTimePauser& operator=(WebScopedVirtualTimePauser&&
other);
+
+ WebScopedVirtualTimePauser(const WebScopedVirtualTimePauser&) = delete;
+ WebScopedVirtualTimePauser& operator=(const WebScopedVirtualTimePauser&) =
+diff --git a/third_party/blink/public/platform/web_string.h
b/third_party/blink/public/platform/web_string.h
+index e4fda4f..ffd1da0 100644
+--- a/third_party/blink/public/platform/web_string.h
++++ b/third_party/blink/public/platform/web_string.h
+@@ -102,10 +102,10 @@
+ BLINK_PLATFORM_EXPORT WebString(const WebUChar* data, size_t len);
+
+ BLINK_PLATFORM_EXPORT WebString(const WebString&);
+- BLINK_PLATFORM_EXPORT WebString(WebString&&) noexcept;
++ BLINK_PLATFORM_EXPORT WebString(WebString&&);
+
+ BLINK_PLATFORM_EXPORT WebString& operator=(const WebString&);
+- BLINK_PLATFORM_EXPORT WebString& operator=(WebString&&) noexcept;
++ BLINK_PLATFORM_EXPORT WebString& operator=(WebString&&);
+
+ BLINK_PLATFORM_EXPORT void Reset();
+
+diff --git
a/third_party/blink/public/web/modules/mediastream/media_stream_constraints_util.h
b/third_party/blink/public/web/modules/mediastream/media_stream_constraints_util.h
+index 99f47f5..8451b86 100644
+--- a/third_party/blink/public/web/modules/mediastream/media_stream_constraints_util.h
++++ b/third_party/blink/public/web/modules/mediastream/media_stream_constraints_util.h
+@@ -73,8 +73,8 @@
+
+ VideoCaptureSettings(const VideoCaptureSettings& other);
+ VideoCaptureSettings& operator=(const VideoCaptureSettings& other);
+- VideoCaptureSettings(VideoCaptureSettings&& other) noexcept;
+- VideoCaptureSettings& operator=(VideoCaptureSettings&& other) noexcept;
++ VideoCaptureSettings(VideoCaptureSettings&& other);
++ VideoCaptureSettings& operator=(VideoCaptureSettings&& other);
+ ~VideoCaptureSettings();
+
+ bool HasValue() const { return !failed_constraint_name_; }
+@@ -193,8 +193,8 @@
+ const AudioProcessingProperties& audio_processing_properties);
+ AudioCaptureSettings(const AudioCaptureSettings& other);
+ AudioCaptureSettings& operator=(const AudioCaptureSettings& other);
+- AudioCaptureSettings(AudioCaptureSettings&& other) noexcept;
+- AudioCaptureSettings& operator=(AudioCaptureSettings&& other) noexcept;
++ AudioCaptureSettings(AudioCaptureSettings&& other);
++ AudioCaptureSettings& operator=(AudioCaptureSettings&& other);
+
+ bool HasValue() const { return !failed_constraint_name_; }
+
+diff --git
a/third_party/blink/public/web/modules/mediastream/media_stream_constraints_util_sets.h
b/third_party/blink/public/web/modules/mediastream/media_stream_constraints_util_sets.h
+index 199bdeb..c89e6e9 100644
+---
a/third_party/blink/public/web/modules/mediastream/media_stream_constraints_util_sets.h
++++
b/third_party/blink/public/web/modules/mediastream/media_stream_constraints_util_sets.h
+@@ -159,8 +159,8 @@
+
+ DiscreteSet(const DiscreteSet& other) = default;
+ DiscreteSet& operator=(const DiscreteSet& other) = default;
+- DiscreteSet(DiscreteSet&& other) noexcept = default;
+- DiscreteSet& operator=(DiscreteSet&& other) noexcept = default;
++ DiscreteSet(DiscreteSet&& other) = default;
++ DiscreteSet& operator=(DiscreteSet&& other) = default;
+ ~DiscreteSet() = default;
+
+ bool Contains(const T& value) const {
+diff --git a/third_party/blink/public/web/modules/mediastream/media_stream_video_source.h
b/third_party/blink/public/web/modules/mediastream/media_stream_video_source.h
+index 5e50d1b..ed5967f 100644
+--- a/third_party/blink/public/web/modules/mediastream/media_stream_video_source.h
++++ b/third_party/blink/public/web/modules/mediastream/media_stream_video_source.h
+@@ -285,8 +285,8 @@
+ const VideoTrackFormatCallback& format_callback,
+ std::unique_ptr<VideoTrackAdapterSettings> adapter_settings,
+ const ConstraintsCallback& callback);
+- PendingTrackInfo(PendingTrackInfo&& other) noexcept;
+- PendingTrackInfo& operator=(PendingTrackInfo&& other) noexcept;
++ PendingTrackInfo(PendingTrackInfo&& other);
++ PendingTrackInfo& operator=(PendingTrackInfo&& other);
+ ~PendingTrackInfo();
+
+ MediaStreamVideoTrack* track;
+diff --git a/third_party/blink/renderer/core/animation/interpolation_value.h
b/third_party/blink/renderer/core/animation/interpolation_value.h
+index 75c5d35..17ccf02 100644
+--- a/third_party/blink/renderer/core/animation/interpolation_value.h
++++ b/third_party/blink/renderer/core/animation/interpolation_value.h
+@@ -27,11 +27,11 @@
+
+ InterpolationValue(std::nullptr_t) {}
+
+- InterpolationValue(InterpolationValue&& other) noexcept
++ InterpolationValue(InterpolationValue&& other)
+ : interpolable_value(std::move(other.interpolable_value)),
+ non_interpolable_value(std::move(other.non_interpolable_value)) {}
+
+- void operator=(InterpolationValue&& other) noexcept {
++ void operator=(InterpolationValue&& other) {
+ interpolable_value = std::move(other.interpolable_value);
+ non_interpolable_value = std::move(other.non_interpolable_value);
+ }
+diff --git a/third_party/blink/renderer/core/animation/pairwise_interpolation_value.h
b/third_party/blink/renderer/core/animation/pairwise_interpolation_value.h
+index 39e6c57..87bb431 100644
+--- a/third_party/blink/renderer/core/animation/pairwise_interpolation_value.h
++++ b/third_party/blink/renderer/core/animation/pairwise_interpolation_value.h
+@@ -28,7 +28,7 @@
+
+ PairwiseInterpolationValue(std::nullptr_t) {}
+
+- PairwiseInterpolationValue(PairwiseInterpolationValue&& other) noexcept
++ PairwiseInterpolationValue(PairwiseInterpolationValue&& other)
+ : start_interpolable_value(std::move(other.start_interpolable_value)),
+ end_interpolable_value(std::move(other.end_interpolable_value)),
+ non_interpolable_value(std::move(other.non_interpolable_value)) {}
+diff --git a/third_party/blink/renderer/core/css/css_selector_list.h
b/third_party/blink/renderer/core/css/css_selector_list.h
+index 4d38b09..51f354b 100644
+--- a/third_party/blink/renderer/core/css/css_selector_list.h
++++ b/third_party/blink/renderer/core/css/css_selector_list.h
+@@ -67,8 +67,7 @@
+ public:
+ CSSSelectorList() : selector_array_(nullptr) {}
+
+- CSSSelectorList(CSSSelectorList&& o) noexcept
+- : selector_array_(o.selector_array_) {
++ CSSSelectorList(CSSSelectorList&& o) : selector_array_(o.selector_array_) {
+ o.selector_array_ = nullptr;
+ }
+
+@@ -82,7 +81,7 @@
+ bool HasPseudoWhere() const;
+ bool RequiresExpansion() const;
+
+- CSSSelectorList& operator=(CSSSelectorList&& o) noexcept {
++ CSSSelectorList& operator=(CSSSelectorList&& o) {
+ DCHECK(this != &o);
+ DeleteSelectorsIfNeeded();
+ selector_array_ = o.selector_array_;
+diff --git a/third_party/blink/renderer/core/display_lock/display_lock_context.cc
b/third_party/blink/renderer/core/display_lock/display_lock_context.cc
+index 0e6b6cb..79f281a 100644
+--- a/third_party/blink/renderer/core/display_lock/display_lock_context.cc
++++ b/third_party/blink/renderer/core/display_lock/display_lock_context.cc
+@@ -1033,7 +1033,7 @@
+ : context_(context) {}
+
+ DisplayLockContext::ScopedForcedUpdate::ScopedForcedUpdate(
+- ScopedForcedUpdate&& other) noexcept
++ ScopedForcedUpdate&& other)
+ : context_(other.context_) {
+ other.context_ = nullptr;
+ }
+diff --git a/third_party/blink/renderer/core/display_lock/display_lock_context.h
b/third_party/blink/renderer/core/display_lock/display_lock_context.h
+index 1a38b2af..f890b432 100644
+--- a/third_party/blink/renderer/core/display_lock/display_lock_context.h
++++ b/third_party/blink/renderer/core/display_lock/display_lock_context.h
+@@ -76,7 +76,7 @@
+ DISALLOW_NEW();
+
+ public:
+- ScopedForcedUpdate(ScopedForcedUpdate&&) noexcept;
++ ScopedForcedUpdate(ScopedForcedUpdate&&);
+ ~ScopedForcedUpdate();
+
+ private:
+diff --git a/third_party/blink/renderer/core/editing/layout_selection.cc
b/third_party/blink/renderer/core/editing/layout_selection.cc
+index 00040d2..73cfe0f 100644
+--- a/third_party/blink/renderer/core/editing/layout_selection.cc
++++ b/third_party/blink/renderer/core/editing/layout_selection.cc
+@@ -178,7 +178,7 @@
+ public:
+ OldSelectedNodes()
+ : paint_range(MakeGarbageCollected<SelectionPaintRange>()) {}
+- OldSelectedNodes(OldSelectedNodes&& other) noexcept {
++ OldSelectedNodes(OldSelectedNodes&& other) {
+ paint_range = other.paint_range;
+ selected_map = std::move(other.selected_map);
+ }
+@@ -205,8 +205,7 @@
+ HeapHashSet<Member<const Node>>&& passed_selected_objects)
+ : paint_range(passed_paint_range),
+ selected_objects(std::move(passed_selected_objects)) {}
+- NewPaintRangeAndSelectedNodes(
+- NewPaintRangeAndSelectedNodes&& other) noexcept {
++ NewPaintRangeAndSelectedNodes(NewPaintRangeAndSelectedNodes&& other) {
+ paint_range = other.paint_range;
+ selected_objects = std::move(other.selected_objects);
+ }
+diff --git a/third_party/blink/renderer/core/frame/local_frame_ukm_aggregator.cc
b/third_party/blink/renderer/core/frame/local_frame_ukm_aggregator.cc
+index f0ac3c4..81f47ab 100644
+--- a/third_party/blink/renderer/core/frame/local_frame_ukm_aggregator.cc
++++ b/third_party/blink/renderer/core/frame/local_frame_ukm_aggregator.cc
+@@ -24,7 +24,7 @@
+ start_time_(clock_->NowTicks()) {}
+
+ LocalFrameUkmAggregator::ScopedUkmHierarchicalTimer::ScopedUkmHierarchicalTimer(
+- ScopedUkmHierarchicalTimer&& other) noexcept
++ ScopedUkmHierarchicalTimer&& other)
+ : aggregator_(other.aggregator_),
+ metric_index_(other.metric_index_),
+ clock_(other.clock_),
+diff --git a/third_party/blink/renderer/core/frame/local_frame_ukm_aggregator.h
b/third_party/blink/renderer/core/frame/local_frame_ukm_aggregator.h
+index 44c3f87..dc06091 100644
+--- a/third_party/blink/renderer/core/frame/local_frame_ukm_aggregator.h
++++ b/third_party/blink/renderer/core/frame/local_frame_ukm_aggregator.h
+@@ -195,7 +195,7 @@
+ STACK_ALLOCATED();
+
+ public:
+- ScopedUkmHierarchicalTimer(ScopedUkmHierarchicalTimer&&) noexcept;
++ ScopedUkmHierarchicalTimer(ScopedUkmHierarchicalTimer&&);
+ ~ScopedUkmHierarchicalTimer();
+
+ private:
+diff --git
a/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.h
b/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.h
+index 2af19ca..498e42e 100644
+--- a/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.h
++++ b/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.h
+@@ -181,7 +181,7 @@
+
+ public:
+ ChildList() = default;
+- void operator=(ChildList&& other) noexcept {
++ void operator=(ChildList&& other) {
+ children_ = std::move(other.children_);
+ }
+
+diff --git a/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h
b/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h
+index 8f77b90..833b0d2 100644
+--- a/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h
++++ b/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h
+@@ -86,7 +86,7 @@
+ else
+ bfc_offset_ = other.bfc_offset_;
+ }
+- NGConstraintSpace(NGConstraintSpace&& other) noexcept
++ NGConstraintSpace(NGConstraintSpace&& other)
+ : available_size_(other.available_size_),
+ exclusion_space_(std::move(other.exclusion_space_)),
+ bitfields_(other.bitfields_) {
+@@ -110,7 +110,7 @@
+ bitfields_ = other.bitfields_;
+ return *this;
+ }
+- NGConstraintSpace& operator=(NGConstraintSpace&& other) noexcept {
++ NGConstraintSpace& operator=(NGConstraintSpace&& other) {
+ available_size_ = other.available_size_;
+ if (HasRareData())
+ delete rare_data_;
+diff --git a/third_party/blink/renderer/core/messaging/blink_cloneable_message.cc
b/third_party/blink/renderer/core/messaging/blink_cloneable_message.cc
+index b6c8768..7423930 100644
+--- a/third_party/blink/renderer/core/messaging/blink_cloneable_message.cc
++++ b/third_party/blink/renderer/core/messaging/blink_cloneable_message.cc
+@@ -9,9 +9,8 @@
+ BlinkCloneableMessage::BlinkCloneableMessage() = default;
+ BlinkCloneableMessage::~BlinkCloneableMessage() = default;
+
+-BlinkCloneableMessage::BlinkCloneableMessage(BlinkCloneableMessage&&) noexcept
=
+- default;
++BlinkCloneableMessage::BlinkCloneableMessage(BlinkCloneableMessage&&) =
default;
+ BlinkCloneableMessage& BlinkCloneableMessage::operator=(
+- BlinkCloneableMessage&&) noexcept = default;
++ BlinkCloneableMessage&&) = default;
+
+ } // namespace blink
+diff --git a/third_party/blink/renderer/core/messaging/blink_cloneable_message.h
b/third_party/blink/renderer/core/messaging/blink_cloneable_message.h
+index 337b0f8..a51e888 100644
+--- a/third_party/blink/renderer/core/messaging/blink_cloneable_message.h
++++ b/third_party/blink/renderer/core/messaging/blink_cloneable_message.h
+@@ -21,8 +21,8 @@
+ BlinkCloneableMessage();
+ ~BlinkCloneableMessage();
+
+- BlinkCloneableMessage(BlinkCloneableMessage&&) noexcept;
+- BlinkCloneableMessage& operator=(BlinkCloneableMessage&&) noexcept;
++ BlinkCloneableMessage(BlinkCloneableMessage&&);
++ BlinkCloneableMessage& operator=(BlinkCloneableMessage&&);
+
+ scoped_refptr<blink::SerializedScriptValue> message;
+ v8_inspector::V8StackTraceId sender_stack_trace_id;
+diff --git a/third_party/blink/renderer/core/messaging/blink_transferable_message.cc
b/third_party/blink/renderer/core/messaging/blink_transferable_message.cc
+index 909ddb0..b5cdfda 100644
+--- a/third_party/blink/renderer/core/messaging/blink_transferable_message.cc
++++ b/third_party/blink/renderer/core/messaging/blink_transferable_message.cc
+@@ -16,10 +16,10 @@
+ BlinkTransferableMessage::BlinkTransferableMessage() = default;
+ BlinkTransferableMessage::~BlinkTransferableMessage() = default;
+
+-BlinkTransferableMessage::BlinkTransferableMessage(
+- BlinkTransferableMessage&&) noexcept = default;
++BlinkTransferableMessage::BlinkTransferableMessage(BlinkTransferableMessage&&)
=
++ default;
+ BlinkTransferableMessage& BlinkTransferableMessage::operator=(
+- BlinkTransferableMessage&&) noexcept = default;
++ BlinkTransferableMessage&&) = default;
+
+ scoped_refptr<blink::StaticBitmapImage> ToStaticBitmapImage(
+ const SkBitmap& sk_bitmap) {
+diff --git a/third_party/blink/renderer/core/messaging/blink_transferable_message.h
b/third_party/blink/renderer/core/messaging/blink_transferable_message.h
+index edf4fab..3957bed 100644
+--- a/third_party/blink/renderer/core/messaging/blink_transferable_message.h
++++ b/third_party/blink/renderer/core/messaging/blink_transferable_message.h
+@@ -24,8 +24,8 @@
+ BlinkTransferableMessage();
+ ~BlinkTransferableMessage();
+
+- BlinkTransferableMessage(BlinkTransferableMessage&&) noexcept;
+- BlinkTransferableMessage& operator=(BlinkTransferableMessage&&) noexcept;
++ BlinkTransferableMessage(BlinkTransferableMessage&&);
++ BlinkTransferableMessage& operator=(BlinkTransferableMessage&&);
+
+ Vector<MessagePortChannel> ports;
+
+diff --git
a/third_party/blink/renderer/modules/imagecapture/image_capture_frame_grabber.h
b/third_party/blink/renderer/modules/imagecapture/image_capture_frame_grabber.h
+index 85b46e1..f050a85 100644
+--- a/third_party/blink/renderer/modules/imagecapture/image_capture_frame_grabber.h
++++ b/third_party/blink/renderer/modules/imagecapture/image_capture_frame_grabber.h
+@@ -92,10 +92,10 @@
+ std::move(destruction_callback_).Run(std::move(callbacks_));
+ }
+
+- ScopedWebCallbacks(ScopedWebCallbacks&& other) noexcept = default;
++ ScopedWebCallbacks(ScopedWebCallbacks&& other) = default;
+ ScopedWebCallbacks(const ScopedWebCallbacks& other) = delete;
+
+- ScopedWebCallbacks& operator=(ScopedWebCallbacks&& other) noexcept =
default;
++ ScopedWebCallbacks& operator=(ScopedWebCallbacks&& other) = default;
+ ScopedWebCallbacks& operator=(const ScopedWebCallbacks& other) = delete;
+
+ std::unique_ptr<CallbacksType> PassCallbacks() {
+diff --git a/third_party/blink/renderer/modules/indexeddb/idb_request.h
b/third_party/blink/renderer/modules/indexeddb/idb_request.h
+index f85b864..d3f1132 100644
+--- a/third_party/blink/renderer/modules/indexeddb/idb_request.h
++++ b/third_party/blink/renderer/modules/indexeddb/idb_request.h
+@@ -110,13 +110,13 @@
+ ~AsyncTraceState();
+
+ // Used to transfer the trace end event state to an IDBRequest.
+- AsyncTraceState(AsyncTraceState&& other) noexcept {
++ AsyncTraceState(AsyncTraceState&& other) {
+ DCHECK(IsEmpty());
+ this->trace_event_name_ = other.trace_event_name_;
+ this->id_ = other.id_;
+ other.trace_event_name_ = nullptr;
+ }
+- AsyncTraceState& operator=(AsyncTraceState&& rhs) noexcept {
++ AsyncTraceState& operator=(AsyncTraceState&& rhs) {
+ DCHECK(IsEmpty());
+ this->trace_event_name_ = rhs.trace_event_name_;
+ this->id_ = rhs.id_;
+diff --git a/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc
b/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc
+index 84de726..2d3d4de5 100644
+--- a/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc
++++ b/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc
+@@ -434,10 +434,9 @@
+ class AsyncTraceStateForTesting : public IDBRequest::AsyncTraceState {
+ public:
+ AsyncTraceStateForTesting() : IDBRequest::AsyncTraceState() {}
+- AsyncTraceStateForTesting(AsyncTraceStateForTesting&& other) noexcept
++ AsyncTraceStateForTesting(AsyncTraceStateForTesting&& other)
+ : IDBRequest::AsyncTraceState(std::move(other)) {}
+- AsyncTraceStateForTesting& operator=(
+- AsyncTraceStateForTesting&& rhs) noexcept {
++ AsyncTraceStateForTesting& operator=(AsyncTraceStateForTesting&& rhs) {
+ AsyncTraceState::operator=(std::move(rhs));
+ return *this;
+ }
+diff --git
a/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util.cc
b/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util.cc
+index 24499bd..3bf00e9 100644
+--- a/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util.cc
++++ b/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util.cc
+@@ -134,13 +134,13 @@
+
+ VideoCaptureSettings::VideoCaptureSettings(const VideoCaptureSettings& other) =
+ default;
+-VideoCaptureSettings::VideoCaptureSettings(
+- VideoCaptureSettings&& other) noexcept = default;
++VideoCaptureSettings::VideoCaptureSettings(VideoCaptureSettings&& other) =
++ default;
+ VideoCaptureSettings::~VideoCaptureSettings() = default;
+ VideoCaptureSettings& VideoCaptureSettings::operator=(
+ const VideoCaptureSettings& other) = default;
+ VideoCaptureSettings& VideoCaptureSettings::operator=(
+- VideoCaptureSettings&& other) noexcept = default;
++ VideoCaptureSettings&& other) = default;
+
+ AudioCaptureSettings::AudioCaptureSettings() : AudioCaptureSettings("") {}
+
+@@ -166,10 +166,10 @@
+ default;
+ AudioCaptureSettings& AudioCaptureSettings::operator=(
+ const AudioCaptureSettings& other) = default;
+-AudioCaptureSettings::AudioCaptureSettings(
+- AudioCaptureSettings&& other) noexcept = default;
++AudioCaptureSettings::AudioCaptureSettings(AudioCaptureSettings&& other) =
++ default;
+ AudioCaptureSettings& AudioCaptureSettings::operator=(
+- AudioCaptureSettings&& other) noexcept = default;
++ AudioCaptureSettings&& other) = default;
+
+ bool GetConstraintValueAsBoolean(
+ const WebMediaConstraints& constraints,
+diff --git
a/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_video_device.cc
b/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_video_device.cc
+index 96992217..67c8bab 100644
+---
a/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_video_device.cc
++++
b/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_video_device.cc
+@@ -529,9 +529,9 @@
+ facing_mode(facing_mode) {}
+
+ VideoInputDeviceCapabilities::VideoInputDeviceCapabilities(
+- VideoInputDeviceCapabilities&& other) noexcept = default;
++ VideoInputDeviceCapabilities&& other) = default;
+ VideoInputDeviceCapabilities& VideoInputDeviceCapabilities::operator=(
+- VideoInputDeviceCapabilities&& other) noexcept = default;
++ VideoInputDeviceCapabilities&& other) = default;
+
+ VideoInputDeviceCapabilities::~VideoInputDeviceCapabilities() = default;
+
+@@ -557,10 +557,10 @@
+
+ VideoDeviceCaptureCapabilities::VideoDeviceCaptureCapabilities() = default;
+ VideoDeviceCaptureCapabilities::VideoDeviceCaptureCapabilities(
+- VideoDeviceCaptureCapabilities&& other) noexcept = default;
++ VideoDeviceCaptureCapabilities&& other) = default;
+ VideoDeviceCaptureCapabilities::~VideoDeviceCaptureCapabilities() = default;
+ VideoDeviceCaptureCapabilities& VideoDeviceCaptureCapabilities::operator=(
+- VideoDeviceCaptureCapabilities&& other) noexcept = default;
++ VideoDeviceCaptureCapabilities&& other) = default;
+
+ VideoCaptureSettings SelectSettingsVideoDeviceCapture(
+ const VideoDeviceCaptureCapabilities& capabilities,
+diff --git
a/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_video_device.h
b/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_video_device.h
+index 66ae103..94d8ed9 100644
+---
a/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_video_device.h
++++
b/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_video_device.h
+@@ -34,9 +34,8 @@
+ Vector<media::VideoCaptureFormat> formats,
+ media::VideoFacingMode facing_mode);
+ VideoInputDeviceCapabilities();
+- VideoInputDeviceCapabilities(VideoInputDeviceCapabilities&& other) noexcept;
+- VideoInputDeviceCapabilities& operator=(
+- VideoInputDeviceCapabilities&& other) noexcept;
++ VideoInputDeviceCapabilities(VideoInputDeviceCapabilities&& other);
++ VideoInputDeviceCapabilities& operator=(VideoInputDeviceCapabilities&&
other);
+ ~VideoInputDeviceCapabilities();
+
+ String device_id;
+@@ -47,11 +46,10 @@
+
+ struct MODULES_EXPORT VideoDeviceCaptureCapabilities {
+ VideoDeviceCaptureCapabilities();
+- VideoDeviceCaptureCapabilities(
+- VideoDeviceCaptureCapabilities&& other) noexcept;
++ VideoDeviceCaptureCapabilities(VideoDeviceCaptureCapabilities&& other);
+ ~VideoDeviceCaptureCapabilities();
+ VideoDeviceCaptureCapabilities& operator=(
+- VideoDeviceCaptureCapabilities&& other) noexcept;
++ VideoDeviceCaptureCapabilities&& other);
+
+ // Each capabilities field is independent of each other.
+ //
TODO(crbug.com/704136): Replace VideoInputDeviceCapabilities in the
+diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_video_source.cc
b/third_party/blink/renderer/modules/mediastream/media_stream_video_source.cc
+index 7651e47..99759c1 100644
+--- a/third_party/blink/renderer/modules/mediastream/media_stream_video_source.cc
++++ b/third_party/blink/renderer/modules/mediastream/media_stream_video_source.cc
+@@ -461,10 +461,10 @@
+ callback(callback) {}
+
+ MediaStreamVideoSource::PendingTrackInfo::PendingTrackInfo(
+- PendingTrackInfo&& other) noexcept = default;
++ PendingTrackInfo&& other) = default;
+ MediaStreamVideoSource::PendingTrackInfo&
+ MediaStreamVideoSource::PendingTrackInfo::operator=(
+- MediaStreamVideoSource::PendingTrackInfo&& other) noexcept = default;
++ MediaStreamVideoSource::PendingTrackInfo&& other) = default;
+
+ MediaStreamVideoSource::PendingTrackInfo::~PendingTrackInfo() {}
+
+diff --git a/third_party/blink/renderer/platform/bindings/dom_data_store.h
b/third_party/blink/renderer/platform/bindings/dom_data_store.h
+index d660b67..0660dd18 100644
+--- a/third_party/blink/renderer/platform/bindings/dom_data_store.h
++++ b/third_party/blink/renderer/platform/bindings/dom_data_store.h
+@@ -230,12 +230,11 @@
+ : TraceWrapperV8Reference(isolate, handle) {}
+
+ // Move support without write barrier.
+- DOMWorldWrapperReference(DOMWorldWrapperReference&& other) noexcept
++ DOMWorldWrapperReference(DOMWorldWrapperReference&& other)
+ : TraceWrapperV8Reference() {
+ handle_ = std::move(other.handle_);
+ }
+- DOMWorldWrapperReference& operator=(
+- DOMWorldWrapperReference&& rhs) noexcept {
++ DOMWorldWrapperReference& operator=(DOMWorldWrapperReference&& rhs) {
+ handle_ = std::move(rhs.handle_);
+ return *this;
+ }
+diff --git a/third_party/blink/renderer/platform/exported/web_string.cc
b/third_party/blink/renderer/platform/exported/web_string.cc
+index 71d4c07..fbe4828 100644
+--- a/third_party/blink/renderer/platform/exported/web_string.cc
++++ b/third_party/blink/renderer/platform/exported/web_string.cc
+@@ -51,9 +51,9 @@
+ WebString::~WebString() = default;
+ WebString::WebString() = default;
+ WebString::WebString(const WebString&) = default;
+-WebString::WebString(WebString&&) noexcept = default;
++WebString::WebString(WebString&&) = default;
+ WebString& WebString::operator=(const WebString&) = default;
+-WebString& WebString::operator=(WebString&&) noexcept = default;
++WebString& WebString::operator=(WebString&&) = default;
+
+ WebString::WebString(const WebUChar* data, size_t len)
+ : impl_(StringImpl::Create8BitIfPossible(data, len)) {}
+diff --git a/third_party/blink/renderer/platform/graphics/contiguous_container.cc
b/third_party/blink/renderer/platform/graphics/contiguous_container.cc
+index fd01c00..19cb6f2 100644
+--- a/third_party/blink/renderer/platform/graphics/contiguous_container.cc
++++ b/third_party/blink/renderer/platform/graphics/contiguous_container.cc
+@@ -69,7 +69,7 @@
+ : end_index_(0), max_object_size_(max_object_size) {}
+
+ ContiguousContainerBase::ContiguousContainerBase(
+- ContiguousContainerBase&& source) noexcept
++ ContiguousContainerBase&& source)
+ : ContiguousContainerBase(source.max_object_size_) {
+ Swap(source);
+ }
+@@ -77,7 +77,7 @@
+ ContiguousContainerBase::~ContiguousContainerBase() = default;
+
+ ContiguousContainerBase& ContiguousContainerBase::operator=(
+- ContiguousContainerBase&& source) noexcept {
++ ContiguousContainerBase&& source) {
+ Swap(source);
+ return *this;
+ }
+diff --git a/third_party/blink/renderer/platform/graphics/contiguous_container.h
b/third_party/blink/renderer/platform/graphics/contiguous_container.h
+index 867e59c..3eee558 100644
+--- a/third_party/blink/renderer/platform/graphics/contiguous_container.h
++++ b/third_party/blink/renderer/platform/graphics/contiguous_container.h
+@@ -42,10 +42,10 @@
+
+ protected:
+ explicit ContiguousContainerBase(size_t max_object_size);
+- ContiguousContainerBase(ContiguousContainerBase&&) noexcept;
++ ContiguousContainerBase(ContiguousContainerBase&&);
+ ~ContiguousContainerBase();
+
+- ContiguousContainerBase& operator=(ContiguousContainerBase&&) noexcept;
++ ContiguousContainerBase& operator=(ContiguousContainerBase&&);
+
+ size_t size() const { return elements_.size(); }
+ bool IsEmpty() const { return !size(); }
+@@ -147,7 +147,7 @@
+ WTF_HEAP_PROFILER_TYPE_NAME(BaseElementType));
+ }
+
+- ContiguousContainer(ContiguousContainer&& source) noexcept
++ ContiguousContainer(ContiguousContainer&& source)
+ : ContiguousContainerBase(std::move(source)) {}
+
+ ~ContiguousContainer() {
+@@ -157,7 +157,7 @@
+ }
+ }
+
+- ContiguousContainer& operator=(ContiguousContainer&& source) noexcept {
++ ContiguousContainer& operator=(ContiguousContainer&& source) {
+ // Must clear in the derived class to ensure that element destructors
+ // care called.
+ Clear();
+diff --git a/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.cc
b/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.cc
+index ad10c54..4edbf7f 100644
+--- a/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.cc
++++ b/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.cc
+@@ -247,9 +247,9 @@
+ }
+
+ ImageLayerBridge::RegisteredBitmap::RegisteredBitmap() = default;
+-ImageLayerBridge::RegisteredBitmap::RegisteredBitmap(
+- RegisteredBitmap&& other) noexcept = default;
++ImageLayerBridge::RegisteredBitmap::RegisteredBitmap(RegisteredBitmap&& other)
=
++ default;
+ ImageLayerBridge::RegisteredBitmap& ImageLayerBridge::RegisteredBitmap::
+-operator=(RegisteredBitmap&& other) noexcept = default;
++operator=(RegisteredBitmap&& other) = default;
+
+ } // namespace blink
+diff --git a/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.h
b/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.h
+index bea81dfb..b6879f9 100644
+--- a/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.h
++++ b/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.h
+@@ -65,8 +65,8 @@
+ // only with software compositing.
+ struct RegisteredBitmap {
+ RegisteredBitmap();
+- RegisteredBitmap(RegisteredBitmap&& other) noexcept;
+- RegisteredBitmap& operator=(RegisteredBitmap&& other) noexcept;
++ RegisteredBitmap(RegisteredBitmap&& other);
++ RegisteredBitmap& operator=(RegisteredBitmap&& other);
+
+ scoped_refptr<cc::CrossThreadSharedBitmap> bitmap;
+ cc::SharedBitmapIdRegistration registration;
+diff --git a/third_party/blink/renderer/platform/graphics/paint/display_item_list.h
b/third_party/blink/renderer/platform/graphics/paint/display_item_list.h
+index cd3ed2f..9ee2571 100644
+--- a/third_party/blink/renderer/platform/graphics/paint/display_item_list.h
++++ b/third_party/blink/renderer/platform/graphics/paint/display_item_list.h
+@@ -28,10 +28,10 @@
+ public:
+ DisplayItemList(size_t initial_size_bytes)
+ : ContiguousContainer(kMaximumDisplayItemSize, initial_size_bytes) {}
+- DisplayItemList(DisplayItemList&& source) noexcept
++ DisplayItemList(DisplayItemList&& source)
+ : ContiguousContainer(std::move(source)) {}
+
+- DisplayItemList& operator=(DisplayItemList&& source) noexcept {
++ DisplayItemList& operator=(DisplayItemList&& source) {
+ ContiguousContainer::operator=(std::move(source));
+ return *this;
+ }
+diff --git a/third_party/blink/renderer/platform/heap/heap_test.cc
b/third_party/blink/renderer/platform/heap/heap_test.cc
+index dad0ca0..e94cbc95 100644
+--- a/third_party/blink/renderer/platform/heap/heap_test.cc
++++ b/third_party/blink/renderer/platform/heap/heap_test.cc
+@@ -145,7 +145,7 @@
+ }
+ KeyWithCopyingMoveConstructor(const KeyWithCopyingMoveConstructor&) = default;
+ // The move constructor delegates to the copy constructor intentionally.
+- KeyWithCopyingMoveConstructor(KeyWithCopyingMoveConstructor&& x) noexcept
++ KeyWithCopyingMoveConstructor(KeyWithCopyingMoveConstructor&& x)
+ : KeyWithCopyingMoveConstructor(x) {}
+ KeyWithCopyingMoveConstructor& operator=(
+ const KeyWithCopyingMoveConstructor&) = default;
+diff --git a/third_party/blink/renderer/platform/image-decoders/segment_stream.cc
b/third_party/blink/renderer/platform/image-decoders/segment_stream.cc
+index 4024f9c..5a98701 100644
+--- a/third_party/blink/renderer/platform/image-decoders/segment_stream.cc
++++ b/third_party/blink/renderer/platform/image-decoders/segment_stream.cc
+@@ -10,10 +10,10 @@
+
+ SegmentStream::SegmentStream() = default;
+
+-SegmentStream::SegmentStream(SegmentStream&& rhs) noexcept
++SegmentStream::SegmentStream(SegmentStream&& rhs)
+ : reader_(std::move(rhs.reader_)), position_(rhs.position_) {}
+
+-SegmentStream& SegmentStream::operator=(SegmentStream&& rhs) noexcept {
++SegmentStream& SegmentStream::operator=(SegmentStream&& rhs) {
+ reader_ = std::move(rhs.reader_);
+ position_ = rhs.position_;
+
+diff --git a/third_party/blink/renderer/platform/image-decoders/segment_stream.h
b/third_party/blink/renderer/platform/image-decoders/segment_stream.h
+index f49f551..fa1ccf2 100644
+--- a/third_party/blink/renderer/platform/image-decoders/segment_stream.h
++++ b/third_party/blink/renderer/platform/image-decoders/segment_stream.h
+@@ -19,8 +19,8 @@
+ SegmentStream();
+ SegmentStream(const SegmentStream&) = delete;
+ SegmentStream& operator=(const SegmentStream&) = delete;
+- SegmentStream(SegmentStream&&) noexcept;
+- SegmentStream& operator=(SegmentStream&&) noexcept;
++ SegmentStream(SegmentStream&&);
++ SegmentStream& operator=(SegmentStream&&);
+
+ ~SegmentStream() override;
+
+diff --git a/third_party/blink/renderer/platform/mojo/revocable_interface_ptr.h
b/third_party/blink/renderer/platform/mojo/revocable_interface_ptr.h
+index 555be28..34bad3f 100644
+--- a/third_party/blink/renderer/platform/mojo/revocable_interface_ptr.h
++++ b/third_party/blink/renderer/platform/mojo/revocable_interface_ptr.h
+@@ -41,7 +41,7 @@
+ RevocableInterfacePtr(std::nullptr_t) {}
+
+ // Takes over the binding of another RevocableInterfacePtr.
+- RevocableInterfacePtr(RevocableInterfacePtr&& other) noexcept {
++ RevocableInterfacePtr(RevocableInterfacePtr&& other) {
+ interface_ptr_ = std::move(other.interface_ptr_);
+ SetInvalidator(other.invalidator_.get());
+ // Reset the other interface ptr to remove it as an observer of the
+@@ -58,7 +58,7 @@
+
+ // Takes over the binding of another RevocableInterfacePtr, and closes any
+ // message pipe already bound to this pointer.
+- RevocableInterfacePtr& operator=(RevocableInterfacePtr&& other) noexcept
{
++ RevocableInterfacePtr& operator=(RevocableInterfacePtr&& other) {
+ reset();
+ interface_ptr_ = std::move(other.interface_ptr_);
+ SetInvalidator(other.invalidator_.get());
+diff --git a/third_party/blink/renderer/platform/network/encoded_form_data.cc
b/third_party/blink/renderer/platform/network/encoded_form_data.cc
+index bc4ec14..1b660e6 100644
+--- a/third_party/blink/renderer/platform/network/encoded_form_data.cc
++++ b/third_party/blink/renderer/platform/network/encoded_form_data.cc
+@@ -61,11 +61,10 @@
+ : type_(kDataPipe), data_pipe_getter_(std::move(data_pipe_getter)) {}
+
+ FormDataElement::FormDataElement(const FormDataElement&) = default;
+-FormDataElement::FormDataElement(FormDataElement&&) noexcept = default;
++FormDataElement::FormDataElement(FormDataElement&&) = default;
+ FormDataElement::~FormDataElement() = default;
+ FormDataElement& FormDataElement::operator=(const FormDataElement&) = default;
+-FormDataElement& FormDataElement::operator=(FormDataElement&&) noexcept =
+- default;
++FormDataElement& FormDataElement::operator=(FormDataElement&&) = default;
+
+ bool operator==(const FormDataElement& a, const FormDataElement& b) {
+ if (&a == &b)
+diff --git a/third_party/blink/renderer/platform/network/encoded_form_data.h
b/third_party/blink/renderer/platform/network/encoded_form_data.h
+index 48f84c8..865f664 100644
+--- a/third_party/blink/renderer/platform/network/encoded_form_data.h
++++ b/third_party/blink/renderer/platform/network/encoded_form_data.h
+@@ -61,12 +61,12 @@
+ explicit FormDataElement(scoped_refptr<WrappedDataPipeGetter>);
+
+ FormDataElement(const FormDataElement&);
+- FormDataElement(FormDataElement&&) noexcept;
++ FormDataElement(FormDataElement&&);
+
+ ~FormDataElement();
+
+ FormDataElement& operator=(const FormDataElement&);
+- FormDataElement& operator=(FormDataElement&&) noexcept;
++ FormDataElement& operator=(FormDataElement&&);
+
+ bool IsSafeToSendToAnotherThread() const;
+
+diff --git
a/third_party/blink/renderer/platform/scheduler/common/frame_or_worker_scheduler.cc
b/third_party/blink/renderer/platform/scheduler/common/frame_or_worker_scheduler.cc
+index ebe99ff..e971856 100644
+--- a/third_party/blink/renderer/platform/scheduler/common/frame_or_worker_scheduler.cc
++++ b/third_party/blink/renderer/platform/scheduler/common/frame_or_worker_scheduler.cc
+@@ -28,15 +28,14 @@
+ }
+
+ FrameOrWorkerScheduler::SchedulingAffectingFeatureHandle::
+- SchedulingAffectingFeatureHandle(
+- SchedulingAffectingFeatureHandle&& other) noexcept
++ SchedulingAffectingFeatureHandle(SchedulingAffectingFeatureHandle&& other)
+ : feature_(other.feature_), scheduler_(std::move(other.scheduler_)) {
+ other.scheduler_ = nullptr;
+ }
+
+ FrameOrWorkerScheduler::SchedulingAffectingFeatureHandle&
+ FrameOrWorkerScheduler::SchedulingAffectingFeatureHandle::operator=(
+- SchedulingAffectingFeatureHandle&& other) noexcept {
++ SchedulingAffectingFeatureHandle&& other) {
+ feature_ = other.feature_;
+ policy_ = std::move(other.policy_);
+ scheduler_ = std::move(other.scheduler_);
+diff --git
a/third_party/blink/renderer/platform/scheduler/common/post_cancellable_task.cc
b/third_party/blink/renderer/platform/scheduler/common/post_cancellable_task.cc
+index 2c84d70..fad56ee1 100644
+--- a/third_party/blink/renderer/platform/scheduler/common/post_cancellable_task.cc
++++ b/third_party/blink/renderer/platform/scheduler/common/post_cancellable_task.cc
+@@ -103,9 +103,9 @@
+ Cancel();
+ }
+
+-TaskHandle::TaskHandle(TaskHandle&&) noexcept = default;
++TaskHandle::TaskHandle(TaskHandle&&) = default;
+
+-TaskHandle& TaskHandle::operator=(TaskHandle&& other) noexcept {
++TaskHandle& TaskHandle::operator=(TaskHandle&& other) {
+ TaskHandle tmp(std::move(other));
+ runner_.swap(tmp.runner_);
+ return *this;
+diff --git
a/third_party/blink/renderer/platform/scheduler/main_thread/web_scoped_virtual_time_pauser.cc
b/third_party/blink/renderer/platform/scheduler/main_thread/web_scoped_virtual_time_pauser.cc
+index f55730a..b64ec9d 100644
+---
a/third_party/blink/renderer/platform/scheduler/main_thread/web_scoped_virtual_time_pauser.cc
++++
b/third_party/blink/renderer/platform/scheduler/main_thread/web_scoped_virtual_time_pauser.cc
+@@ -28,7 +28,7 @@
+ }
+
+ WebScopedVirtualTimePauser::WebScopedVirtualTimePauser(
+- WebScopedVirtualTimePauser&& other) noexcept {
++ WebScopedVirtualTimePauser&& other) {
+ virtual_time_when_paused_ = other.virtual_time_when_paused_;
+ paused_ = other.paused_;
+ duration_ = other.duration_;
+@@ -39,7 +39,7 @@
+ }
+
+ WebScopedVirtualTimePauser& WebScopedVirtualTimePauser::operator=(
+- WebScopedVirtualTimePauser&& other) noexcept {
++ WebScopedVirtualTimePauser&& other) {
+ if (scheduler_ && paused_)
+ DecrementVirtualTimePauseCount();
+ virtual_time_when_paused_ = other.virtual_time_when_paused_;
+diff --git
a/third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h
b/third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h
+index 56915ee..3fdb8cf 100644
+--- a/third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h
++++ b/third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h
+@@ -57,12 +57,11 @@
+
+ public:
+ SchedulingAffectingFeatureHandle() = default;
+- SchedulingAffectingFeatureHandle(
+- SchedulingAffectingFeatureHandle&&) noexcept;
++ SchedulingAffectingFeatureHandle(SchedulingAffectingFeatureHandle&&);
+ inline ~SchedulingAffectingFeatureHandle() { reset(); }
+
+ SchedulingAffectingFeatureHandle& operator=(
+- SchedulingAffectingFeatureHandle&&) noexcept;
++ SchedulingAffectingFeatureHandle&&);
+
+ inline void reset() {
+ if (scheduler_)
+diff --git a/third_party/blink/renderer/platform/scheduler/public/post_cancellable_task.h
b/third_party/blink/renderer/platform/scheduler/public/post_cancellable_task.h
+index 38cbf63..ae66c73 100644
+--- a/third_party/blink/renderer/platform/scheduler/public/post_cancellable_task.h
++++ b/third_party/blink/renderer/platform/scheduler/public/post_cancellable_task.h
+@@ -28,8 +28,8 @@
+ TaskHandle();
+ ~TaskHandle();
+
+- TaskHandle(TaskHandle&&) noexcept;
+- TaskHandle& operator=(TaskHandle&&) noexcept;
++ TaskHandle(TaskHandle&&);
++ TaskHandle& operator=(TaskHandle&&);
+
+ // Returns true if the task will run later. Returns false if the task is
+ // cancelled or the task is run already.
+diff --git a/third_party/blink/renderer/platform/weborigin/origin_access_entry.cc
b/third_party/blink/renderer/platform/weborigin/origin_access_entry.cc
+index 2e9a9d1..c9d777e7 100644
+--- a/third_party/blink/renderer/platform/weborigin/origin_access_entry.cc
++++ b/third_party/blink/renderer/platform/weborigin/origin_access_entry.cc
+@@ -59,8 +59,7 @@
+ network::mojom::CorsPortMatchMode::kAllowOnlySpecifiedPort,
+ priority) {}
+
+-OriginAccessEntry::OriginAccessEntry(OriginAccessEntry&& from) noexcept =
+- default;
++OriginAccessEntry::OriginAccessEntry(OriginAccessEntry&& from) = default;
+
+ network::cors::OriginAccessEntry::MatchResult OriginAccessEntry::MatchesOrigin(
+ const SecurityOrigin& origin) const {
+diff --git a/third_party/blink/renderer/platform/weborigin/origin_access_entry.h
b/third_party/blink/renderer/platform/weborigin/origin_access_entry.h
+index b3e5674..5113a40 100644
+--- a/third_party/blink/renderer/platform/weborigin/origin_access_entry.h
++++ b/third_party/blink/renderer/platform/weborigin/origin_access_entry.h
+@@ -58,7 +58,7 @@
+ network::mojom::CorsDomainMatchMode,
+ network::mojom::CorsOriginAccessMatchPriority priority =
+ network::mojom::CorsOriginAccessMatchPriority::kDefaultPriority);
+- OriginAccessEntry(OriginAccessEntry&& from) noexcept;
++ OriginAccessEntry(OriginAccessEntry&& from);
+
+ network::cors::OriginAccessEntry::MatchResult MatchesOrigin(
+ const SecurityOrigin&) const;
+diff --git a/third_party/blink/renderer/platform/wtf/deque.h
b/third_party/blink/renderer/platform/wtf/deque.h
+index c6fe1b9..4a98ffb 100644
+--- a/third_party/blink/renderer/platform/wtf/deque.h
++++ b/third_party/blink/renderer/platform/wtf/deque.h
+@@ -64,8 +64,8 @@ class Deque {
+ Deque();
+ Deque(const Deque&);
+ Deque& operator=(const Deque&);
+- Deque(Deque&&) noexcept;
+- Deque& operator=(Deque&&) noexcept;
++ Deque(Deque&&);
++ Deque& operator=(Deque&&);
+ ~Deque();
+
+ void FinalizeGarbageCollectedObject() { NOTREACHED(); }
+@@ -343,14 +343,14 @@
+ }
+
+ template <typename T, wtf_size_t inlineCapacity, typename Allocator>
+-inline Deque<T, inlineCapacity, Allocator>::Deque(Deque&& other) noexcept
++inline Deque<T, inlineCapacity, Allocator>::Deque(Deque&& other)
+ : start_(0), end_(0) {
+ Swap(other);
+ }
+
+ template <typename T, wtf_size_t inlineCapacity, typename Allocator>
+ inline Deque<T, inlineCapacity, Allocator>&
+-Deque<T, inlineCapacity, Allocator>::operator=(Deque&& other) noexcept {
++Deque<T, inlineCapacity, Allocator>::operator=(Deque&& other) {
+ Swap(other);
+ return *this;
+ }
+diff --git a/third_party/blink/renderer/platform/wtf/functional.h
b/third_party/blink/renderer/platform/wtf/functional.h
+index 2c5aeea..5e4b373 100644
+--- a/third_party/blink/renderer/platform/wtf/functional.h
++++ b/third_party/blink/renderer/platform/wtf/functional.h
+@@ -117,8 +117,7 @@
+ class PassedWrapper final {
+ public:
+ explicit PassedWrapper(T&& scoper) : scoper_(std::move(scoper)) {}
+- PassedWrapper(PassedWrapper&& other) noexcept
+- : scoper_(std::move(other.scoper_)) {}
++ PassedWrapper(PassedWrapper&& other) : scoper_(std::move(other.scoper_)) {}
+ T MoveOut() const { return std::move(scoper_); }
+
+ private:
+@@ -319,9 +318,8 @@
+ CrossThreadFunction(const CrossThreadFunction&) = delete;
+ CrossThreadFunction& operator=(const CrossThreadFunction&) = delete;
+
+- CrossThreadFunction(CrossThreadFunction&& other) noexcept = default;
+- CrossThreadFunction& operator=(CrossThreadFunction&& other) noexcept =
+- default;
++ CrossThreadFunction(CrossThreadFunction&& other) = default;
++ CrossThreadFunction& operator=(CrossThreadFunction&& other) = default;
+
+ R Run(Args... args) const & {
+ return callback_.Run(std::forward<Args>(args)...);
+@@ -356,9 +354,8 @@
+ CrossThreadOnceFunction(const CrossThreadOnceFunction&) = delete;
+ CrossThreadOnceFunction& operator=(const CrossThreadOnceFunction&) = delete;
+
+- CrossThreadOnceFunction(CrossThreadOnceFunction&& other) noexcept = default;
+- CrossThreadOnceFunction& operator=(CrossThreadOnceFunction&& other)
noexcept =
+- default;
++ CrossThreadOnceFunction(CrossThreadOnceFunction&& other) = default;
++ CrossThreadOnceFunction& operator=(CrossThreadOnceFunction&& other) =
default;
+
+ R Run(Args... args) && {
+ return std::move(callback_).Run(std::forward<Args>(args)...);
+diff --git a/third_party/blink/renderer/platform/wtf/hash_map.h
b/third_party/blink/renderer/platform/wtf/hash_map.h
+index 8a002a8..46b39e0 100644
+--- a/third_party/blink/renderer/platform/wtf/hash_map.h
++++ b/third_party/blink/renderer/platform/wtf/hash_map.h
+@@ -106,8 +106,8 @@
+ #endif
+ HashMap(const HashMap&) = default;
+ HashMap& operator=(const HashMap&) = default;
+- HashMap(HashMap&&) noexcept = default;
+- HashMap& operator=(HashMap&&) noexcept = default;
++ HashMap(HashMap&&) = default;
++ HashMap& operator=(HashMap&&) = default;
+
+ // For example, HashMap<int, int>({{1, 11}, {2, 22}, {3, 33}}) will give you
+ // a HashMap containing a mapping {1 -> 11, 2 -> 22, 3 -> 33}.
+diff --git a/third_party/blink/renderer/platform/wtf/hash_set.h
b/third_party/blink/renderer/platform/wtf/hash_set.h
+index c79e45f1..d7cdeed 100644
+--- a/third_party/blink/renderer/platform/wtf/hash_set.h
++++ b/third_party/blink/renderer/platform/wtf/hash_set.h
+@@ -74,8 +74,8 @@
+ }
+ HashSet(const HashSet&) = default;
+ HashSet& operator=(const HashSet&) = default;
+- HashSet(HashSet&&) noexcept = default;
+- HashSet& operator=(HashSet&&) noexcept = default;
++ HashSet(HashSet&&) = default;
++ HashSet& operator=(HashSet&&) = default;
+
+ HashSet(std::initializer_list<ValueType> elements);
+ HashSet& operator=(std::initializer_list<ValueType> elements);
+diff --git a/third_party/blink/renderer/platform/wtf/hash_table.h
b/third_party/blink/renderer/platform/wtf/hash_table.h
+index 373280f..52483ec5 100644
+--- a/third_party/blink/renderer/platform/wtf/hash_table.h
++++ b/third_party/blink/renderer/platform/wtf/hash_table.h
+@@ -747,10 +747,10 @@
+ }
+
+ HashTable(const HashTable&);
+- HashTable(HashTable&&) noexcept;
++ HashTable(HashTable&&);
+ void swap(HashTable&);
+ HashTable& operator=(const HashTable&);
+- HashTable& operator=(HashTable&&) noexcept;
++ HashTable& operator=(HashTable&&);
+
+ // When the hash table is empty, just return the same iterator for end as
+ // for begin. This is more efficient because we don't have to skip all the
+@@ -1929,7 +1929,7 @@
+ typename KeyTraits,
+ typename Allocator>
+ HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits, Allocator>::
+- HashTable(HashTable&& other) noexcept
++ HashTable(HashTable&& other)
+ : table_(nullptr),
+ table_size_(0),
+ key_count_(0),
+@@ -2008,7 +2008,7 @@
+ typename Allocator>
+ HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits,
Allocator>&
+ HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits, Allocator>::
+-operator=(HashTable&& other) noexcept {
++operator=(HashTable&& other) {
+ swap(other);
+ return *this;
+ }
+diff --git a/third_party/blink/renderer/platform/wtf/linked_hash_set.h
b/third_party/blink/renderer/platform/wtf/linked_hash_set.h
+index 79c3d76d..71ef37a 100644
+--- a/third_party/blink/renderer/platform/wtf/linked_hash_set.h
++++ b/third_party/blink/renderer/platform/wtf/linked_hash_set.h
+@@ -121,7 +121,7 @@
+ LinkedHashSetNodeBase(const LinkedHashSetNodeBase& other)
+ : prev_(nullptr), next_(nullptr) {}
+
+- LinkedHashSetNodeBase(LinkedHashSetNodeBase&& other) noexcept
++ LinkedHashSetNodeBase(LinkedHashSetNodeBase&& other)
+ : prev_(other.prev_), next_(other.next_) {
+ other.prev_ = nullptr;
+ other.next_ = nullptr;
+@@ -151,7 +151,7 @@
+ LinkedHashSetNodeBase* next)
+ : LinkedHashSetNodeBase(prev, next), value_(std::move(value)) {}
+
+- LinkedHashSetNode(LinkedHashSetNode&& other) noexcept
++ LinkedHashSetNode(LinkedHashSetNode&& other)
+ : LinkedHashSetNodeBase(std::move(other)),
+ value_(std::move(other.value_)) {}
+
+@@ -214,9 +214,9 @@
+
+ LinkedHashSet();
+ LinkedHashSet(const LinkedHashSet&);
+- LinkedHashSet(LinkedHashSet&&) noexcept;
++ LinkedHashSet(LinkedHashSet&&);
+ LinkedHashSet& operator=(const LinkedHashSet&);
+- LinkedHashSet& operator=(LinkedHashSet&&) noexcept;
++ LinkedHashSet& operator=(LinkedHashSet&&);
+
+ // Needs finalization. The anchor needs to unlink itself from the chain.
+ ~LinkedHashSet();
+@@ -748,7 +748,7 @@
+ }
+
+ template <typename T, typename U, typename V, typename W>
+-inline LinkedHashSet<T, U, V, W>::LinkedHashSet(LinkedHashSet&& other)
noexcept
++inline LinkedHashSet<T, U, V, W>::LinkedHashSet(LinkedHashSet&& other)
+ : anchor_() {
+ Swap(other);
+ }
+@@ -763,7 +763,7 @@
+
+ template <typename T, typename U, typename V, typename W>
+ inline LinkedHashSet<T, U, V, W>& LinkedHashSet<T, U, V, W>::operator=(
+- LinkedHashSet&& other) noexcept {
++ LinkedHashSet&& other) {
+ Swap(other);
+ return *this;
+ }
+diff --git a/third_party/blink/renderer/platform/wtf/list_hash_set.h
b/third_party/blink/renderer/platform/wtf/list_hash_set.h
+index ead6a87..78bd279 100644
+--- a/third_party/blink/renderer/platform/wtf/list_hash_set.h
++++ b/third_party/blink/renderer/platform/wtf/list_hash_set.h
+@@ -145,9 +145,9 @@ class ListHashSet {
+
+ ListHashSet();
+ ListHashSet(const ListHashSet&);
+- ListHashSet(ListHashSet&&) noexcept;
++ ListHashSet(ListHashSet&&);
+ ListHashSet& operator=(const ListHashSet&);
+- ListHashSet& operator=(ListHashSet&&) noexcept;
++ ListHashSet& operator=(ListHashSet&&);
+ ~ListHashSet();
+
+ void Swap(ListHashSet&);
+@@ -780,8 +780,7 @@
+ }
+
+ template <typename T, size_t inlineCapacity, typename U, typename V>
+-inline ListHashSet<T, inlineCapacity, U, V>::ListHashSet(
+- ListHashSet&& other) noexcept
++inline ListHashSet<T, inlineCapacity, U, V>::ListHashSet(ListHashSet&&
other)
+ : head_(nullptr), tail_(nullptr) {
+ Swap(other);
+ }
+@@ -796,7 +795,7 @@
+
+ template <typename T, size_t inlineCapacity, typename U, typename V>
+ inline ListHashSet<T, inlineCapacity, U, V>&
+-ListHashSet<T, inlineCapacity, U, V>::operator=(ListHashSet&& other)
noexcept {
++ListHashSet<T, inlineCapacity, U, V>::operator=(ListHashSet&& other) {
+ Swap(other);
+ return *this;
+ }
+diff --git a/third_party/blink/renderer/platform/wtf/type_traits_test.cc
b/third_party/blink/renderer/platform/wtf/type_traits_test.cc
+index 0930b73..1b45d55 100644
+--- a/third_party/blink/renderer/platform/wtf/type_traits_test.cc
++++ b/third_party/blink/renderer/platform/wtf/type_traits_test.cc
+@@ -158,7 +158,7 @@
+ STACK_ALLOCATED();
+
+ public:
+- CopyAssignmentDeleted& operator=(CopyAssignmentDeleted&&) noexcept;
++ CopyAssignmentDeleted& operator=(CopyAssignmentDeleted&&);
+
+ private:
+ CopyAssignmentDeleted& operator=(const CopyAssignmentDeleted&) = delete;
+@@ -173,7 +173,7 @@
+ STACK_ALLOCATED();
+
+ public:
+- CopyAssignmentPrivate& operator=(CopyAssignmentPrivate&&) noexcept;
++ CopyAssignmentPrivate& operator=(CopyAssignmentPrivate&&);
+
+ private:
+ CopyAssignmentPrivate& operator=(const CopyAssignmentPrivate&);
+@@ -188,7 +188,7 @@
+ STACK_ALLOCATED();
+
+ public:
+- CopyAssignmentUndeclared& operator=(CopyAssignmentUndeclared&&) noexcept;
++ CopyAssignmentUndeclared& operator=(CopyAssignmentUndeclared&&);
+ };
+
+ static_assert(!std::is_copy_assignable<CopyAssignmentUndeclared>::value,
+diff --git a/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.h
b/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.h
+index 3f44cd2..ee7c89a 100644
+--- a/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.h
++++ b/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.h
+@@ -68,7 +68,7 @@
+ deleter_(deleter),
+ deleter_info_(deleter_info) {}
+ // Move constructor
+- DataHandle(DataHandle&& other) noexcept { *this = std::move(other); }
++ DataHandle(DataHandle&& other) { *this = std::move(other); }
+ ~DataHandle() {
+ if (!data_)
+ return;
+diff --git a/third_party/blink/renderer/platform/wtf/vector.h
b/third_party/blink/renderer/platform/wtf/vector.h
+index 2783c2b..43a27f7 100644
+--- a/third_party/blink/renderer/platform/wtf/vector.h
++++ b/third_party/blink/renderer/platform/wtf/vector.h
+@@ -1018,8 +1018,8 @@
+ Vector& operator=(const Vector<T, otherCapacity, Allocator>&);
+
+ // Moving.
+- Vector(Vector&&) noexcept;
+- Vector& operator=(Vector&&) noexcept;
++ Vector(Vector&&);
++ Vector& operator=(Vector&&);
+
+ // Construct with an initializer list. You can do e.g.
+ // Vector<int> v({1, 2, 3});
+@@ -1459,7 +1459,7 @@
+
+ template <typename T, wtf_size_t inlineCapacity, typename Allocator>
+ Vector<T, inlineCapacity, Allocator>::Vector(
+- Vector<T, inlineCapacity, Allocator>&& other) noexcept {
++ Vector<T, inlineCapacity, Allocator>&& other) {
+ size_ = 0;
+ // It's a little weird to implement a move constructor using swap but this
+ // way we don't have to add a move constructor to VectorBuffer.
+@@ -1468,7 +1468,7 @@
+
+ template <typename T, wtf_size_t inlineCapacity, typename Allocator>
+ Vector<T, inlineCapacity, Allocator>& Vector<T, inlineCapacity,
Allocator>::
+-operator=(Vector<T, inlineCapacity, Allocator>&& other) noexcept {
++operator=(Vector<T, inlineCapacity, Allocator>&& other) {
+ swap(other);
+ return *this;
+ }
+diff --git a/third_party/blink/renderer/platform/wtf/vector_test.cc
b/third_party/blink/renderer/platform/wtf/vector_test.cc
+index aa8a138..788cc2bb 100644
+--- a/third_party/blink/renderer/platform/wtf/vector_test.cc
++++ b/third_party/blink/renderer/platform/wtf/vector_test.cc
+@@ -420,8 +420,8 @@
+ class MojoMoveOnlyType final {
+ public:
+ MojoMoveOnlyType();
+- MojoMoveOnlyType(MojoMoveOnlyType&&) noexcept;
+- MojoMoveOnlyType& operator=(MojoMoveOnlyType&&) noexcept;
++ MojoMoveOnlyType(MojoMoveOnlyType&&);
++ MojoMoveOnlyType& operator=(MojoMoveOnlyType&&);
+ ~MojoMoveOnlyType();
+
+ private:
+diff --git a/third_party/blink/renderer/platform/wtf/wtf_test_helper.h
b/third_party/blink/renderer/platform/wtf/wtf_test_helper.h
+index e797445..8f31365 100644
+--- a/third_party/blink/renderer/platform/wtf/wtf_test_helper.h
++++ b/third_party/blink/renderer/platform/wtf/wtf_test_helper.h
+@@ -36,9 +36,9 @@
+ public:
+ explicit MoveOnly(int i = 0) : i_(i) {}
+
+- MoveOnly(MoveOnly&& other) noexcept : i_(other.i_) { other.i_ = 0; }
++ MoveOnly(MoveOnly&& other) : i_(other.i_) { other.i_ = 0; }
+
+- MoveOnly& operator=(MoveOnly&& other) noexcept {
++ MoveOnly& operator=(MoveOnly&& other) {
+ if (this != &other) {
+ i_ = other.i_;
+ other.i_ = 0;
+@@ -62,12 +62,12 @@
+
+ explicit MoveOnlyHashValue(int value = kEmpty, int id = 0)
+ : value_(value), id_(id) {}
+- MoveOnlyHashValue(MoveOnlyHashValue&& other) noexcept
++ MoveOnlyHashValue(MoveOnlyHashValue&& other)
+ : value_(other.value_), id_(other.id_) {
+ other.value_ = kMovedOut;
+ other.id_ = 0;
+ }
+- MoveOnlyHashValue& operator=(MoveOnlyHashValue&& other) noexcept {
++ MoveOnlyHashValue& operator=(MoveOnlyHashValue&& other) {
+ value_ = other.value_;
+ id_ = other.id_;
+ other.value_ = kMovedOut;
diff --git a/chromium-78.0.3904.70-base-gcc-no-alignas.patch
b/chromium-78.0.3904.70-base-gcc-no-alignas.patch
new file mode 100644
index 0000000..4856c36
--- /dev/null
+++ b/chromium-78.0.3904.70-base-gcc-no-alignas.patch
@@ -0,0 +1,68 @@
+diff -up chromium-77.0.3865.75/base/task/promise/dependent_list.h.base-gcc-no-alignas
chromium-77.0.3865.75/base/task/promise/dependent_list.h
+---
chromium-77.0.3865.75/base/task/promise/dependent_list.h.base-gcc-no-alignas 2019-09-13
21:45:51.873172347 +0200
++++ chromium-77.0.3865.75/base/task/promise/dependent_list.h 2019-09-13
21:46:21.661522514 +0200
+@@ -59,7 +59,7 @@ class BASE_EXPORT DependentList {
+
+ // Align Node on an 8-byte boundary to ensure the first 3 bits are 0 and can
+ // be used to store additional state (see static_asserts below).
+- class BASE_EXPORT alignas(8) Node {
++ class BASE_EXPORT ALIGNAS(8) Node {
+ public:
+ Node();
+ explicit Node(Node&& other) noexcept;
+--- a/third_party/protobuf/src/google/protobuf/arena.h
++++ b/third_party/protobuf/src/google/protobuf/arena.h
+@@ -245,7 +245,7 @@ struct ArenaOptions {
+ // well as protobuf container types like RepeatedPtrField and Map. The protocol
+ // is internal to protobuf and is not guaranteed to be stable. Non-proto types
+ // should not rely on this protocol.
+-class PROTOBUF_EXPORT alignas(8) Arena final {
++class PROTOBUF_EXPORT PROTOBUF_ALIGNAS(8) Arena final {
+ public:
+ // Arena constructor taking custom options. See ArenaOptions below for
+ // descriptions of the options available.
+--- a/third_party/protobuf/src/google/protobuf/port_def.inc
++++ b/third_party/protobuf/src/google/protobuf/port_def.inc
+@@ -528,6 +528,35 @@ PROTOBUF_EXPORT_TEMPLATE_TEST(DEFAULT, __declspec(dllimport));
+ #undef IN
+ #endif // _MSC_VER
+
++// Specify memory alignment for structs, classes, etc.
++// Use like:
++// class PROTOBUF_ALIGNAS(16) MyClass { ... }
++// PROTOBUF_ALIGNAS(16) int array[4];
++//
++// In most places you can use the C++11 keyword "alignas", which is
preferred.
++//
++// But compilers have trouble mixing __attribute__((...)) syntax with
++// alignas(...) syntax.
++//
++// Doesn't work in clang or gcc:
++// struct alignas(16) __attribute__((packed)) S { char c; };
++// Works in clang but not gcc:
++// struct __attribute__((packed)) alignas(16) S2 { char c; };
++// Works in clang and gcc:
++// struct alignas(16) S3 { char c; } __attribute__((packed));
++//
++// There are also some attributes that must be specified *before* a class
++// definition: visibility (used for exporting functions/classes) is one of
++// these attributes. This means that it is not possible to use alignas() with a
++// class that is marked as exported.
++#if defined(_MSC_VER)
++#define PROTOBUF_ALIGNAS(byte_alignment) __declspec(align(byte_alignment))
++#elif defined(__GNUC__)
++#define PROTOBUF_ALIGNAS(byte_alignment) __attribute__((aligned(byte_alignment)))
++#else
++#define PROTOBUF_ALIGNAS(byte_alignment) alignas(byte_alignment)
++#endif
++
+ #if defined(__clang__)
+ #pragma clang diagnostic push
+ // TODO(gerbens) ideally we cleanup the code. But a cursory try shows many
+--- a/third_party/protobuf/src/google/protobuf/port_undef.inc
++++ b/third_party/protobuf/src/google/protobuf/port_undef.inc
+@@ -80,6 +80,7 @@
+ #undef PROTOBUF_EXPORT_TEMPLATE_STYLE_MATCH_foj3FJo5StF0OvIzl7oMxA__declspec
+ #undef PROTOBUF_EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_dllexport
+ #undef PROTOBUF_EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_dllimport
++#undef PROTOBUF_ALIGNAS
diff --git a/chromium-78.0.3904.70-v8-tracedreference-fix.patch
b/chromium-78.0.3904.70-v8-tracedreference-fix.patch
new file mode 100644
index 0000000..789bdd0
--- /dev/null
+++ b/chromium-78.0.3904.70-v8-tracedreference-fix.patch
@@ -0,0 +1,302 @@
+diff -up
chromium-78.0.3904.70/third_party/blink/renderer/bindings/core/v8/v8_embedder_graph_builder.cc.v8-tracedreference-fix
chromium-78.0.3904.70/third_party/blink/renderer/bindings/core/v8/v8_embedder_graph_builder.cc
+---
chromium-78.0.3904.70/third_party/blink/renderer/bindings/core/v8/v8_embedder_graph_builder.cc.v8-tracedreference-fix 2019-10-21
15:06:42.000000000 -0400
++++
chromium-78.0.3904.70/third_party/blink/renderer/bindings/core/v8/v8_embedder_graph_builder.cc 2019-10-23
14:30:25.679541652 -0400
+@@ -173,8 +173,9 @@ class GC_PLUGIN_IGNORE(
+ uint16_t class_id) override;
+
+ // v8::EmbedderHeapTracer::TracedGlobalHandleVisitor override.
+- void VisitTracedGlobalHandle(
+- const v8::TracedGlobal<v8::Value>& value) override;
++ void VisitTracedReference(
++ const v8::TracedReference<v8::Value>& value) override;
++ void VisitTracedGlobalHandle(const v8::TracedGlobal<v8::Value>&) override;
+
+ // Visitor overrides.
+ void VisitRoot(void*, TraceDescriptor, const base::Location&) final;
+@@ -508,8 +509,8 @@ void V8EmbedderGraphBuilder::VisitPersis
+ }
+ }
+
+-void V8EmbedderGraphBuilder::VisitTracedGlobalHandle(
+- const v8::TracedGlobal<v8::Value>& value) {
++void V8EmbedderGraphBuilder::VisitTracedReference(
++ const v8::TracedReference<v8::Value>& value) {
+ const uint16_t class_id = value.WrapperClassId();
+ if (class_id != WrapperTypeInfo::kNodeClassId &&
+ class_id != WrapperTypeInfo::kObjectClassId)
+@@ -517,6 +518,11 @@ void V8EmbedderGraphBuilder::VisitTraced
+ VisitPersistentHandleInternal(value.As<v8::Object>().Get(isolate_), class_id);
+ }
+
++void V8EmbedderGraphBuilder::VisitTracedGlobalHandle(
++ const v8::TracedGlobal<v8::Value>&) {
++ CHECK(false) << "Blink does not use v8::TracedGlobal.";
++}
++
+ void V8EmbedderGraphBuilder::VisitPersistentHandle(
+ v8::Persistent<v8::Value>* value,
+ uint16_t class_id) {
+diff -up
chromium-78.0.3904.70/third_party/blink/renderer/bindings/core/v8/v8_gc_controller.cc.v8-tracedreference-fix
chromium-78.0.3904.70/third_party/blink/renderer/bindings/core/v8/v8_gc_controller.cc
+---
chromium-78.0.3904.70/third_party/blink/renderer/bindings/core/v8/v8_gc_controller.cc.v8-tracedreference-fix 2019-10-21
15:06:42.000000000 -0400
++++
chromium-78.0.3904.70/third_party/blink/renderer/bindings/core/v8/v8_gc_controller.cc 2019-10-23
14:30:25.683541568 -0400
+@@ -260,7 +260,11 @@ class DOMWrapperForwardingVisitor final
+ VisitHandle(value, class_id);
+ }
+
+- void VisitTracedGlobalHandle(const v8::TracedGlobal<v8::Value>& value) final
{
++ void VisitTracedGlobalHandle(const v8::TracedGlobal<v8::Value>&) final {
++ CHECK(false) << "Blink does not use v8::TracedGlobal.";
++ }
++
++ void VisitTracedReference(const v8::TracedReference<v8::Value>& value) final
{
+ VisitHandle(&value, value.WrapperClassId());
+ }
+
+diff -up
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/dom_data_store.h.v8-tracedreference-fix
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/dom_data_store.h
+---
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/dom_data_store.h.v8-tracedreference-fix 2019-10-21
15:06:44.000000000 -0400
++++
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/dom_data_store.h 2019-10-23
14:30:25.685541526 -0400
+@@ -229,6 +229,11 @@ class DOMDataStore {
+ DOMWorldWrapperReference(v8::Isolate* isolate, v8::Local<v8::Object> handle)
+ : TraceWrapperV8Reference(isolate, handle) {}
+
++ ~DOMWorldWrapperReference() {
++ // Destruction of a reference should clear it immediately.
++ Clear();
++ }
++
+ // Move support without write barrier.
+ DOMWorldWrapperReference(DOMWorldWrapperReference&& other)
+ : TraceWrapperV8Reference() {
+diff -up
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/script_wrappable.h.v8-tracedreference-fix
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/script_wrappable.h
+---
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/script_wrappable.h.v8-tracedreference-fix 2019-10-21
15:06:44.000000000 -0400
++++
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/script_wrappable.h 2019-10-23
14:30:25.687541484 -0400
+@@ -161,6 +161,11 @@ class PLATFORM_EXPORT ScriptWrappable
+ return main_world_wrapper_.NewLocal(isolate);
+ }
+
++ static_assert(
++ std::is_trivially_destructible<
++ TraceWrapperV8Reference<v8::Object>>::value,
++ "TraceWrapperV8Reference<v8::Object> should be trivially
destructible.");
++
+ TraceWrapperV8Reference<v8::Object> main_world_wrapper_;
+
+ DISALLOW_COPY_AND_ASSIGN(ScriptWrappable);
+diff -up
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h.v8-tracedreference-fix
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h
+---
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h.v8-tracedreference-fix 2019-10-21
15:06:44.000000000 -0400
++++
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h 2019-10-23
14:30:25.688541463 -0400
+@@ -11,15 +11,6 @@
+ #include
"third_party/blink/renderer/platform/heap/unified_heap_marking_visitor.h"
+ #include "v8/include/v8.h"
+
+-namespace v8 {
+-
+-template <typename T>
+-struct TracedGlobalTrait<v8::TracedGlobal<T>> {
+- static constexpr bool kRequiresExplicitDestruction = false;
+-};
+-
+-} // namespace v8
+-
+ namespace blink {
+
+ /**
+@@ -50,8 +41,8 @@ class TraceWrapperV8Reference {
+
+ bool IsEmpty() const { return handle_.IsEmpty(); }
+ void Clear() { handle_.Reset(); }
+- ALWAYS_INLINE const v8::TracedGlobal<T>& Get() const { return handle_; }
+- ALWAYS_INLINE v8::TracedGlobal<T>& Get() { return handle_; }
++ ALWAYS_INLINE const v8::TracedReference<T>& Get() const { return handle_; }
++ ALWAYS_INLINE v8::TracedReference<T>& Get() { return handle_; }
+
+ template <typename S>
+ const TraceWrapperV8Reference<S>& Cast() const {
+@@ -124,7 +115,7 @@ class TraceWrapperV8Reference {
+ UnifiedHeapMarkingVisitor::WriteBarrier(UnsafeCast<v8::Value>());
+ }
+
+- v8::TracedGlobal<T> handle_;
++ v8::TracedReference<T> handle_;
+ };
+
+ } // namespace blink
+diff -up
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/wrapper_type_info.h.v8-tracedreference-fix
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/wrapper_type_info.h
+---
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/wrapper_type_info.h.v8-tracedreference-fix 2019-10-21
15:06:44.000000000 -0400
++++
chromium-78.0.3904.70/third_party/blink/renderer/platform/bindings/wrapper_type_info.h 2019-10-23
14:30:25.689541442 -0400
+@@ -122,7 +122,7 @@ struct WrapperTypeInfo {
+ wrapper->SetWrapperClassId(wrapper_class_id);
+ }
+
+- void ConfigureWrapper(v8::TracedGlobal<v8::Object>* wrapper) const {
++ void ConfigureWrapper(v8::TracedReference<v8::Object>* wrapper) const {
+ wrapper->SetWrapperClassId(wrapper_class_id);
+ }
+
+@@ -177,7 +177,7 @@ inline T* GetInternalField(const v8::Per
+ }
+
+ template <typename T, int offset>
+-inline T* GetInternalField(const v8::TracedGlobal<v8::Object>& global) {
++inline T* GetInternalField(const v8::TracedReference<v8::Object>& global) {
+ DCHECK_LT(offset, v8::Object::InternalFieldCount(global));
+ return reinterpret_cast<T*>(
+ v8::Object::GetAlignedPointerFromInternalField(global, offset));
+@@ -198,7 +198,7 @@ inline ScriptWrappable* ToScriptWrappabl
+ }
+
+ inline ScriptWrappable* ToScriptWrappable(
+- const v8::TracedGlobal<v8::Object>& wrapper) {
++ const v8::TracedReference<v8::Object>& wrapper) {
+ return GetInternalField<ScriptWrappable, kV8DOMWrapperObjectIndex>(wrapper);
+ }
+
+@@ -219,7 +219,8 @@ inline void* ToUntypedWrappable(const v8
+ return GetInternalField<void, kV8DOMWrapperObjectIndex>(wrapper);
+ }
+
+-inline void* ToUntypedWrappable(const v8::TracedGlobal<v8::Object>& wrapper)
{
++inline void* ToUntypedWrappable(
++ const v8::TracedReference<v8::Object>& wrapper) {
+ return GetInternalField<void, kV8DOMWrapperObjectIndex>(wrapper);
+ }
+
+@@ -233,7 +234,7 @@ inline const WrapperTypeInfo* ToWrapperT
+ }
+
+ inline const WrapperTypeInfo* ToWrapperTypeInfo(
+- const v8::TracedGlobal<v8::Object>& wrapper) {
++ const v8::TracedReference<v8::Object>& wrapper) {
+ return GetInternalField<WrapperTypeInfo, kV8DOMWrapperTypeIndex>(wrapper);
+ }
+
+diff -up
chromium-78.0.3904.70/third_party/blink/renderer/platform/heap/thread_state.cc.v8-tracedreference-fix
chromium-78.0.3904.70/third_party/blink/renderer/platform/heap/thread_state.cc
+---
chromium-78.0.3904.70/third_party/blink/renderer/platform/heap/thread_state.cc.v8-tracedreference-fix 2019-10-21
15:06:45.000000000 -0400
++++
chromium-78.0.3904.70/third_party/blink/renderer/platform/heap/thread_state.cc 2019-10-23
14:30:25.693541359 -0400
+@@ -1451,11 +1451,15 @@ class ClearReferencesInDeadObjectsVisito
+ value->Reset();
+ }
+
+- void VisitTracedGlobalHandle(const v8::TracedGlobal<v8::Value>& value) final
{
++ void VisitTracedGlobalHandle(const v8::TracedGlobal<v8::Value>&) final {
++ CHECK(false) << "Blink does not use v8::TracedGlobal.";
++ }
++
++ void VisitTracedReference(const v8::TracedReference<v8::Value>& value) final
{
+ // TODO(mlippautz): Avoid const_cast after changing the API to allow
+- // modificaton of the TracedGlobal handle.
+- if
(InDeadObject(&const_cast<v8::TracedGlobal<v8::Value>&>(value)))
+- const_cast<v8::TracedGlobal<v8::Value>&>(value).Reset();
++ // modificaton of the handle.
++ if
(InDeadObject(&const_cast<v8::TracedReference<v8::Value>&>(value)))
++ const_cast<v8::TracedReference<v8::Value>&>(value).Reset();
+ }
+
+ private:
+@@ -1584,11 +1588,15 @@ class UnpoisonHandlesVisitor final
+ VisitSlot(value, sizeof(v8::Persistent<v8::Value>));
+ }
+
+- void VisitTracedGlobalHandle(const v8::TracedGlobal<v8::Value>& value) final
{
++ void VisitTracedGlobalHandle(const v8::TracedGlobal<v8::Value>&) final {
++ CHECK(false) << "Blink does not use v8::TracedGlobal.";
++ }
++
++ void VisitTracedReference(const v8::TracedReference<v8::Value>& value) final
{
+ // TODO(mlippautz): Avoid const_cast after changing the API to allow
+- // modificaton of the TracedGlobal handle.
+- VisitSlot(&const_cast<v8::TracedGlobal<v8::Value>&>(value),
+- sizeof(v8::TracedGlobal<v8::Value>));
++ // modificaton of the handle.
++ VisitSlot(&const_cast<v8::TracedReference<v8::Value>&>(value),
++ sizeof(v8::TracedReference<v8::Value>));
+ }
+
+ private:
+diff -up
chromium-78.0.3904.70/third_party/blink/renderer/platform/heap/unified_heap_controller.cc.v8-tracedreference-fix
chromium-78.0.3904.70/third_party/blink/renderer/platform/heap/unified_heap_controller.cc
+---
chromium-78.0.3904.70/third_party/blink/renderer/platform/heap/unified_heap_controller.cc.v8-tracedreference-fix 2019-10-21
15:06:45.000000000 -0400
++++
chromium-78.0.3904.70/third_party/blink/renderer/platform/heap/unified_heap_controller.cc 2019-10-23
14:32:34.722840885 -0400
+@@ -147,16 +147,19 @@ bool UnifiedHeapController::IsTracingDon
+ return is_tracing_done_;
+ }
+
+-bool UnifiedHeapController::IsRootForNonTracingGCInternal(
+- const v8::TracedGlobal<v8::Value>& handle) {
++namespace {
++
++bool IsRootForNonTracingGCInternal(
++ const v8::TracedReference<v8::Value>& handle) {
+ const uint16_t class_id = handle.WrapperClassId();
+- // Stand-alone TracedGlobal reference or kCustomWrappableId. Keep as root as
++ // Stand-alone reference or kCustomWrappableId. Keep as root as
+ // we don't know better.
+ if (class_id != WrapperTypeInfo::kNodeClassId &&
+ class_id != WrapperTypeInfo::kObjectClassId)
+ return true;
+
+- const v8::TracedGlobal<v8::Object>& traced = handle.As<v8::Object>();
++ const v8::TracedReference<v8::Object>& traced =
++ handle.template As<v8::Object>();
+ if (ToWrapperTypeInfo(traced)->IsActiveScriptWrappable() &&
+ ToScriptWrappable(traced)->HasPendingActivity()) {
+ return true;
+@@ -169,8 +172,10 @@ bool UnifiedHeapController::IsRootForNon
+ return false;
+ }
+
++} // namespace
++
+ void UnifiedHeapController::ResetHandleInNonTracingGC(
+- const v8::TracedGlobal<v8::Value>& handle) {
++ const v8::TracedReference<v8::Value>& handle) {
+ const uint16_t class_id = handle.WrapperClassId();
+ // Only consider handles that have not been treated as roots, see
+ // IsRootForNonTracingGCInternal.
+@@ -178,15 +183,21 @@ void UnifiedHeapController::ResetHandleI
+ class_id != WrapperTypeInfo::kObjectClassId)
+ return;
+
+- const v8::TracedGlobal<v8::Object>& traced = handle.As<v8::Object>();
++ const v8::TracedReference<v8::Object>& traced =
handle.As<v8::Object>();
+ ToScriptWrappable(traced)->UnsetWrapperIfAny();
+ }
+
+ bool UnifiedHeapController::IsRootForNonTracingGC(
+- const v8::TracedGlobal<v8::Value>& handle) {
++ const v8::TracedReference<v8::Value>& handle) {
+ return IsRootForNonTracingGCInternal(handle);
+ }
+
++bool UnifiedHeapController::IsRootForNonTracingGC(
++ const v8::TracedGlobal<v8::Value>& handle) {
++ CHECK(false) << "Blink does not use v8::TracedGlobal.";
++ return false;
++}
++
+ void UnifiedHeapController::ReportBufferedAllocatedSizeIfPossible() {
+ DCHECK(base::FeatureList::IsEnabled(
+ blink::features::kBlinkHeapUnifiedGCScheduling));
+diff -up
chromium-78.0.3904.70/third_party/blink/renderer/platform/heap/unified_heap_controller.h.v8-tracedreference-fix
chromium-78.0.3904.70/third_party/blink/renderer/platform/heap/unified_heap_controller.h
+---
chromium-78.0.3904.70/third_party/blink/renderer/platform/heap/unified_heap_controller.h.v8-tracedreference-fix 2019-10-21
15:06:45.000000000 -0400
++++
chromium-78.0.3904.70/third_party/blink/renderer/platform/heap/unified_heap_controller.h 2019-10-23
14:30:25.695541317 -0400
+@@ -45,8 +45,9 @@ class PLATFORM_EXPORT UnifiedHeapControl
+ void RegisterV8References(const std::vector<std::pair<void*, void*>>&)
final;
+ bool AdvanceTracing(double) final;
+ bool IsTracingDone() final;
++ bool IsRootForNonTracingGC(const v8::TracedReference<v8::Value>&) final;
+ bool IsRootForNonTracingGC(const v8::TracedGlobal<v8::Value>&) final;
+- void ResetHandleInNonTracingGC(const v8::TracedGlobal<v8::Value>&) final;
++ void ResetHandleInNonTracingGC(const v8::TracedReference<v8::Value>&)
final;
+
+ ThreadState* thread_state() const { return thread_state_; }
+
+@@ -59,9 +60,6 @@ class PLATFORM_EXPORT UnifiedHeapControl
+ void DecreaseAllocatedSpace(size_t) final {}
+
+ private:
+- static bool IsRootForNonTracingGCInternal(
+- const v8::TracedGlobal<v8::Value>& handle);
+-
+ void ReportBufferedAllocatedSizeIfPossible();
+
+ ThreadState* const thread_state_;
diff --git a/chromium.spec b/chromium.spec
index 764e85d..c03e832 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -55,15 +55,15 @@
# Requires is trickier.
# To generate this list, go into %%{buildroot}%%{chromium_path} and run
-# for i in `find . -name "*.so"`; do NAME=`basename -s .so $i`; printf
"$NAME|"; done
+# for i in `find . -name "*.so" | sort`; do NAME=`basename -s .so $i`; printf
"$NAME|"; done
# for RHEL7, append libfontconfig to the end
# make sure there is not a trailing | at the end of the list
%global __provides_exclude_from
%{chromium_path}/.*\\.so|%{chromium_path}/lib/.*\\.so|%{chromium_path}/lib/.*\\.so.*
%if 0%{?rhel} == 7
-%global privlibs
libservice|libui_accessibility_ax_mojom_blink|libmojo_mojom_bindings_shared|libcolor_space|libui_base_ime_linux|libv8|libtracing_cpp|libprotobuf_lite|librange|libui_touch_selection|libgtkui|libraster|libstub_window|libmessage_center|libv8_libplatform|libtab_count_metrics|libclient|libaura|libresource_coordinator_public_mojom_shared|libbluetooth|libipc_mojom_shared|libdevice_event_log|libcc_debug|libnet_with_v8|libcc_paint|libwm_public|libnetwork_cpp_base|libservice_manager_mojom|libaura_extra|libmojo_public_system|libpdfium|libui_base_ime_init|libmpris|libcc|libservice_manager_cpp|libblink_mojom_broadcastchannel_bindings_shared|libinterfaces_shared|libservice_manager_cpp_types|libservice_manager_mojom_shared|libwm|libbase_i18n|libnetwork_session_configurator|libwebview|libplatform_window_handler_libs|libx11_events_platform|libmojo_cpp_platform|libandroid_mojo_bindings_shared|libpublic|libmirroring_service|libmedia_session_cpp|libblink_platform|libicui18n|libwebdata_common|libgin|libdevice_gamepad|libdevice_vr_mojo_bindings|libffmpeg|libmetrics_cpp|liburl_matcher|libpolicy_proto|libshared_memory_support|libparsers|libgles2_utils|libweb_feature_mojo_bindings_mojom|libui_base_idle|libmojo_public_system_cpp|libsuid_sandbox_client|libgfx_ipc_skia|libmojo_base_shared_typemap_traits|libcapture_lib|libgl_init|libblink_common|libcc_base|libmojo_base_mojom|libtracing_mojom_shared|libgpu_ipc_service|libui_accessibility_ax_mojom|libweb_feature_mojo_bindings_mojom_shared|libgfx_switches|libmedia_session_base_cpp|libmessage_support|libvulkan_init|libonc|libgpu|libmojom_modules_shared|libnative_theme|libgcm|libvr_base|libmojo_core_embedder_internal|libuser_prefs|libweb_bluetooth_mojo_bindings_shared|libos_crypt|libbrowser_ui_views|libembedder_switches|libcontent_service_mojom_shared|libsandbox|libvulkan_x11|libdevice_vr_test_mojo_bindings|libmojo_core_ports|libblink_core|libx11_window|libmojo_mojom_bindings|libipc|libmojo_base_mojom_blink|libgl_wrapper|libprinting|libgesture_detection|libdiscardable_memory_service|libmojom_core_shared|libviz_vulkan_context_provider|libpolicy_component|libdisplay|libvr_common|libdevice_vr_test_mojo_bindings_shared|libui_accessibility_ax_mojom_shared|libresource_coordinator_public_mojom|libvulkan_wrapper|libcrcrypto|libGLESv2|libv8_libbase|libcrash_key|libchrome_features|libdiscardable_memory_common|libbindings|libfreetype_harfbuzz|libcapture_base|libmojo_core_embedder|libprefs|libdevice_features|libresource_coordinator_cpp_features|libgfx_ipc_geometry|libgfx|libui_devtools|libweb_dialogs|libkeyed_service_core|libcontent|libgeometry_skia|libdisplay_util|libservice_manager_mojom_traits|libkeycodes_x11|libipc_mojom|libmojo_base_lib|libui_base_clipboard_types|libtracing_mojom|libmanager|libmedia_webrtc|libmedia_mojo_services|libcontent_public_common_mojo_bindings_shared|libgfx_ipc|libdiscardable_memory_client|libmemory_instrumentation|libui_base_ime|libskia|libgfx_ipc_color|libshell_dialogs|libEGL|libmedia_blink|libmedia_message_center|libblink_controller|libdevice_vr_mojo_bindings_shared|libmidi|libapdu|libseccomp_bpf|libboringssl|libcolor_utils|libdbus|libproxy_config|libblink_features|libmojom_platform_shared|libshared_with_blink|libui_data_pack|libevents_x|libleveldatabase|libevents_ozone_layout|libgfx_x11|libsurface|liblearning_impl|libgamepad_mojom|libcontent_service_cpp|libui_base|libzygote|libevents|libvulkan|libGLESv2|libEGL|libcertificate_matching|libusb_shared|libbindings_base|libgfx_ipc_buffer_types|libcodec|libmojom_mhtml_load_result_shared|libstorage_common|libdevice_vr|libviz_resource_format_utils|libservice_manager_mojom_blink|libgles2|libauthenticator_test_mojo_bindings_shared|libui_base_clipboard|libgamepad_mojom_shared|libdomain_reliability|libmenu|libblink_embedded_frame_sink_mojo_bindings_shared|libwebgpu|liburl_ipc|libnet|libmedia_gpu|libservice_manager_mojom_constants_shared|libaccessibility|libservice_manager_mojom_constants|libembedder|libgamepad_mojom_blink|libcc_animation|libplatform|libdevice_base|libanimation|libgamepad_shared_typemap_traits|libwtf|libthread_linux|libui_base_x|libcloud_policy_proto_generated_compile|libsql|libhost|libextras|libchromium_sqlite3|libnetwork_cpp|libmojo_base_mojom_shared|libgeometry|libppapi_proxy|libweb_feature_mojo_bindings_mojom_blink|libcontent_common_mojo_bindings_shared|libVkICD_mock_icd|libdevice_vr_mojo_bindings_blink|libservice_manager_mojom_constants_blink|libevents_base|liburl|libresource_coordinator_public_mojom_blink|libppapi_host|libppapi_shared|libmedia|libtracing|libsandbox_services|libcontent_service_mojom|libevents_devices_x11|libcompositor|libfingerprint|libuser_manager|libstorage_browser|libbase|libkeyed_service_content|libviews|libcaptive_portal|libcbor|libviz_common|libcc_mojo_embedder|libheadless_non_renderer|libui_base_features|libsnapshot|libcommon|libnetwork_service|liblearning_common|libblink_modules|libscheduling_metrics|libperfetto|libgles2_implementation|libsessions|libdevices|libstartup_tracing|libdisplay_types|libgl_in_process_context|libui_base_ime_types|libui_message_center_cpp|libclearkeycdm|libicuuc|libfido|libfontconfig
+%global privlibs
libaccessibility|libandroid_mojo_bindings_shared|libanimation|libapdu|libaura_extra|libaura|libauthenticator_test_mojo_bindings_shared|libbase_i18n|libbase|libbindings_base|libbindings|libblink_common|libblink_controller|libblink_core|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_features|libblink_modules|libblink_mojom_broadcastchannel_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcbor|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcc|libcertificate_matching|libchrome_features|libchromium_sqlite3|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcolor_utils|libcommon|libcompositor|libcontent_common_mojo_bindings_shared|libcontent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom_shared|libcontent_service_mojom|libcontent_settings_features|libcontent|libcrash_key|libcrcrypto|libdbus|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevices|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevice_vr_mojo_bindings|libdevice_vr|libdevice_vr_test_mojo_bindings_blink|libdevice_vr_test_mojo_bindings_shared|libdevice_vr_test_mojo_bindings|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libEGL|libembedder|libembedder_switches|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents|libevents_x|libextras|libffmpeg|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_mojom|libgamepad_shared_typemap_traits|libgcm|libgeometry_skia|libgeometry|libgesture_detection|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_ipc|libgfx|libgfx_switches|libgfx_x11|libgin|libgles2_implementation|libgles2|libgles2_utils|libGLESv2|libgl_init|libgl_in_process_context|libgl_wrapper|libgpu_ipc_service|libgpu|libgtkui|libheadless_non_renderer|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc_mojom_shared|libipc_mojom|libipc|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|liblearning_common|liblearning_impl|libleveldatabase|libleveldb_proto|libmanager|libmedia_blink|libmedia_gpu|libmedia_learning_mojo_impl|libmedia_message_center|libmedia_mojo_services|libmedia_session_base_cpp|libmedia_session_cpp|libmedia|libmedia_webrtc|libmemory_instrumentation|libmenu|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmirroring_service|libmojo_base_lib|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_mojom|libmojo_base_shared_typemap_traits|libmojo_core_embedder_internal|libmojo_core_embedder|libmojo_core_ports|libmojo_cpp_platform|libmojom_core_shared|libmojom_mhtml_load_result_shared|libmojom_modules_shared|libmojo_mojom_bindings_shared|libmojo_mojom_bindings|libmojom_platform_shared|libmojo_public_system_cpp|libmojo_public_system|libmpris|libnative_theme|libnet|libnet_with_v8|libnetwork_cpp_base|libnetwork_cpp|libnetwork_service|libnetwork_session_configurator|libonc|libos_crypt|libparsers|libpdfium|libperfetto|libplatform|libplatform_window_handler_libs|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libresource_coordinator_public_mojom|libsandbox_services|libsandbox|libscheduling_metrics|libseccomp_bpf|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom_blink|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_constants|libservice_manager_mojom_shared|libservice_manager_mojom|libservice_manager_mojom_traits|libservice|libsessions|libshared_memory_support|libshared_with_blink|libshell_dialogs|libskia|libsnapshot|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtab_count_metrics|libthread_linux|libtracing_cpp|libtracing_mojom_shared|libtracing_mojom|libtracing|libui_accessibility_ax_mojom_blink|libui_accessibility_ax_mojom_shared|libui_accessibility_ax_mojom|libui_base_clipboard|libui_base_clipboard_types|libui_base_features|libui_base_idle|libui_base_ime_init|libui_base_ime_linux|libui_base_ime|libui_base_ime_types|libui_base|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|liburl_ipc|liburl_matcher|liburl|libusb_shared|libuser_manager|libuser_prefs|libv8_libbase|libv8_libplatform|libv8|libviews|libviz_common|libviz_resource_format_utils|libviz_vulkan_context_provider|libVkICD_mock_icd|libvr_base|libvr_common|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_bluetooth_mojo_bindings_shared|libwebdata_common|libweb_dialogs|libweb_feature_mojo_bindings_mojom_blink|libweb_feature_mojo_bindings_mojom_shared|libweb_feature_mojo_bindings_mojom|libwebgpu|libwebview|libwm_public|libwm|libwtf|libx11_events_platform|libx11_window|libzygote|libEGL|libGLESv2|libvk_swiftshader|libfontconfig
%else
-%global privlibs
libservice|libui_accessibility_ax_mojom_blink|libmojo_mojom_bindings_shared|libcolor_space|libui_base_ime_linux|libv8|libtracing_cpp|libprotobuf_lite|librange|libui_touch_selection|libgtkui|libraster|libstub_window|libmessage_center|libv8_libplatform|libtab_count_metrics|libclient|libaura|libresource_coordinator_public_mojom_shared|libbluetooth|libipc_mojom_shared|libdevice_event_log|libcc_debug|libnet_with_v8|libcc_paint|libwm_public|libnetwork_cpp_base|libservice_manager_mojom|libaura_extra|libmojo_public_system|libpdfium|libui_base_ime_init|libmpris|libcc|libservice_manager_cpp|libblink_mojom_broadcastchannel_bindings_shared|libinterfaces_shared|libservice_manager_cpp_types|libservice_manager_mojom_shared|libwm|libbase_i18n|libnetwork_session_configurator|libwebview|libplatform_window_handler_libs|libx11_events_platform|libmojo_cpp_platform|libandroid_mojo_bindings_shared|libpublic|libmirroring_service|libmedia_session_cpp|libblink_platform|libicui18n|libwebdata_common|libgin|libdevice_gamepad|libdevice_vr_mojo_bindings|libffmpeg|libmetrics_cpp|liburl_matcher|libpolicy_proto|libshared_memory_support|libparsers|libgles2_utils|libweb_feature_mojo_bindings_mojom|libui_base_idle|libmojo_public_system_cpp|libsuid_sandbox_client|libgfx_ipc_skia|libmojo_base_shared_typemap_traits|libcapture_lib|libgl_init|libblink_common|libcc_base|libmojo_base_mojom|libtracing_mojom_shared|libgpu_ipc_service|libui_accessibility_ax_mojom|libweb_feature_mojo_bindings_mojom_shared|libgfx_switches|libmedia_session_base_cpp|libmessage_support|libvulkan_init|libonc|libgpu|libmojom_modules_shared|libnative_theme|libgcm|libvr_base|libmojo_core_embedder_internal|libuser_prefs|libweb_bluetooth_mojo_bindings_shared|libos_crypt|libbrowser_ui_views|libembedder_switches|libcontent_service_mojom_shared|libsandbox|libvulkan_x11|libdevice_vr_test_mojo_bindings|libmojo_core_ports|libblink_core|libx11_window|libmojo_mojom_bindings|libipc|libmojo_base_mojom_blink|libgl_wrapper|libprinting|libgesture_detection|libdiscardable_memory_service|libmojom_core_shared|libviz_vulkan_context_provider|libpolicy_component|libdisplay|libvr_common|libdevice_vr_test_mojo_bindings_shared|libui_accessibility_ax_mojom_shared|libresource_coordinator_public_mojom|libvulkan_wrapper|libcrcrypto|libGLESv2|libv8_libbase|libcrash_key|libchrome_features|libdiscardable_memory_common|libbindings|libfreetype_harfbuzz|libcapture_base|libmojo_core_embedder|libprefs|libdevice_features|libresource_coordinator_cpp_features|libgfx_ipc_geometry|libgfx|libui_devtools|libweb_dialogs|libkeyed_service_core|libcontent|libgeometry_skia|libdisplay_util|libservice_manager_mojom_traits|libkeycodes_x11|libipc_mojom|libmojo_base_lib|libui_base_clipboard_types|libtracing_mojom|libmanager|libmedia_webrtc|libmedia_mojo_services|libcontent_public_common_mojo_bindings_shared|libgfx_ipc|libdiscardable_memory_client|libmemory_instrumentation|libui_base_ime|libskia|libgfx_ipc_color|libshell_dialogs|libEGL|libmedia_blink|libmedia_message_center|libblink_controller|libdevice_vr_mojo_bindings_shared|libmidi|libapdu|libseccomp_bpf|libboringssl|libcolor_utils|libdbus|libproxy_config|libblink_features|libmojom_platform_shared|libshared_with_blink|libui_data_pack|libevents_x|libleveldatabase|libevents_ozone_layout|libgfx_x11|libsurface|liblearning_impl|libgamepad_mojom|libcontent_service_cpp|libui_base|libzygote|libevents|libvulkan|libGLESv2|libEGL|libcertificate_matching|libusb_shared|libbindings_base|libgfx_ipc_buffer_types|libcodec|libmojom_mhtml_load_result_shared|libstorage_common|libdevice_vr|libviz_resource_format_utils|libservice_manager_mojom_blink|libgles2|libauthenticator_test_mojo_bindings_shared|libui_base_clipboard|libgamepad_mojom_shared|libdomain_reliability|libmenu|libblink_embedded_frame_sink_mojo_bindings_shared|libwebgpu|liburl_ipc|libnet|libmedia_gpu|libservice_manager_mojom_constants_shared|libaccessibility|libservice_manager_mojom_constants|libembedder|libgamepad_mojom_blink|libcc_animation|libplatform|libdevice_base|libanimation|libgamepad_shared_typemap_traits|libwtf|libthread_linux|libui_base_x|libcloud_policy_proto_generated_compile|libsql|libhost|libextras|libchromium_sqlite3|libnetwork_cpp|libmojo_base_mojom_shared|libgeometry|libppapi_proxy|libweb_feature_mojo_bindings_mojom_blink|libcontent_common_mojo_bindings_shared|libVkICD_mock_icd|libdevice_vr_mojo_bindings_blink|libservice_manager_mojom_constants_blink|libevents_base|liburl|libresource_coordinator_public_mojom_blink|libppapi_host|libppapi_shared|libmedia|libtracing|libsandbox_services|libcontent_service_mojom|libevents_devices_x11|libcompositor|libfingerprint|libuser_manager|libstorage_browser|libbase|libkeyed_service_content|libviews|libcaptive_portal|libcbor|libviz_common|libcc_mojo_embedder|libheadless_non_renderer|libui_base_features|libsnapshot|libcommon|libnetwork_service|liblearning_common|libblink_modules|libscheduling_metrics|libperfetto|libgles2_implementation|libsessions|libdevices|libstartup_tracing|libdisplay_types|libgl_in_process_context|libui_base_ime_types|libui_message_center_cpp|libclearkeycdm|libicuuc|libfido
+%global privlibs
libaccessibility|libandroid_mojo_bindings_shared|libanimation|libapdu|libaura_extra|libaura|libauthenticator_test_mojo_bindings_shared|libbase_i18n|libbase|libbindings_base|libbindings|libblink_common|libblink_controller|libblink_core|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_features|libblink_modules|libblink_mojom_broadcastchannel_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcbor|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcc|libcertificate_matching|libchrome_features|libchromium_sqlite3|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcolor_utils|libcommon|libcompositor|libcontent_common_mojo_bindings_shared|libcontent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom_shared|libcontent_service_mojom|libcontent_settings_features|libcontent|libcrash_key|libcrcrypto|libdbus|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevices|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevice_vr_mojo_bindings|libdevice_vr|libdevice_vr_test_mojo_bindings_blink|libdevice_vr_test_mojo_bindings_shared|libdevice_vr_test_mojo_bindings|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libEGL|libembedder|libembedder_switches|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents|libevents_x|libextras|libffmpeg|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_mojom|libgamepad_shared_typemap_traits|libgcm|libgeometry_skia|libgeometry|libgesture_detection|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_ipc|libgfx|libgfx_switches|libgfx_x11|libgin|libgles2_implementation|libgles2|libgles2_utils|libGLESv2|libgl_init|libgl_in_process_context|libgl_wrapper|libgpu_ipc_service|libgpu|libgtkui|libheadless_non_renderer|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc_mojom_shared|libipc_mojom|libipc|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|liblearning_common|liblearning_impl|libleveldatabase|libleveldb_proto|libmanager|libmedia_blink|libmedia_gpu|libmedia_learning_mojo_impl|libmedia_message_center|libmedia_mojo_services|libmedia_session_base_cpp|libmedia_session_cpp|libmedia|libmedia_webrtc|libmemory_instrumentation|libmenu|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmirroring_service|libmojo_base_lib|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_mojom|libmojo_base_shared_typemap_traits|libmojo_core_embedder_internal|libmojo_core_embedder|libmojo_core_ports|libmojo_cpp_platform|libmojom_core_shared|libmojom_mhtml_load_result_shared|libmojom_modules_shared|libmojo_mojom_bindings_shared|libmojo_mojom_bindings|libmojom_platform_shared|libmojo_public_system_cpp|libmojo_public_system|libmpris|libnative_theme|libnet|libnet_with_v8|libnetwork_cpp_base|libnetwork_cpp|libnetwork_service|libnetwork_session_configurator|libonc|libos_crypt|libparsers|libpdfium|libperfetto|libplatform|libplatform_window_handler_libs|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libresource_coordinator_public_mojom|libsandbox_services|libsandbox|libscheduling_metrics|libseccomp_bpf|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom_blink|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_constants|libservice_manager_mojom_shared|libservice_manager_mojom|libservice_manager_mojom_traits|libservice|libsessions|libshared_memory_support|libshared_with_blink|libshell_dialogs|libskia|libsnapshot|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtab_count_metrics|libthread_linux|libtracing_cpp|libtracing_mojom_shared|libtracing_mojom|libtracing|libui_accessibility_ax_mojom_blink|libui_accessibility_ax_mojom_shared|libui_accessibility_ax_mojom|libui_base_clipboard|libui_base_clipboard_types|libui_base_features|libui_base_idle|libui_base_ime_init|libui_base_ime_linux|libui_base_ime|libui_base_ime_types|libui_base|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|liburl_ipc|liburl_matcher|liburl|libusb_shared|libuser_manager|libuser_prefs|libv8_libbase|libv8_libplatform|libv8|libviews|libviz_common|libviz_resource_format_utils|libviz_vulkan_context_provider|libVkICD_mock_icd|libvr_base|libvr_common|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_bluetooth_mojo_bindings_shared|libwebdata_common|libweb_dialogs|libweb_feature_mojo_bindings_mojom_blink|libweb_feature_mojo_bindings_mojom_shared|libweb_feature_mojo_bindings_mojom|libwebgpu|libwebview|libwm_public|libwm|libwtf|libx11_events_platform|libx11_window|libzygote|libEGL|libGLESv2|libvk_swiftshader
%endif
%global __requires_exclude ^(%{privlibs})\\.so*
@@ -209,7 +209,8 @@ Patch53: chromium-78.0.3904.70-unbundle-zlib.patch
# Needs to be submitted..
Patch54: chromium-77.0.3865.75-gcc-include-memory.patch
#
https://chromium.googlesource.com/chromium/src/+/6b633c4b14850df376d5cec5...
-Patch55: chromium-77.0.3865.75-base-gcc-no-alignas.patch
+#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
+Patch55: chromium-78.0.3904.70-base-gcc-no-alignas.patch
#
https://chromium.googlesource.com/chromium/src/+/e79d9d0e06b825d2e62b38db...
Patch56: chromium-77.0.3865.120-silence-outdated-build-noise.patch
#
https://chromium.googlesource.com/chromium/src/+/9c3aed099b010a75594a0efd...
@@ -230,6 +231,14 @@ Patch63: chromium-78-pm-crash.patch
Patch64: chromium-78-protobuf-export.patch
#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
Patch65: chromium-78-include.patch
+#
https://dev.gentoo.org/~floppym/dist/chromium-78-revert-noexcept-r1.patch.gz
+Patch66: chromium-78-revert-noexcept-r1.patch
+#
https://chromium.googlesource.com/chromium/src/+/9d01bb7f93ba4837b4430417...
+Patch67: chromium-78.0.3904.70-v8-tracedreference-fix.patch
+#
https://chromium.googlesource.com/v8/v8/+/3677468397fa7f9fad9bbd71e9fb312...
+Patch68: v8-implement-tracedreference.patch
+#
https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/files...
+Patch69: chromium-77-clang.patch
# Use lstdc++ on EPEL7 only
Patch101: chromium-75.0.3770.100-epel7-stdc++.patch
@@ -759,6 +768,10 @@ udev.
%patch63 -p1 -b .pm-crash
%patch64 -p1 -b .protobuf-export
%patch65 -p1 -b .missing-includes
+%patch66 -p1 -b .gentoo-revert-noexcept
+%patch67 -p1 -b .implement-TraceWrapperV8Reference-without-destructor
+%patch68 -p1 -b .v8-implement-tracedreference
+%patch69 -p1 -b .clang-supports-location-builtins
# Fedora branded user agent
%if 0%{?fedora}
@@ -992,6 +1005,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/cros_system_api' \
'third_party/dav1d' \
'third_party/dawn' \
+ 'third_party/depot_tools' \
'third_party/devscripts' \
'third_party/dom_distiller_js' \
'third_party/emoji-segmenter' \
@@ -1076,6 +1090,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/pffft' \
'third_party/ply' \
'third_party/polymer' \
+ 'third_party/private-join-and-compute' \
'third_party/protobuf' \
'third_party/protobuf/third_party/six' \
'third_party/pyjson5' \
diff --git a/v8-implement-tracedreference.patch b/v8-implement-tracedreference.patch
new file mode 100644
index 0000000..7dc7487
--- /dev/null
+++ b/v8-implement-tracedreference.patch
@@ -0,0 +1,796 @@
+diff -up chromium-78.0.3904.70/v8/include/v8.h.implement-tracedreference
chromium-78.0.3904.70/v8/include/v8.h
+--- chromium-78.0.3904.70/v8/include/v8.h.implement-tracedreference 2019-10-24
08:58:26.185640117 -0400
++++ chromium-78.0.3904.70/v8/include/v8.h 2019-10-24 09:18:33.719546481 -0400
+@@ -96,6 +96,10 @@ template <class T>
+ class Global;
+ template <class T>
+ class TracedGlobal;
++template <class T>
++class TracedReference;
++template <class T>
++class TracedReferenceBase;
+ template<class K, class V, class T> class PersistentValueMap;
+ template <class K, class V, class T>
+ class PersistentValueMapBase;
+@@ -281,7 +285,8 @@ class Local {
+ V8_INLINE static Local<T> New(Isolate* isolate, Local<T> that);
+ V8_INLINE static Local<T> New(Isolate* isolate,
+ const PersistentBase<T>& that);
+- V8_INLINE static Local<T> New(Isolate* isolate, const TracedGlobal<T>&
that);
++ V8_INLINE static Local<T> New(Isolate* isolate,
++ const TracedReferenceBase<T>& that);
+
+ private:
+ friend class Utils;
+@@ -311,7 +316,13 @@ class Local {
+ template <class F>
+ friend class ReturnValue;
+ template <class F>
++ friend class Traced;
++ template <class F>
+ friend class TracedGlobal;
++ template <class F>
++ friend class TracedReferenceBase;
++ template <class F>
++ friend class TracedReference;
+
+ explicit V8_INLINE Local(T* that) : val_(that) {}
+ V8_INLINE static Local<T> New(Isolate* isolate, T* that);
+@@ -792,22 +803,10 @@ template <class T>
+ using UniquePersistent = Global<T>;
+
+ /**
+- * Trait specifying behavior of |TracedGlobal<T>|.
++ * Deprecated. Use |TracedReference<T>| instead.
+ */
+ template <typename T>
+-struct TracedGlobalTrait {
+- /**
+- * Specifies whether |TracedGlobal<T>| should clear its handle on destruction.
+- *
+- * V8 will *not* clear the embedder-side memory of the handle. The embedder is
+- * expected to report all |TracedGlobal<T>| handles through
+- * |EmbedderHeapTracer| upon garabge collection.
+- *
+- * See |EmbedderHeapTracer::IsRootForNonTracingGC| for handling with
+- * non-tracing GCs in V8.
+- */
+- static constexpr bool kRequiresExplicitDestruction = true;
+-};
++struct TracedGlobalTrait {};
+
+ /**
+ * A traced handle with copy and move semantics. The handle is to be used
+@@ -820,15 +819,131 @@ struct TracedGlobalTrait {
+ * |v8::EmbedderHeapTracer::IsRootForNonTracingGC()| whether the handle should
+ * be treated as root or not.
+ *
+- * For destruction semantics see |TracedGlobalTrait<T>|.
++ * Note that the base class cannot be instantiated itself. Choose from
++ * - TracedGlobal
++ * - TracedReference
+ */
+ template <typename T>
+-class TracedGlobal {
++class TracedReferenceBase {
+ public:
+ /**
++ * Returns true if this TracedReferenceBase is empty, i.e., has not been
++ * assigned an object.
++ */
++ bool IsEmpty() const { return val_ == nullptr; }
++
++ /**
++ * If non-empty, destroy the underlying storage cell. |IsEmpty| will return
++ * true after this call.
++ */
++ V8_INLINE void Reset();
++
++ /**
++ * Construct a Local<T> from this handle.
++ */
++ Local<T> Get(Isolate* isolate) const { return Local<T>::New(isolate,
*this); }
++
++ template <class S>
++ V8_INLINE bool operator==(const TracedReferenceBase<S>& that) const {
++ internal::Address* a = reinterpret_cast<internal::Address*>(val_);
++ internal::Address* b = reinterpret_cast<internal::Address*>(that.val_);
++ if (a == nullptr) return b == nullptr;
++ if (b == nullptr) return false;
++ return *a == *b;
++ }
++
++ template <class S>
++ V8_INLINE bool operator==(const Local<S>& that) const {
++ internal::Address* a = reinterpret_cast<internal::Address*>(val_);
++ internal::Address* b = reinterpret_cast<internal::Address*>(that.val_);
++ if (a == nullptr) return b == nullptr;
++ if (b == nullptr) return false;
++ return *a == *b;
++ }
++
++ template <class S>
++ V8_INLINE bool operator!=(const TracedReferenceBase<S>& that) const {
++ return !operator==(that);
++ }
++
++ template <class S>
++ V8_INLINE bool operator!=(const Local<S>& that) const {
++ return !operator==(that);
++ }
++
++ /**
++ * Assigns a wrapper class ID to the handle.
++ */
++ V8_INLINE void SetWrapperClassId(uint16_t class_id);
++
++ /**
++ * Returns the class ID previously assigned to this handle or 0 if no class ID
++ * was previously assigned.
++ */
++ V8_INLINE uint16_t WrapperClassId() const;
++
++ /**
++ * Adds a finalization callback to the handle. The type of this callback is
++ * similar to WeakCallbackType::kInternalFields, i.e., it will pass the
++ * parameter and the first two internal fields of the object.
++ *
++ * The callback is then supposed to reset the handle in the callback. No
++ * further V8 API may be called in this callback. In case additional work
++ * involving V8 needs to be done, a second callback can be scheduled using
++ * WeakCallbackInfo<void>::SetSecondPassCallback.
++ */
++ V8_INLINE void SetFinalizationCallback(
++ void* parameter, WeakCallbackInfo<void>::Callback callback);
++
++ template <class S>
++ V8_INLINE TracedReferenceBase<S>& As() const {
++ return reinterpret_cast<TracedReferenceBase<S>&>(
++ const_cast<TracedReferenceBase<T>&>(*this));
++ }
++
++ private:
++ enum DestructionMode { kWithDestructor, kWithoutDestructor };
++
++ /**
++ * An empty TracedReferenceBase without storage cell.
++ */
++ TracedReferenceBase() = default;
++
++ V8_INLINE static T* New(Isolate* isolate, T* that, void* slot,
++ DestructionMode destruction_mode);
++
++ T* val_ = nullptr;
++
++ friend class EmbedderHeapTracer;
++ template <typename F>
++ friend class Local;
++ friend class Object;
++ template <typename F>
++ friend class TracedGlobal;
++ template <typename F>
++ friend class TracedReference;
++ template <typename F>
++ friend class ReturnValue;
++};
++
++/**
++ * A traced handle with destructor that clears the handle. For more details see
++ * TracedReferenceBase.
++ */
++template <typename T>
++class TracedGlobal : public TracedReferenceBase<T> {
++ public:
++ using TracedReferenceBase<T>::Reset;
++
++ /**
++ * Destructor resetting the handle.
++ */
++ ~TracedGlobal() { this->Reset(); }
++
++ /**
+ * An empty TracedGlobal without storage cell.
+ */
+- TracedGlobal() = default;
++ TracedGlobal() : TracedReferenceBase<T>() {}
+
+ /**
+ * Construct a TracedGlobal from a Local.
+@@ -837,8 +952,9 @@ class TracedGlobal {
+ * pointing to the same object.
+ */
+ template <class S>
+- TracedGlobal(Isolate* isolate, Local<S> that)
+- : val_(New(isolate, *that, &val_)) {
++ TracedGlobal(Isolate* isolate, Local<S> that) : TracedReferenceBase<T>()
{
++ this->val_ = this->New(isolate, that.val_, &this->val_,
++ TracedReferenceBase<T>::kWithDestructor);
+ TYPE_CHECK(T, S);
+ }
+
+@@ -905,121 +1021,126 @@ class TracedGlobal {
+ V8_INLINE TracedGlobal& operator=(const TracedGlobal<S>& rhs);
+
+ /**
+- * Returns true if this TracedGlobal is empty, i.e., has not been assigned an
+- * object.
+- */
+- bool IsEmpty() const { return val_ == nullptr; }
+-
+- /**
+- * If non-empty, destroy the underlying storage cell. |IsEmpty| will return
+- * true after this call.
+- */
+- V8_INLINE void Reset();
+-
+- /**
+ * If non-empty, destroy the underlying storage cell and create a new one with
+ * the contents of other if other is non empty
+ */
+ template <class S>
+ V8_INLINE void Reset(Isolate* isolate, const Local<S>& other);
+
+- /**
+- * Construct a Local<T> from this handle.
+- */
+- Local<T> Get(Isolate* isolate) const { return Local<T>::New(isolate,
*this); }
+-
+ template <class S>
+ V8_INLINE TracedGlobal<S>& As() const {
+ return reinterpret_cast<TracedGlobal<S>&>(
+ const_cast<TracedGlobal<T>&>(*this));
+ }
++};
+
+- template <class S>
+- V8_INLINE bool operator==(const TracedGlobal<S>& that) const {
+- internal::Address* a = reinterpret_cast<internal::Address*>(**this);
+- internal::Address* b = reinterpret_cast<internal::Address*>(*that);
+- if (a == nullptr) return b == nullptr;
+- if (b == nullptr) return false;
+- return *a == *b;
+- }
++/**
++ * A traced handle without destructor that clears the handle. The embedder needs
++ * to ensure that the handle is not accessed once the V8 object has been
++ * reclaimed. This can happen when the handle is not passed through the
++ * EmbedderHeapTracer. For more details see TracedReferenceBase.
++ */
++template <typename T>
++class TracedReference : public TracedReferenceBase<T> {
++ public:
++ using TracedReferenceBase<T>::Reset;
++
++ /**
++ * An empty TracedReference without storage cell.
++ */
++ TracedReference() : TracedReferenceBase<T>() {}
+
++ /**
++ * Construct a TracedReference from a Local.
++ *
++ * When the Local is non-empty, a new storage cell is created
++ * pointing to the same object.
++ */
+ template <class S>
+- V8_INLINE bool operator==(const Local<S>& that) const {
+- internal::Address* a = reinterpret_cast<internal::Address*>(**this);
+- internal::Address* b = reinterpret_cast<internal::Address*>(*that);
+- if (a == nullptr) return b == nullptr;
+- if (b == nullptr) return false;
+- return *a == *b;
++ TracedReference(Isolate* isolate, Local<S> that) :
TracedReferenceBase<T>() {
++ this->val_ = this->New(isolate, that.val_, &this->val_,
++ TracedReferenceBase<T>::kWithoutDestructor);
++ TYPE_CHECK(T, S);
+ }
+
+- template <class S>
+- V8_INLINE bool operator!=(const TracedGlobal<S>& that) const {
+- return !operator==(that);
++ /**
++ * Move constructor initializing TracedReference from an
++ * existing one.
++ */
++ V8_INLINE TracedReference(TracedReference&& other) {
++ // Forward to operator=.
++ *this = std::move(other);
+ }
+
+- template <class S>
+- V8_INLINE bool operator!=(const Local<S>& that) const {
+- return !operator==(that);
++ /**
++ * Move constructor initializing TracedReference from an
++ * existing one.
++ */
++ template <typename S>
++ V8_INLINE TracedReference(TracedReference<S>&& other) {
++ // Forward to operator=.
++ *this = std::move(other);
+ }
+
+ /**
+- * Assigns a wrapper class ID to the handle.
++ * Copy constructor initializing TracedReference from an
++ * existing one.
+ */
+- V8_INLINE void SetWrapperClassId(uint16_t class_id);
++ V8_INLINE TracedReference(const TracedReference& other) {
++ // Forward to operator=;
++ *this = other;
++ }
+
+ /**
+- * Returns the class ID previously assigned to this handle or 0 if no class ID
+- * was previously assigned.
++ * Copy constructor initializing TracedReference from an
++ * existing one.
+ */
+- V8_INLINE uint16_t WrapperClassId() const;
++ template <typename S>
++ V8_INLINE TracedReference(const TracedReference<S>& other) {
++ // Forward to operator=;
++ *this = other;
++ }
+
+ /**
+- * Adds a finalization callback to the handle. The type of this callback is
+- * similar to WeakCallbackType::kInternalFields, i.e., it will pass the
+- * parameter and the first two internal fields of the object.
+- *
+- * The callback is then supposed to reset the handle in the callback. No
+- * further V8 API may be called in this callback. In case additional work
+- * involving V8 needs to be done, a second callback can be scheduled using
+- * WeakCallbackInfo<void>::SetSecondPassCallback.
++ * Move assignment operator initializing TracedGlobal from an existing one.
+ */
+- V8_INLINE void SetFinalizationCallback(
+- void* parameter, WeakCallbackInfo<void>::Callback callback);
++ V8_INLINE TracedReference& operator=(TracedReference&& rhs);
+
+- private:
+- // Wrapping type used when clearing on destruction is required.
+- struct WrappedForDestruction {
+- T* value;
+-
+- explicit WrappedForDestruction(T* val) : value(val) {}
+- ~WrappedForDestruction();
+- operator T*() const { return value; }
+- T* operator*() const { return value; }
+- T* operator->() const { return value; }
+- WrappedForDestruction& operator=(const WrappedForDestruction& other) {
+- value = other.value;
+- return *this;
+- }
+- WrappedForDestruction& operator=(T* val) {
+- value = val;
+- return *this;
+- }
+- };
++ /**
++ * Move assignment operator initializing TracedGlobal from an existing one.
++ */
++ template <class S>
++ V8_INLINE TracedReference& operator=(TracedReference<S>&& rhs);
+
+- V8_INLINE static T* New(Isolate* isolate, T* that, void* slot);
++ /**
++ * Copy assignment operator initializing TracedGlobal from an existing one.
++ *
++ * Note: Prohibited when |other| has a finalization callback set through
++ * |SetFinalizationCallback|.
++ */
++ V8_INLINE TracedReference& operator=(const TracedReference& rhs);
+
+- T* operator*() const { return this->val_; }
++ /**
++ * Copy assignment operator initializing TracedGlobal from an existing one.
++ *
++ * Note: Prohibited when |other| has a finalization callback set through
++ * |SetFinalizationCallback|.
++ */
++ template <class S>
++ V8_INLINE TracedReference& operator=(const TracedReference<S>& rhs);
+
+- typename std::conditional<
+- TracedGlobalTrait<TracedGlobal<T>>::kRequiresExplicitDestruction,
+- WrappedForDestruction, T*>::type val_{nullptr};
++ /**
++ * If non-empty, destroy the underlying storage cell and create a new one with
++ * the contents of other if other is non empty
++ */
++ template <class S>
++ V8_INLINE void Reset(Isolate* isolate, const Local<S>& other);
+
+- friend class EmbedderHeapTracer;
+- template <typename F>
+- friend class Local;
+- friend class Object;
+- template <typename F>
+- friend class ReturnValue;
++ template <class S>
++ V8_INLINE TracedReference<S>& As() const {
++ return reinterpret_cast<TracedReference<S>&>(
++ const_cast<TracedReference<T>&>(*this));
++ }
+ };
+
+ /**
+@@ -3640,8 +3761,9 @@ class V8_EXPORT Object : public Value {
+ return object.val_->InternalFieldCount();
+ }
+
+- /** Same as above, but works for TracedGlobal. */
+- V8_INLINE static int InternalFieldCount(const TracedGlobal<Object>& object)
{
++ /** Same as above, but works for TracedReferenceBase. */
++ V8_INLINE static int InternalFieldCount(
++ const TracedReferenceBase<Object>& object) {
+ return object.val_->InternalFieldCount();
+ }
+
+@@ -3666,7 +3788,7 @@ class V8_EXPORT Object : public Value {
+
+ /** Same as above, but works for TracedGlobal. */
+ V8_INLINE static void* GetAlignedPointerFromInternalField(
+- const TracedGlobal<Object>& object, int index) {
++ const TracedReferenceBase<Object>& object, int index) {
+ return object.val_->GetAlignedPointerFromInternalField(index);
+ }
+
+@@ -3956,7 +4078,7 @@ class ReturnValue {
+ template <typename S>
+ V8_INLINE void Set(const Global<S>& handle);
+ template <typename S>
+- V8_INLINE void Set(const TracedGlobal<S>& handle);
++ V8_INLINE void Set(const TracedReferenceBase<S>& handle);
+ template <typename S>
+ V8_INLINE void Set(const Local<S> handle);
+ // Fast primitive setters
+@@ -7376,7 +7498,8 @@ class V8_EXPORT EmbedderHeapTracer {
+ class V8_EXPORT TracedGlobalHandleVisitor {
+ public:
+ virtual ~TracedGlobalHandleVisitor() = default;
+- virtual void VisitTracedGlobalHandle(const TracedGlobal<Value>& value) =
0;
++ virtual void VisitTracedGlobalHandle(const TracedGlobal<Value>& handle)
{}
++ virtual void VisitTracedReference(const TracedReference<Value>& handle)
{}
+ };
+
+ /**
+@@ -7414,7 +7537,7 @@ class V8_EXPORT EmbedderHeapTracer {
+ virtual void RegisterV8References(
+ const std::vector<std::pair<void*, void*> >& embedder_fields) =
0;
+
+- void RegisterEmbedderReference(const TracedGlobal<v8::Value>& ref);
++ void RegisterEmbedderReference(const TracedReferenceBase<v8::Value>& ref);
+
+ /**
+ * Called at the beginning of a GC cycle.
+@@ -7475,32 +7598,35 @@ class V8_EXPORT EmbedderHeapTracer {
+ *
+ * If this returns false, then V8 may decide that the object referred to by
+ * such a handle is reclaimed. In that case:
+- * - No action is required if handles are used with destructors.
+- * - When run without destructors (by specializing
+- * |TracedGlobalTrait::kRequiresExplicitDestruction|) V8 calls
+- * |ResetHandleInNonTracingGC|.
+- *
+- * Note that the |handle| is different from the |TracedGlobal<T>| handle that
+- * the embedder holds for retaining the object. The embedder may use
+- * |TracedGlobal<T>::WrapperClassId()| to distinguish cases where it wants
+- * handles to be treated as roots from not being treated as roots.
++ * - No action is required if handles are used with destructors, i.e., by just
++ * using |TracedGlobal|.
++ * - When run without destructors, i.e., by using
++ * |TracedReference|, V8 calls |ResetHandleInNonTracingGC|.
++ *
++ * Note that the |handle| is different from the handle that the embedder holds
++ * for retaining the object. The embedder may use |WrapperClassId()| to
++ * distinguish cases where it wants handles to be treated as roots from not
++ * being treated as roots.
+ */
+ virtual bool IsRootForNonTracingGC(
+- const v8::TracedGlobal<v8::Value>& handle) {
+- return true;
+- }
++ const v8::TracedReference<v8::Value>& handle);
++ virtual bool IsRootForNonTracingGC(const v8::TracedGlobal<v8::Value>&
handle);
+
+ /**
+ * Used in combination with |IsRootForNonTracingGC|. Called by V8 when an
+ * object that is backed by a handle is reclaimed by a non-tracing garbage
+ * collection. It is up to the embedder to reset the original handle.
+ *
+- * Note that the |handle| is different from the |TracedGlobal<T>| handle that
+- * the embedder holds for retaining the object. It is up to the embedder to
+- * find the orignal |TracedGlobal<T>| handle via the object or class id.
++ * Note that the |handle| is different from the handle that the embedder holds
++ * for retaining the object. It is up to the embedder to find the original
++ * handle via the object or class id.
+ */
+ virtual void ResetHandleInNonTracingGC(
+- const v8::TracedGlobal<v8::Value>& handle) {}
++ const v8::TracedReference<v8::Value>& handle);
++ V8_DEPRECATE_SOON(
++ "Use TracedReference version when not requiring destructors.",
++ virtual void ResetHandleInNonTracingGC(
++ const v8::TracedGlobal<v8::Value>& handle));
+
+ /*
+ * Called by the embedder to immediately perform a full garbage collection.
+@@ -9103,8 +9229,12 @@ class V8_EXPORT V8 {
+ template <class T>
+ friend class Maybe;
+ template <class T>
++ friend class TracedReferenceBase;
++ template <class T>
+ friend class TracedGlobal;
+ template <class T>
++ friend class TracedReference;
++ template <class T>
+ friend class WeakCallbackInfo;
+ template <class T> friend class Eternal;
+ template <class T> friend class PersistentBase;
+@@ -9975,7 +10105,7 @@ Local<T> Local<T>::New(Isolate* isolate,
+ }
+
+ template <class T>
+-Local<T> Local<T>::New(Isolate* isolate, const TracedGlobal<T>&
that) {
++Local<T> Local<T>::New(Isolate* isolate, const
TracedReferenceBase<T>& that) {
+ return New(isolate, that.val_);
+ }
+
+@@ -10156,26 +10286,20 @@ Global<T>& Global<T>::operator=(Global<S
+ }
+
+ template <class T>
+-TracedGlobal<T>::WrappedForDestruction::~WrappedForDestruction() {
+- if (value == nullptr) return;
+- V8::DisposeTracedGlobal(reinterpret_cast<internal::Address*>(value));
+- value = nullptr;
+-}
+-
+-template <class T>
+-T* TracedGlobal<T>::New(Isolate* isolate, T* that, void* slot) {
++T* TracedReferenceBase<T>::New(Isolate* isolate, T* that, void* slot,
++ DestructionMode destruction_mode) {
+ if (that == nullptr) return nullptr;
+ internal::Address* p = reinterpret_cast<internal::Address*>(that);
+ return reinterpret_cast<T*>(V8::GlobalizeTracedReference(
+ reinterpret_cast<internal::Isolate*>(isolate), p,
+ reinterpret_cast<internal::Address*>(slot),
+- TracedGlobalTrait<TracedGlobal<T>>::kRequiresExplicitDestruction));
++ destruction_mode == kWithDestructor));
+ }
+
+ template <class T>
+-void TracedGlobal<T>::Reset() {
++void TracedReferenceBase<T>::Reset() {
+ if (IsEmpty()) return;
+- V8::DisposeTracedGlobal(reinterpret_cast<internal::Address*>(**this));
++ V8::DisposeTracedGlobal(reinterpret_cast<internal::Address*>(val_));
+ val_ = nullptr;
+ }
+
+@@ -10185,7 +10309,8 @@ void TracedGlobal<T>::Reset(Isolate* iso
+ TYPE_CHECK(T, S);
+ Reset();
+ if (other.IsEmpty()) return;
+- this->val_ = New(isolate, other.val_, &val_);
++ this->val_ = this->New(isolate, other.val_, &this->val_,
++ TracedReferenceBase<T>::kWithDestructor);
+ }
+
+ template <class T>
+@@ -10233,28 +10358,83 @@ TracedGlobal<T>& TracedGlobal<T>::operat
+ }
+
+ template <class T>
+-void TracedGlobal<T>::SetWrapperClassId(uint16_t class_id) {
++template <class S>
++void TracedReference<T>::Reset(Isolate* isolate, const Local<S>& other)
{
++ TYPE_CHECK(T, S);
++ Reset();
++ if (other.IsEmpty()) return;
++ this->val_ = this->New(isolate, other.val_, &this->val_,
++ TracedReferenceBase<T>::kWithoutDestructor);
++}
++
++template <class T>
++template <class S>
++TracedReference<T>&
TracedReference<T>::operator=(TracedReference<S>&& rhs) {
++ TYPE_CHECK(T, S);
++ *this = std::move(rhs.template As<T>());
++ return *this;
++}
++
++template <class T>
++template <class S>
++TracedReference<T>& TracedReference<T>::operator=(
++ const TracedReference<S>& rhs) {
++ TYPE_CHECK(T, S);
++ *this = rhs.template As<T>();
++ return *this;
++}
++
++template <class T>
++TracedReference<T>&
TracedReference<T>::operator=(TracedReference&& rhs) {
++ if (this != &rhs) {
++ this->Reset();
++ if (rhs.val_ != nullptr) {
++ this->val_ = rhs.val_;
++ V8::MoveTracedGlobalReference(
++ reinterpret_cast<internal::Address**>(&rhs.val_),
++ reinterpret_cast<internal::Address**>(&this->val_));
++ rhs.val_ = nullptr;
++ }
++ }
++ return *this;
++}
++
++template <class T>
++TracedReference<T>& TracedReference<T>::operator=(const
TracedReference& rhs) {
++ if (this != &rhs) {
++ this->Reset();
++ if (rhs.val_ != nullptr) {
++ V8::CopyTracedGlobalReference(
++ reinterpret_cast<const internal::Address* const*>(&rhs.val_),
++ reinterpret_cast<internal::Address**>(&this->val_));
++ }
++ }
++ return *this;
++}
++
++template <class T>
++void TracedReferenceBase<T>::SetWrapperClassId(uint16_t class_id) {
+ typedef internal::Internals I;
+ if (IsEmpty()) return;
+- internal::Address* obj = reinterpret_cast<internal::Address*>(**this);
++ internal::Address* obj = reinterpret_cast<internal::Address*>(val_);
+ uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::kNodeClassIdOffset;
+ *reinterpret_cast<uint16_t*>(addr) = class_id;
+ }
+
+ template <class T>
+-uint16_t TracedGlobal<T>::WrapperClassId() const {
++uint16_t TracedReferenceBase<T>::WrapperClassId() const {
+ typedef internal::Internals I;
+ if (IsEmpty()) return 0;
+- internal::Address* obj = reinterpret_cast<internal::Address*>(**this);
++ internal::Address* obj = reinterpret_cast<internal::Address*>(val_);
+ uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::kNodeClassIdOffset;
+ return *reinterpret_cast<uint16_t*>(addr);
+ }
+
+ template <class T>
+-void TracedGlobal<T>::SetFinalizationCallback(
++void TracedReferenceBase<T>::SetFinalizationCallback(
+ void* parameter, typename WeakCallbackInfo<void>::Callback callback) {
+- V8::SetFinalizationCallbackTraced(
+- reinterpret_cast<internal::Address*>(**this), parameter, callback);
++ V8::SetFinalizationCallbackTraced(reinterpret_cast<internal::Address*>(val_),
++ parameter, callback);
+ }
+
+ template <typename T>
+@@ -10273,12 +10453,12 @@ void ReturnValue<T>::Set(const Global<S>
+
+ template <typename T>
+ template <typename S>
+-void ReturnValue<T>::Set(const TracedGlobal<S>& handle) {
++void ReturnValue<T>::Set(const TracedReferenceBase<S>& handle) {
+ TYPE_CHECK(T, S);
+ if (V8_UNLIKELY(handle.IsEmpty())) {
+ *value_ = GetDefaultValue();
+ } else {
+- *value_ = *reinterpret_cast<internal::Address*>(*handle);
++ *value_ = *reinterpret_cast<internal::Address*>(handle.val_);
+ }
+ }
+
+diff -up chromium-78.0.3904.70/v8/src/api/api.cc.implement-tracedreference
chromium-78.0.3904.70/v8/src/api/api.cc
+--- chromium-78.0.3904.70/v8/src/api/api.cc.implement-tracedreference 2019-10-24
09:18:56.712105100 -0400
++++ chromium-78.0.3904.70/v8/src/api/api.cc 2019-10-24 09:20:17.428555637 -0400
+@@ -10346,11 +10346,12 @@ void EmbedderHeapTracer::DecreaseAllocat
+ }
+
+ void EmbedderHeapTracer::RegisterEmbedderReference(
+- const TracedGlobal<v8::Value>& ref) {
++ const TracedReferenceBase<v8::Value>& ref) {
+ if (ref.IsEmpty()) return;
+
+ i::Heap* const heap = reinterpret_cast<i::Isolate*>(isolate_)->heap();
+-
heap->RegisterExternallyReferencedObject(reinterpret_cast<i::Address*>(*ref));
++ heap->RegisterExternallyReferencedObject(
++ reinterpret_cast<i::Address*>(ref.val_));
+ }
+
+ void EmbedderHeapTracer::IterateTracedGlobalHandles(
+@@ -10360,6 +10361,26 @@ void EmbedderHeapTracer::IterateTracedGl
+ isolate->global_handles()->IterateTracedNodes(visitor);
+ }
+
++bool EmbedderHeapTracer::IsRootForNonTracingGC(
++ const v8::TracedReference<v8::Value>& handle) {
++ return true;
++}
++
++bool EmbedderHeapTracer::IsRootForNonTracingGC(
++ const v8::TracedGlobal<v8::Value>& handle) {
++ return true;
++}
++
++void EmbedderHeapTracer::ResetHandleInNonTracingGC(
++ const v8::TracedReference<v8::Value>& handle) {
++ UNREACHABLE();
++}
++
++void EmbedderHeapTracer::ResetHandleInNonTracingGC(
++ const v8::TracedGlobal<v8::Value>& handle) {
++ UNREACHABLE();
++}
++
+ namespace internal {
+
+ const size_t HandleScopeImplementer::kEnteredContextsOffset =
+diff -up chromium-78.0.3904.70/v8/src/handles/global-handles.cc.implement-tracedreference
chromium-78.0.3904.70/v8/src/handles/global-handles.cc
+---
chromium-78.0.3904.70/v8/src/handles/global-handles.cc.implement-tracedreference 2019-10-24
09:20:39.954123225 -0400
++++ chromium-78.0.3904.70/v8/src/handles/global-handles.cc 2019-10-24 09:21:45.911857072
-0400
+@@ -901,8 +901,13 @@ void GlobalHandles::IdentifyWeakUnmodifi
+ DCHECK(node->is_root());
+ if (is_unmodified(node->location())) {
+ v8::Value* value = ToApi<v8::Value>(node->handle());
+- node->set_root(tracer->IsRootForNonTracingGC(
+- *reinterpret_cast<v8::TracedGlobal<v8::Value>*>(&value)));
++ if (node->has_destructor()) {
++ node->set_root(tracer->IsRootForNonTracingGC(
++
*reinterpret_cast<v8::TracedGlobal<v8::Value>*>(&value)));
++ } else {
++ node->set_root(tracer->IsRootForNonTracingGC(
++
*reinterpret_cast<v8::TracedReference<v8::Value>*>(&value)));
++ }
+ }
+ }
+ }
+@@ -990,7 +995,7 @@ void GlobalHandles::IterateYoungWeakUnmo
+ } else {
+ v8::Value* value = ToApi<v8::Value>(node->handle());
+ tracer->ResetHandleInNonTracingGC(
+- *reinterpret_cast<v8::TracedGlobal<v8::Value>*>(&value));
++
*reinterpret_cast<v8::TracedReference<v8::Value>*>(&value));
+ DCHECK(!node->IsInUse());
+ }
+
+@@ -1271,8 +1276,13 @@ void GlobalHandles::IterateTracedNodes(
+ for (TracedNode* node : *traced_nodes_) {
+ if (node->IsInUse()) {
+ v8::Value* value = ToApi<v8::Value>(node->handle());
+- visitor->VisitTracedGlobalHandle(
+- *reinterpret_cast<v8::TracedGlobal<v8::Value>*>(&value));
++ if (node->has_destructor()) {
++ visitor->VisitTracedGlobalHandle(
++ *reinterpret_cast<v8::TracedGlobal<v8::Value>*>(&value));
++ } else {
++ visitor->VisitTracedReference(
++
*reinterpret_cast<v8::TracedReference<v8::Value>*>(&value));
++ }
+ }
+ }
+ }
+diff -up chromium-78.0.3904.70/v8/src/heap/embedder-tracing.h.implement-tracedreference
chromium-78.0.3904.70/v8/src/heap/embedder-tracing.h
+---
chromium-78.0.3904.70/v8/src/heap/embedder-tracing.h.implement-tracedreference 2019-10-24
09:22:03.664519559 -0400
++++ chromium-78.0.3904.70/v8/src/heap/embedder-tracing.h 2019-10-24 09:22:45.197729964
-0400
+@@ -57,7 +57,12 @@ class V8_EXPORT_PRIVATE LocalEmbedderHea
+ bool IsRootForNonTracingGC(const v8::TracedGlobal<v8::Value>& handle) {
+ return !InUse() || remote_tracer_->IsRootForNonTracingGC(handle);
+ }
+- void ResetHandleInNonTracingGC(const v8::TracedGlobal<v8::Value>& handle) {
++
++ bool IsRootForNonTracingGC(const v8::TracedReference<v8::Value>& handle) {
++ return !InUse() || remote_tracer_->IsRootForNonTracingGC(handle);
++ }
++
++ void ResetHandleInNonTracingGC(const v8::TracedReference<v8::Value>& handle)
{
+ // Resetting is only called when IsRootForNonTracingGC returns false which
+ // can only happen the EmbedderHeapTracer is set on API level.
+ DCHECK(InUse());
commit 5d755bc2f71af8bed245840799ff57636a192074
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Oct 23 13:09:01 2019 -0400
fix issue in my manual patch, apply other gentoo 78 fixes
diff --git a/chromium-78-gcc-noexcept.patch b/chromium-78-gcc-noexcept.patch
new file mode 100644
index 0000000..8ddb53f
--- /dev/null
+++ b/chromium-78-gcc-noexcept.patch
@@ -0,0 +1,32 @@
+From d16cda8fc3476cc534a756873cc8aa2692a57054 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Thu, 22 Aug 2019 13:13:36 +0200
+Subject: [PATCH] GCC: declare noexcept move constructor/assign operators of
V8StackTraceId
+
+blink::BlinkCloneableMessage declares default implementation of
+move operator/assign operator that requires v8_inspector::V8StackTraceId
+to declare its move constructor/assign operator too.
+
+Bug: chromium:819294
+Change-Id: Iaf626ee8245efcba372a17cdf2de448e691d41d6
+Reviewed-on:
https://chromium-review.googlesource.com/c/v8/v8/+/1796062
+Commit-Queue: Jos Dapena Paz <jose.dapena(a)lge.com>
+Reviewed-by: Yang Guo <yangguo(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#63799}
+---
+
+diff --git a/v8/include/v8-inspector.h b/v8/include/v8-inspector.h
+index ce5b777..ed4cdec 100644
+--- a/v8/include/v8-inspector.h
++++ b/v8/include/v8-inspector.h
+@@ -231,7 +231,10 @@ struct V8_EXPORT V8StackTraceId {
+ std::pair<int64_t, int64_t> debugger_id;
+
+ V8StackTraceId();
++ V8StackTraceId(const V8StackTraceId&) = default;
+ V8StackTraceId(uintptr_t id, const std::pair<int64_t, int64_t> debugger_id);
++ V8StackTraceId& operator=(const V8StackTraceId&) = default;
++ V8StackTraceId& operator=(V8StackTraceId&&) noexcept = default;
+ ~V8StackTraceId() = default;
+
+ bool IsInvalid() const;
diff --git a/chromium-78-include.patch b/chromium-78-include.patch
new file mode 100644
index 0000000..3db38ea
--- /dev/null
+++ b/chromium-78-include.patch
@@ -0,0 +1,40 @@
+From bbfe2665923225b4a7c436ba2b6c7e5f695f2e52 Mon Sep 17 00:00:00 2001
+From: David Landell <landell(a)vewd.com>
+Date: Fri, 13 Sep 2019 12:24:13 +0000
+Subject: [PATCH] Add missing include for unique_ptr
+
+Change-Id: I614d2f42868d563eb6a92dfb2aae08286e20d687
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1803137
+Reviewed-by: Henrik Bostrm <hbos(a)chromium.org>
+Commit-Queue: Henrik Bostrm <hbos(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#696355}
+---
+
+diff --git a/third_party/blink/public/platform/web_rtc_rtp_source.h
b/third_party/blink/public/platform/web_rtc_rtp_source.h
+index 959440f..c3fd542 100644
+--- a/third_party/blink/public/platform/web_rtc_rtp_source.h
++++ b/third_party/blink/public/platform/web_rtc_rtp_source.h
+@@ -5,6 +5,8 @@
+ #ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_RTC_RTP_SOURCE_H_
+ #define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_RTC_RTP_SOURCE_H_
+
++#include <memory>
++
+ #include "base/optional.h"
+ #include "third_party/blink/public/platform/web_common.h"
+
+Missing include due to reverting ProfileManagerObserver
+---
+
+diff --git a/chrome/browser/web_applications/extensions/bookmark_app_util.cc
b/chrome/browser/web_applications/extensions/bookmark_app_util.cc
+index ee4b70a..b31e5f5 100644
+--- a/chrome/browser/web_applications/extensions/bookmark_app_util.cc
++++ b/chrome/browser/web_applications/extensions/bookmark_app_util.cc
+@@ -7,6 +7,7 @@
+ #include "base/strings/string_piece.h"
+ #include "base/values.h"
+ #include "chrome/browser/extensions/extension_service.h"
++#include "chrome/browser/profiles/profile.h"
+ #include "chrome/browser/web_applications/components/app_registrar.h"
+ #include "chrome/browser/web_applications/components/web_app_provider_base.h"
+ #include "chrome/common/chrome_features.h"
diff --git a/chromium-78-pm-crash.patch b/chromium-78-pm-crash.patch
new file mode 100644
index 0000000..ada2661
--- /dev/null
+++ b/chromium-78-pm-crash.patch
@@ -0,0 +1,43 @@
+From e73aed9a5ef15102f29ac31b70290faf5c90f9fe Mon Sep 17 00:00:00 2001
+From: Evan Stade <estade(a)chromium.org>
+Date: Wed, 16 Oct 2019 16:01:32 +0000
+Subject: [PATCH] Fix shutdown crash in ProfileManager.
+
+OnProfileMarkedForPermanentDeletion should move from
+ProfileManagerObserver to ProfileObserver, which would also
+fix this bug. However, changing the order of members is the
+quickest and most cherry-pick-able way to avoid the crash.
+
+Bug: 1005244
+Change-Id: If2db68c846dd418cd02864b57b9b543687fa1e03
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1863518
+Auto-Submit: Evan Stade <estade(a)chromium.org>
+Reviewed-by: David Roger <droger(a)chromium.org>
+Commit-Queue: Evan Stade <estade(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#706467}
+---
+
+diff --git a/chrome/browser/profiles/profile_manager.h
b/chrome/browser/profiles/profile_manager.h
+index b60df76d..7d02af7 100644
+--- a/chrome/browser/profiles/profile_manager.h
++++ b/chrome/browser/profiles/profile_manager.h
+@@ -409,6 +409,10 @@ class ProfileManager : public content::NotificationObserver,
+ const base::FilePath& profile_dir);
+ #endif // !defined(OS_ANDROID)
+
++ // Destroy after |profile_info_cache_| since Profile destruction may trigger
++ // some observers to unregister themselves.
++ base::ObserverList<ProfileManagerObserver> observers_;
++
+ // Object to cache various information about profiles. Contains information
+ // about every profile which has been created for this instance of Chrome,
+ // if it has not been explicitly deleted. It must be destroyed after
+@@ -450,8 +454,6 @@ class ProfileManager : public content::NotificationObserver,
+ // Controls whether to initialize some services. Only disabled for testing.
+ bool do_final_services_init_ = true;
+
+- base::ObserverList<ProfileManagerObserver> observers_;
+-
+ // TODO(chrome/browser/profiles/OWNERS): Usage of this in profile_manager.cc
+ // should likely be turned into DCHECK_CURRENTLY_ON(BrowserThread::UI) for
+ // consistency with surrounding code in the same file but that wasn't trivial
diff --git a/chromium-78-protobuf-export.patch b/chromium-78-protobuf-export.patch
new file mode 100644
index 0000000..ddb9e80
--- /dev/null
+++ b/chromium-78-protobuf-export.patch
@@ -0,0 +1,13 @@
+diff --git a/third_party/protobuf/src/google/protobuf/repeated_field.h
b/third_party/protobuf/src/google/protobuf/repeated_field.h
+index b5b193c..4434854 100644
+--- a/third_party/protobuf/src/google/protobuf/repeated_field.h
++++ b/third_party/protobuf/src/google/protobuf/repeated_field.h
+@@ -804,7 +804,7 @@ class StringTypeHandler {
+ // RepeatedPtrField is like RepeatedField, but used for repeated strings or
+ // Messages.
+ template <typename Element>
+-class RepeatedPtrField final : private internal::RepeatedPtrFieldBase {
++class PROTOBUF_EXPORT RepeatedPtrField final : private internal::RepeatedPtrFieldBase {
+ public:
+ RepeatedPtrField();
+ explicit RepeatedPtrField(Arena* arena);
diff --git a/chromium-78.0.3904.70-gcc-DohUpgradeEntry-nonconst.patch
b/chromium-78.0.3904.70-gcc-DohUpgradeEntry-nonconst.patch
index 6ffe580..cb436ec 100644
--- a/chromium-78.0.3904.70-gcc-DohUpgradeEntry-nonconst.patch
+++ b/chromium-78.0.3904.70-gcc-DohUpgradeEntry-nonconst.patch
@@ -1,7 +1,7 @@
diff -up chromium-78.0.3904.70/net/dns/dns_util.cc.gcc-DohUpgradeEntry-nonconst
chromium-78.0.3904.70/net/dns/dns_util.cc
---- chromium-78.0.3904.70/net/dns/dns_util.cc.gcc-DohUpgradeEntry-nonconst 2019-10-23
11:21:55.805646136 -0400
-+++ chromium-78.0.3904.70/net/dns/dns_util.cc 2019-10-23 11:23:52.693140706 -0400
-@@ -139,11 +139,11 @@ struct DohUpgradeEntry {
+--- chromium-78.0.3904.70/net/dns/dns_util.cc.gcc-DohUpgradeEntry-nonconst 2019-10-21
15:06:38.000000000 -0400
++++ chromium-78.0.3904.70/net/dns/dns_util.cc 2019-10-23 12:55:27.886546918 -0400
+@@ -139,12 +139,12 @@ struct DohUpgradeEntry {
const DnsConfig::DnsOverHttpsServerConfig dns_over_https_config;
};
@@ -11,10 +11,12 @@ diff -up
chromium-78.0.3904.70/net/dns/dns_util.cc.gcc-DohUpgradeEntry-nonconst
// DohProviderId histogram suffix list in
// tools/metrics/histograms/histograms.xml.
- static const base::NoDestructor<std::vector<const DohUpgradeEntry>>
+- upgradable_servers({
+ static const base::NoDestructor<std::vector<DohUpgradeEntry>>
- upgradable_servers({
++ upgradable_servers(std::initializer_list<DohUpgradeEntry>{
DohUpgradeEntry(
"CleanBrowsingAdult",
+ {"185.228.168.10", "185.228.169.11",
"2a0d:2a00:1::1",
@@ -222,8 +222,7 @@ const std::vector<const DohUpgradeEntry>
std::vector<const DohUpgradeEntry*> GetDohUpgradeEntriesFromNameservers(
const std::vector<IPEndPoint>& dns_servers,
diff --git a/chromium.spec b/chromium.spec
index bfa6fe8..764e85d 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -222,6 +222,14 @@
Patch59: chromium-78.0.3904.70-gcc-mark-CheckOpResult-constexpr.patch
Patch60: chromium-78.0.3904.70-gcc-sizet-fix.patch
#
https://chromium.googlesource.com/chromium/src/+/f4c3c329588b78af63aad8b4...
Patch61: chromium-78.0.3904.70-gcc-DohUpgradeEntry-nonconst.patch
+#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
+Patch62: chromium-78-gcc-noexcept.patch
+#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
+Patch63: chromium-78-pm-crash.patch
+#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
+Patch64: chromium-78-protobuf-export.patch
+#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
+Patch65: chromium-78-include.patch
# Use lstdc++ on EPEL7 only
Patch101: chromium-75.0.3770.100-epel7-stdc++.patch
@@ -747,6 +755,10 @@ udev.
%patch59 -p1 -b .gcc-mark-CheckOpResult-constexpr
%patch60 -p1 -b .gcc-sizet
%patch61 -p1 -b .gcc-DohUpgradeEntry-nonconst
+%patch62 -p1 -b .gcc-v8-noexcept
+%patch63 -p1 -b .pm-crash
+%patch64 -p1 -b .protobuf-export
+%patch65 -p1 -b .missing-includes
# Fedora branded user agent
%if 0%{?fedora}
commit dd5dd20f917b27c6596de8344b9553ad545e71bb
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Oct 23 12:02:13 2019 -0400
preserve third_party/catapult/tracing/third_party/jpeg-js, add another upstream gcc
fix
diff --git a/chromium.spec b/chromium.spec
index 3f62331..bfa6fe8 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -220,6 +220,8 @@ Patch58: chromium-78.0.3904.70-gcc-fix-invalid-pragma.patch
Patch59: chromium-78.0.3904.70-gcc-mark-CheckOpResult-constexpr.patch
#
https://chromium.googlesource.com/chromium/src/+/9662ec844017690d5fd56bf0...
Patch60: chromium-78.0.3904.70-gcc-sizet-fix.patch
+#
https://chromium.googlesource.com/chromium/src/+/f4c3c329588b78af63aad8b4...
+Patch61: chromium-78.0.3904.70-gcc-DohUpgradeEntry-nonconst.patch
# Use lstdc++ on EPEL7 only
Patch101: chromium-75.0.3770.100-epel7-stdc++.patch
@@ -744,6 +746,7 @@ udev.
%patch58 -p1 -b .gcc-invalid-pragma
%patch59 -p1 -b .gcc-mark-CheckOpResult-constexpr
%patch60 -p1 -b .gcc-sizet
+%patch61 -p1 -b .gcc-DohUpgradeEntry-nonconst
# Fedora branded user agent
%if 0%{?fedora}
@@ -962,6 +965,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/catapult/third_party/six' \
'third_party/catapult/tracing/third_party/d3' \
'third_party/catapult/tracing/third_party/gl-matrix' \
+ 'third_party/catapult/tracing/third_party/jpeg-js' \
'third_party/catapult/tracing/third_party/jszip' \
'third_party/catapult/tracing/third_party/mannwhitneyu' \
'third_party/catapult/tracing/third_party/oboe' \
commit e4b93e833781790c8f0a03f103354e7ee8b97245
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Oct 23 11:26:02 2019 -0400
another gcc fix from upstream
diff --git a/chromium-78.0.3904.70-gcc-DohUpgradeEntry-nonconst.patch
b/chromium-78.0.3904.70-gcc-DohUpgradeEntry-nonconst.patch
new file mode 100644
index 0000000..6ffe580
--- /dev/null
+++ b/chromium-78.0.3904.70-gcc-DohUpgradeEntry-nonconst.patch
@@ -0,0 +1,47 @@
+diff -up chromium-78.0.3904.70/net/dns/dns_util.cc.gcc-DohUpgradeEntry-nonconst
chromium-78.0.3904.70/net/dns/dns_util.cc
+--- chromium-78.0.3904.70/net/dns/dns_util.cc.gcc-DohUpgradeEntry-nonconst 2019-10-23
11:21:55.805646136 -0400
++++ chromium-78.0.3904.70/net/dns/dns_util.cc 2019-10-23 11:23:52.693140706 -0400
+@@ -139,11 +139,11 @@ struct DohUpgradeEntry {
+ const DnsConfig::DnsOverHttpsServerConfig dns_over_https_config;
+ };
+
+-const std::vector<const DohUpgradeEntry>& GetDohUpgradeList() {
++const std::vector<DohUpgradeEntry>& GetDohUpgradeList() {
+ // The provider names in these entries should be kept in sync with the
+ // DohProviderId histogram suffix list in
+ // tools/metrics/histograms/histograms.xml.
+- static const base::NoDestructor<std::vector<const DohUpgradeEntry>>
++ static const base::NoDestructor<std::vector<DohUpgradeEntry>>
+ upgradable_servers({
+ DohUpgradeEntry(
+ "CleanBrowsingAdult",
+@@ -222,8 +222,7 @@ const std::vector<const DohUpgradeEntry>
+ std::vector<const DohUpgradeEntry*> GetDohUpgradeEntriesFromNameservers(
+ const std::vector<IPEndPoint>& dns_servers,
+ const std::vector<std::string>& excluded_providers) {
+- const std::vector<const DohUpgradeEntry>& upgradable_servers =
+- GetDohUpgradeList();
++ const std::vector<DohUpgradeEntry>& upgradable_servers =
GetDohUpgradeList();
+ std::vector<const DohUpgradeEntry*> entries;
+
+ for (const auto& server : dns_servers) {
+@@ -417,8 +416,7 @@ std::vector<DnsConfig::DnsOverHttpsServe
+ GetDohUpgradeServersFromDotHostname(
+ const std::string& dot_server,
+ const std::vector<std::string>& excluded_providers) {
+- const std::vector<const DohUpgradeEntry>& upgradable_servers =
+- GetDohUpgradeList();
++ const std::vector<DohUpgradeEntry>& upgradable_servers =
GetDohUpgradeList();
+ std::vector<DnsConfig::DnsOverHttpsServerConfig> doh_servers;
+
+ if (dot_server.empty())
+@@ -451,8 +449,7 @@ GetDohUpgradeServersFromNameservers(
+
+ std::string GetDohProviderIdForHistogramFromDohConfig(
+ const DnsConfig::DnsOverHttpsServerConfig& doh_server) {
+- const std::vector<const DohUpgradeEntry>& upgradable_servers =
+- GetDohUpgradeList();
++ const std::vector<DohUpgradeEntry>& upgradable_servers =
GetDohUpgradeList();
+ for (const auto& upgrade_entry : upgradable_servers) {
+ if (doh_server.server_template ==
+ upgrade_entry.dns_over_https_config.server_template) {
commit d3e96e671b46f81f9fa7d5bd17631e7f06199b83
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Oct 23 11:19:54 2019 -0400
more 78 fixes
diff --git a/chromium-78.0.3904.70-gcc-sizet-fix.patch
b/chromium-78.0.3904.70-gcc-sizet-fix.patch
new file mode 100644
index 0000000..b95b0ed
--- /dev/null
+++ b/chromium-78.0.3904.70-gcc-sizet-fix.patch
@@ -0,0 +1,20 @@
+diff -up chromium-78.0.3904.70/base/containers/intrusive_heap.h.gcc-sizet
chromium-78.0.3904.70/base/containers/intrusive_heap.h
+--- chromium-78.0.3904.70/base/containers/intrusive_heap.h.gcc-sizet 2019-10-23
11:02:56.767907986 -0400
++++ chromium-78.0.3904.70/base/containers/intrusive_heap.h 2019-10-23 11:04:58.317351636
-0400
+@@ -131,6 +131,7 @@
+
+ #include <algorithm>
+ #include <functional>
++#include <limits>
+ #include <type_traits>
+ #include <utility>
+ #include <vector>
+@@ -149,7 +150,7 @@ namespace base {
+ // in place.
+ class BASE_EXPORT HeapHandle {
+ public:
+- enum : size_t { kInvalidIndex = -1 };
++ enum : size_t { kInvalidIndex = std::numeric_limits<size_t>::max() };
+
+ constexpr HeapHandle() = default;
+ constexpr HeapHandle(const HeapHandle& other) = default;
diff --git a/chromium.spec b/chromium.spec
index 675a54b..3f62331 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -218,6 +218,8 @@ Patch57: chromium-77.0.3865.120-gcc-fix-zlib-symbol-visibility.patch
Patch58: chromium-78.0.3904.70-gcc-fix-invalid-pragma.patch
#
https://chromium.googlesource.com/chromium/src/+/2db67d40ef766c63a7389686...
Patch59: chromium-78.0.3904.70-gcc-mark-CheckOpResult-constexpr.patch
+#
https://chromium.googlesource.com/chromium/src/+/9662ec844017690d5fd56bf0...
+Patch60: chromium-78.0.3904.70-gcc-sizet-fix.patch
# Use lstdc++ on EPEL7 only
Patch101: chromium-75.0.3770.100-epel7-stdc++.patch
@@ -741,6 +743,7 @@ udev.
%patch57 -p1 -b .gcc-fix-zlib-symbol-visibility
%patch58 -p1 -b .gcc-invalid-pragma
%patch59 -p1 -b .gcc-mark-CheckOpResult-constexpr
+%patch60 -p1 -b .gcc-sizet
# Fedora branded user agent
%if 0%{?fedora}
@@ -903,7 +906,7 @@ ln -s %{_bindir}/node third_party/node/linux/node-linux-x64/bin/node
# 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/double_conversion' \
'base/third_party/dynamic_annotations' \
'base/third_party/icu' \
'base/third_party/libevent' \
commit 6944f231efaf722f2d99cae67145721be2eb8826
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Oct 23 10:20:43 2019 -0400
initial v78 commit, note, NOT READY FOR BUILD YET
diff --git a/chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
b/chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
deleted file mode 100644
index d071e81..0000000
--- a/chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up
chromium-71.0.3578.98/third_party/tcmalloc/gperftools-2.0/chromium/src/base/linux_syscall_support.h.gcc9
chromium-71.0.3578.98/third_party/tcmalloc/gperftools-2.0/chromium/src/base/linux_syscall_support.h
----
chromium-71.0.3578.98/third_party/tcmalloc/gperftools-2.0/chromium/src/base/linux_syscall_support.h.gcc9 2019-01-08
13:27:25.193614727 -0500
-+++
chromium-71.0.3578.98/third_party/tcmalloc/gperftools-2.0/chromium/src/base/linux_syscall_support.h 2019-01-08
13:27:35.161392234 -0500
-@@ -1231,7 +1231,7 @@ typedef unsigned long int ulong;
- "d"(LSS_SYSCALL_ARG(parent_tidptr)),
- "r"(LSS_SYSCALL_ARG(newtls)),
- "r"(LSS_SYSCALL_ARG(child_tidptr))
-- : "rsp", "memory", "r8",
"r10", "r11", "rcx");
-+ : "memory", "r8", "r10",
"r11", "rcx");
- }
- LSS_RETURN(int, __res);
- }
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
deleted file mode 100644
index cc91d1e..0000000
--- a/chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-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-vtable-symbol-undefined.patch
b/chromium-76.0.3809.100-vtable-symbol-undefined.patch
deleted file mode 100644
index 64532df..0000000
--- a/chromium-76.0.3809.100-vtable-symbol-undefined.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-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-77.0.3865.120-silence-outdated-build-noise.patch
b/chromium-77.0.3865.120-silence-outdated-build-noise.patch
index 22e1e78..f2d4735 100644
--- a/chromium-77.0.3865.120-silence-outdated-build-noise.patch
+++ b/chromium-77.0.3865.120-silence-outdated-build-noise.patch
@@ -32,7 +32,7 @@ index 432e3789eced0..07850fdf80cd7 100644
#include "chrome/browser/browser_process.h"
#include "chrome/browser/google/google_brand.h"
#include "chrome/common/chrome_switches.h"
-@@ -74,6 +75,14 @@ constexpr base::TimeDelta kNotifyCycleTimeForTesting =
+@@ -73,6 +74,14 @@ constexpr base::TimeDelta kNotifyCycleTimeForTesting =
// The number of days after which we identify a build/install as outdated.
constexpr base::TimeDelta kOutdatedBuildAge = base::TimeDelta::FromDays(12 * 7);
@@ -47,13 +47,14 @@ index 432e3789eced0..07850fdf80cd7 100644
// Return the string that was passed as a value for the
// kCheckForUpdateIntervalSec switch.
std::string CmdLineInterval() {
-@@ -403,6 +412,9 @@ bool UpgradeDetectorImpl::DetectOutdated
- if (base::IsMachineExternallyManaged())
+@@ -406,6 +415,10 @@ bool UpgradeDetectorImpl::DetectOutdated
return false;
+ }
#endif
+
+ if (!ShouldDetectOutdatedBuilds())
+ return false;
++
}
base::Time network_time;
diff --git a/chromium-77.0.3865.75-certificate-transparency.patch
b/chromium-77.0.3865.75-certificate-transparency.patch
deleted file mode 100644
index 82e2958..0000000
--- a/chromium-77.0.3865.75-certificate-transparency.patch
+++ /dev/null
@@ -1,539 +0,0 @@
-diff -up
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc
----
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc.certificate-transparency 2019-09-12
16:09:52.818635106 +0200
-+++
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc 2019-09-12
16:11:07.662562005 +0200
-@@ -21,6 +21,7 @@
- #include "components/version_info/version_info.h"
- #include "content/public/common/content_switches.h"
- #include "content/public/common/user_agent.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"
-@@ -356,3 +357,55 @@ IN_PROC_BROWSER_TEST_P(SystemNetworkCont
- INSTANTIATE_TEST_SUITE_P(,
- SystemNetworkContextManagerFreezeQUICUaBrowsertest,
- ::testing::Values(true, false));
-+
-+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-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc
----
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc.certificate-transparency 2019-09-09
23:55:09.000000000 +0200
-+++ chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc 2019-09-12
16:09:52.819635118 +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"
-@@ -50,6 +52,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"
-@@ -79,6 +82,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;
-
-@@ -658,14 +675,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 =
-@@ -723,6 +761,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-77.0.3865.75/chrome/browser/net/system_network_context_manager.h.certificate-transparency
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.h
----
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.h.certificate-transparency 2019-09-09
23:55:09.000000000 +0200
-+++ chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.h 2019-09-12
16:09:52.819635118 +0200
-@@ -139,6 +139,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-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc
----
chromium-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
-+++ chromium-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc 2019-09-12
16:09:52.820635131 +0200
-@@ -4836,7 +4836,7 @@ IN_PROC_BROWSER_TEST_F(PolicyTest,
- 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-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc
----
chromium-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
-+++
chromium-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc 2019-09-12
16:09:52.821635143 +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-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
----
chromium-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
-+++
chromium-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc 2019-09-12
16:09:52.821635143 +0200
-@@ -433,6 +433,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-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc
----
chromium-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
-+++ chromium-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc 2019-09-12
16:09:52.822635155 +0200
-@@ -1853,8 +1853,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-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h.certificate-transparency
chromium-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h
----
chromium-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h.certificate-transparency 2019-09-09
23:55:14.000000000 +0200
-+++
chromium-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h 2019-09-12
16:09:52.823635168 +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-77.0.3865.75/services/network/network_context.cc.certificate-transparency
chromium-77.0.3865.75/services/network/network_context.cc
----
chromium-77.0.3865.75/services/network/network_context.cc.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
-+++ chromium-77.0.3865.75/services/network/network_context.cc 2019-09-12
16:09:52.823635168 +0200
-@@ -36,6 +36,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"
-@@ -1877,16 +1878,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())
-@@ -1936,8 +1927,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) {
-@@ -1950,6 +1953,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-77.0.3865.75/services/network/network_context_unittest.cc.certificate-transparency
chromium-77.0.3865.75/services/network/network_context_unittest.cc
----
chromium-77.0.3865.75/services/network/network_context_unittest.cc.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
-+++ chromium-77.0.3865.75/services/network/network_context_unittest.cc 2019-09-12
16:13:10.479056669 +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/remote.h"
- #include "mojo/public/cpp/bindings/self_owned_receiver.h"
- #include "mojo/public/cpp/system/data_pipe_utils.h"
-@@ -115,6 +118,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(DISABLE_FTP_SUPPORT)
- #include "net/ftp/ftp_auth_cache.h"
- #endif // !BUILDFLAG(DISABLE_FTP_SUPPORT)
-@@ -5958,6 +5966,72 @@ TEST_F(NetworkContextSplitCacheTest,
- true /* was_cached */, true /* is_navigation */);
- }
-
-+#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-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom.certificate-transparency
chromium-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom
----
chromium-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
-+++ chromium-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom 2019-09-12
16:09:52.824635180 +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-77.0.3865.75/services/network/public/mojom/network_context.mojom.certificate-transparency
chromium-77.0.3865.75/services/network/public/mojom/network_context.mojom
----
chromium-77.0.3865.75/services/network/public/mojom/network_context.mojom.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
-+++ chromium-77.0.3865.75/services/network/public/mojom/network_context.mojom 2019-09-12
16:09:52.825635192 +0200
-@@ -239,15 +239,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;
-
-@@ -300,6 +291,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]
-@@ -311,6 +311,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-77.0.3865.75-gcc-abstract-class.patch
b/chromium-77.0.3865.75-gcc-abstract-class.patch
deleted file mode 100644
index 6d77299..0000000
--- a/chromium-77.0.3865.75-gcc-abstract-class.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From f08cb0022527081c078e8b96062e6c9b4fbda151 Mon Sep 17 00:00:00 2001
-From: Jose Dapena Paz <jose.dapena(a)lge.com>
-Date: Fri, 26 Jul 2019 16:48:06 +0000
-Subject: [PATCH] BinaryUploadService: change parameter passing that cannot afford
abstract class
-
-The method UploadForDeepScanning gets a Request as parameter. But Request is an
-abstract class, so GCC will not allow that declaration (polimorphycs should be
-passed by reference). Use std::unique_ptr so BinaryUploadService can assume
-ownership.
-
-Bug: 819294
-Change-Id: I9e8c75cc92b01abd704d9049b0421555377da5ba
-Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1713550
-Reviewed-by: Daniel Rubery <drubery(a)chromium.org>
-Commit-Queue: Jos Dapena Paz <jose.dapena(a)lge.com>
-Cr-Commit-Position: refs/heads/master@{#681333}
----
-
-diff --git a/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
b/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
-index 6430c89..4e90487 100644
---- a/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
-+++ b/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
-@@ -10,7 +10,7 @@
- namespace safe_browsing {
-
- void BinaryUploadService::UploadForDeepScanning(
-- BinaryUploadService::Request request) {
-+ std::unique_ptr<BinaryUploadService::Request> request) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- NOTREACHED();
- }
-diff --git a/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
b/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
-index d2dfd83..9b6f395 100644
---- a/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
-+++ b/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
-@@ -5,6 +5,8 @@
- #ifndef CHROME_BROWSER_SAFE_BROWSING_DOWNLOAD_PROTECTION_BINARY_UPLOAD_SERVICE_H_
- #define CHROME_BROWSER_SAFE_BROWSING_DOWNLOAD_PROTECTION_BINARY_UPLOAD_SERVICE_H_
-
-+#include <memory>
-+
- #include "base/callback.h"
- #include "components/safe_browsing/proto/webprotect.pb.h"
-
-@@ -40,6 +42,7 @@
- public:
- // |callback| will run on the UI thread.
- explicit Request(Callback callback);
-+ virtual ~Request() = default;
- Request(const Request&) = delete;
- Request& operator=(const Request&) = delete;
-
-@@ -67,7 +70,7 @@
- // Upload the given file contents for deep scanning. The results will be
- // returned asynchronously by calling |request|'s |callback|. This must be
- // called on the UI thread.
-- void UploadForDeepScanning(Request request);
-+ void UploadForDeepScanning(std::unique_ptr<Request> request);
- };
-
- } // namespace safe_browsing
diff --git a/chromium-77.0.3865.75-harfbuzz-subset.patch
b/chromium-77.0.3865.75-harfbuzz-subset.patch
deleted file mode 100644
index 55d78d1..0000000
--- a/chromium-77.0.3865.75-harfbuzz-subset.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 27e25336b8316ff3ec4e464058682ed85801fd06 Mon Sep 17 00:00:00 2001
-From: Raphael Kubo da Costa <raphael.kubo.da.costa(a)intel.com>
-Date: Mon, 29 Jul 2019 10:54:28 +0000
-Subject: [PATCH] Also link against libharfbuzz-subset when use_system_harfbuzz is true
-
-When building HarfBuzz as part of Chromium, there is a single source set
-with all the files we need in the build.
-
-Upstream HarfBuzz, on the other hand, produces a few different libraries:
-harfbuzz, harfbuzz-icu and harfbuzz-subset. When |use_system_harfbuzz| is
-true, we were only looking for (and using) harfbuzz.pc with pkg-config even
-though we also use symbols from libharfbuzz-subset.so. This resulted in
-errors when linking:
-
- ld: obj/skia/skia/SkPDFSubsetFont.o: in function
`SkPDFSubsetFont(sk_sp<SkData>, SkPDFGlyphUse const&,
SkPDF::Metadata::Subsetter, char const*, int)':
-
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x48a):
undefined reference to `hb_subset_input_create_or_fail'
- ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x4af):
undefined reference to `hb_subset_input_glyph_set'
- ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x5d7):
undefined reference to `hb_subset_input_set_retain_gids'
- ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x5e4):
undefined reference to `hb_subset_input_set_drop_hints'
- ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x5f3):
undefined reference to `hb_subset'
- ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x66f):
undefined reference to `hb_subset_input_destroy'
-
-as reported in
-https://groups.google.com/a/chromium.org/d/msg/chromium-packagers/UyJsVJ5QqWo/jSv5z7-rEQAJ
-
-Change-Id: I997af075c7b7263cd7cc71a63db5b0f93bd1ab59
-Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1715288
-Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa(a)intel.com>
-Commit-Queue: Dominik Rttsches <drott(a)chromium.org>
-Reviewed-by: Dominik Rttsches <drott(a)chromium.org>
-Cr-Commit-Position: refs/heads/master@{#681760}
----
-
-diff --git a/third_party/harfbuzz-ng/BUILD.gn b/third_party/harfbuzz-ng/BUILD.gn
-index 37d8e33..72013eb1d 100644
---- a/third_party/harfbuzz-ng/BUILD.gn
-+++ b/third_party/harfbuzz-ng/BUILD.gn
-@@ -16,7 +16,10 @@
- "//third_party:freetype_harfbuzz",
- "//third_party/freetype:freetype_source",
- ]
-- packages = [ "harfbuzz" ]
-+ packages = [
-+ "harfbuzz",
-+ "harfbuzz-subset",
-+ ]
- }
- } else {
- config("harfbuzz_config") {
diff --git a/chromium-77.0.3865.75-missing-limits.patch
b/chromium-77.0.3865.75-missing-limits.patch
deleted file mode 100644
index 3ac1770..0000000
--- a/chromium-77.0.3865.75-missing-limits.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 5baf7df7f4c5971dab552897eeef94b194650ce5 Mon Sep 17 00:00:00 2001
-From: Dave Tapuska <dtapuska(a)chromium.org>
-Date: Mon, 12 Aug 2019 22:30:13 +0000
-Subject: [PATCH] Fix build failure due to missing include for std::numeric_limits usage.
-
-Some configurations fail to build, limits should have been included.
-
-BUG=992832
-
-Change-Id: I894ba0543bfcef101c93259e39a31d12ae6d035c
-Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1747981
-Commit-Queue: Dave Tapuska <dtapuska(a)chromium.org>
-Reviewed-by: Mostyn Bramley-Moore <mostynb(a)vewd.com>
-Cr-Commit-Position: refs/heads/master@{#686214}
----
-
-diff --git a/third_party/blink/renderer/platform/exported/web_time_range.cc
b/third_party/blink/renderer/platform/exported/web_time_range.cc
-index 384566a..68d83e1 100644
---- a/third_party/blink/renderer/platform/exported/web_time_range.cc
-+++ b/third_party/blink/renderer/platform/exported/web_time_range.cc
-@@ -31,6 +31,7 @@
- #include "third_party/blink/public/platform/web_time_range.h"
-
- #include <cmath>
-+#include <limits>
-
- namespace blink {
-
diff --git a/chromium-77.0.3865.75-unbundle-zlib.patch
b/chromium-77.0.3865.75-unbundle-zlib.patch
deleted file mode 100644
index d6c45ad..0000000
--- a/chromium-77.0.3865.75-unbundle-zlib.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From e1bbdec720a333937bd1b990ae0f7ee97db0d3b0 Mon Sep 17 00:00:00 2001
-From: Your Name <you(a)example.com>
-Date: Fri, 28 Jun 2019 15:56:23 +0000
-Subject: [PATCH] update zlib
-
----
- third_party/perfetto/gn/BUILD.gn | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/third_party/perfetto/gn/BUILD.gn b/third_party/perfetto/gn/BUILD.gn
-index c951f5f..297eee3 100644
---- a/third_party/perfetto/gn/BUILD.gn
-+++ b/third_party/perfetto/gn/BUILD.gn
-@@ -200,7 +200,7 @@ group("zlib") {
- "//buildtools:zlib",
- ]
- } else if (build_with_chromium) {
-- public_configs = [ "//third_party/zlib:zlib_config" ]
-+ public_configs = [ "//third_party/zlib:system_zlib" ]
- public_deps = [
- "//third_party/zlib",
- ]
---
-2.21.0
-
diff --git a/chromium-77.0.3865.90-linked-hash-set.patch
b/chromium-77.0.3865.90-linked-hash-set.patch
deleted file mode 100644
index f921f1a..0000000
--- a/chromium-77.0.3865.90-linked-hash-set.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From 74138b9febd37eac0fc26b8efb110014a83a52c6 Mon Sep 17 00:00:00 2001
-From: Jeremy Roman <jbroman(a)chromium.org>
-Date: Wed, 07 Aug 2019 13:26:48 +0000
-Subject: [PATCH] WTF: Make LinkedHashSet understand values for which memset
initialization would be bad.
-
-Includes a unit test which fails before, and uses this to fix FontCacheKeyTraits.
-
-Bug: 980025
-Change-Id: If41f97444c7fd37b9b95d6dadaf3da5689079e9e
-Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1739948
-Reviewed-by: Kentaro Hara <haraken(a)chromium.org>
-Reviewed-by: Yutaka Hirano <yhirano(a)chromium.org>
-Commit-Queue: Jeremy Roman <jbroman(a)chromium.org>
-Cr-Commit-Position: refs/heads/master@{#684731}
----
-
-diff --git a/third_party/blink/renderer/platform/fonts/font_cache_key.h
b/third_party/blink/renderer/platform/fonts/font_cache_key.h
-index 0efc8fb..90063cb 100644
---- a/third_party/blink/renderer/platform/fonts/font_cache_key.h
-+++ b/third_party/blink/renderer/platform/fonts/font_cache_key.h
-@@ -133,6 +133,10 @@
-
- struct FontCacheKeyTraits : WTF::SimpleClassHashTraits<FontCacheKey> {
- STATIC_ONLY(FontCacheKeyTraits);
-+
-+ // std::string's empty state need not be zero in all implementations,
-+ // and it is held within FontFaceCreationParams.
-+ static const bool kEmptyValueIsZero = false;
- };
-
- } // namespace blink
-diff --git a/third_party/blink/renderer/platform/wtf/linked_hash_set.h
b/third_party/blink/renderer/platform/wtf/linked_hash_set.h
-index b35b6e9..77e524c 100644
---- a/third_party/blink/renderer/platform/wtf/linked_hash_set.h
-+++ b/third_party/blink/renderer/platform/wtf/linked_hash_set.h
-@@ -146,6 +146,11 @@
- LinkedHashSetNodeBase* next)
- : LinkedHashSetNodeBase(prev, next), value_(value) {}
-
-+ LinkedHashSetNode(ValueArg&& value,
-+ LinkedHashSetNodeBase* prev,
-+ LinkedHashSetNodeBase* next)
-+ : LinkedHashSetNodeBase(prev, next), value_(std::move(value)) {}
-+
- LinkedHashSetNode(LinkedHashSetNode&& other)
- : LinkedHashSetNodeBase(std::move(other)),
- value_(std::move(other.value_)) {}
-@@ -445,10 +450,13 @@
-
- // The slot is empty when the next_ field is zero so it's safe to zero
- // the backing.
-- static const bool kEmptyValueIsZero = true;
-+ static const bool kEmptyValueIsZero = ValueTraits::kEmptyValueIsZero;
-
- static const bool kHasIsEmptyValueFunction = true;
- static bool IsEmptyValue(const Node& node) { return !node.next_; }
-+ static Node EmptyValue() {
-+ return Node(ValueTraits::EmptyValue(), nullptr, nullptr);
-+ }
-
- static const int kDeletedValue = -1;
-
-diff --git a/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
b/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
-index 4c3f899..cd1be00 100644
---- a/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
-+++ b/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
-@@ -487,6 +487,7 @@
- };
-
- struct Complicated {
-+ Complicated() : Complicated(0) {}
- Complicated(int value) : simple_(value) { objects_constructed_++; }
-
- Complicated(const Complicated& other) : simple_(other.simple_) {
-@@ -495,9 +496,6 @@
-
- Simple simple_;
- static int objects_constructed_;
--
-- private:
-- Complicated() = delete;
- };
-
- int Complicated::objects_constructed_ = 0;
-@@ -731,4 +729,45 @@
-
- } // anonymous namespace
-
-+// A unit type which objects to its state being initialized wrong.
-+struct InvalidZeroValue {
-+ InvalidZeroValue() = default;
-+ InvalidZeroValue(WTF::HashTableDeletedValueType) : deleted_(true) {}
-+ ~InvalidZeroValue() { CHECK(ok_); }
-+ bool IsHashTableDeletedValue() const { return deleted_; }
-+
-+ bool ok_ = true;
-+ bool deleted_ = false;
-+};
-+
-+template <>
-+struct HashTraits<InvalidZeroValue> :
SimpleClassHashTraits<InvalidZeroValue> {
-+ static const bool kEmptyValueIsZero = false;
-+};
-+
-+template <>
-+struct DefaultHash<InvalidZeroValue> {
-+ struct Hash {
-+ static unsigned GetHash(const InvalidZeroValue&) { return 0; }
-+ static bool Equal(const InvalidZeroValue&, const InvalidZeroValue&) {
-+ return true;
-+ }
-+ };
-+};
-+
-+template <typename Set>
-+class ListOrLinkedHashSetInvalidZeroTest : public testing::Test {};
-+
-+using InvalidZeroValueSetTypes =
-+ testing::Types<ListHashSet<InvalidZeroValue>,
-+ ListHashSet<InvalidZeroValue, 1>,
-+ LinkedHashSet<InvalidZeroValue>>;
-+TYPED_TEST_SUITE(ListOrLinkedHashSetInvalidZeroTest, InvalidZeroValueSetTypes);
-+
-+TYPED_TEST(ListOrLinkedHashSetInvalidZeroTest, InvalidZeroValue) {
-+ using Set = TypeParam;
-+ Set set;
-+ set.insert(InvalidZeroValue());
-+}
-+
- } // namespace WTF
diff --git a/chromium-78.0.3904.70-gcc-fix-invalid-pragma.patch
b/chromium-78.0.3904.70-gcc-fix-invalid-pragma.patch
new file mode 100644
index 0000000..eb0efbd
--- /dev/null
+++ b/chromium-78.0.3904.70-gcc-fix-invalid-pragma.patch
@@ -0,0 +1,16 @@
+diff -up chromium-78.0.3904.70/base/allocator/debugallocation_shim.cc.invalid-pragma
chromium-78.0.3904.70/base/allocator/debugallocation_shim.cc
+---
chromium-78.0.3904.70/base/allocator/debugallocation_shim.cc.invalid-pragma 2019-10-23
10:00:41.361932768 -0400
++++ chromium-78.0.3904.70/base/allocator/debugallocation_shim.cc 2019-10-23
10:02:09.778100948 -0400
+@@ -7,9 +7,10 @@
+ // AFDO can mess with them. Better not to use AFDO there. This is a
+ // temporary hack. We will add a mechanism in the build system to
+ // avoid using -fauto-profile for tcmalloc files.
+-#if !defined(__clang__) && (defined(OS_CHROMEOS) || __GNUC__ > 5)
++#if !defined(__clang__) && \
++ (defined(OS_CHROMEOS) || (__GNUC__ > 5 && __GNUC__ < 7))
+ // Note that this option only seems to be available in the chromeos GCC 4.9
+-// toolchain, and stock GCC 5 and up.
++// toolchain, and stock GCC 5 upto 7.
+ #pragma GCC optimize ("no-auto-profile")
+ #endif
+
diff --git a/chromium-78.0.3904.70-gcc-mark-CheckOpResult-constexpr.patch
b/chromium-78.0.3904.70-gcc-mark-CheckOpResult-constexpr.patch
new file mode 100644
index 0000000..e5502cf
--- /dev/null
+++ b/chromium-78.0.3904.70-gcc-mark-CheckOpResult-constexpr.patch
@@ -0,0 +1,12 @@
+diff -up chromium-78.0.3904.70/base/logging.h.constexpr
chromium-78.0.3904.70/base/logging.h
+--- chromium-78.0.3904.70/base/logging.h.constexpr 2019-10-23 10:06:53.434313793 -0400
++++ chromium-78.0.3904.70/base/logging.h 2019-10-23 10:07:17.490853038 -0400
+@@ -530,7 +530,7 @@ BASE_EXPORT extern std::ostream* g_swall
+ class CheckOpResult {
+ public:
+ // |message| must be non-null if and only if the check failed.
+- CheckOpResult(std::string* message) : message_(message) {}
++ constexpr CheckOpResult(std::string* message) : message_(message) {}
+ // Returns true if the check succeeded.
+ operator bool() const { return !message_; }
+ // Returns the message.
diff --git a/chromium-78.0.3904.70-gcc9-drop-rsp-clobber.patch
b/chromium-78.0.3904.70-gcc9-drop-rsp-clobber.patch
new file mode 100644
index 0000000..6785b09
--- /dev/null
+++ b/chromium-78.0.3904.70-gcc9-drop-rsp-clobber.patch
@@ -0,0 +1,24 @@
+diff -up
chromium-78.0.3904.70/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h.gcc9
chromium-78.0.3904.70/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h
+---
chromium-78.0.3904.70/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h.gcc9 2019-10-23
08:58:16.153251961 -0400
++++
chromium-78.0.3904.70/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h 2019-10-23
08:58:36.896862347 -0400
+@@ -1486,7 +1486,7 @@ struct kernel_stat {
+ "d"(LSS_SYSCALL_ARG(parent_tidptr)),
+ "r"(LSS_SYSCALL_ARG(newtls)),
+ "r"(LSS_SYSCALL_ARG(child_tidptr))
+- : "rsp", "memory", "r8",
"r10", "r11", "rcx");
++ : "memory", "r8", "r10",
"r11", "rcx");
+ }
+ LSS_RETURN(int, __res);
+ }
+diff -up
chromium-78.0.3904.70/third_party/tcmalloc/vendor/src/base/linux_syscall_support.h.gcc9
chromium-78.0.3904.70/third_party/tcmalloc/vendor/src/base/linux_syscall_support.h
+---
chromium-78.0.3904.70/third_party/tcmalloc/vendor/src/base/linux_syscall_support.h.gcc9 2019-10-23
08:58:59.623435488 -0400
++++
chromium-78.0.3904.70/third_party/tcmalloc/vendor/src/base/linux_syscall_support.h 2019-10-23
08:59:16.113125772 -0400
+@@ -1485,7 +1485,7 @@ struct kernel_stat {
+ "d"(LSS_SYSCALL_ARG(parent_tidptr)),
+ "r"(LSS_SYSCALL_ARG(newtls)),
+ "r"(LSS_SYSCALL_ARG(child_tidptr))
+- : "rsp", "memory", "r8",
"r10", "r11", "rcx");
++ : "memory", "r8", "r10",
"r11", "rcx");
+ }
+ LSS_RETURN(int, __res);
+ }
diff --git a/chromium-78.0.3904.70-unbundle-zlib.patch
b/chromium-78.0.3904.70-unbundle-zlib.patch
new file mode 100644
index 0000000..155990e
--- /dev/null
+++ b/chromium-78.0.3904.70-unbundle-zlib.patch
@@ -0,0 +1,12 @@
+diff -up chromium-78.0.3904.70/third_party/perfetto/gn/BUILD.gn.unbundle-zlib
chromium-78.0.3904.70/third_party/perfetto/gn/BUILD.gn
+--- chromium-78.0.3904.70/third_party/perfetto/gn/BUILD.gn.unbundle-zlib 2019-10-23
09:25:44.419884187 -0400
++++ chromium-78.0.3904.70/third_party/perfetto/gn/BUILD.gn 2019-10-23 09:29:53.553442745
-0400
+@@ -276,7 +276,7 @@ if (enable_perfetto_trace_processor || e
+ "//buildtools:zlib",
+ ]
+ } else {
+- public_configs = [ "//third_party/zlib:zlib_config" ]
++ public_configs = [ "//third_party/zlib:system_zlib" ]
+ public_deps = [
+ "//third_party/zlib",
+ ]
diff --git a/chromium-78.0.3904.70-vtable-symbol-undefined.patch
b/chromium-78.0.3904.70-vtable-symbol-undefined.patch
new file mode 100644
index 0000000..13751a2
--- /dev/null
+++ b/chromium-78.0.3904.70-vtable-symbol-undefined.patch
@@ -0,0 +1,11 @@
+diff -up
chromium-78.0.3904.70/net/quic/platform/impl/quic_default_proof_providers_impl.cc.vtable-symbol-undefined
chromium-78.0.3904.70/net/quic/platform/impl/quic_default_proof_providers_impl.cc
+---
chromium-78.0.3904.70/net/quic/platform/impl/quic_default_proof_providers_impl.cc.vtable-symbol-undefined 2019-10-23
09:12:08.754351798 -0400
++++
chromium-78.0.3904.70/net/quic/platform/impl/quic_default_proof_providers_impl.cc 2019-10-23
09:19:28.278431430 -0400
+@@ -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(
+ bool,
diff --git a/chromium.spec b/chromium.spec
index 8994527..675a54b 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -154,15 +154,15 @@ BuildRequires: libicu-devel >= 5.4
%global chromoting_client_id %nil
%endif
-%global majorversion 77
+%global majorversion 78
%if %{freeworld}
Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
%else
Name: chromium%{chromium_channel}
%endif
-Version: %{majorversion}.0.3865.120
-Release: 4%{?dist}
+Version: %{majorversion}.0.3904.70
+Release: 1%{?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)
@@ -191,7 +191,7 @@ Patch8: chromium-71.0.3578.98-widevine-r3.patch
# Disable fontconfig cache magic that breaks remoting
Patch9: chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch
# drop rsp clobber, which breaks gcc9 (thanks to Jeff Law)
-Patch10: chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
+Patch10: chromium-78.0.3904.70-gcc9-drop-rsp-clobber.patch
# Try to load widevine from other places
Patch11: chromium-widevine-other-locations.patch
# Try to fix version.py for Rawhide
@@ -200,34 +200,24 @@ Patch12: chromium-71.0.3578.98-py2-bootstrap.patch
Patch13: chromium-77.0.3865.75-fedora-user-agent.patch
# rename function to avoid conflict with rawhide glibc "gettid()"
Patch50: chromium-75.0.3770.80-grpc-gettid-fix.patch
-# In GCC one can't use alignas() for exported classes
-#
https://chromium.googlesource.com/chromium/src.git/+/8148fd96ae04a1150a9c...
-Patch51: chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
# Needs to be submitted..
-Patch52: chromium-76.0.3809.100-gcc-remoting-constexpr.patch
+Patch51: chromium-76.0.3809.100-gcc-remoting-constexpr.patch
# Needs to be submitted.. (ugly hack, needs to be added properly to GN files)
-Patch53: chromium-76.0.3809.100-vtable-symbol-undefined.patch
-#
https://chromium.googlesource.com/chromium/src.git/+/3c9720245e440c4b7222...
-Patch54: chromium-77.0.3865.75-certificate-transparency.patch
+Patch52: chromium-78.0.3904.70-vtable-symbol-undefined.patch
#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
-Patch55: chromium-77.0.3865.75-unbundle-zlib.patch
+Patch53: chromium-78.0.3904.70-unbundle-zlib.patch
# Needs to be submitted..
-Patch56: chromium-77.0.3865.75-gcc-include-memory.patch
+Patch54: chromium-77.0.3865.75-gcc-include-memory.patch
#
https://chromium.googlesource.com/chromium/src/+/6b633c4b14850df376d5cec5...
-Patch57: chromium-77.0.3865.75-base-gcc-no-alignas.patch
-#
https://chromium.googlesource.com/chromium/src/+/27e25336b8316ff3ec4e4640...
-Patch58: chromium-77.0.3865.75-harfbuzz-subset.patch
-#
https://chromium.googlesource.com/chromium/src.git/+/f08cb0022527081c078e...
-Patch59: chromium-77.0.3865.75-gcc-abstract-class.patch
-#
https://chromium.googlesource.com/chromium/src/+/5baf7df7f4c5971dab552897...
-Patch60: chromium-77.0.3865.75-missing-limits.patch
-#
https://chromium.googlesource.com/chromium/src/+/74138b9febd37eac0fc26b8e...
-Patch61: chromium-77.0.3865.90-linked-hash-set.patch
+Patch55: chromium-77.0.3865.75-base-gcc-no-alignas.patch
#
https://chromium.googlesource.com/chromium/src/+/e79d9d0e06b825d2e62b38db...
-Patch62: chromium-77.0.3865.120-silence-outdated-build-noise.patch
+Patch56: chromium-77.0.3865.120-silence-outdated-build-noise.patch
#
https://chromium.googlesource.com/chromium/src/+/9c3aed099b010a75594a0efd...
-Patch63: chromium-77.0.3865.120-gcc-fix-zlib-symbol-visibility.patch
-
+Patch57: chromium-77.0.3865.120-gcc-fix-zlib-symbol-visibility.patch
+#
https://chromium.googlesource.com/chromium/src/+/7358ea985cb496fa7fd1a526...
+Patch58: chromium-78.0.3904.70-gcc-fix-invalid-pragma.patch
+#
https://chromium.googlesource.com/chromium/src/+/2db67d40ef766c63a7389686...
+Patch59: chromium-78.0.3904.70-gcc-mark-CheckOpResult-constexpr.patch
# Use lstdc++ on EPEL7 only
Patch101: chromium-75.0.3770.100-epel7-stdc++.patch
@@ -742,19 +732,15 @@ udev.
# Short term fixes (usually gcc and backports)
%patch50 -p1 -b .gettid-fix
-%patch51 -p1 -b .gcc-no-alignas-and-export
-%patch52 -p1 -b .gcc-remoting-constexpr
-%patch53 -p1 -b .vtable-symbol-undefined
-%patch54 -p1 -b .certificate-transparency
-%patch55 -p1 -b .unbundle-zlib
-%patch56 -p1 -b .gcc-include-memory
-%patch57 -p1 -b .base-gcc-no-alignas
-%patch58 -p1 -b .harfbuzz-subset
-%patch59 -p1 -b .gcc-abstract-class
-%patch60 -p1 -b .missing-limits
-%patch61 -p1 -b .linked-hash-set
-%patch62 -p1 -b .silence-outdated-build-noise
-%patch63 -p1 -b .gcc-fix-zlib-symbol-visibility
+%patch51 -p1 -b .gcc-remoting-constexpr
+%patch52 -p1 -b .vtable-symbol-undefined
+%patch53 -p1 -b .unbundle-zlib
+%patch54 -p1 -b .gcc-include-memory
+%patch55 -p1 -b .base-gcc-no-alignas
+%patch56 -p1 -b .silence-outdated-build-noise
+%patch57 -p1 -b .gcc-fix-zlib-symbol-visibility
+%patch58 -p1 -b .gcc-invalid-pragma
+%patch59 -p1 -b .gcc-mark-CheckOpResult-constexpr
# Fedora branded user agent
%if 0%{?fedora}
@@ -1669,6 +1655,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
+* Wed Oct 23 2019 Tom Callaway <spot(a)fedoraproject.org> - 78.0.3904.80-1
+- update to 78.0.3904.80
+
* Wed Oct 16 2019 Tom Callaway <spot(a)fedoraproject.org> - 77.0.3865.120-4
- upstream fix for zlib symbol exports with gcc
diff --git a/sources b/sources
index 978a610..c18b1d0 100644
--- a/sources
+++ b/sources
@@ -18,3 +18,4 @@ SHA512 (Tinos-Regular.ttf) =
58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb874
SHA512 (Ahem.ttf) =
aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
SHA512 (node-v8.9.1-linux-x64.tar.gz) =
a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
SHA512 (chromium-77.0.3865.120-clean.tar.xz) =
018702b53bafeb5fe8a297b8efb4805419555acb80a22b9f5f5fe2a3484f838f6ffa06655229466aca5a9de7f8b0497b9d387da4a1ba2dbc7c62ec3d1d0ffbb9
+SHA512 (chromium-78.0.3904.70-clean.tar.xz) =
f702bc3c084a69adc81f47300d00f0b8cf46ee721dbb4986bfc5ba7fc95129172d021da0514350fe77591a209ec050307eead8e9bf309b70e46eb26d29d88509
commit 5cbc3dd135bf2caa310a6cfafd85a72f5b89f959
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Oct 16 11:03:38 2019 -0400
upstream fix for zlib symbol exports with gcc
diff --git a/chromium-77.0.3865.120-gcc-fix-zlib-symbol-visibility.patch
b/chromium-77.0.3865.120-gcc-fix-zlib-symbol-visibility.patch
new file mode 100644
index 0000000..47fd97d
--- /dev/null
+++ b/chromium-77.0.3865.120-gcc-fix-zlib-symbol-visibility.patch
@@ -0,0 +1,36 @@
+From 9c3aed099b010a75594a0efd523774c4c9a5e3d2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?J=C3=BCri=20Valdmann?= <juri.valdmann(a)qt.io>
+Date: Tue, 15 Oct 2019 12:10:55 +0000
+Subject: [PATCH] GCC: Fix zlib symbol visibility macro
+
+GCC parses the function __attribute__ syntax a bit differently from Clang,
+associating the attribute with the return type instead of the function if the
+return type is a pointer. This leads to certain zlib symbols, such as
+Cr_z_zError, to fail to be properly exported from the shared library. Fix by
+using ZEXTERN instead of ZEXPORT for the attribute which works the same for both
+GCC and Clang.
+
+Bug: 819294
+Change-Id: I5707d1b0627a503df08df9ac0bb65fda69453989
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1859788
+Reviewed-by: Thomas Anderson <thomasanderson(a)chromium.org>
+Reviewed-by: Nico Weber <thakis(a)chromium.org>
+Commit-Queue: Nico Weber <thakis(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#705917}
+---
+ third_party/zlib/chromeconf.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/third_party/zlib/chromeconf.h b/third_party/zlib/chromeconf.h
+index e9aa3867d8512..666093d696a58 100644
+--- a/third_party/zlib/chromeconf.h
++++ b/third_party/zlib/chromeconf.h
+@@ -13,7 +13,7 @@
+ #define ZEXTERN __declspec(dllimport)
+ #endif
+ #elif defined(ZLIB_IMPLEMENTATION)
+-#define ZEXPORT __attribute__((visibility("default")))
++#define ZEXTERN __attribute__((visibility("default")))
+ #endif
+ #endif
+
diff --git a/chromium.spec b/chromium.spec
index f6a5873..8994527 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -162,7 +162,7 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
Name: chromium%{chromium_channel}
%endif
Version: %{majorversion}.0.3865.120
-Release: 3%{?dist}
+Release: 4%{?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)
@@ -225,6 +225,9 @@ Patch60: chromium-77.0.3865.75-missing-limits.patch
Patch61: chromium-77.0.3865.90-linked-hash-set.patch
#
https://chromium.googlesource.com/chromium/src/+/e79d9d0e06b825d2e62b38db...
Patch62: chromium-77.0.3865.120-silence-outdated-build-noise.patch
+#
https://chromium.googlesource.com/chromium/src/+/9c3aed099b010a75594a0efd...
+Patch63: chromium-77.0.3865.120-gcc-fix-zlib-symbol-visibility.patch
+
# Use lstdc++ on EPEL7 only
Patch101: chromium-75.0.3770.100-epel7-stdc++.patch
@@ -751,6 +754,7 @@ udev.
%patch60 -p1 -b .missing-limits
%patch61 -p1 -b .linked-hash-set
%patch62 -p1 -b .silence-outdated-build-noise
+%patch63 -p1 -b .gcc-fix-zlib-symbol-visibility
# Fedora branded user agent
%if 0%{?fedora}
@@ -1665,6 +1669,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
+* Wed Oct 16 2019 Tom Callaway <spot(a)fedoraproject.org> - 77.0.3865.120-4
+- upstream fix for zlib symbol exports with gcc
+
* Wed Oct 16 2019 Tom Callaway <spot(a)fedoraproject.org> - 77.0.3865.120-3
- silence outdated build noise (bz1745745)
commit 0854e9758c9420c45e377c98ee8193c6086dd4be
Merge: 527091e 35b2732
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Oct 16 09:41:25 2019 -0400
merge fix
commit 35b2732605020b2627e971ef38a6cb1cd0a4adf6
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Oct 16 09:40:03 2019 -0400
silence outdated build noise (bz1745745)
diff --git a/chromium-77.0.3865.120-silence-outdated-build-noise.patch
b/chromium-77.0.3865.120-silence-outdated-build-noise.patch
new file mode 100644
index 0000000..22e1e78
--- /dev/null
+++ b/chromium-77.0.3865.120-silence-outdated-build-noise.patch
@@ -0,0 +1,59 @@
+From e79d9d0e06b825d2e62b38db03248c0e6ceec7e4 Mon Sep 17 00:00:00 2001
+From: Greg Thompson <grt(a)chromium.org>
+Date: Sat, 5 Oct 2019 03:47:05 +0000
+Subject: [PATCH] Only detect outdated builds on Google Chrome.
+
+Prior to
https://crrev.com/643864, they weren't detected for Chromium on
+account of the way google_brand worked. That CL changed behavior and
+accidentally started showing the outdated build bubble for Linux
+Chromium users.
+
+BUG=1010592
+
+Change-Id: I069ac36166e2ae720d58b1b9aa85605792be8684
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1841635
+Reviewed-by: Thomas Anderson <thomasanderson(a)chromium.org>
+Reviewed-by: Lei Zhang <thestig(a)chromium.org>
+Commit-Queue: Greg Thompson <grt(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#703131}
+---
+ .../upgrade_detector/upgrade_detector_impl.cc | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/chrome/browser/upgrade_detector/upgrade_detector_impl.cc
b/chrome/browser/upgrade_detector/upgrade_detector_impl.cc
+index 432e3789eced0..07850fdf80cd7 100644
+--- a/chrome/browser/upgrade_detector/upgrade_detector_impl.cc
++++ b/chrome/browser/upgrade_detector/upgrade_detector_impl.cc
+@@ -31,6 +31,7 @@
+ #include "base/time/default_tick_clock.h"
+ #include "base/time/tick_clock.h"
+ #include "base/time/time.h"
++#include "build/branding_buildflags.h"
+ #include "chrome/browser/browser_process.h"
+ #include "chrome/browser/google/google_brand.h"
+ #include "chrome/common/chrome_switches.h"
+@@ -74,6 +75,14 @@ constexpr base::TimeDelta kNotifyCycleTimeForTesting =
+ // The number of days after which we identify a build/install as outdated.
+ constexpr base::TimeDelta kOutdatedBuildAge = base::TimeDelta::FromDays(12 * 7);
+
++constexpr bool ShouldDetectOutdatedBuilds() {
++#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
++ return true;
++#else // BUILDFLAG(GOOGLE_CHROME_BRANDING)
++ return false;
++#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
++}
++
+ // Return the string that was passed as a value for the
+ // kCheckForUpdateIntervalSec switch.
+ std::string CmdLineInterval() {
+@@ -403,6 +412,9 @@ bool UpgradeDetectorImpl::DetectOutdated
+ if (base::IsMachineExternallyManaged())
+ return false;
+ #endif
++
++ if (!ShouldDetectOutdatedBuilds())
++ return false;
+ }
+
+ base::Time network_time;
diff --git a/chromium.spec b/chromium.spec
index a3aba32..f6a5873 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -162,7 +162,7 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
Name: chromium%{chromium_channel}
%endif
Version: %{majorversion}.0.3865.120
-Release: 2%{?dist}
+Release: 3%{?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)
@@ -223,6 +223,8 @@ Patch59: chromium-77.0.3865.75-gcc-abstract-class.patch
Patch60: chromium-77.0.3865.75-missing-limits.patch
#
https://chromium.googlesource.com/chromium/src/+/74138b9febd37eac0fc26b8e...
Patch61: chromium-77.0.3865.90-linked-hash-set.patch
+#
https://chromium.googlesource.com/chromium/src/+/e79d9d0e06b825d2e62b38db...
+Patch62: chromium-77.0.3865.120-silence-outdated-build-noise.patch
# Use lstdc++ on EPEL7 only
Patch101: chromium-75.0.3770.100-epel7-stdc++.patch
@@ -748,6 +750,7 @@ udev.
%patch59 -p1 -b .gcc-abstract-class
%patch60 -p1 -b .missing-limits
%patch61 -p1 -b .linked-hash-set
+%patch62 -p1 -b .silence-outdated-build-noise
# Fedora branded user agent
%if 0%{?fedora}
@@ -1662,6 +1665,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
+* Wed Oct 16 2019 Tom Callaway <spot(a)fedoraproject.org> - 77.0.3865.120-3
+- silence outdated build noise (bz1745745)
+
* Tue Oct 15 2019 Tom Callaway <spot(a)fedoraproject.org> - 77.0.3865.120-2
- fix node handling for EPEL-8
commit 527091eafb9fc8e8a1a8ae1aac53d19a929156b5
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Oct 15 17:18:40 2019 -0400
merge epel8 changes
diff --git a/chromium-76.0.3809.132-rhel8-force-disable-use_gnome_keyring.patch
b/chromium-76.0.3809.132-rhel8-force-disable-use_gnome_keyring.patch
new file mode 100644
index 0000000..ff6c523
--- /dev/null
+++ b/chromium-76.0.3809.132-rhel8-force-disable-use_gnome_keyring.patch
@@ -0,0 +1,10 @@
+diff -up chromium-76.0.3809.132/components/os_crypt/features.gni.rhel8
chromium-76.0.3809.132/components/os_crypt/features.gni
+--- chromium-76.0.3809.132/components/os_crypt/features.gni.rhel8 2019-09-06
17:08:01.242314126 -0400
++++ chromium-76.0.3809.132/components/os_crypt/features.gni 2019-09-06 17:08:10.139134707
-0400
+@@ -7,5 +7,5 @@ import("//build/config/ui.gni")
+ declare_args() {
+ # Whether to use libgnome-keyring (deprecated by libsecret).
+ # See
http://crbug.com/466975 and
http://crbug.com/355223.
+- use_gnome_keyring = is_desktop_linux && use_glib
++ use_gnome_keyring = false
+ }
diff --git a/chromium.spec b/chromium.spec
index 6083fe2..a3aba32 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -162,7 +162,7 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
Name: chromium%{chromium_channel}
%endif
Version: %{majorversion}.0.3865.120
-Release: 1%{?dist}
+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)
@@ -198,7 +198,6 @@ Patch11: chromium-widevine-other-locations.patch
Patch12: chromium-71.0.3578.98-py2-bootstrap.patch
# Add "Fedora" to the user agent string
Patch13: chromium-77.0.3865.75-fedora-user-agent.patch
-
# rename function to avoid conflict with rawhide glibc "gettid()"
Patch50: chromium-75.0.3770.80-grpc-gettid-fix.patch
# In GCC one can't use alignas() for exported classes
@@ -239,6 +238,9 @@ 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
+# Apply these patches to work around EPEL8 issues
+Patch300: chromium-76.0.3809.132-rhel8-force-disable-use_gnome_keyring.patch
+
# Use chromium-latest.py to generate clean tarball from released build tarballs, found
here:
#
http://build.chromium.org/buildbot/official/
# For Chromium Fedora use chromium-latest.py --stable --ffmpegclean --ffmpegarm
@@ -270,8 +272,8 @@
Source15:
http://download.savannah.nongnu.org/releases/freebangfont/MuktiNarrow-
Source16:
https://github.com/web-platform-tests/wpt/raw/master/fonts/Ahem.ttf
Source17: GardinerModBug.ttf
Source18: GardinerModCat.ttf
-# RHEL needs newer nodejs
-%if 0%{?rhel}
+# RHEL 7 needs newer nodejs
+%if 0%{?rhel} == 7
Source19: node-v8.9.1-linux-x64.tar.gz
%endif
@@ -289,9 +291,6 @@ BuildRequires: flex
BuildRequires: fontconfig-devel
BuildRequires: GConf2-devel
BuildRequires: glib2-devel
-%if 0%{?fedora} <= 27
-BuildRequires: gnome-keyring-devel
-%endif
BuildRequires: glibc-devel
BuildRequires: gperf
%if 0%{?bundleharfbuzz}
@@ -319,7 +318,9 @@ BuildRequires: minizip-compat-devel
BuildRequires: minizip-devel
%endif
# RHEL 7's nodejs is too old
-%if 0%{?fedora}
+%if 0%{?rhel} == 7
+# Use bundled.
+%else
BuildRequires: nodejs
%endif
BuildRequires: nss-devel >= 3.26
@@ -434,7 +435,9 @@ BuildRequires: re2-devel >= 20160401
BuildRequires: speech-dispatcher-devel
BuildRequires: yasm
BuildRequires: zlib-devel
+%if 0%{?rhel} < 8
BuildRequires: pkgconfig(gnome-keyring-1)
+%endif
# remote desktop needs this
BuildRequires: pam-devel
BuildRequires: systemd
@@ -442,7 +445,7 @@ BuildRequires: systemd
%if %{freeworld}
# dont need fonts for this
%else
-%if 0%{?rhel} == 7
+%if 0%{?rhel} >= 7
Source100:
https://github.com/google/fonts/blob/master/apache/arimo/Arimo-Bold.ttf
Source101:
https://github.com/google/fonts/blob/master/apache/arimo/Arimo-BoldItalic...
Source102:
https://github.com/google/fonts/blob/master/apache/arimo/Arimo-Italic.ttf
@@ -455,12 +458,15 @@
Source108:
https://github.com/google/fonts/blob/master/apache/tinos/Tinos-Bold.t
Source109:
https://github.com/google/fonts/blob/master/apache/tinos/Tinos-BoldItalic...
Source110:
https://github.com/google/fonts/blob/master/apache/tinos/Tinos-Italic.ttf
Source111:
https://github.com/google/fonts/blob/master/apache/tinos/Tinos-Regular.ttf
-Source112:
https://releases.pagure.org/lohit/lohit-gurmukhi-ttf-2.91.2.tar.gz
-Source113:
https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip
%else
BuildRequires: google-croscore-arimo-fonts
BuildRequires: google-croscore-cousine-fonts
-BuildRequires: google-croscore-tinos-fonts
+BuildRequires: google-croscore-tinos-fonts
+%endif
+%if 0%{?rhel} == 7
+Source112:
https://releases.pagure.org/lohit/lohit-gurmukhi-ttf-2.91.2.tar.gz
+Source113:
https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip
+%else
BuildRequires: google-noto-sans-cjk-jp-fonts
BuildRequires: lohit-gurmukhi-fonts
%endif
@@ -516,7 +522,7 @@ Provides: chromium-libs = %{version}-%{release}
Obsoletes: chromium-libs <= %{version}-%{release}
%endif
-%if 0%{?rhel}
+%if 0%{?rhel} == 7
ExclusiveArch: x86_64 i686
%else
ExclusiveArch: x86_64 i686 aarch64
@@ -767,6 +773,10 @@ udev.
%patch205 -p1 -b .pulseaudioapichange
%endif
+%if 0%{?rhel} == 8
+%patch300 -p1 -b .disblegnomekeyring
+%endif
+
# Change shebang in all relevant files in this directory and all subdirectories
# See `man find` for how the `-exec command {} +` syntax works
find -type f -exec sed -iE '1s=^#! */usr/bin/\(python\|env
python\)[23]\?=#!%{__python2}=' {} +
@@ -797,7 +807,7 @@ rm -rf MuktiNarrow0.94
cp %{SOURCE16} .
cp %{SOURCE17} .
cp %{SOURCE18} .
-%if 0%{?rhel} == 7
+%if 0%{?rhel} >= 7
cp %{SOURCE100} .
cp %{SOURCE101} .
cp %{SOURCE102} .
@@ -810,14 +820,17 @@ cp %{SOURCE108} .
cp %{SOURCE109} .
cp %{SOURCE110} .
cp %{SOURCE111} .
+%else
+cp -a /usr/share/fonts/google-croscore/Arimo-*.ttf .
+cp -a /usr/share/fonts/google-croscore/Cousine-*.ttf .
+cp -a /usr/share/fonts/google-croscore/Tinos-*.ttf .
+%endif
+%if 0%{?rhel} == 7
tar xf %{SOURCE112}
mv lohit-gurmukhi-ttf-2.91.2/Lohit-Gurmukhi.ttf .
rm -rf lohit-gurmukhi-ttf-2.91.2
unzip %{SOURCE113}
%else
-cp -a /usr/share/fonts/google-croscore/Arimo-*.ttf .
-cp -a /usr/share/fonts/google-croscore/Cousine-*.ttf .
-cp -a /usr/share/fonts/google-croscore/Tinos-*.ttf .
cp -a /usr/share/fonts/lohit-gurmukhi/Lohit-Gurmukhi.ttf .
cp -a /usr/share/fonts/google-noto-cjk/NotoSansCJKjp-Regular.otf .
%endif
@@ -849,6 +862,9 @@ CHROMIUM_CORE_GN_DEFINES+=' target_cpu="arm64"'
%if %{?use_jumbo}
CHROMIUM_CORE_GN_DEFINES+=' use_jumbo_build=true jumbo_file_merge_limit=8'
%endif
+%if 0%{?rhel} == 8
+CHROMIUM_CORE_GN_DEFINES+=' use_gnome_keyring=false use_glib=true'
+%endif
export CHROMIUM_CORE_GN_DEFINES
CHROMIUM_BROWSER_GN_DEFINES=""
@@ -880,7 +896,7 @@ CHROMIUM_HEADLESS_GN_DEFINES+=' use_cups=false use_dbus=false
use_gio=false use_
CHROMIUM_HEADLESS_GN_DEFINES+=' use_pulseaudio=false use_udev=false'
export CHROMIUM_HEADLESS_GN_DEFINES
-%if 0%{?rhel}
+%if 0%{?rhel} == 7
pushd third_party/node/linux
tar xf %{SOURCE19}
mv node-v8.9.1-linux-x64 node-linux-x64
@@ -1646,9 +1662,18 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
+* Tue Oct 15 2019 Tom Callaway <spot(a)fedoraproject.org> - 77.0.3865.120-2
+- fix node handling for EPEL-8
+
* Mon Oct 14 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.120-1
- Update to 77.0.3865.120
+* Thu Oct 10 2019 Tom Callaway <spot(a)fedoraproject.org> - 77.0.3865.90-4
+- enable aarch64 for EPEL-8
+
+* Wed Oct 9 2019 Tom Callaway <spot(a)fedoraproject.org> - 77.0.3865.90-3
+- spec cleanups and changes to make EPEL8 try to build
+
* Mon Sep 23 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.90-2
- Fix the icon
- Remove quite a few of downstream patches
commit e4f20afdcc3e2ad605003c6cdc2ce7b0aaabc6af
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Oct 15 17:14:29 2019 -0400
fix node handling for EPEL-8, merge changes from 120
diff --git a/chromium.spec b/chromium.spec
index 4f78c67..a3aba32 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -161,8 +161,8 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
%else
Name: chromium%{chromium_channel}
%endif
-Version: %{majorversion}.0.3865.90
-Release: 4%{?dist}
+Version: %{majorversion}.0.3865.120
+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)
@@ -1662,6 +1662,12 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
+* Tue Oct 15 2019 Tom Callaway <spot(a)fedoraproject.org> - 77.0.3865.120-2
+- fix node handling for EPEL-8
+
+* Mon Oct 14 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.120-1
+- Update to 77.0.3865.120
+
* Thu Oct 10 2019 Tom Callaway <spot(a)fedoraproject.org> - 77.0.3865.90-4
- enable aarch64 for EPEL-8
diff --git a/get_free_ffmpeg_source_files.py b/get_free_ffmpeg_source_files.py
index f2225ea..9081e90 100755
--- a/get_free_ffmpeg_source_files.py
+++ b/get_free_ffmpeg_source_files.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
# Copyright 2015 Tomas Popela <tpopela(a)redhat.com>
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -73,7 +73,7 @@ def parse_ffmpeg_gni_file(gni_path, arch_not_arm):
sys.stderr.write("Something went wrong, no sources parsed!\n")
sys.exit(1)
- print ' '.join(output_sources)
+ print(' '.join(output_sources))
if __name__ == "__main__":
diff --git a/sources b/sources
index 13e91e7..978a610 100644
--- a/sources
+++ b/sources
@@ -17,4 +17,4 @@ SHA512 (Tinos-Italic.ttf) =
d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0
SHA512 (Tinos-Regular.ttf) =
58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f
SHA512 (Ahem.ttf) =
aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
SHA512 (node-v8.9.1-linux-x64.tar.gz) =
a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
-SHA512 (chromium-77.0.3865.90-clean.tar.xz) =
696c5b01756fb720645512fc997f4c378001a01f74bb61fe2b27722b7a3c6bbef782af82ec5678e8fe7ff76285164a331b3a99eff9c5f605ff477b3795c968c4
+SHA512 (chromium-77.0.3865.120-clean.tar.xz) =
018702b53bafeb5fe8a297b8efb4805419555acb80a22b9f5f5fe2a3484f838f6ffa06655229466aca5a9de7f8b0497b9d387da4a1ba2dbc7c62ec3d1d0ffbb9
commit a5557a189a12aa8c2654787bd6dbb367211ccdfe
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Oct 15 17:09:08 2019 -0400
fix node handling
diff --git a/chromium.spec b/chromium.spec
index a5cf1bf..4f78c67 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -272,8 +272,8 @@
Source15:
http://download.savannah.nongnu.org/releases/freebangfont/MuktiNarrow-
Source16:
https://github.com/web-platform-tests/wpt/raw/master/fonts/Ahem.ttf
Source17: GardinerModBug.ttf
Source18: GardinerModCat.ttf
-# RHEL needs newer nodejs
-%if 0%{?rhel}
+# RHEL 7 needs newer nodejs
+%if 0%{?rhel} == 7
Source19: node-v8.9.1-linux-x64.tar.gz
%endif
@@ -318,7 +318,9 @@ BuildRequires: minizip-compat-devel
BuildRequires: minizip-devel
%endif
# RHEL 7's nodejs is too old
-%if 0%{?fedora}
+%if 0%{?rhel} == 7
+# Use bundled.
+%else
BuildRequires: nodejs
%endif
BuildRequires: nss-devel >= 3.26
@@ -894,7 +896,7 @@ CHROMIUM_HEADLESS_GN_DEFINES+=' use_cups=false use_dbus=false
use_gio=false use_
CHROMIUM_HEADLESS_GN_DEFINES+=' use_pulseaudio=false use_udev=false'
export CHROMIUM_HEADLESS_GN_DEFINES
-%if 0%{?rhel}
+%if 0%{?rhel} == 7
pushd third_party/node/linux
tar xf %{SOURCE19}
mv node-v8.9.1-linux-x64 node-linux-x64
commit e67a39d749de4beb65ff66eb76d899da5e1de4b2
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Mon Oct 14 13:51:46 2019 +0200
Update to 77.0.3865.120
diff --git a/chromium.spec b/chromium.spec
index 1542845..6083fe2 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -161,8 +161,8 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
%else
Name: chromium%{chromium_channel}
%endif
-Version: %{majorversion}.0.3865.90
-Release: 2%{?dist}
+Version: %{majorversion}.0.3865.120
+Release: 1%{?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)
@@ -1646,6 +1646,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
+* Mon Oct 14 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.120-1
+- Update to 77.0.3865.120
+
* Mon Sep 23 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.90-2
- Fix the icon
- Remove quite a few of downstream patches
diff --git a/sources b/sources
index 13e91e7..978a610 100644
--- a/sources
+++ b/sources
@@ -17,4 +17,4 @@ SHA512 (Tinos-Italic.ttf) =
d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0
SHA512 (Tinos-Regular.ttf) =
58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f
SHA512 (Ahem.ttf) =
aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
SHA512 (node-v8.9.1-linux-x64.tar.gz) =
a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
-SHA512 (chromium-77.0.3865.90-clean.tar.xz) =
696c5b01756fb720645512fc997f4c378001a01f74bb61fe2b27722b7a3c6bbef782af82ec5678e8fe7ff76285164a331b3a99eff9c5f605ff477b3795c968c4
+SHA512 (chromium-77.0.3865.120-clean.tar.xz) =
018702b53bafeb5fe8a297b8efb4805419555acb80a22b9f5f5fe2a3484f838f6ffa06655229466aca5a9de7f8b0497b9d387da4a1ba2dbc7c62ec3d1d0ffbb9
commit 78eda85f26a14e5dceb6c667850cd6b930bf26bf
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Mon Oct 14 08:23:03 2019 +0200
Move another python script to python3
diff --git a/get_free_ffmpeg_source_files.py b/get_free_ffmpeg_source_files.py
index f2225ea..9081e90 100755
--- a/get_free_ffmpeg_source_files.py
+++ b/get_free_ffmpeg_source_files.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
# Copyright 2015 Tomas Popela <tpopela(a)redhat.com>
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -73,7 +73,7 @@ def parse_ffmpeg_gni_file(gni_path, arch_not_arm):
sys.stderr.write("Something went wrong, no sources parsed!\n")
sys.exit(1)
- print ' '.join(output_sources)
+ print(' '.join(output_sources))
if __name__ == "__main__":
commit e29905e4b9a9c57e4dad84e2572912d2cf1a1e4b
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Thu Oct 10 08:42:35 2019 -0400
enable aarch64 for EPEL-8
diff --git a/chromium.spec b/chromium.spec
index 5d75c4c..a5cf1bf 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -162,7 +162,7 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
Name: chromium%{chromium_channel}
%endif
Version: %{majorversion}.0.3865.90
-Release: 3%{?dist}
+Release: 4%{?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)
@@ -520,7 +520,7 @@ Provides: chromium-libs = %{version}-%{release}
Obsoletes: chromium-libs <= %{version}-%{release}
%endif
-%if 0%{?rhel}
+%if 0%{?rhel} == 7
ExclusiveArch: x86_64 i686
%else
ExclusiveArch: x86_64 i686 aarch64
@@ -1660,6 +1660,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
+* Thu Oct 10 2019 Tom Callaway <spot(a)fedoraproject.org> - 77.0.3865.90-4
+- enable aarch64 for EPEL-8
+
* Wed Oct 9 2019 Tom Callaway <spot(a)fedoraproject.org> - 77.0.3865.90-3
- spec cleanups and changes to make EPEL8 try to build
commit 9f278441f32523a894c98970d5fe0b8da3fa3572
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Oct 9 14:15:13 2019 -0400
drop explicit BR: gnome-keyring-devel
diff --git a/chromium.spec b/chromium.spec
index 96c8f36..5d75c4c 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -291,9 +291,6 @@ BuildRequires: flex
BuildRequires: fontconfig-devel
BuildRequires: GConf2-devel
BuildRequires: glib2-devel
-%if 0%{?fedora} <= 27
-BuildRequires: gnome-keyring-devel
-%endif
BuildRequires: glibc-devel
BuildRequires: gperf
%if 0%{?bundleharfbuzz}
commit f7aa602c50e32afa459f34444a03f40bb7e111a2
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Oct 9 12:48:48 2019 -0400
here we go again
diff --git a/chromium-77.0.3865.75-base-gcc-no-alignas.patch
b/chromium-77.0.3865.75-base-gcc-no-alignas.patch
new file mode 100644
index 0000000..86a2271
--- /dev/null
+++ b/chromium-77.0.3865.75-base-gcc-no-alignas.patch
@@ -0,0 +1,12 @@
+diff -up chromium-77.0.3865.75/base/task/promise/dependent_list.h.base-gcc-no-alignas
chromium-77.0.3865.75/base/task/promise/dependent_list.h
+---
chromium-77.0.3865.75/base/task/promise/dependent_list.h.base-gcc-no-alignas 2019-09-13
21:45:51.873172347 +0200
++++ chromium-77.0.3865.75/base/task/promise/dependent_list.h 2019-09-13
21:46:21.661522514 +0200
+@@ -59,7 +59,7 @@ class BASE_EXPORT DependentList {
+
+ // Align Node on an 8-byte boundary to ensure the first 3 bits are 0 and can
+ // be used to store additional state (see static_asserts below).
+- class BASE_EXPORT alignas(8) Node {
++ class BASE_EXPORT ALIGNAS(8) Node {
+ public:
+ Node();
+ explicit Node(Node&& other) noexcept;
diff --git a/chromium-77.0.3865.75-certificate-transparency.patch
b/chromium-77.0.3865.75-certificate-transparency.patch
new file mode 100644
index 0000000..82e2958
--- /dev/null
+++ b/chromium-77.0.3865.75-certificate-transparency.patch
@@ -0,0 +1,539 @@
+diff -up
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc
+---
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc.certificate-transparency 2019-09-12
16:09:52.818635106 +0200
++++
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc 2019-09-12
16:11:07.662562005 +0200
+@@ -21,6 +21,7 @@
+ #include "components/version_info/version_info.h"
+ #include "content/public/common/content_switches.h"
+ #include "content/public/common/user_agent.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"
+@@ -356,3 +357,55 @@ IN_PROC_BROWSER_TEST_P(SystemNetworkCont
+ INSTANTIATE_TEST_SUITE_P(,
+ SystemNetworkContextManagerFreezeQUICUaBrowsertest,
+ ::testing::Values(true, false));
++
++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-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc
+---
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc.certificate-transparency 2019-09-09
23:55:09.000000000 +0200
++++ chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc 2019-09-12
16:09:52.819635118 +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"
+@@ -50,6 +52,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"
+@@ -79,6 +82,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;
+
+@@ -658,14 +675,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 =
+@@ -723,6 +761,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-77.0.3865.75/chrome/browser/net/system_network_context_manager.h.certificate-transparency
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.h
+---
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.h.certificate-transparency 2019-09-09
23:55:09.000000000 +0200
++++ chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.h 2019-09-12
16:09:52.819635118 +0200
+@@ -139,6 +139,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-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc
+---
chromium-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
++++ chromium-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc 2019-09-12
16:09:52.820635131 +0200
+@@ -4836,7 +4836,7 @@ IN_PROC_BROWSER_TEST_F(PolicyTest,
+ 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-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc
+---
chromium-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
++++
chromium-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc 2019-09-12
16:09:52.821635143 +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-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
+---
chromium-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
++++
chromium-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc 2019-09-12
16:09:52.821635143 +0200
+@@ -433,6 +433,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-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc
+---
chromium-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
++++ chromium-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc 2019-09-12
16:09:52.822635155 +0200
+@@ -1853,8 +1853,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-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h.certificate-transparency
chromium-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h
+---
chromium-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h.certificate-transparency 2019-09-09
23:55:14.000000000 +0200
++++
chromium-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h 2019-09-12
16:09:52.823635168 +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-77.0.3865.75/services/network/network_context.cc.certificate-transparency
chromium-77.0.3865.75/services/network/network_context.cc
+---
chromium-77.0.3865.75/services/network/network_context.cc.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
++++ chromium-77.0.3865.75/services/network/network_context.cc 2019-09-12
16:09:52.823635168 +0200
+@@ -36,6 +36,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"
+@@ -1877,16 +1878,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())
+@@ -1936,8 +1927,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) {
+@@ -1950,6 +1953,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-77.0.3865.75/services/network/network_context_unittest.cc.certificate-transparency
chromium-77.0.3865.75/services/network/network_context_unittest.cc
+---
chromium-77.0.3865.75/services/network/network_context_unittest.cc.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
++++ chromium-77.0.3865.75/services/network/network_context_unittest.cc 2019-09-12
16:13:10.479056669 +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/remote.h"
+ #include "mojo/public/cpp/bindings/self_owned_receiver.h"
+ #include "mojo/public/cpp/system/data_pipe_utils.h"
+@@ -115,6 +118,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(DISABLE_FTP_SUPPORT)
+ #include "net/ftp/ftp_auth_cache.h"
+ #endif // !BUILDFLAG(DISABLE_FTP_SUPPORT)
+@@ -5958,6 +5966,72 @@ TEST_F(NetworkContextSplitCacheTest,
+ true /* was_cached */, true /* is_navigation */);
+ }
+
++#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-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom.certificate-transparency
chromium-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom
+---
chromium-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
++++ chromium-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom 2019-09-12
16:09:52.824635180 +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-77.0.3865.75/services/network/public/mojom/network_context.mojom.certificate-transparency
chromium-77.0.3865.75/services/network/public/mojom/network_context.mojom
+---
chromium-77.0.3865.75/services/network/public/mojom/network_context.mojom.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
++++ chromium-77.0.3865.75/services/network/public/mojom/network_context.mojom 2019-09-12
16:09:52.825635192 +0200
+@@ -239,15 +239,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;
+
+@@ -300,6 +291,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]
+@@ -311,6 +311,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-77.0.3865.75-el7-noexcept.patch
b/chromium-77.0.3865.75-el7-noexcept.patch
new file mode 100644
index 0000000..366c139
--- /dev/null
+++ b/chromium-77.0.3865.75-el7-noexcept.patch
@@ -0,0 +1,165 @@
+diff -up chromium-77.0.3865.75/chrome/common/media_router/media_sink.cc.el7-noexcept
chromium-77.0.3865.75/chrome/common/media_router/media_sink.cc
+---
chromium-77.0.3865.75/chrome/common/media_router/media_sink.cc.el7-noexcept 2019-09-17
18:42:37.137393137 +0200
++++ chromium-77.0.3865.75/chrome/common/media_router/media_sink.cc 2019-09-17
18:42:37.145393201 +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-77.0.3865.75/components/history/core/browser/history_types.cc.el7-noexcept
chromium-77.0.3865.75/components/history/core/browser/history_types.cc
+---
chromium-77.0.3865.75/components/history/core/browser/history_types.cc.el7-noexcept 2019-09-17
18:42:09.417172829 +0200
++++ chromium-77.0.3865.75/components/history/core/browser/history_types.cc 2019-09-17
18:42:09.385172574 +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-77.0.3865.75/components/history/core/browser/history_types.h.el7-noexcept
chromium-77.0.3865.75/components/history/core/browser/history_types.h
+---
chromium-77.0.3865.75/components/history/core/browser/history_types.h.el7-noexcept 2019-09-17
18:42:09.437172988 +0200
++++ chromium-77.0.3865.75/components/history/core/browser/history_types.h 2019-09-17
18:42:09.365172415 +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-77.0.3865.75/components/history/core/browser/url_row.cc.el7-noexcept
chromium-77.0.3865.75/components/history/core/browser/url_row.cc
+---
chromium-77.0.3865.75/components/history/core/browser/url_row.cc.el7-noexcept 2019-09-18
08:03:25.458138423 +0200
++++ chromium-77.0.3865.75/components/history/core/browser/url_row.cc 2019-09-18
08:03:34.363234155 +0200
+@@ -26,7 +26,7 @@ URLRow::~URLRow() {
+ }
+
+ URLRow& URLRow::operator=(const URLRow& other) = default;
+-URLRow& URLRow::operator=(URLRow&& other) noexcept = default;
++URLRow& URLRow::operator=(URLRow&& other) = default;
+
+ void URLRow::Swap(URLRow* other) {
+ std::swap(id_, other->id_);
+diff -up
chromium-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc.el7-noexcept
chromium-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc
+---
chromium-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc.el7-noexcept 2019-09-17
22:00:18.670108528 +0200
++++ chromium-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc 2019-09-17
22:00:32.518272148 +0200
+@@ -60,7 +60,7 @@ SuggestionAnswer::TextField::TextField(T
+ SuggestionAnswer::TextField& SuggestionAnswer::TextField::operator=(
+ const TextField&) = default;
+ SuggestionAnswer::TextField& SuggestionAnswer::TextField::operator=(
+- TextField&&) noexcept = default;
++ TextField&&) = default;
+
+ // static
+ bool SuggestionAnswer::TextField::ParseTextField(const base::Value& field_json,
+diff -up chromium-77.0.3865.75/components/policy/core/common/policy_map.cc.el7-noexcept
chromium-77.0.3865.75/components/policy/core/common/policy_map.cc
+---
chromium-77.0.3865.75/components/policy/core/common/policy_map.cc.el7-noexcept 2019-09-17
18:42:14.622214197 +0200
++++ chromium-77.0.3865.75/components/policy/core/common/policy_map.cc 2019-09-17
18:42:14.556213673 +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-77.0.3865.75/components/signin/public/identity_manager/account_info.cc.el7-noexcept
chromium-77.0.3865.75/components/signin/public/identity_manager/account_info.cc
+---
chromium-77.0.3865.75/components/signin/public/identity_manager/account_info.cc.el7-noexcept 2019-09-17
21:06:27.037828110 +0200
++++
chromium-77.0.3865.75/components/signin/public/identity_manager/account_info.cc 2019-09-17
21:07:20.726472932 +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-77.0.3865.75/google_apis/gaia/core_account_id.cc.el7-noexcept
chromium-77.0.3865.75/google_apis/gaia/core_account_id.cc
+--- chromium-77.0.3865.75/google_apis/gaia/core_account_id.cc.el7-noexcept 2019-09-17
18:43:12.969677930 +0200
++++ chromium-77.0.3865.75/google_apis/gaia/core_account_id.cc 2019-09-17
18:43:12.989678089 +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-77.0.3865.75/google_apis/gaia/core_account_id.h.el7-noexcept
chromium-77.0.3865.75/google_apis/gaia/core_account_id.h
+--- chromium-77.0.3865.75/google_apis/gaia/core_account_id.h.el7-noexcept 2019-09-17
18:43:12.978678001 +0200
++++ chromium-77.0.3865.75/google_apis/gaia/core_account_id.h 2019-09-17
18:43:12.983678041 +0200
+@@ -20,7 +20,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-77.0.3865.75/gpu/config/gpu_info.cc.el7-noexcept
chromium-77.0.3865.75/gpu/config/gpu_info.cc
+--- chromium-77.0.3865.75/gpu/config/gpu_info.cc.el7-noexcept 2019-09-17
18:42:25.049297073 +0200
++++ chromium-77.0.3865.75/gpu/config/gpu_info.cc 2019-09-17 18:42:25.049297073 +0200
+@@ -170,7 +170,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 -up
chromium-77.0.3865.75/third_party/openscreen/src/osp/public/service_info.h.el7-noexcept
chromium-77.0.3865.75/third_party/openscreen/src/osp/public/service_info.h
+---
chromium-77.0.3865.75/third_party/openscreen/src/osp/public/service_info.h.el7-noexcept 2019-09-17
21:46:46.378655525 +0200
++++ chromium-77.0.3865.75/third_party/openscreen/src/osp/public/service_info.h 2019-09-17
21:47:16.897035418 +0200
+@@ -21,7 +21,7 @@ struct ServiceInfo {
+ ServiceInfo(ServiceInfo&&) MAYBE_NOEXCEPT = default;
+ ServiceInfo(const ServiceInfo&) MAYBE_NOEXCEPT = default;
+
+- ServiceInfo& operator=(ServiceInfo&&) MAYBE_NOEXCEPT = default;
++ ServiceInfo& operator=(ServiceInfo&&) = default;
+ ServiceInfo& operator=(const ServiceInfo&) MAYBE_NOEXCEPT = default;
+
+ bool operator==(const ServiceInfo& other) const;
diff --git a/chromium-77.0.3865.75-fedora-user-agent.patch
b/chromium-77.0.3865.75-fedora-user-agent.patch
new file mode 100644
index 0000000..8f6de51
--- /dev/null
+++ b/chromium-77.0.3865.75-fedora-user-agent.patch
@@ -0,0 +1,12 @@
+diff -up chromium-77.0.3865.75/content/common/user_agent.cc.fedora-user-agent
chromium-77.0.3865.75/content/common/user_agent.cc
+--- chromium-77.0.3865.75/content/common/user_agent.cc.fedora-user-agent 2019-09-12
15:49:11.902270729 +0200
++++ chromium-77.0.3865.75/content/common/user_agent.cc 2019-09-12 15:50:11.555732044
+0200
+@@ -35,7 +35,7 @@ std::string GetUserAgentPlatform() {
+ #elif defined(OS_MACOSX)
+ return "Macintosh; ";
+ #elif defined(USE_X11) || defined(USE_OZONE)
+- return "X11; "; // strange, but that's what Firefox uses
++ return "X11; Fedora; "; // strange, but that's what Firefox uses
+ #elif defined(OS_ANDROID)
+ return "Linux; ";
+ #elif defined(OS_POSIX)
diff --git a/chromium-77.0.3865.75-gcc-abstract-class.patch
b/chromium-77.0.3865.75-gcc-abstract-class.patch
new file mode 100644
index 0000000..6d77299
--- /dev/null
+++ b/chromium-77.0.3865.75-gcc-abstract-class.patch
@@ -0,0 +1,61 @@
+From f08cb0022527081c078e8b96062e6c9b4fbda151 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Fri, 26 Jul 2019 16:48:06 +0000
+Subject: [PATCH] BinaryUploadService: change parameter passing that cannot afford
abstract class
+
+The method UploadForDeepScanning gets a Request as parameter. But Request is an
+abstract class, so GCC will not allow that declaration (polimorphycs should be
+passed by reference). Use std::unique_ptr so BinaryUploadService can assume
+ownership.
+
+Bug: 819294
+Change-Id: I9e8c75cc92b01abd704d9049b0421555377da5ba
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1713550
+Reviewed-by: Daniel Rubery <drubery(a)chromium.org>
+Commit-Queue: Jos Dapena Paz <jose.dapena(a)lge.com>
+Cr-Commit-Position: refs/heads/master@{#681333}
+---
+
+diff --git a/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
b/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
+index 6430c89..4e90487 100644
+--- a/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
++++ b/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
+@@ -10,7 +10,7 @@
+ namespace safe_browsing {
+
+ void BinaryUploadService::UploadForDeepScanning(
+- BinaryUploadService::Request request) {
++ std::unique_ptr<BinaryUploadService::Request> request) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ NOTREACHED();
+ }
+diff --git a/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
b/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
+index d2dfd83..9b6f395 100644
+--- a/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
++++ b/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
+@@ -5,6 +5,8 @@
+ #ifndef CHROME_BROWSER_SAFE_BROWSING_DOWNLOAD_PROTECTION_BINARY_UPLOAD_SERVICE_H_
+ #define CHROME_BROWSER_SAFE_BROWSING_DOWNLOAD_PROTECTION_BINARY_UPLOAD_SERVICE_H_
+
++#include <memory>
++
+ #include "base/callback.h"
+ #include "components/safe_browsing/proto/webprotect.pb.h"
+
+@@ -40,6 +42,7 @@
+ public:
+ // |callback| will run on the UI thread.
+ explicit Request(Callback callback);
++ virtual ~Request() = default;
+ Request(const Request&) = delete;
+ Request& operator=(const Request&) = delete;
+
+@@ -67,7 +70,7 @@
+ // Upload the given file contents for deep scanning. The results will be
+ // returned asynchronously by calling |request|'s |callback|. This must be
+ // called on the UI thread.
+- void UploadForDeepScanning(Request request);
++ void UploadForDeepScanning(std::unique_ptr<Request> request);
+ };
+
+ } // namespace safe_browsing
diff --git a/chromium-77.0.3865.75-gcc-include-memory.patch
b/chromium-77.0.3865.75-gcc-include-memory.patch
new file mode 100644
index 0000000..93b4399
--- /dev/null
+++ b/chromium-77.0.3865.75-gcc-include-memory.patch
@@ -0,0 +1,12 @@
+diff -up
chromium-77.0.3865.75/third_party/one_euro_filter/src/one_euro_filter.h.gcc-include-memory
chromium-77.0.3865.75/third_party/one_euro_filter/src/one_euro_filter.h
+---
chromium-77.0.3865.75/third_party/one_euro_filter/src/one_euro_filter.h.gcc-include-memory 2019-09-13
14:44:24.962770079 +0200
++++ chromium-77.0.3865.75/third_party/one_euro_filter/src/one_euro_filter.h 2019-09-13
14:44:45.347073612 +0200
+@@ -3,6 +3,8 @@
+
+ #include "low_pass_filter.h"
+
++#include <memory>
++
+ namespace one_euro_filter {
+ namespace test {
+ class OneEuroFilterTest;
diff --git a/chromium-77.0.3865.75-harfbuzz-subset.patch
b/chromium-77.0.3865.75-harfbuzz-subset.patch
new file mode 100644
index 0000000..55d78d1
--- /dev/null
+++ b/chromium-77.0.3865.75-harfbuzz-subset.patch
@@ -0,0 +1,49 @@
+From 27e25336b8316ff3ec4e464058682ed85801fd06 Mon Sep 17 00:00:00 2001
+From: Raphael Kubo da Costa <raphael.kubo.da.costa(a)intel.com>
+Date: Mon, 29 Jul 2019 10:54:28 +0000
+Subject: [PATCH] Also link against libharfbuzz-subset when use_system_harfbuzz is true
+
+When building HarfBuzz as part of Chromium, there is a single source set
+with all the files we need in the build.
+
+Upstream HarfBuzz, on the other hand, produces a few different libraries:
+harfbuzz, harfbuzz-icu and harfbuzz-subset. When |use_system_harfbuzz| is
+true, we were only looking for (and using) harfbuzz.pc with pkg-config even
+though we also use symbols from libharfbuzz-subset.so. This resulted in
+errors when linking:
+
+ ld: obj/skia/skia/SkPDFSubsetFont.o: in function
`SkPDFSubsetFont(sk_sp<SkData>, SkPDFGlyphUse const&,
SkPDF::Metadata::Subsetter, char const*, int)':
+
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x48a):
undefined reference to `hb_subset_input_create_or_fail'
+ ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x4af):
undefined reference to `hb_subset_input_glyph_set'
+ ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x5d7):
undefined reference to `hb_subset_input_set_retain_gids'
+ ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x5e4):
undefined reference to `hb_subset_input_set_drop_hints'
+ ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x5f3):
undefined reference to `hb_subset'
+ ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x66f):
undefined reference to `hb_subset_input_destroy'
+
+as reported in
+https://groups.google.com/a/chromium.org/d/msg/chromium-packagers/UyJsVJ5QqWo/jSv5z7-rEQAJ
+
+Change-Id: I997af075c7b7263cd7cc71a63db5b0f93bd1ab59
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1715288
+Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa(a)intel.com>
+Commit-Queue: Dominik Rttsches <drott(a)chromium.org>
+Reviewed-by: Dominik Rttsches <drott(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#681760}
+---
+
+diff --git a/third_party/harfbuzz-ng/BUILD.gn b/third_party/harfbuzz-ng/BUILD.gn
+index 37d8e33..72013eb1d 100644
+--- a/third_party/harfbuzz-ng/BUILD.gn
++++ b/third_party/harfbuzz-ng/BUILD.gn
+@@ -16,7 +16,10 @@
+ "//third_party:freetype_harfbuzz",
+ "//third_party/freetype:freetype_source",
+ ]
+- packages = [ "harfbuzz" ]
++ packages = [
++ "harfbuzz",
++ "harfbuzz-subset",
++ ]
+ }
+ } else {
+ config("harfbuzz_config") {
diff --git a/chromium-77.0.3865.75-missing-limits.patch
b/chromium-77.0.3865.75-missing-limits.patch
new file mode 100644
index 0000000..3ac1770
--- /dev/null
+++ b/chromium-77.0.3865.75-missing-limits.patch
@@ -0,0 +1,28 @@
+From 5baf7df7f4c5971dab552897eeef94b194650ce5 Mon Sep 17 00:00:00 2001
+From: Dave Tapuska <dtapuska(a)chromium.org>
+Date: Mon, 12 Aug 2019 22:30:13 +0000
+Subject: [PATCH] Fix build failure due to missing include for std::numeric_limits usage.
+
+Some configurations fail to build, limits should have been included.
+
+BUG=992832
+
+Change-Id: I894ba0543bfcef101c93259e39a31d12ae6d035c
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1747981
+Commit-Queue: Dave Tapuska <dtapuska(a)chromium.org>
+Reviewed-by: Mostyn Bramley-Moore <mostynb(a)vewd.com>
+Cr-Commit-Position: refs/heads/master@{#686214}
+---
+
+diff --git a/third_party/blink/renderer/platform/exported/web_time_range.cc
b/third_party/blink/renderer/platform/exported/web_time_range.cc
+index 384566a..68d83e1 100644
+--- a/third_party/blink/renderer/platform/exported/web_time_range.cc
++++ b/third_party/blink/renderer/platform/exported/web_time_range.cc
+@@ -31,6 +31,7 @@
+ #include "third_party/blink/public/platform/web_time_range.h"
+
+ #include <cmath>
++#include <limits>
+
+ namespace blink {
+
diff --git a/chromium-77.0.3865.75-no-zlib-mangle.patch
b/chromium-77.0.3865.75-no-zlib-mangle.patch
new file mode 100644
index 0000000..c32d226
--- /dev/null
+++ b/chromium-77.0.3865.75-no-zlib-mangle.patch
@@ -0,0 +1,22 @@
+diff -up chromium-77.0.3865.75/third_party/zlib/zconf.h.nozmangle
chromium-77.0.3865.75/third_party/zlib/zconf.h
+--- chromium-77.0.3865.75/third_party/zlib/zconf.h.nozmangle 2019-09-12
09:36:37.924086850 +0200
++++ chromium-77.0.3865.75/third_party/zlib/zconf.h 2019-09-12 09:53:01.623958551 +0200
+@@ -9,18 +9,6 @@
+ #define ZCONF_H
+
+ /*
+- * This library is also built as a part of AOSP, which does not need to include
+- * chromeconf.h. This config does not want chromeconf.h, so it can set this
+- * macro to opt out. While this works today, there's no guarantee that building
+- * zlib outside of Chromium keeps working in the future.
+- */
+-#if !defined(CHROMIUM_ZLIB_NO_CHROMECONF)
+-/* This include does prefixing as below, but with an updated set of names. Also
+- * sets up export macros in component builds. */
+-#include "chromeconf.h"
+-#endif
+-
+-/*
+ * If you *really* need a unique prefix for all types and library functions,
+ * compile with -DZ_PREFIX. The "standard" zlib should be compiled without
it.
+ * Even better than compiling with -DZ_PREFIX would be to use configure to set
diff --git a/chromium-77.0.3865.75-unbundle-zlib.patch
b/chromium-77.0.3865.75-unbundle-zlib.patch
new file mode 100644
index 0000000..d6c45ad
--- /dev/null
+++ b/chromium-77.0.3865.75-unbundle-zlib.patch
@@ -0,0 +1,25 @@
+From e1bbdec720a333937bd1b990ae0f7ee97db0d3b0 Mon Sep 17 00:00:00 2001
+From: Your Name <you(a)example.com>
+Date: Fri, 28 Jun 2019 15:56:23 +0000
+Subject: [PATCH] update zlib
+
+---
+ third_party/perfetto/gn/BUILD.gn | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/third_party/perfetto/gn/BUILD.gn b/third_party/perfetto/gn/BUILD.gn
+index c951f5f..297eee3 100644
+--- a/third_party/perfetto/gn/BUILD.gn
++++ b/third_party/perfetto/gn/BUILD.gn
+@@ -200,7 +200,7 @@ group("zlib") {
+ "//buildtools:zlib",
+ ]
+ } else if (build_with_chromium) {
+- public_configs = [ "//third_party/zlib:zlib_config" ]
++ public_configs = [ "//third_party/zlib:system_zlib" ]
+ public_deps = [
+ "//third_party/zlib",
+ ]
+--
+2.21.0
+
diff --git a/chromium-77.0.3865.90-linked-hash-set.patch
b/chromium-77.0.3865.90-linked-hash-set.patch
new file mode 100644
index 0000000..f921f1a
--- /dev/null
+++ b/chromium-77.0.3865.90-linked-hash-set.patch
@@ -0,0 +1,130 @@
+From 74138b9febd37eac0fc26b8efb110014a83a52c6 Mon Sep 17 00:00:00 2001
+From: Jeremy Roman <jbroman(a)chromium.org>
+Date: Wed, 07 Aug 2019 13:26:48 +0000
+Subject: [PATCH] WTF: Make LinkedHashSet understand values for which memset
initialization would be bad.
+
+Includes a unit test which fails before, and uses this to fix FontCacheKeyTraits.
+
+Bug: 980025
+Change-Id: If41f97444c7fd37b9b95d6dadaf3da5689079e9e
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1739948
+Reviewed-by: Kentaro Hara <haraken(a)chromium.org>
+Reviewed-by: Yutaka Hirano <yhirano(a)chromium.org>
+Commit-Queue: Jeremy Roman <jbroman(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#684731}
+---
+
+diff --git a/third_party/blink/renderer/platform/fonts/font_cache_key.h
b/third_party/blink/renderer/platform/fonts/font_cache_key.h
+index 0efc8fb..90063cb 100644
+--- a/third_party/blink/renderer/platform/fonts/font_cache_key.h
++++ b/third_party/blink/renderer/platform/fonts/font_cache_key.h
+@@ -133,6 +133,10 @@
+
+ struct FontCacheKeyTraits : WTF::SimpleClassHashTraits<FontCacheKey> {
+ STATIC_ONLY(FontCacheKeyTraits);
++
++ // std::string's empty state need not be zero in all implementations,
++ // and it is held within FontFaceCreationParams.
++ static const bool kEmptyValueIsZero = false;
+ };
+
+ } // namespace blink
+diff --git a/third_party/blink/renderer/platform/wtf/linked_hash_set.h
b/third_party/blink/renderer/platform/wtf/linked_hash_set.h
+index b35b6e9..77e524c 100644
+--- a/third_party/blink/renderer/platform/wtf/linked_hash_set.h
++++ b/third_party/blink/renderer/platform/wtf/linked_hash_set.h
+@@ -146,6 +146,11 @@
+ LinkedHashSetNodeBase* next)
+ : LinkedHashSetNodeBase(prev, next), value_(value) {}
+
++ LinkedHashSetNode(ValueArg&& value,
++ LinkedHashSetNodeBase* prev,
++ LinkedHashSetNodeBase* next)
++ : LinkedHashSetNodeBase(prev, next), value_(std::move(value)) {}
++
+ LinkedHashSetNode(LinkedHashSetNode&& other)
+ : LinkedHashSetNodeBase(std::move(other)),
+ value_(std::move(other.value_)) {}
+@@ -445,10 +450,13 @@
+
+ // The slot is empty when the next_ field is zero so it's safe to zero
+ // the backing.
+- static const bool kEmptyValueIsZero = true;
++ static const bool kEmptyValueIsZero = ValueTraits::kEmptyValueIsZero;
+
+ static const bool kHasIsEmptyValueFunction = true;
+ static bool IsEmptyValue(const Node& node) { return !node.next_; }
++ static Node EmptyValue() {
++ return Node(ValueTraits::EmptyValue(), nullptr, nullptr);
++ }
+
+ static const int kDeletedValue = -1;
+
+diff --git a/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
b/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
+index 4c3f899..cd1be00 100644
+--- a/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
++++ b/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
+@@ -487,6 +487,7 @@
+ };
+
+ struct Complicated {
++ Complicated() : Complicated(0) {}
+ Complicated(int value) : simple_(value) { objects_constructed_++; }
+
+ Complicated(const Complicated& other) : simple_(other.simple_) {
+@@ -495,9 +496,6 @@
+
+ Simple simple_;
+ static int objects_constructed_;
+-
+- private:
+- Complicated() = delete;
+ };
+
+ int Complicated::objects_constructed_ = 0;
+@@ -731,4 +729,45 @@
+
+ } // anonymous namespace
+
++// A unit type which objects to its state being initialized wrong.
++struct InvalidZeroValue {
++ InvalidZeroValue() = default;
++ InvalidZeroValue(WTF::HashTableDeletedValueType) : deleted_(true) {}
++ ~InvalidZeroValue() { CHECK(ok_); }
++ bool IsHashTableDeletedValue() const { return deleted_; }
++
++ bool ok_ = true;
++ bool deleted_ = false;
++};
++
++template <>
++struct HashTraits<InvalidZeroValue> :
SimpleClassHashTraits<InvalidZeroValue> {
++ static const bool kEmptyValueIsZero = false;
++};
++
++template <>
++struct DefaultHash<InvalidZeroValue> {
++ struct Hash {
++ static unsigned GetHash(const InvalidZeroValue&) { return 0; }
++ static bool Equal(const InvalidZeroValue&, const InvalidZeroValue&) {
++ return true;
++ }
++ };
++};
++
++template <typename Set>
++class ListOrLinkedHashSetInvalidZeroTest : public testing::Test {};
++
++using InvalidZeroValueSetTypes =
++ testing::Types<ListHashSet<InvalidZeroValue>,
++ ListHashSet<InvalidZeroValue, 1>,
++ LinkedHashSet<InvalidZeroValue>>;
++TYPED_TEST_SUITE(ListOrLinkedHashSetInvalidZeroTest, InvalidZeroValueSetTypes);
++
++TYPED_TEST(ListOrLinkedHashSetInvalidZeroTest, InvalidZeroValue) {
++ using Set = TypeParam;
++ Set set;
++ set.insert(InvalidZeroValue());
++}
++
+ } // namespace WTF
diff --git a/chromium.spec b/chromium.spec
index 81982e2..96c8f36 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -2,6 +2,13 @@
#
https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompi...
%global _python_bytecompile_extra 1
+# Fancy build status, so we at least know, where we are..
+# %1 where
+# %2 what
+%global build_target() \
+ export NINJA_STATUS="[%2:%f/%t] " ; \
+ ../depot_tools/ninja -C '%1' -vvv '%2'
+
# This is faster when it works, but it doesn't always.
%ifarch aarch64
%global use_jumbo 0
@@ -28,9 +35,9 @@
%global useapikeys 1
# Leave this alone, please.
-%global target out/Release
-%global headlesstarget out/Headless
-%global remotingtarget out/Remoting
+%global builddir out/Release
+%global headlessbuilddir out/Headless
+%global remotingbuilddir out/Remoting
# Debuginfo packages aren't very useful here. If you need to debug
# you should do a proper debug build (not implemented in this spec yet)
@@ -45,7 +52,7 @@
%global crd_path %{_libdir}/chrome-remote-desktop
# We don't want any libs in these directories to generate Provides
-# Requires is trickier.
+# Requires is trickier.
# To generate this list, go into %%{buildroot}%%{chromium_path} and run
# for i in `find . -name "*.so"`; do NAME=`basename -s .so $i`; printf
"$NAME|"; done
@@ -54,17 +61,15 @@
%global __provides_exclude_from
%{chromium_path}/.*\\.so|%{chromium_path}/lib/.*\\.so|%{chromium_path}/lib/.*\\.so.*
%if 0%{?rhel} == 7
-%global privlibs
libevents_devices_x11|libgfx_x11|libevents_x|libgl_wrapper|libmemory_instrumentation|libdevice_vr_mojo_bindings|libdiscardable_memory_common|libui_base_ime_init|libnetwork_cpp_base|libos_crypt|libmessage_center|libmanager|libdevice_gamepad|libembedder|libGLESv2|libtracing|libskia|libgl_in_process_context|libapdu|libbluetooth|libviz_resource_format_utils|libmojo_mojom_bindings|libblink_platform|libmojom_modules_shared|libwebdata_common|libshell_dialogs|libresource_coordinator_public_mojom_blink|libgles2_utils|libgpu_ipc_service|libcaptive_portal|libvr_common|libgles2|libdisplay|libgfx_ipc_geometry|libcc_paint|libandroid_mojo_bindings_shared|libipc_mojom_shared|libffmpeg|liburl_matcher|libbindings|libservice|libwtf|libcommon|libleveldatabase|libnetwork_session_configurator|libaura|libcloud_policy_proto_generated_compile|libservice_manager_mojom_constants|libui_touch_selection|libmojo_base_lib|libservice_manager_cpp_types|libservice_manager_mojom_blink|libmojo_core_embedder|libblink_embedded_frame_sink_mojo_bindings_shared|libgesture_detection|liburl_ipc|libweb_feature_mojo_bindings_mojom|libscheduling_metrics|libresource_coordinator_cpp_features|libcc|libdiscardable_memory_client|libsessions|libblink_common|libipc|libvulkan_init|libblink_mojom_broadcastchannel_bindings_shared|libheadless_non_renderer|libcbor|libmojo_core_embedder_internal|libmojo_public_system_cpp|libmojom_core_shared|libgfx|libusb_shared|libtracing_mojom|libuser_manager|libnet|libwebgpu|libplatform_window_handler_libs|libmojo_base_mojom_shared|libui_base|libprinting|libcontent_service_mojom_shared|libstartup_tracing|libdevice_vr_mojo_bindings_blink|libraster|libsandbox|libv8_libbase|libevents|libui_base_idle|libgles2_implementation|libkeyed_service_content|libprefs|libVkLayer_core_validation|libchrome_features|libdiscardable_memory_service|libcapture_lib|libperfetto|libicui18n|libdomain_reliability|libweb_dialogs|libcc_animation|libbase|libtracing_cpp|libGLESv2|libEGL|libVkLayer_thread_safety|libmedia_gpu|libparsers|libservice_manager_cpp|liblearning_common|libdevices|libvulkan_wrapper|libservice_manager_mojom_shared|libgfx_switches|libkeycodes_x11|libweb_feature_mojo_bindings_mojom_shared|liburl|libmpris|libppapi_proxy|libmojo_base_mojom|libprotobuf_lite|libui_base_features|libdevice_vr|libwm_public|libcolor_space|libseccomp_bpf|libinterfaces_shared|libui_base_x|libicuuc|libwebview|libdevice_event_log|libVkLayer_object_lifetimes|libvulkan_x11|libproxy_config|libnetwork_cpp|libextras|libVkICD_mock_icd|libv8_libplatform|libresource_coordinator_public_mojom|libwm|libviews|libsuid_sandbox_client|libEGL|libcapture_base|libnative_theme|libcrcrypto|libmojo_public_system|libservice_manager_mojom_constants_shared|libui_accessibility_ax_mojom_blink|libplatform|libui_data_pack|libgfx_ipc_buffer_types|libclearkeycdm|libmetrics_cpp|libmojo_base_shared_typemap_traits|libx11_events_platform|libcrash_key|libclient|libblink_controller|libfido|libfreetype_harfbuzz|libmojo_mojom_bindings_shared|libaccessibility|libstub_window|libui_base_ime|libpolicy_component|libweb_bluetooth_mojo_bindings_shared|libmojo_core_ports|libsandbox_services|libstorage_common|libviz_vulkan_context_provider|libcontent_common_mojo_bindings_shared|libgamepad_mojom_blink|libkeyed_service_core|libmedia_mojo_services|libmojo_ime_lib|libblink_modules|libgcm|libsql|libgeometry_skia|libVkLayer_unique_objects|libweb_feature_mojo_bindings_mojom_blink|libui_base_ime_linux|libdisplay_types|libdevice_vr_mojo_bindings_shared|libcc_base|libtracing_mojom_shared|libmedia_blink|libcc_mojo_embedder|libpdfium|libevents_ozone_layout|libgfx_ipc_color|libgtkui|libpolicy_proto|libcodec|libgpu|libcontent_service_cpp|libmojom_mhtml_load_result_shared|libdisplay_util|libcontent_service_mojom|libbase_i18n|libservice_manager_mojom_constants_blink|libcompositor|libmojo_base_mojom_blink|libui_message_center_cpp|libsnapshot|libdbus_thread_linux|libtab_count_metrics|libpublic|libui_accessibility_ax_mojom|liblearning_impl|librange|libbrowser_ui_views|libcontent|libvr_base|libppapi_host|libservice_manager_mojom_traits|libgamepad_mojom|libcertificate_matching|libgfx_ipc|libgl_init|libVkLayer_stateless_validation|libshared_with_blink|libshared_memory_support|libevents_base|libnet_with_v8|libmedia_webrtc|libsurface|libcontent_public_common_mojo_bindings_shared|libaura_extra|libdevice_base|libonc|libcdm_manager|libmojom_platform_shared|libui_accessibility_ax_mojom_shared|libhost|libblink_features|libdevice_features|libmirroring_service|libdbus|libgeometry|libchromium_sqlite3|libgamepad_mojom_shared|libauthenticator_test_mojo_bindings_shared|libboringssl|libembedder_switches|libgfx_ipc_skia|libzygote|libmedia_session_cpp|libv8|libnetwork_service|libx11_window|libui_base_clipboard|libanimation|libmessage_support|libui_devtools|libgamepad_shared_typemap_traits|libfingerprint|libviz_common|libppapi_shared|libstorage_browser|libbindings_base|libservice_manager_mojom|libblink_core|libgin|libresource_coordinator_public_mojom_shared|libuser_prefs|libui_base_ime_types|libipc_mojom|libmidi|libmojo_cpp_platform|libcc_debug|libui_base_clipboard_types|libmedia|libfontconfig
+%global privlibs
libservice|libui_accessibility_ax_mojom_blink|libmojo_mojom_bindings_shared|libcolor_space|libui_base_ime_linux|libv8|libtracing_cpp|libprotobuf_lite|librange|libui_touch_selection|libgtkui|libraster|libstub_window|libmessage_center|libv8_libplatform|libtab_count_metrics|libclient|libaura|libresource_coordinator_public_mojom_shared|libbluetooth|libipc_mojom_shared|libdevice_event_log|libcc_debug|libnet_with_v8|libcc_paint|libwm_public|libnetwork_cpp_base|libservice_manager_mojom|libaura_extra|libmojo_public_system|libpdfium|libui_base_ime_init|libmpris|libcc|libservice_manager_cpp|libblink_mojom_broadcastchannel_bindings_shared|libinterfaces_shared|libservice_manager_cpp_types|libservice_manager_mojom_shared|libwm|libbase_i18n|libnetwork_session_configurator|libwebview|libplatform_window_handler_libs|libx11_events_platform|libmojo_cpp_platform|libandroid_mojo_bindings_shared|libpublic|libmirroring_service|libmedia_session_cpp|libblink_platform|libicui18n|libwebdata_common|libgin|libdevice_gamepad|libdevice_vr_mojo_bindings|libffmpeg|libmetrics_cpp|liburl_matcher|libpolicy_proto|libshared_memory_support|libparsers|libgles2_utils|libweb_feature_mojo_bindings_mojom|libui_base_idle|libmojo_public_system_cpp|libsuid_sandbox_client|libgfx_ipc_skia|libmojo_base_shared_typemap_traits|libcapture_lib|libgl_init|libblink_common|libcc_base|libmojo_base_mojom|libtracing_mojom_shared|libgpu_ipc_service|libui_accessibility_ax_mojom|libweb_feature_mojo_bindings_mojom_shared|libgfx_switches|libmedia_session_base_cpp|libmessage_support|libvulkan_init|libonc|libgpu|libmojom_modules_shared|libnative_theme|libgcm|libvr_base|libmojo_core_embedder_internal|libuser_prefs|libweb_bluetooth_mojo_bindings_shared|libos_crypt|libbrowser_ui_views|libembedder_switches|libcontent_service_mojom_shared|libsandbox|libvulkan_x11|libdevice_vr_test_mojo_bindings|libmojo_core_ports|libblink_core|libx11_window|libmojo_mojom_bindings|libipc|libmojo_base_mojom_blink|libgl_wrapper|libprinting|libgesture_detection|libdiscardable_memory_service|libmojom_core_shared|libviz_vulkan_context_provider|libpolicy_component|libdisplay|libvr_common|libdevice_vr_test_mojo_bindings_shared|libui_accessibility_ax_mojom_shared|libresource_coordinator_public_mojom|libvulkan_wrapper|libcrcrypto|libGLESv2|libv8_libbase|libcrash_key|libchrome_features|libdiscardable_memory_common|libbindings|libfreetype_harfbuzz|libcapture_base|libmojo_core_embedder|libprefs|libdevice_features|libresource_coordinator_cpp_features|libgfx_ipc_geometry|libgfx|libui_devtools|libweb_dialogs|libkeyed_service_core|libcontent|libgeometry_skia|libdisplay_util|libservice_manager_mojom_traits|libkeycodes_x11|libipc_mojom|libmojo_base_lib|libui_base_clipboard_types|libtracing_mojom|libmanager|libmedia_webrtc|libmedia_mojo_services|libcontent_public_common_mojo_bindings_shared|libgfx_ipc|libdiscardable_memory_client|libmemory_instrumentation|libui_base_ime|libskia|libgfx_ipc_color|libshell_dialogs|libEGL|libmedia_blink|libmedia_message_center|libblink_controller|libdevice_vr_mojo_bindings_shared|libmidi|libapdu|libseccomp_bpf|libboringssl|libcolor_utils|libdbus|libproxy_config|libblink_features|libmojom_platform_shared|libshared_with_blink|libui_data_pack|libevents_x|libleveldatabase|libevents_ozone_layout|libgfx_x11|libsurface|liblearning_impl|libgamepad_mojom|libcontent_service_cpp|libui_base|libzygote|libevents|libvulkan|libGLESv2|libEGL|libcertificate_matching|libusb_shared|libbindings_base|libgfx_ipc_buffer_types|libcodec|libmojom_mhtml_load_result_shared|libstorage_common|libdevice_vr|libviz_resource_format_utils|libservice_manager_mojom_blink|libgles2|libauthenticator_test_mojo_bindings_shared|libui_base_clipboard|libgamepad_mojom_shared|libdomain_reliability|libmenu|libblink_embedded_frame_sink_mojo_bindings_shared|libwebgpu|liburl_ipc|libnet|libmedia_gpu|libservice_manager_mojom_constants_shared|libaccessibility|libservice_manager_mojom_constants|libembedder|libgamepad_mojom_blink|libcc_animation|libplatform|libdevice_base|libanimation|libgamepad_shared_typemap_traits|libwtf|libthread_linux|libui_base_x|libcloud_policy_proto_generated_compile|libsql|libhost|libextras|libchromium_sqlite3|libnetwork_cpp|libmojo_base_mojom_shared|libgeometry|libppapi_proxy|libweb_feature_mojo_bindings_mojom_blink|libcontent_common_mojo_bindings_shared|libVkICD_mock_icd|libdevice_vr_mojo_bindings_blink|libservice_manager_mojom_constants_blink|libevents_base|liburl|libresource_coordinator_public_mojom_blink|libppapi_host|libppapi_shared|libmedia|libtracing|libsandbox_services|libcontent_service_mojom|libevents_devices_x11|libcompositor|libfingerprint|libuser_manager|libstorage_browser|libbase|libkeyed_service_content|libviews|libcaptive_portal|libcbor|libviz_common|libcc_mojo_embedder|libheadless_non_renderer|libui_base_features|libsnapshot|libcommon|libnetwork_service|liblearning_common|libblink_modules|libscheduling_metrics|libperfetto|libgles2_implementation|libsessions|libdevices|libstartup_tracing|libdisplay_types|libgl_in_process_context|libui_base_ime_types|libui_message_center_cpp|libclearkeycdm|libicuuc|libfido|libfontconfig
%else
-%global privlibs
libevents_devices_x11|libgfx_x11|libevents_x|libgl_wrapper|libmemory_instrumentation|libdevice_vr_mojo_bindings|libdiscardable_memory_common|libui_base_ime_init|libnetwork_cpp_base|libos_crypt|libmessage_center|libmanager|libdevice_gamepad|libembedder|libGLESv2|libtracing|libskia|libgl_in_process_context|libapdu|libbluetooth|libviz_resource_format_utils|libmojo_mojom_bindings|libblink_platform|libmojom_modules_shared|libwebdata_common|libshell_dialogs|libresource_coordinator_public_mojom_blink|libgles2_utils|libgpu_ipc_service|libcaptive_portal|libvr_common|libgles2|libdisplay|libgfx_ipc_geometry|libcc_paint|libandroid_mojo_bindings_shared|libipc_mojom_shared|libffmpeg|liburl_matcher|libbindings|libservice|libwtf|libcommon|libleveldatabase|libnetwork_session_configurator|libaura|libcloud_policy_proto_generated_compile|libservice_manager_mojom_constants|libui_touch_selection|libmojo_base_lib|libservice_manager_cpp_types|libservice_manager_mojom_blink|libmojo_core_embedder|libblink_embedded_frame_sink_mojo_bindings_shared|libgesture_detection|liburl_ipc|libweb_feature_mojo_bindings_mojom|libscheduling_metrics|libresource_coordinator_cpp_features|libcc|libdiscardable_memory_client|libsessions|libblink_common|libipc|libvulkan_init|libblink_mojom_broadcastchannel_bindings_shared|libheadless_non_renderer|libcbor|libmojo_core_embedder_internal|libmojo_public_system_cpp|libmojom_core_shared|libgfx|libusb_shared|libtracing_mojom|libuser_manager|libnet|libwebgpu|libplatform_window_handler_libs|libmojo_base_mojom_shared|libui_base|libprinting|libcontent_service_mojom_shared|libstartup_tracing|libdevice_vr_mojo_bindings_blink|libraster|libsandbox|libv8_libbase|libevents|libui_base_idle|libgles2_implementation|libkeyed_service_content|libprefs|libVkLayer_core_validation|libchrome_features|libdiscardable_memory_service|libcapture_lib|libperfetto|libicui18n|libdomain_reliability|libweb_dialogs|libcc_animation|libbase|libtracing_cpp|libGLESv2|libEGL|libVkLayer_thread_safety|libmedia_gpu|libparsers|libservice_manager_cpp|liblearning_common|libdevices|libvulkan_wrapper|libservice_manager_mojom_shared|libgfx_switches|libkeycodes_x11|libweb_feature_mojo_bindings_mojom_shared|liburl|libmpris|libppapi_proxy|libmojo_base_mojom|libprotobuf_lite|libui_base_features|libdevice_vr|libwm_public|libcolor_space|libseccomp_bpf|libinterfaces_shared|libui_base_x|libicuuc|libwebview|libdevice_event_log|libVkLayer_object_lifetimes|libvulkan_x11|libproxy_config|libnetwork_cpp|libextras|libVkICD_mock_icd|libv8_libplatform|libresource_coordinator_public_mojom|libwm|libviews|libsuid_sandbox_client|libEGL|libcapture_base|libnative_theme|libcrcrypto|libmojo_public_system|libservice_manager_mojom_constants_shared|libui_accessibility_ax_mojom_blink|libplatform|libui_data_pack|libgfx_ipc_buffer_types|libclearkeycdm|libmetrics_cpp|libmojo_base_shared_typemap_traits|libx11_events_platform|libcrash_key|libclient|libblink_controller|libfido|libfreetype_harfbuzz|libmojo_mojom_bindings_shared|libaccessibility|libstub_window|libui_base_ime|libpolicy_component|libweb_bluetooth_mojo_bindings_shared|libmojo_core_ports|libsandbox_services|libstorage_common|libviz_vulkan_context_provider|libcontent_common_mojo_bindings_shared|libgamepad_mojom_blink|libkeyed_service_core|libmedia_mojo_services|libmojo_ime_lib|libblink_modules|libgcm|libsql|libgeometry_skia|libVkLayer_unique_objects|libweb_feature_mojo_bindings_mojom_blink|libui_base_ime_linux|libdisplay_types|libdevice_vr_mojo_bindings_shared|libcc_base|libtracing_mojom_shared|libmedia_blink|libcc_mojo_embedder|libpdfium|libevents_ozone_layout|libgfx_ipc_color|libgtkui|libpolicy_proto|libcodec|libgpu|libcontent_service_cpp|libmojom_mhtml_load_result_shared|libdisplay_util|libcontent_service_mojom|libbase_i18n|libservice_manager_mojom_constants_blink|libcompositor|libmojo_base_mojom_blink|libui_message_center_cpp|libsnapshot|libdbus_thread_linux|libtab_count_metrics|libpublic|libui_accessibility_ax_mojom|liblearning_impl|librange|libbrowser_ui_views|libcontent|libvr_base|libppapi_host|libservice_manager_mojom_traits|libgamepad_mojom|libcertificate_matching|libgfx_ipc|libgl_init|libVkLayer_stateless_validation|libshared_with_blink|libshared_memory_support|libevents_base|libnet_with_v8|libmedia_webrtc|libsurface|libcontent_public_common_mojo_bindings_shared|libaura_extra|libdevice_base|libonc|libcdm_manager|libmojom_platform_shared|libui_accessibility_ax_mojom_shared|libhost|libblink_features|libdevice_features|libmirroring_service|libdbus|libgeometry|libchromium_sqlite3|libgamepad_mojom_shared|libauthenticator_test_mojo_bindings_shared|libboringssl|libembedder_switches|libgfx_ipc_skia|libzygote|libmedia_session_cpp|libv8|libnetwork_service|libx11_window|libui_base_clipboard|libanimation|libmessage_support|libui_devtools|libgamepad_shared_typemap_traits|libfingerprint|libviz_common|libppapi_shared|libstorage_browser|libbindings_base|libservice_manager_mojom|libblink_core|libgin|libresource_coordinator_public_mojom_shared|libuser_prefs|libui_base_ime_types|libipc_mojom|libmidi|libmojo_cpp_platform|libcc_debug|libui_base_clipboard_types|libmedia
+%global privlibs
libservice|libui_accessibility_ax_mojom_blink|libmojo_mojom_bindings_shared|libcolor_space|libui_base_ime_linux|libv8|libtracing_cpp|libprotobuf_lite|librange|libui_touch_selection|libgtkui|libraster|libstub_window|libmessage_center|libv8_libplatform|libtab_count_metrics|libclient|libaura|libresource_coordinator_public_mojom_shared|libbluetooth|libipc_mojom_shared|libdevice_event_log|libcc_debug|libnet_with_v8|libcc_paint|libwm_public|libnetwork_cpp_base|libservice_manager_mojom|libaura_extra|libmojo_public_system|libpdfium|libui_base_ime_init|libmpris|libcc|libservice_manager_cpp|libblink_mojom_broadcastchannel_bindings_shared|libinterfaces_shared|libservice_manager_cpp_types|libservice_manager_mojom_shared|libwm|libbase_i18n|libnetwork_session_configurator|libwebview|libplatform_window_handler_libs|libx11_events_platform|libmojo_cpp_platform|libandroid_mojo_bindings_shared|libpublic|libmirroring_service|libmedia_session_cpp|libblink_platform|libicui18n|libwebdata_common|libgin|libdevice_gamepad|libdevice_vr_mojo_bindings|libffmpeg|libmetrics_cpp|liburl_matcher|libpolicy_proto|libshared_memory_support|libparsers|libgles2_utils|libweb_feature_mojo_bindings_mojom|libui_base_idle|libmojo_public_system_cpp|libsuid_sandbox_client|libgfx_ipc_skia|libmojo_base_shared_typemap_traits|libcapture_lib|libgl_init|libblink_common|libcc_base|libmojo_base_mojom|libtracing_mojom_shared|libgpu_ipc_service|libui_accessibility_ax_mojom|libweb_feature_mojo_bindings_mojom_shared|libgfx_switches|libmedia_session_base_cpp|libmessage_support|libvulkan_init|libonc|libgpu|libmojom_modules_shared|libnative_theme|libgcm|libvr_base|libmojo_core_embedder_internal|libuser_prefs|libweb_bluetooth_mojo_bindings_shared|libos_crypt|libbrowser_ui_views|libembedder_switches|libcontent_service_mojom_shared|libsandbox|libvulkan_x11|libdevice_vr_test_mojo_bindings|libmojo_core_ports|libblink_core|libx11_window|libmojo_mojom_bindings|libipc|libmojo_base_mojom_blink|libgl_wrapper|libprinting|libgesture_detection|libdiscardable_memory_service|libmojom_core_shared|libviz_vulkan_context_provider|libpolicy_component|libdisplay|libvr_common|libdevice_vr_test_mojo_bindings_shared|libui_accessibility_ax_mojom_shared|libresource_coordinator_public_mojom|libvulkan_wrapper|libcrcrypto|libGLESv2|libv8_libbase|libcrash_key|libchrome_features|libdiscardable_memory_common|libbindings|libfreetype_harfbuzz|libcapture_base|libmojo_core_embedder|libprefs|libdevice_features|libresource_coordinator_cpp_features|libgfx_ipc_geometry|libgfx|libui_devtools|libweb_dialogs|libkeyed_service_core|libcontent|libgeometry_skia|libdisplay_util|libservice_manager_mojom_traits|libkeycodes_x11|libipc_mojom|libmojo_base_lib|libui_base_clipboard_types|libtracing_mojom|libmanager|libmedia_webrtc|libmedia_mojo_services|libcontent_public_common_mojo_bindings_shared|libgfx_ipc|libdiscardable_memory_client|libmemory_instrumentation|libui_base_ime|libskia|libgfx_ipc_color|libshell_dialogs|libEGL|libmedia_blink|libmedia_message_center|libblink_controller|libdevice_vr_mojo_bindings_shared|libmidi|libapdu|libseccomp_bpf|libboringssl|libcolor_utils|libdbus|libproxy_config|libblink_features|libmojom_platform_shared|libshared_with_blink|libui_data_pack|libevents_x|libleveldatabase|libevents_ozone_layout|libgfx_x11|libsurface|liblearning_impl|libgamepad_mojom|libcontent_service_cpp|libui_base|libzygote|libevents|libvulkan|libGLESv2|libEGL|libcertificate_matching|libusb_shared|libbindings_base|libgfx_ipc_buffer_types|libcodec|libmojom_mhtml_load_result_shared|libstorage_common|libdevice_vr|libviz_resource_format_utils|libservice_manager_mojom_blink|libgles2|libauthenticator_test_mojo_bindings_shared|libui_base_clipboard|libgamepad_mojom_shared|libdomain_reliability|libmenu|libblink_embedded_frame_sink_mojo_bindings_shared|libwebgpu|liburl_ipc|libnet|libmedia_gpu|libservice_manager_mojom_constants_shared|libaccessibility|libservice_manager_mojom_constants|libembedder|libgamepad_mojom_blink|libcc_animation|libplatform|libdevice_base|libanimation|libgamepad_shared_typemap_traits|libwtf|libthread_linux|libui_base_x|libcloud_policy_proto_generated_compile|libsql|libhost|libextras|libchromium_sqlite3|libnetwork_cpp|libmojo_base_mojom_shared|libgeometry|libppapi_proxy|libweb_feature_mojo_bindings_mojom_blink|libcontent_common_mojo_bindings_shared|libVkICD_mock_icd|libdevice_vr_mojo_bindings_blink|libservice_manager_mojom_constants_blink|libevents_base|liburl|libresource_coordinator_public_mojom_blink|libppapi_host|libppapi_shared|libmedia|libtracing|libsandbox_services|libcontent_service_mojom|libevents_devices_x11|libcompositor|libfingerprint|libuser_manager|libstorage_browser|libbase|libkeyed_service_content|libviews|libcaptive_portal|libcbor|libviz_common|libcc_mojo_embedder|libheadless_non_renderer|libui_base_features|libsnapshot|libcommon|libnetwork_service|liblearning_common|libblink_modules|libscheduling_metrics|libperfetto|libgles2_implementation|libsessions|libdevices|libstartup_tracing|libdisplay_types|libgl_in_process_context|libui_base_ime_types|libui_message_center_cpp|libclearkeycdm|libicuuc|libfido
%endif
%global __requires_exclude ^(%{privlibs})\\.so*
# If we build with shared on, then chrome-remote-desktop depends on chromium libs.
# If we build with shared off, then users cannot swap out libffmpeg (and i686 gets a lot
harder to build)
%global shared 1
-# We should not need to turn this on. The app in the webstore _should_ work.
-%global build_remoting_app 0
# AddressSanitizer mode
#
https://www.chromium.org/developers/testing/addresssanitizer
@@ -118,9 +123,9 @@ BuildRequires: libicu-devel >= 5.4
%global bundlefontconfig 0
%endif
-# Needs at least harfbuzz 2.3.0 now.
-# 2019-03-13
-%if 0%{?fedora} < 30
+# Needs at least harfbuzz 2.4.0 now.
+# 2019-09-13
+%if 0%{?fedora} < 31
%global bundleharfbuzz 1
%else
%global bundleharfbuzz 0
@@ -133,13 +138,6 @@ BuildRequires: libicu-devel >= 5.4
%global pulseaudioapichange 0
%endif
-# RHEL 8 doesn't have minizip
-%if 0%{?rhel} == 8
-%global bundleminizip 1
-%else
-%global bundleminizip 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.
@@ -156,156 +154,80 @@ BuildRequires: libicu-devel >= 5.4
%global chromoting_client_id %nil
%endif
-%global majorversion 76
+%global majorversion 77
%if %{freeworld}
-Name: chromium%{chromium_channel}%{?freeworld:-libs-media-freeworld}
-Summary: Chromium media libraries built with all possible codecs
+Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
%else
Name: chromium%{chromium_channel}
-Summary: A WebKit (Blink) powered web browser
%endif
-Version: %{majorversion}.0.3809.132
+Version: %{majorversion}.0.3865.90
Release: 3%{?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)
### Chromium Fedora Patches ###
-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
-Patch3: chromium-72.0.3626.121-notest.patch
-# Use libusb_interrupt_event_handler from current libusbx (1.0.21-0.1.git448584a)
-Patch4: chromium-76.0.3809.100-libusb_interrupt_event_handler.patch
-# Use PIE in the Linux sandbox (from openSUSE via Russian Fedora)
-Patch6: chromium-70.0.3538.67-sandbox-pie.patch
+Patch0: chromium-70.0.3538.67-sandbox-pie.patch
# Use /etc/chromium for master_prefs
-Patch7: chromium-68.0.3440.106-master-prefs-path.patch
+Patch1: chromium-68.0.3440.106-master-prefs-path.patch
# Use gn system files
-Patch8: chromium-67.0.3396.62-gn-system.patch
-# Fix issue where timespec is not defined when sys/stat.h is included.
-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
-Patch10: chromium-63.0.3289.84-nullfix.patch
-# Add explicit includedir for jpeglib.h
-Patch11: chromium-54.0.2840.59-jpeg-include-dir.patch
-# On i686, pass --no-keep-memory --reduce-memory-overheads to ld.
-Patch12: chromium-59.0.3071.86-i686-ld-memory-tricks.patch
+Patch2: chromium-67.0.3396.62-gn-system.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
-Patch13: chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
-# Correctly compile the stdatomic.h in ffmpeg with gcc 4.8
-Patch14: chromium-64.0.3282.119-ffmpeg-stdatomic.patch
-# Nacl can't die soon enough
-Patch15: chromium-66.0.3359.117-system-clang.patch
+Patch3: chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
# Do not prefix libpng functions
-Patch16: chromium-60.0.3112.78-no-libpng-prefix.patch
+Patch4: chromium-60.0.3112.78-no-libpng-prefix.patch
# Do not mangle libjpeg
-Patch17: chromium-60.0.3112.78-jpeg-nomangle.patch
+Patch5: chromium-60.0.3112.78-jpeg-nomangle.patch
# Do not mangle zlib
-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.
-Patch19: chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch
-# from gentoo
-Patch20: chromium-61.0.3163.79-gcc-no-opt-safe-math.patch
-# From gentoo
-Patch21: chromium-72.0.3626.121-gcc5-r3.patch
-# To use round with gcc, you need to #include <cmath>
-Patch22: chromium-65.0.3325.146-gcc-round-fix.patch
-# Include proper headers to invoke memcpy()
-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
-Patch24: chromium-68.0.3440.106-boolfix.patch
-# From Debian
-Patch25: chromium-71.0.3578.98-skia-aarch64-buildfix.patch
+Patch6: chromium-77.0.3865.75-no-zlib-mangle.patch
# Do not use unrar code, it is non-free
-Patch27: chromium-73.0.3683.75-norar.patch
-# Upstream GCC fixes
-Patch28: chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch
-# Add "Fedora" to the user agent string
-Patch29: chromium-72.0.3626.121-fedora-user-agent.patch
-# Try to fix version.py for Rawhide
-Patch30: chromium-71.0.3578.98-py2-bootstrap.patch
-# Fix default on redeclaration error
-#
https://chromium.googlesource.com/chromium/src/+/122692ccee62223f266a988c...
-Patch31: chromium-68.0.3440.106-fix-default-on-redeclaration.patch
+Patch7: chromium-73.0.3683.75-norar.patch
# Use Gentoo's Widevine hack
#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
-Patch32: chromium-71.0.3578.98-widevine-r3.patch
-# Do not require sysroot
-# Forget about trying to make libc++
-# BUILD SANELY PLEASE
-Patch33: chromium-69.0.3497.81-build-sanely-please.patch
+Patch8: chromium-71.0.3578.98-widevine-r3.patch
# Disable fontconfig cache magic that breaks remoting
-Patch34: chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch
-# Fix aarch64 build against latest linux kernel headers
-Patch35: chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch
+Patch9: chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch
# drop rsp clobber, which breaks gcc9 (thanks to Jeff Law)
-Patch36: chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
+Patch10: chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
# Try to load widevine from other places
-Patch37: chromium-widevine-other-locations.patch
-# Disable -fno-delete-null-pointer-checks
-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
-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.
-Patch43: chromium-75.0.3770.80-revert-daff6b.patch
-# Avoid pure virtual crash destroying RenderProcessUserData
-#
https://chromium.googlesource.com/chromium/src/+/cdf306db81efaaaa95448758...
-Patch44: chromium-75.0.3770.80-pure-virtual-crash-fix.patch
+Patch11: chromium-widevine-other-locations.patch
+# Try to fix version.py for Rawhide
+Patch12: chromium-71.0.3578.98-py2-bootstrap.patch
+# Add "Fedora" to the user agent string
+Patch13: chromium-77.0.3865.75-fedora-user-agent.patch
# rename function to avoid conflict with rawhide glibc "gettid()"
-Patch45: chromium-75.0.3770.80-grpc-gettid-fix.patch
-# fix v8 compile with gcc
-#
https://chromium.googlesource.com/v8/v8/+/3b8c624bda58d05aea80dd9626cd550...
-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
+Patch50: chromium-75.0.3770.80-grpc-gettid-fix.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
+Patch51: 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
+Patch52: 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
+Patch53: 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
+Patch54: chromium-77.0.3865.75-certificate-transparency.patch
+#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
+Patch55: chromium-77.0.3865.75-unbundle-zlib.patch
+# Needs to be submitted..
+Patch56: chromium-77.0.3865.75-gcc-include-memory.patch
+#
https://chromium.googlesource.com/chromium/src/+/6b633c4b14850df376d5cec5...
+Patch57: chromium-77.0.3865.75-base-gcc-no-alignas.patch
+#
https://chromium.googlesource.com/chromium/src/+/27e25336b8316ff3ec4e4640...
+Patch58: chromium-77.0.3865.75-harfbuzz-subset.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/f08cb0022527081c078e...
+Patch59: chromium-77.0.3865.75-gcc-abstract-class.patch
+#
https://chromium.googlesource.com/chromium/src/+/5baf7df7f4c5971dab552897...
+Patch60: chromium-77.0.3865.75-missing-limits.patch
+#
https://chromium.googlesource.com/chromium/src/+/74138b9febd37eac0fc26b8e...
+Patch61: chromium-77.0.3865.90-linked-hash-set.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
+Patch102: chromium-77.0.3865.75-el7-noexcept.patch
# Enable VAAPI support on Linux
# NOTE: This patch will never land upstream
@@ -318,7 +240,6 @@ Patch205: chromium-76.0.3809.100-pulse-api-change.patch
# Apply these patches to work around EPEL8 issues
Patch300: chromium-76.0.3809.132-rhel8-force-disable-use_gnome_keyring.patch
-Patch301: chromium-76.0.3809.132-chromedriver-zlib-fix.patch
# Use chromium-latest.py to generate clean tarball from released build tarballs, found
here:
#
http://build.chromium.org/buildbot/official/
@@ -370,12 +291,15 @@ BuildRequires: flex
BuildRequires: fontconfig-devel
BuildRequires: GConf2-devel
BuildRequires: glib2-devel
+%if 0%{?fedora} <= 27
+BuildRequires: gnome-keyring-devel
+%endif
BuildRequires: glibc-devel
BuildRequires: gperf
%if 0%{?bundleharfbuzz}
#nothing
%else
-BuildRequires: harfbuzz-devel >= 2.3.0
+BuildRequires: harfbuzz-devel >= 2.4.0
%endif
BuildRequires: libatomic
BuildRequires: libcap-devel
@@ -391,15 +315,11 @@ BuildRequires: libusb-devel
BuildRequires: libXdamage-devel
BuildRequires: libXScrnSaver-devel
BuildRequires: libXtst-devel
-%if %{bundleminizip}
-# We're using the bundle, baby.
-%else
%if 0%{?fedora} >= 30
BuildRequires: minizip-compat-devel
%else
BuildRequires: minizip-devel
%endif
-%endif
# RHEL 7's nodejs is too old
%if 0%{?fedora}
BuildRequires: nodejs
@@ -540,9 +460,9 @@
Source109:
https://github.com/google/fonts/blob/master/apache/tinos/Tinos-BoldIt
Source110:
https://github.com/google/fonts/blob/master/apache/tinos/Tinos-Italic.ttf
Source111:
https://github.com/google/fonts/blob/master/apache/tinos/Tinos-Regular.ttf
%else
-BuildRequires: google-croscore-arimo-fonts
-BuildRequires: google-croscore-cousine-fonts
-BuildRequires: google-croscore-tinos-fonts
+BuildRequires: google-croscore-arimo-fonts
+BuildRequires: google-croscore-cousine-fonts
+BuildRequires: google-croscore-tinos-fonts
%endif
%if 0%{?rhel} == 7
Source112:
https://releases.pagure.org/lohit/lohit-gurmukhi-ttf-2.91.2.tar.gz
@@ -633,7 +553,7 @@ Provides: bundled(freetype) = 2.9.3
%endif
Provides: bundled(gperftools) = svn144
%if 0%{?bundleharfbuzz}
-Provides: bundled(harfbuzz) = 2.3.0
+Provides: bundled(harfbuzz) = 2.4.0
%endif
Provides: bundled(hunspell) = 1.6.0
Provides: bundled(iccjpeg)
@@ -703,36 +623,18 @@ Provides: bundled(xdg-user-dirs)
Requires(post): /usr/sbin/semanage
Requires(post): /usr/sbin/restorecon
-%if %{freeworld}
-Provides: chromium-libs-media = %{version}-%{release}
-Provides: chromium-libs-media%{_isa} = %{version}-%{release}
-Requires: chromium-libs%{_isa} = %{version}
-Requires(post): %{_sbindir}/update-alternatives
-Requires(preun): %{_sbindir}/update-alternatives
-
-%description
-Chromium media libraries built with all possible codecs. Chromium is an
-open-source web browser, powered by WebKit (Blink). This package replaces
-the default chromium-libs-media package, which is limited in what it
-can include.
-%else
%description
Chromium is an open-source web browser, powered by WebKit (Blink).
-%endif
%package common
Summary: Files needed for both the headless_shell and full Chromium
# Chromium needs an explicit Requires: minizip-compat
# We put it here to cover headless too.
-%if %{bundleminizip}
-# Using the bundle. No Requires needed.
-%else
%if 0%{?fedora} >= 30
Requires: minizip-compat%{_isa}
%else
Requires: minizip%{_isa}
%endif
-%endif
%description common
%{summary}.
@@ -749,6 +651,19 @@ Requires(preun): %{_sbindir}/update-alternatives
Shared libraries used by chromium (and chrome-remote-desktop).
%if %{freeworld}
+%package -n chromium-libs-media-freeworld
+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}
+Requires(post): %{_sbindir}/update-alternatives
+Requires(preun): %{_sbindir}/update-alternatives
+
+%description -n chromium-libs-media-freeworld
+Chromium media libraries built with all possible codecs. Chromium is an
+open-source web browser, powered by WebKit (Blink). This package replaces
+the default chromium-libs-media package, which is limited in what it
+can include.
%else
%package libs-media
Summary: Shared libraries used by the chromium media subsystem
@@ -807,80 +722,46 @@ udev.
%setup -q -n chromium-%{version}
### Chromium Fedora Patches ###
-%patch0 -p1 -b .gcc5
-%patch1 -p1 -b .pathmax
-%patch2 -p1 -b .addrfix
-%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
-%if %{bundleminizip}
-# Leave zlib mangling in place
-%else
-%patch18 -p1 -b .nozmangle
-%endif
-%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
+%patch0 -p1 -b .sandboxpie
+%patch1 -p1 -b .etc
+%patch2 -p1 -b .gnsystem
+%patch3 -p1 -b .revert
+%patch4 -p1 -b .nolibpngprefix
+%patch5 -p1 -b .nolibjpegmangle
+%patch6 -p1 -b .nozlibmangle
+%patch7 -p1 -b .nounrar
+%patch8 -p1 -b .widevine-hack
+%patch9 -p1 -b .nofontconfigcache
+%patch10 -p1 -b .gcc9
+%patch11 -p1 -b .widevine-other-locations
+%patch12 -p1 -b .py2
+
+# Short term fixes (usually gcc and backports)
+%patch50 -p1 -b .gettid-fix
+%patch51 -p1 -b .gcc-no-alignas-and-export
+%patch52 -p1 -b .gcc-remoting-constexpr
+%patch53 -p1 -b .vtable-symbol-undefined
+%patch54 -p1 -b .certificate-transparency
+%patch55 -p1 -b .unbundle-zlib
+%patch56 -p1 -b .gcc-include-memory
+%patch57 -p1 -b .base-gcc-no-alignas
+%patch58 -p1 -b .harfbuzz-subset
+%patch59 -p1 -b .gcc-abstract-class
+%patch60 -p1 -b .missing-limits
+%patch61 -p1 -b .linked-hash-set
+
+# Fedora branded user agent
+%if 0%{?fedora}
+%patch13 -p1 -b .fedora-user-agent
+%endif
# EPEL specific patches
%if 0%{?rhel} == 7
-%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 %{use_vaapi}
%patch202 -p1 -b .vaapi
%ifarch i686
@@ -897,10 +778,6 @@ udev.
%patch300 -p1 -b .disblegnomekeyring
%endif
-%if %{bundleminizip}
-%patch301 -p1 -b .chromedriver-zlib
-%endif
-
# Change shebang in all relevant files in this directory and all subdirectories
# See `man find` for how the `-exec command {} +` syntax works
find -type f -exec sed -iE '1s=^#! */usr/bin/\(python\|env
python\)[23]\?=#!%{__python2}=' {} +
@@ -1162,9 +1039,6 @@ build/linux/unbundle/remove_bundled_libraries.py \
%endif
'third_party/mesa' \
'third_party/metrics_proto' \
-%if %{bundleminizip}
- 'third_party/minizip' \
-%endif
'third_party/modp_b64' \
'third_party/nasm' \
'third_party/node' \
@@ -1173,7 +1047,9 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/openh264' \
%endif
'third_party/openscreen' \
+ 'third_party/openscreen/src/third_party/tinycbor' \
'third_party/opus' \
+ 'third_party/one_euro_filter' \
'third_party/ots' \
'third_party/pdfium' \
'third_party/pdfium/third_party/agg23' \
@@ -1218,6 +1094,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/swiftshader/third_party/subzero' \
'third_party/swiftshader/third_party/llvm-subzero' \
'third_party/swiftshader/third_party/llvm-7.0' \
+ 'third_party/swiftshader/third_party/SPIRV-Headers' \
'third_party/tcmalloc' \
'third_party/test_fonts' \
'third_party/usb_ids' \
@@ -1311,12 +1188,8 @@ build/linux/unbundle/replace_gn_files.py --system-libraries \
%else
re2 \
%endif
-%if %{bundleminizip}
- yasm
-%else
yasm \
zlib
-%endif
# fix arm gcc
sed -i 's|arm-linux-gnueabihf-|arm-linux-gnu-|g' build/toolchain/linux/BUILD.gn
@@ -1341,18 +1214,18 @@ if python2 -c 'import google ; print google.__path__'
2> /dev/null ; then \
exit 1 ; \
fi
-tools/gn/bootstrap/bootstrap.py -v "$CHROMIUM_CORE_GN_DEFINES
$CHROMIUM_BROWSER_GN_DEFINES"
-%{target}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES" %{target}
+tools/gn/bootstrap/bootstrap.py -v --no-clean
--gn-gen-args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES"
+%{builddir}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES" %{builddir}
%if %{freeworld}
# do not need to do headless gen
%else
%if %{build_headless}
-%{target}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_HEADLESS_GN_DEFINES"
%{headlesstarget}
+%{builddir}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_HEADLESS_GN_DEFINES"
%{headlessbuilddir}
%endif
%endif
-%{target}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES"
%{remotingtarget}
+%{builddir}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES"
%{remotingbuilddir}
%if %{bundlelibusbx}
# no hackity hack hack
@@ -1372,33 +1245,31 @@ sed -i.orig -e
's/getenv("CHROME_VERSION_EXTRA")/"Fedora Project"/' $FILE
. /opt/rh/devtoolset-%{dts_version}/enable
%endif
+# Decrease the debuginfo verbosity, so it compiles in koji
+%ifarch %{ix86}
+%global optflags %(echo %{optflags} | sed 's/-g /-g1 /')
+%endif
+
+echo
# Now do the full browser
%if 0%{freeworld}
-../depot_tools/ninja -C %{target} -vvv media
+%build_target %{builddir} media
%else
%if %{build_headless}
-# Do headless first.
-../depot_tools/ninja -C %{headlesstarget} -vvv headless_shell
+# Do headless first.
+%build_target %{headlessbuilddir} headless_shell
%endif
-../depot_tools/ninja -C %{target} -vvv chrome chrome_sandbox chromedriver clear_key_cdm
policy_templates
+%build_target %{builddir} chrome
+%build_target %{builddir} chrome_sandbox
+%build_target %{builddir} chromedriver
+%build_target %{builddir} clear_key_cdm
+%build_target %{builddir} policy_templates
# remote client
-pushd remoting
-
-# ../../depot_tools/ninja -C ../%{target} -vvv remoting_me2me_host remoting_start_host
remoting_it2me_native_messaging_host remoting_me2me_native_messaging_host
remoting_native_messaging_manifests remoting_resources
-../../depot_tools/ninja -C ../%{remotingtarget} -vvv remoting_all
-%if 0%{?build_remoting_app}
-GOOGLE_CLIENT_ID_REMOTING_IDENTITY_API=%{chromoting_client_id} ../../depot_tools/ninja
-vv -C ../out/Release/ remoting_webapp
+# ../../depot_tools/ninja -C ../%{builddir} -vvv remoting_me2me_host remoting_start_host
remoting_it2me_native_messaging_host remoting_me2me_native_messaging_host
remoting_native_messaging_manifests remoting_resources
+%build_target %{remotingbuilddir} remoting_all
%endif
-popd
-
-%endif
-
-# Nuke nacl/pnacl bits at the end of the build
-rm -rf out/Release/gen/sdk
-rm -rf native_client/toolchain
-rm -rf third_party/llvm-build/*
%install
rm -rf %{buildroot}
@@ -1406,7 +1277,7 @@ rm -rf %{buildroot}
%if 0%{freeworld}
mkdir -p %{buildroot}%{chromium_path}
-pushd %{target}
+pushd %{builddir}
cp -a libffmpeg.so* %{buildroot}%{chromium_path}
cp -a libmedia.so* %{buildroot}%{chromium_path}
mv %{buildroot}%{chromium_path}/libffmpeg.so{,.%{lsuffix}}
@@ -1435,9 +1306,12 @@ sed -i "s|@@EXTRA_FLAGS@@|$EXTRA_FLAGS|g"
%{buildroot}%{chromium_path}/%{chromiu
ln -s %{chromium_path}/%{chromium_browser_channel}.sh
%{buildroot}%{_bindir}/%{chromium_browser_channel}
mkdir -p %{buildroot}%{_mandir}/man1/
-pushd %{target}
+pushd %{builddir}
cp -a *.pak locales resources icudtl.dat %{buildroot}%{chromium_path}
# Reasonably sure we don't need this anymore. Chrome doesn't include it.
+%if 0
+cp -a protoc pyproto %{buildroot}%{chromium_path}
+%endif
%ifarch x86_64 i686 aarch64
cp -a swiftshader %{buildroot}%{chromium_path}
%endif
@@ -1479,7 +1353,7 @@ popd
%endif
popd
-pushd %{remotingtarget}
+pushd %{remotingbuilddir}
# See remoting/host/installer/linux/Makefile for logic
cp -a remoting_native_messaging_host %{buildroot}%{crd_path}/native-messaging-host
@@ -1515,12 +1389,8 @@ pushd %{buildroot}%{_sysconfdir}/pam.d/
ln -s system-auth chrome-remote-desktop
popd
-%if 0%{?build_remoting_app}
-cp -a remoting_client_plugin_newlib.* %{buildroot}%{chromium_path}
-%endif
-
%if %{build_headless}
-pushd %{headlesstarget}
+pushd %{headlessbuilddir}
cp -a headless_lib.pak headless_shell %{buildroot}%{chromium_path}
popd
%endif
@@ -1549,8 +1419,6 @@ mkdir -p %{buildroot}%{_datadir}/icons/hicolor/48x48/apps
cp -a chrome/app/theme/chromium/product_logo_48.png
%{buildroot}%{_datadir}/icons/hicolor/48x48/apps/%{chromium_browser_channel}.png
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/24x24/apps
cp -a chrome/app/theme/chromium/product_logo_24.png
%{buildroot}%{_datadir}/icons/hicolor/24x24/apps/%{chromium_browser_channel}.png
-mkdir -p %{buildroot}%{_datadir}/icons/hicolor/22x22/apps
-cp -a chrome/app/theme/chromium/product_logo_22.png
%{buildroot}%{_datadir}/icons/hicolor/22x22/apps/%{chromium_browser_channel}.png
# Install the master_preferences file
mkdir -p %{buildroot}%{_sysconfdir}/%{name}
@@ -1588,7 +1456,7 @@ if st and st.type == "link" then
end
%if %{freeworld}
-%posttrans
+%posttrans -n chromium-libs-media-freeworld
%{_sbindir}/update-alternatives --install \
%{_libdir}/chromium-browser/libffmpeg.so libffmpeg.so \
%{_libdir}/chromium-browser/libffmpeg.so.freeworld 20 \
@@ -1599,7 +1467,7 @@ end
--slave %{_libdir}/chromium-browser/libmedia.so.TOC libmedia.so.TOC \
%{_libdir}/chromium-browser/libmedia.so.TOC.freeworld
-%preun
+%preun -n chromium-libs-media-freeworld
if [ $1 = 0 ]; then
%{_sbindir}/alternatives --remove libffmpeg.so \
%{_libdir}/chromium-browser/libffmpeg.so.freeworld
@@ -1660,6 +1528,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%{chromium_path}/swiftshader/
%endif
%dir %{chromium_path}/PepperFlash/
+%if 0
+%{chromium_path}/protoc
+%endif
# %%{chromium_path}/remoting_locales/
# %%{chromium_path}/pseudo_locales/
# %%{chromium_path}/plugins/
@@ -1769,9 +1640,6 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%{crd_path}/user-session
%{_unitdir}/chrome-remote-desktop@.service
/var/lib/chrome-remote-desktop/
-%if 0%{?build_remoting_app}
-%{chromium_path}/remoting_client_plugin_newlib.*
-%endif
%files -n chromedriver
%doc AUTHORS
@@ -1783,7 +1651,7 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%if 0%{?shared}
%if %{freeworld}
-%files
+%files -n chromium-libs-media-freeworld
%else
%files libs-media
%endif
@@ -1795,9 +1663,23 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
-* Fri Sep 6 2019 Tom Callaway <spot(a)fedoraproject.org> - 76.0.3809.132-3
+* Wed Oct 9 2019 Tom Callaway <spot(a)fedoraproject.org> - 77.0.3865.90-3
- spec cleanups and changes to make EPEL8 try to build
-- freeworld changes from Nicolas Chauvet
+
+* Mon Sep 23 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.90-2
+- Fix the icon
+- Remove quite a few of downstream patches
+- Fix the crashes by backporting an upstream bug
+- Resolves: rhbz#1754179
+
+* Thu Sep 19 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.90-1
+- Update to 77.0.3865.90
+
+* Mon Sep 16 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.75-2
+- Update the list of private libraries
+
+* Fri Sep 13 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.75-1
+- Update to 77.0.3865.75
* Tue Sep 03 2019 Tomas Popela <tpopela(a)redhat.com> - 76.0.3809.132-2
- Backport patch to fix certificate transparency
diff --git a/sources b/sources
index 2d38a7c..13e91e7 100644
--- a/sources
+++ b/sources
@@ -17,4 +17,4 @@ SHA512 (Tinos-Italic.ttf) =
d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0
SHA512 (Tinos-Regular.ttf) =
58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f
SHA512 (Ahem.ttf) =
aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
SHA512 (node-v8.9.1-linux-x64.tar.gz) =
a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
-SHA512 (chromium-76.0.3809.132-clean.tar.xz) =
fbc5f989945adfaffb9fb5199ccb988accdc53f41a03bba9c4ab3df8585b9267b1f34cd7a6ac487eff34ebb6e65865e32ceea4ad945eec30f871d8eed41f3e6f
+SHA512 (chromium-77.0.3865.90-clean.tar.xz) =
696c5b01756fb720645512fc997f4c378001a01f74bb61fe2b27722b7a3c6bbef782af82ec5678e8fe7ff76285164a331b3a99eff9c5f605ff477b3795c968c4
commit 0f0792f310ed8f54ca8bf6b73f6c020253dc5f54
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Mon Sep 23 17:25:20 2019 +0200
Fix the icon
Remove quite a few of downstream patches
Fix the crashes by backporting an upstream bug
Resolves: rhbz#1754179
diff --git a/chromium-77.0.3865.90-linked-hash-set.patch
b/chromium-77.0.3865.90-linked-hash-set.patch
new file mode 100644
index 0000000..f921f1a
--- /dev/null
+++ b/chromium-77.0.3865.90-linked-hash-set.patch
@@ -0,0 +1,130 @@
+From 74138b9febd37eac0fc26b8efb110014a83a52c6 Mon Sep 17 00:00:00 2001
+From: Jeremy Roman <jbroman(a)chromium.org>
+Date: Wed, 07 Aug 2019 13:26:48 +0000
+Subject: [PATCH] WTF: Make LinkedHashSet understand values for which memset
initialization would be bad.
+
+Includes a unit test which fails before, and uses this to fix FontCacheKeyTraits.
+
+Bug: 980025
+Change-Id: If41f97444c7fd37b9b95d6dadaf3da5689079e9e
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1739948
+Reviewed-by: Kentaro Hara <haraken(a)chromium.org>
+Reviewed-by: Yutaka Hirano <yhirano(a)chromium.org>
+Commit-Queue: Jeremy Roman <jbroman(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#684731}
+---
+
+diff --git a/third_party/blink/renderer/platform/fonts/font_cache_key.h
b/third_party/blink/renderer/platform/fonts/font_cache_key.h
+index 0efc8fb..90063cb 100644
+--- a/third_party/blink/renderer/platform/fonts/font_cache_key.h
++++ b/third_party/blink/renderer/platform/fonts/font_cache_key.h
+@@ -133,6 +133,10 @@
+
+ struct FontCacheKeyTraits : WTF::SimpleClassHashTraits<FontCacheKey> {
+ STATIC_ONLY(FontCacheKeyTraits);
++
++ // std::string's empty state need not be zero in all implementations,
++ // and it is held within FontFaceCreationParams.
++ static const bool kEmptyValueIsZero = false;
+ };
+
+ } // namespace blink
+diff --git a/third_party/blink/renderer/platform/wtf/linked_hash_set.h
b/third_party/blink/renderer/platform/wtf/linked_hash_set.h
+index b35b6e9..77e524c 100644
+--- a/third_party/blink/renderer/platform/wtf/linked_hash_set.h
++++ b/third_party/blink/renderer/platform/wtf/linked_hash_set.h
+@@ -146,6 +146,11 @@
+ LinkedHashSetNodeBase* next)
+ : LinkedHashSetNodeBase(prev, next), value_(value) {}
+
++ LinkedHashSetNode(ValueArg&& value,
++ LinkedHashSetNodeBase* prev,
++ LinkedHashSetNodeBase* next)
++ : LinkedHashSetNodeBase(prev, next), value_(std::move(value)) {}
++
+ LinkedHashSetNode(LinkedHashSetNode&& other)
+ : LinkedHashSetNodeBase(std::move(other)),
+ value_(std::move(other.value_)) {}
+@@ -445,10 +450,13 @@
+
+ // The slot is empty when the next_ field is zero so it's safe to zero
+ // the backing.
+- static const bool kEmptyValueIsZero = true;
++ static const bool kEmptyValueIsZero = ValueTraits::kEmptyValueIsZero;
+
+ static const bool kHasIsEmptyValueFunction = true;
+ static bool IsEmptyValue(const Node& node) { return !node.next_; }
++ static Node EmptyValue() {
++ return Node(ValueTraits::EmptyValue(), nullptr, nullptr);
++ }
+
+ static const int kDeletedValue = -1;
+
+diff --git a/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
b/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
+index 4c3f899..cd1be00 100644
+--- a/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
++++ b/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc
+@@ -487,6 +487,7 @@
+ };
+
+ struct Complicated {
++ Complicated() : Complicated(0) {}
+ Complicated(int value) : simple_(value) { objects_constructed_++; }
+
+ Complicated(const Complicated& other) : simple_(other.simple_) {
+@@ -495,9 +496,6 @@
+
+ Simple simple_;
+ static int objects_constructed_;
+-
+- private:
+- Complicated() = delete;
+ };
+
+ int Complicated::objects_constructed_ = 0;
+@@ -731,4 +729,45 @@
+
+ } // anonymous namespace
+
++// A unit type which objects to its state being initialized wrong.
++struct InvalidZeroValue {
++ InvalidZeroValue() = default;
++ InvalidZeroValue(WTF::HashTableDeletedValueType) : deleted_(true) {}
++ ~InvalidZeroValue() { CHECK(ok_); }
++ bool IsHashTableDeletedValue() const { return deleted_; }
++
++ bool ok_ = true;
++ bool deleted_ = false;
++};
++
++template <>
++struct HashTraits<InvalidZeroValue> :
SimpleClassHashTraits<InvalidZeroValue> {
++ static const bool kEmptyValueIsZero = false;
++};
++
++template <>
++struct DefaultHash<InvalidZeroValue> {
++ struct Hash {
++ static unsigned GetHash(const InvalidZeroValue&) { return 0; }
++ static bool Equal(const InvalidZeroValue&, const InvalidZeroValue&) {
++ return true;
++ }
++ };
++};
++
++template <typename Set>
++class ListOrLinkedHashSetInvalidZeroTest : public testing::Test {};
++
++using InvalidZeroValueSetTypes =
++ testing::Types<ListHashSet<InvalidZeroValue>,
++ ListHashSet<InvalidZeroValue, 1>,
++ LinkedHashSet<InvalidZeroValue>>;
++TYPED_TEST_SUITE(ListOrLinkedHashSetInvalidZeroTest, InvalidZeroValueSetTypes);
++
++TYPED_TEST(ListOrLinkedHashSetInvalidZeroTest, InvalidZeroValue) {
++ using Set = TypeParam;
++ Set set;
++ set.insert(InvalidZeroValue());
++}
++
+ } // namespace WTF
diff --git a/chromium.spec b/chromium.spec
index a37d653..1542845 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -162,7 +162,7 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
Name: chromium%{chromium_channel}
%endif
Version: %{majorversion}.0.3865.90
-Release: 1%{?dist}
+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)
@@ -222,6 +222,8 @@ Patch58: chromium-77.0.3865.75-harfbuzz-subset.patch
Patch59: chromium-77.0.3865.75-gcc-abstract-class.patch
#
https://chromium.googlesource.com/chromium/src/+/5baf7df7f4c5971dab552897...
Patch60: chromium-77.0.3865.75-missing-limits.patch
+#
https://chromium.googlesource.com/chromium/src/+/74138b9febd37eac0fc26b8e...
+Patch61: chromium-77.0.3865.90-linked-hash-set.patch
# Use lstdc++ on EPEL7 only
Patch101: chromium-75.0.3770.100-epel7-stdc++.patch
@@ -739,6 +741,7 @@ udev.
%patch58 -p1 -b .harfbuzz-subset
%patch59 -p1 -b .gcc-abstract-class
%patch60 -p1 -b .missing-limits
+%patch61 -p1 -b .linked-hash-set
# Fedora branded user agent
%if 0%{?fedora}
@@ -1643,6 +1646,12 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
+* Mon Sep 23 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.90-2
+- Fix the icon
+- Remove quite a few of downstream patches
+- Fix the crashes by backporting an upstream bug
+- Resolves: rhbz#1754179
+
* Thu Sep 19 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.90-1
- Update to 77.0.3865.90
commit 6aa7bda96ed4de25260acb5a9e907d5ff1fa1368
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Mon Sep 23 17:21:06 2019 +0200
Fix the icon
So the monochromatic icon is being shown even in the GNOME's overview
and it's ugly (as it's upscaled from 22x22). Remove it.
diff --git a/chromium.spec b/chromium.spec
index e426495..a37d653 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -1399,8 +1399,6 @@ mkdir -p %{buildroot}%{_datadir}/icons/hicolor/48x48/apps
cp -a chrome/app/theme/chromium/product_logo_48.png
%{buildroot}%{_datadir}/icons/hicolor/48x48/apps/%{chromium_browser_channel}.png
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/24x24/apps
cp -a chrome/app/theme/chromium/product_logo_24.png
%{buildroot}%{_datadir}/icons/hicolor/24x24/apps/%{chromium_browser_channel}.png
-mkdir -p %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
-cp -a chrome/app/theme/chromium/product_logo_22_mono.png
%{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/%{chromium_browser_channel}.png
# Install the master_preferences file
mkdir -p %{buildroot}%{_sysconfdir}/%{name}
commit 5a0168685de2184cd3ce9b36a80febe22a738e54
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Sep 20 09:57:18 2019 +0200
Remove the unused patches or patches that are not needed anymore
Also replace some patches with changes in the SPEC file.
diff --git a/chromium-45.0.2454.101-linux-path-max.patch
b/chromium-45.0.2454.101-linux-path-max.patch
deleted file mode 100644
index 3146349..0000000
--- a/chromium-45.0.2454.101-linux-path-max.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-diff -up chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/path.h.pathmax
chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/path.h
----
chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/path.h.pathmax 2015-10-07
11:26:11.813477839 -0400
-+++ chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/path.h 2015-10-07
11:26:40.845845054 -0400
-@@ -12,6 +12,11 @@
-
- #include "sdk_util/macros.h"
-
-+/* Needed for PATH_MAX */
-+#ifndef PATH_MAX
-+#define PATH_MAX 4096
-+#endif
-+
- namespace nacl_io {
-
- class Path {
-diff -up chromium-45.0.2454.101/native_client/src/untrusted/nacl/getcwd.c.pathmax
chromium-45.0.2454.101/native_client/src/untrusted/nacl/getcwd.c
---- chromium-45.0.2454.101/native_client/src/untrusted/nacl/getcwd.c.pathmax 2015-08-22
15:02:08.000000000 -0400
-+++ chromium-45.0.2454.101/native_client/src/untrusted/nacl/getcwd.c 2015-10-07
10:58:56.172018783 -0400
-@@ -11,6 +11,10 @@
-
- #include <errno.h>
- #include <limits.h>
-+/* Needed for PATH_MAX */
-+#ifndef PATH_MAX
-+#define PATH_MAX 4096
-+#endif
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
-diff -up
chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/syscalls/realpath.c.pathmax
chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/syscalls/realpath.c
----
chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/syscalls/realpath.c.pathmax 2015-10-09
10:57:38.424348662 -0400
-+++
chromium-45.0.2454.101/native_client_sdk/src/libraries/nacl_io/syscalls/realpath.c 2015-10-09
10:57:51.541059938 -0400
-@@ -13,6 +13,11 @@
-
- #include "sdk_util/macros.h"
-
-+/* Needed for PATH_MAX */
-+#ifndef PATH_MAX
-+#define PATH_MAX 4096
-+#endif
-+
- EXTERN_C_BEGIN
-
- #if defined(__native_client__)
diff --git a/chromium-53.0.2785.92-boringssl-time-fix.patch
b/chromium-53.0.2785.92-boringssl-time-fix.patch
deleted file mode 100644
index 8d67957..0000000
--- a/chromium-53.0.2785.92-boringssl-time-fix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up chromium-53.0.2785.92/third_party/boringssl/src/crypto/x509/by_dir.c.timefix
chromium-53.0.2785.92/third_party/boringssl/src/crypto/x509/by_dir.c
----
chromium-53.0.2785.92/third_party/boringssl/src/crypto/x509/by_dir.c.timefix 2016-09-06
15:20:06.094396255 -0400
-+++ chromium-53.0.2785.92/third_party/boringssl/src/crypto/x509/by_dir.c 2016-09-06
15:20:16.893187930 -0400
-@@ -56,6 +56,7 @@
- * [including the GNU Public Licence.] */
-
- #include <string.h>
-+#include <time.h>
- #include <sys/stat.h>
- #include <sys/types.h>
-
diff --git a/chromium-54.0.2840.59-jpeg-include-dir.patch
b/chromium-54.0.2840.59-jpeg-include-dir.patch
deleted file mode 100644
index f96a56c..0000000
--- a/chromium-54.0.2840.59-jpeg-include-dir.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up chromium-54.0.2840.59/third_party/BUILD.gn.jpegfix
chromium-54.0.2840.59/third_party/BUILD.gn
---- chromium-54.0.2840.59/third_party/BUILD.gn.jpegfix 2016-10-17 11:45:44.995340495
-0400
-+++ chromium-54.0.2840.59/third_party/BUILD.gn 2016-10-17 11:46:35.254289872 -0400
-@@ -20,6 +20,7 @@ declare_args() {
- config("system_libjpeg_config") {
- libs = [ "jpeg" ]
- defines = [ "USE_SYSTEM_LIBJPEG" ]
-+ include_dirs = [ "/usr/include/" ]
- }
-
- config("libjpeg_turbo_config") {
diff --git a/chromium-55.0.2883.75-addrfix.patch b/chromium-55.0.2883.75-addrfix.patch
deleted file mode 100644
index 00c214c..0000000
--- a/chromium-55.0.2883.75-addrfix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up chromium-55.0.2883.75/third_party/boringssl/BUILD.gn.addrfix
chromium-55.0.2883.75/third_party/boringssl/BUILD.gn
---- chromium-55.0.2883.75/third_party/boringssl/BUILD.gn.addrfix 2016-12-12
15:30:27.727834891 -0500
-+++ chromium-55.0.2883.75/third_party/boringssl/BUILD.gn 2016-12-12 15:30:53.095709352
-0500
-@@ -24,6 +24,7 @@ config("internal_config") {
- "BORINGSSL_IMPLEMENTATION",
- "BORINGSSL_NO_STATIC_INITIALIZER",
- "OPENSSL_SMALL",
-+ "_POSIX_C_SOURCE=200112L",
- ]
- configs = [
- # TODO(davidben): Fix size_t truncations in BoringSSL.
diff --git a/chromium-59.0.3071.86-i686-ld-memory-tricks.patch
b/chromium-59.0.3071.86-i686-ld-memory-tricks.patch
deleted file mode 100644
index 9dde4c5..0000000
--- a/chromium-59.0.3071.86-i686-ld-memory-tricks.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn.ldmemory
chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn
---- chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn.ldmemory 2017-06-07
15:37:09.436616113 -0400
-+++ chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn 2017-06-07 15:38:04.508519102
-0400
-@@ -93,7 +93,7 @@ gcc_toolchain("x86") {
- nm = "nm"
- ar = "ar"
- ld = cxx
-- extra_cppflags = "-fno-delete-null-pointer-checks"
-+ extra_cppflags = "-fno-delete-null-pointer-checks -g1"
-
- # Output linker map files for binary size analysis.
- enable_linker_map = true
diff --git a/chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch
b/chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch
deleted file mode 100644
index 7248825..0000000
--- a/chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h.pathfix
chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h
---- chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h.pathfix 2017-08-25
15:29:12.143242471 -0400
-+++ chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h 2017-08-25
15:29:36.941835865 -0400
-@@ -39,13 +39,13 @@
- #include "log.h"
-
- #if ARCH_AARCH64
--# include "aarch64/timer.h"
-+# include "libavutil/aarch64/timer.h"
- #elif ARCH_ARM
--# include "arm/timer.h"
-+# include "libavutil/arm/timer.h"
- #elif ARCH_PPC
--# include "ppc/timer.h"
-+# include "libavutil/ppc/timer.h"
- #elif ARCH_X86
--# include "x86/timer.h"
-+# include "libavutil/x86/timer.h"
- #endif
-
- #if !defined(AV_READ_TIME)
diff --git a/chromium-62.0.3202.62-kmaxskip-constexpr.patch
b/chromium-62.0.3202.62-kmaxskip-constexpr.patch
deleted file mode 100644
index d4f8250..0000000
--- a/chromium-62.0.3202.62-kmaxskip-constexpr.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc.kmaxskip
chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc
---- chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc.kmaxskip 2017-10-18
10:00:28.503714392 -0400
-+++ chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc 2017-10-18 10:00:43.153430212
-0400
-@@ -336,7 +336,7 @@ TYPES(M);
- #undef TYPES
-
- const SkRect PaintOp::kUnsetRect = {SK_ScalarInfinity, 0, 0, 0};
--const size_t PaintOp::kMaxSkip;
-+constexpr size_t PaintOp::kMaxSkip;
-
- std::string PaintOpTypeToString(PaintOpType type) {
- switch (type) {
diff --git a/chromium-63.0.3289.84-nullfix.patch b/chromium-63.0.3289.84-nullfix.patch
deleted file mode 100644
index c66aff1..0000000
--- a/chromium-63.0.3289.84-nullfix.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-diff -up chromium-63.0.3239.84/build/toolchain/linux/BUILD.gn.nullfix
chromium-63.0.3239.84/build/toolchain/linux/BUILD.gn
---- chromium-63.0.3239.84/build/toolchain/linux/BUILD.gn.nullfix 2017-12-06
15:05:21.000000000 -0500
-+++ chromium-63.0.3239.84/build/toolchain/linux/BUILD.gn 2017-12-07 10:44:34.507207080
-0500
-@@ -31,6 +31,7 @@ gcc_toolchain("arm64") {
- ld = cxx
- readelf = "${toolprefix}readelf"
- nm = "${toolprefix}nm"
-+ extra_cppflags = "-fno-delete-null-pointer-checks"
-
- toolchain_args = {
- current_cpu = "arm64"
-@@ -49,6 +50,7 @@ gcc_toolchain("arm") {
- ld = cxx
- readelf = "${toolprefix}readelf"
- nm = "${toolprefix}nm"
-+ extra_cppflags = "-fno-delete-null-pointer-checks"
-
- toolchain_args = {
- current_cpu = "arm"
-@@ -99,6 +101,7 @@ gcc_toolchain("x86") {
- nm = "nm"
- ar = "ar"
- ld = cxx
-+ extra_cppflags = "-fno-delete-null-pointer-checks"
-
- # Output linker map files for binary size analysis.
- enable_linker_map = true
-@@ -152,6 +155,7 @@ gcc_toolchain("x64") {
- nm = "nm"
- ar = "ar"
- ld = cxx
-+ extra_cppflags = "-fno-delete-null-pointer-checks"
-
- # Output linker map files for binary size analysis.
- enable_linker_map = true
-@@ -186,6 +190,7 @@ gcc_toolchain("mipsel") {
- ld = cxx
- readelf = "${toolprefix}readelf"
- nm = "${toolprefix}nm"
-+ extra_cppflags = "-fno-delete-null-pointer-checks"
-
- toolchain_args = {
- cc_wrapper = ""
diff --git a/chromium-64.0.3282.119-ffmpeg-stdatomic.patch
b/chromium-64.0.3282.119-ffmpeg-stdatomic.patch
deleted file mode 100644
index 64c5f26..0000000
--- a/chromium-64.0.3282.119-ffmpeg-stdatomic.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -up chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c.ffmpeg-stdatomic
chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c
---- chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c.ffmpeg-stdatomic 2018-01-25
11:55:57.880936815 -0500
-+++ chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c 2018-01-25
11:57:18.456787888 -0500
-@@ -18,7 +18,13 @@
-
- #include <stddef.h>
- #include <stdint.h>
-+// GCC 4.8 didn't have stdatomic, but was advertising it.
-+//
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58016
-+#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ == 4 ||
(__GNUC__ == 4 && (__GNUC_MINOR__ == 8)))
-+#include <compat/atomics/gcc/stdatomic.h>
-+#else
- #include <stdatomic.h>
-+#endif
-
- #include "attributes.h"
- #include "cpu.h"
diff --git a/chromium-65.0.3325.146-gcc-round-fix.patch
b/chromium-65.0.3325.146-gcc-round-fix.patch
deleted file mode 100644
index a29779d..0000000
--- a/chromium-65.0.3325.146-gcc-round-fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc.gcc-round-fix
chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc
---- chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc.gcc-round-fix 2018-03-07
10:57:11.284376048 -0500
-+++ chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc 2018-03-07
10:58:16.590742636 -0500
-@@ -10,7 +10,7 @@
-
- #include "p2p/base/port.h"
-
--#include <math.h>
-+#include <cmath>
-
- #include <algorithm>
- #include <utility>
diff --git a/chromium-65.0.3325.146-memcpy-fix.patch
b/chromium-65.0.3325.146-memcpy-fix.patch
deleted file mode 100644
index b2b2cd4..0000000
--- a/chromium-65.0.3325.146-memcpy-fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc.memcpyfix
chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc
----
chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc.memcpyfix 2018-03-07
11:04:14.690379817 -0500
-+++ chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc 2018-03-07
11:06:04.339878069 -0500
-@@ -3,7 +3,7 @@
- // found in the LICENSE file.
-
- #include "cc/paint/raw_memory_transfer_cache_entry.h"
--
-+#include <memory.h>
- #include <string.h>
-
- namespace cc {
diff --git a/chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch
b/chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch
deleted file mode 100644
index d5b19cf..0000000
--- a/chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -up
chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h.gcc-cpolicyprovider
chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h
----
chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h.gcc-cpolicyprovider 2018-04-25
16:33:40.872222779 -0400
-+++
chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h 2018-04-25
16:37:23.175883637 -0400
-@@ -11,13 +11,13 @@
- #include "base/callback_forward.h"
- #include "base/macros.h"
- #include "components/policy/core/browser/configuration_policy_handler_list.h"
-+#include "components/policy/core/common/configuration_policy_provider.h"
- #include "components/policy/core/common/schema.h"
- #include "components/policy/core/common/schema_registry.h"
- #include "components/policy/policy_export.h"
-
- namespace policy {
-
--class ConfigurationPolicyProvider;
- class PolicyService;
- class PolicyServiceImpl;
-
diff --git a/chromium-66.0.3359.117-system-clang.patch
b/chromium-66.0.3359.117-system-clang.patch
deleted file mode 100644
index e90dc58..0000000
--- a/chromium-66.0.3359.117-system-clang.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up chromium-66.0.3359.117/build/config/clang/clang.gni.system-clang
chromium-66.0.3359.117/build/config/clang/clang.gni
---- chromium-66.0.3359.117/build/config/clang/clang.gni.system-clang 2018-04-18
12:08:45.658190297 -0400
-+++ chromium-66.0.3359.117/build/config/clang/clang.gni 2018-04-18 12:09:37.612032982
-0400
-@@ -4,7 +4,7 @@
-
- import("//build/toolchain/toolchain.gni")
-
--default_clang_base_path = "//third_party/llvm-build/Release+Asserts"
-+default_clang_base_path = "/usr"
-
- declare_args() {
- # Indicates if the build should use the Chrome-specific plugins for enforcing
diff --git a/chromium-67.0.3396.62-gcc5.patch b/chromium-67.0.3396.62-gcc5.patch
deleted file mode 100644
index ceef85d..0000000
--- a/chromium-67.0.3396.62-gcc5.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl.gcc5
chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl
----
chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl.gcc5 2018-05-30
04:44:33.000000000 -0400
-+++ chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl 2018-05-30
11:59:26.218625660 -0400
-@@ -262,7 +262,7 @@ interface mixin WebGL2RenderingContextBa
- const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43;
- const GLenum UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44;
- const GLenum UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46;
-- const GLenum INVALID_INDEX = 0xFFFFFFFF;
-+ const GLenum INVALID_INDEX = 256;
- const GLenum MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122;
- const GLenum MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125;
- const GLenum MAX_SERVER_WAIT_TIMEOUT = 0x9111;
diff --git a/chromium-68.0.3440.106-fix-default-on-redeclaration.patch
b/chromium-68.0.3440.106-fix-default-on-redeclaration.patch
deleted file mode 100644
index 4a92fba..0000000
--- a/chromium-68.0.3440.106-fix-default-on-redeclaration.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-diff -up chromium-68.0.3440.106/components/search_provider_logos/logo_common.cc.122692c
chromium-68.0.3440.106/components/search_provider_logos/logo_common.cc
----
chromium-68.0.3440.106/components/search_provider_logos/logo_common.cc.122692c 2018-08-17
14:54:30.587338865 -0400
-+++ chromium-68.0.3440.106/components/search_provider_logos/logo_common.cc 2018-08-17
14:55:20.461184298 -0400
-@@ -14,22 +14,22 @@ LogoMetadata::LogoMetadata() = default;
- LogoMetadata::LogoMetadata(const LogoMetadata&) = default;
- LogoMetadata::LogoMetadata(LogoMetadata&&) noexcept = default;
- LogoMetadata& LogoMetadata::operator=(const LogoMetadata&) = default;
--LogoMetadata& LogoMetadata::operator=(LogoMetadata&&) noexcept = default;
-+LogoMetadata& LogoMetadata::operator=(LogoMetadata&&) = default;
- LogoMetadata::~LogoMetadata() = default;
-
- EncodedLogo::EncodedLogo() = default;
- EncodedLogo::EncodedLogo(const EncodedLogo&) = default;
- EncodedLogo::EncodedLogo(EncodedLogo&&) noexcept = default;
- EncodedLogo& EncodedLogo::operator=(const EncodedLogo&) = default;
--EncodedLogo& EncodedLogo::operator=(EncodedLogo&&) noexcept = default;
-+EncodedLogo& EncodedLogo::operator=(EncodedLogo&&) = default;
- EncodedLogo::~EncodedLogo() = default;
-
- Logo::Logo() = default;
- Logo::~Logo() = default;
-
- LogoCallbacks::LogoCallbacks() = default;
--LogoCallbacks::LogoCallbacks(LogoCallbacks&&) noexcept = default;
--LogoCallbacks& LogoCallbacks::operator=(LogoCallbacks&&) noexcept =
default;
-+LogoCallbacks::LogoCallbacks(LogoCallbacks&&) = default;
-+LogoCallbacks& LogoCallbacks::operator=(LogoCallbacks&&) = default;
- LogoCallbacks::~LogoCallbacks() = default;
-
- } // namespace search_provider_logos
diff --git a/chromium-69.0.3497.81-build-sanely-please.patch
b/chromium-69.0.3497.81-build-sanely-please.patch
deleted file mode 100644
index 6241a97..0000000
--- a/chromium-69.0.3497.81-build-sanely-please.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff -up chromium-69.0.3497.81/build/config/BUILD.gn.fyoursysroot
chromium-69.0.3497.81/build/config/BUILD.gn
---- chromium-69.0.3497.81/build/config/BUILD.gn.fyoursysroot 2018-09-06
13:43:44.863375238 -0400
-+++ chromium-69.0.3497.81/build/config/BUILD.gn 2018-09-06 13:43:58.377083290 -0400
-@@ -284,9 +284,9 @@ group("executable_and_loadable_module_an
- public_deps += [ "//build/config/sanitizers:deps" ]
- }
-
-- if (use_custom_libcxx) {
-- public_deps += [ "//buildtools/third_party/libc++" ]
-- }
-+ # if (use_custom_libcxx) {
-+ # public_deps += [ "//buildtools/third_party/libc++" ]
-+ # }
-
- if (use_afl) {
- public_deps += [ "//third_party/afl" ]
-diff -up chromium-69.0.3497.81/build/config/sysroot.gni.fyoursysroot
chromium-69.0.3497.81/build/config/sysroot.gni
---- chromium-69.0.3497.81/build/config/sysroot.gni.fyoursysroot 2018-09-06
13:40:46.212232232 -0400
-+++ chromium-69.0.3497.81/build/config/sysroot.gni 2018-09-06 13:41:02.421882529 -0400
-@@ -15,9 +15,10 @@ declare_args() {
- # The absolute path to directory containing linux sysroot images
- target_sysroot_dir = "//build/linux"
-
-- use_sysroot = current_cpu == "x86" || current_cpu == "x64" ||
-- current_cpu == "arm" || current_cpu == "arm64" ||
-- current_cpu == "mipsel" || current_cpu ==
"mips64el"
-+ use_sysroot = false
-+ # use_sysroot = current_cpu == "x86" || current_cpu == "x64" ||
-+ # current_cpu == "arm" || current_cpu == "arm64" ||
-+ # current_cpu == "mipsel" || current_cpu ==
"mips64el"
- }
-
- if (current_os == target_os && current_cpu == target_cpu &&
diff --git a/chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch
b/chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch
deleted file mode 100644
index ccecfcb..0000000
--- a/chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up
chromium-70.0.3538.77/sandbox/linux/system_headers/arm64_linux_syscalls.h.aarch64-new-stat
chromium-70.0.3538.77/sandbox/linux/system_headers/arm64_linux_syscalls.h
----
chromium-70.0.3538.77/sandbox/linux/system_headers/arm64_linux_syscalls.h.aarch64-new-stat 2018-11-06
13:27:05.118766581 -0500
-+++ chromium-70.0.3538.77/sandbox/linux/system_headers/arm64_linux_syscalls.h 2018-11-06
13:27:34.575204504 -0500
-@@ -5,6 +5,8 @@
- #ifndef SANDBOX_LINUX_SYSTEM_HEADERS_ARM64_LINUX_SYSCALLS_H_
- #define SANDBOX_LINUX_SYSTEM_HEADERS_ARM64_LINUX_SYSCALLS_H_
-
-+#define __ARCH_WANT_NEW_STAT
-+
- #include <asm-generic/unistd.h>
-
- #if !defined(__NR_io_setup)
diff --git a/chromium-71.0.3578.98-skia-aarch64-buildfix.patch
b/chromium-71.0.3578.98-skia-aarch64-buildfix.patch
deleted file mode 100644
index 5da1674..0000000
--- a/chromium-71.0.3578.98-skia-aarch64-buildfix.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up
chromium-71.0.3578.98/third_party/skia/src/opts/SkRasterPipeline_opts.h.aarch64fix
chromium-71.0.3578.98/third_party/skia/src/opts/SkRasterPipeline_opts.h
----
chromium-71.0.3578.98/third_party/skia/src/opts/SkRasterPipeline_opts.h.aarch64fix 2018-12-14
11:17:43.249121756 -0500
-+++ chromium-71.0.3578.98/third_party/skia/src/opts/SkRasterPipeline_opts.h 2018-12-14
11:20:07.770030234 -0500
-@@ -658,7 +658,7 @@ SI F approx_powf(F x, F y) {
- }
-
- SI F from_half(U16 h) {
--#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary
workaround for some Google3 builds.
-+#if defined(JUMPER_IS_NEON) && defined(__aarch64__) &&
!defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
- return vcvt_f32_f16(h);
-
- #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
-@@ -678,7 +678,7 @@ SI F from_half(U16 h) {
- }
-
- SI U16 to_half(F f) {
--#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary
workaround for some Google3 builds.
-+#if defined(JUMPER_IS_NEON) && defined(__aarch64__) &&
!defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
- return vcvt_f16_f32(f);
-
- #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
diff --git a/chromium-72.0.3626.121-notest.patch b/chromium-72.0.3626.121-notest.patch
deleted file mode 100644
index e8b7bf4..0000000
--- a/chromium-72.0.3626.121-notest.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up chromium-72.0.3626.121/chrome/test/data/webui_test_resources.grd.notest
chromium-72.0.3626.121/chrome/test/data/webui_test_resources.grd
---- chromium-72.0.3626.121/chrome/test/data/webui_test_resources.grd.notest 2019-03-10
13:54:17.843583876 -0400
-+++ chromium-72.0.3626.121/chrome/test/data/webui_test_resources.grd 2019-03-10
14:03:29.302063637 -0400
-@@ -8,7 +8,6 @@
- </outputs>
- <release seq="1">
- <includes>
-- <include name="IDR_WEBUI_TEST_I18N_PROCESS_CSS_TEST"
file="webui/i18n_process_css_test.html" flattenhtml="true"
allowexternalscript="true" type="BINDATA" />
- <include name="IDR_WEB_UI_TEST_MOJO_JS"
file="${root_gen_dir}/chrome/test/data/webui/web_ui_test.mojom.js"
use_base_dir="false" type="BINDATA"/>
- <include name="IDR_WEB_UI_TEST_MOJO_LITE_JS"
file="${root_gen_dir}/chrome/test/data/webui/web_ui_test.mojom-lite.js"
use_base_dir="false" type="BINDATA"/>
- </includes>
diff --git a/chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch
b/chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch
deleted file mode 100644
index f8abb52..0000000
--- a/chromium-73.0.3683.75-disable-fno-delete-null-pointer-checks.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-diff -up chromium-73.0.3683.75/build/toolchain/linux/BUILD.gn.disable-ndnpc
chromium-73.0.3683.75/build/toolchain/linux/BUILD.gn
---- chromium-73.0.3683.75/build/toolchain/linux/BUILD.gn.disable-ndnpc 2019-03-13
10:29:00.331009643 -0400
-+++ chromium-73.0.3683.75/build/toolchain/linux/BUILD.gn 2019-03-13 10:29:28.344458746
-0400
-@@ -31,7 +31,7 @@ gcc_toolchain("arm64") {
- ld = cxx
- readelf = "${toolprefix}readelf"
- nm = "${toolprefix}nm"
-- extra_cppflags = "-fno-delete-null-pointer-checks"
-+ extra_cppflags = ""
-
- toolchain_args = {
- current_cpu = "arm64"
-@@ -50,7 +50,7 @@ gcc_toolchain("arm") {
- ld = cxx
- readelf = "${toolprefix}readelf"
- nm = "${toolprefix}nm"
-- extra_cppflags = "-fno-delete-null-pointer-checks"
-+ extra_cppflags = ""
-
- toolchain_args = {
- current_cpu = "arm"
-@@ -101,7 +101,7 @@ gcc_toolchain("x86") {
- nm = "nm"
- ar = "ar"
- ld = cxx
-- extra_cppflags = "-fno-delete-null-pointer-checks -g1"
-+ extra_cppflags = "-g1"
-
- # Output linker map files for binary size analysis.
- enable_linker_map = true
-@@ -155,7 +155,7 @@ gcc_toolchain("x64") {
- nm = "nm"
- ar = "ar"
- ld = cxx
-- extra_cppflags = "-fno-delete-null-pointer-checks"
-+ extra_cppflags = ""
-
- # Output linker map files for binary size analysis.
- enable_linker_map = true
-@@ -190,7 +190,7 @@ gcc_toolchain("mipsel") {
- ld = cxx
- readelf = "${toolprefix}readelf"
- nm = "${toolprefix}nm"
-- extra_cppflags = "-fno-delete-null-pointer-checks"
-+ extra_cppflags = ""
-
- toolchain_args = {
- cc_wrapper = ""
diff --git a/chromium-75.0.3770.100-git00281713.patch
b/chromium-75.0.3770.100-git00281713.patch
deleted file mode 100644
index 4356435..0000000
--- a/chromium-75.0.3770.100-git00281713.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -up
chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc.git00281713
chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc
----
chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc.git00281713 2019-07-02
09:10:38.951369854 -0400
-+++
chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc 2019-07-02
09:11:59.864642942 -0400
-@@ -12,13 +12,19 @@
- #include "chrome/browser/performance_manager/graph/process_node_impl.h"
- #include "chrome/browser/performance_manager/performance_manager.h"
- #include "chrome/browser/performance_manager/render_process_user_data.h"
-+#include "content/public/browser/render_process_host.h"
- #include
"services/resource_coordinator/public/mojom/coordination_unit.mojom.h"
-
- namespace {
-
- void BindProcessNode(
-- content::RenderProcessHost* render_process_host,
-+ int render_process_host_id,
- resource_coordinator::mojom::ProcessCoordinationUnitRequest request) {
-+ content::RenderProcessHost* render_process_host =
-+ content::RenderProcessHost::FromID(render_process_host_id);
-+ if (!render_process_host)
-+ return;
-+
- performance_manager::RenderProcessUserData* user_data =
- performance_manager::RenderProcessUserData::GetForRenderProcessHost(
- render_process_host);
-@@ -47,8 +53,7 @@ void ChromeContentBrowserClientPerforman
- blink::AssociatedInterfaceRegistry* associated_registry,
- content::RenderProcessHost* render_process_host) {
- registry->AddInterface(
-- base::BindRepeating(&BindProcessNode,
-- base::Unretained(render_process_host)),
-+ base::BindRepeating(&BindProcessNode, render_process_host->GetID()),
- base::SequencedTaskRunnerHandle::Get());
-
- // Ideally this would strictly be a "CreateForRenderProcess", but when a
diff --git a/chromium-75.0.3770.80-SIOCGSTAMP.patch
b/chromium-75.0.3770.80-SIOCGSTAMP.patch
deleted file mode 100644
index 0ef1e7f..0000000
--- a/chromium-75.0.3770.80-SIOCGSTAMP.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -up
chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h.SIOCGSTAMP
chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h
----
chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h.SIOCGSTAMP 2019-06-06
10:04:57.050403639 -0400
-+++ chromium-75.0.3770.80/third_party/webrtc/rtc_base/physical_socket_server.h 2019-06-06
10:06:03.975121688 -0400
-@@ -16,6 +16,11 @@
- #define WEBRTC_USE_EPOLL 1
- #endif
-
-+// for SIOCGSTAMP in Linux 5.2
-+#if defined(WEBRTC_LINUX)
-+#include <linux/sockios.h>
-+#endif
-+
- #include <memory>
- #include <set>
- #include <vector>
diff --git a/chromium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch
b/chromium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch
deleted file mode 100644
index 2a8ac2f..0000000
--- a/chromium-75.0.3770.80-aeed4d-gcc-dcheck_ne-fix.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up
chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc.gcc-dcheck_ne-fix
chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc
----
chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc.gcc-dcheck_ne-fix 2019-06-06
12:42:27.431575032 -0400
-+++
chromium-75.0.3770.80/cc/scheduler/compositor_frame_reporting_controller.cc 2019-06-06
12:43:05.692848409 -0400
-@@ -31,8 +31,8 @@ void CompositorFrameReportingController:
-
- void CompositorFrameReportingController::WillBeginMainFrame() {
- DCHECK(reporters_[PipelineStage::kBeginImplFrame]);
-- DCHECK_NE(reporters_[PipelineStage::kBeginMainFrame],
-- reporters_[PipelineStage::kBeginImplFrame]);
-+ DCHECK(reporters_[PipelineStage::kBeginMainFrame] !=
-+ reporters_[PipelineStage::kBeginImplFrame]);
- reporters_[PipelineStage::kBeginImplFrame]->StartStage(
- "SendBeginMainFrameToCommit");
- AdvanceReporterStage(PipelineStage::kBeginImplFrame,
diff --git a/chromium-75.0.3770.80-gcc-no-assume.patch
b/chromium-75.0.3770.80-gcc-no-assume.patch
deleted file mode 100644
index 0bbb08f..0000000
--- a/chromium-75.0.3770.80-gcc-no-assume.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up chromium-75.0.3770.80/third_party/angle/src/common/debug.h.gcc-assume
chromium-75.0.3770.80/third_party/angle/src/common/debug.h
---- chromium-75.0.3770.80/third_party/angle/src/common/debug.h.gcc-assume 2019-06-06
17:38:01.876631704 -0400
-+++ chromium-75.0.3770.80/third_party/angle/src/common/debug.h 2019-06-07
09:30:06.205446547 -0400
-@@ -248,7 +248,7 @@ std::ostream &FmtHex(std::ostream &os, T
- # define EVENT(message, ...) (void(0))
- #endif
-
--#if defined(COMPILER_GCC) || defined(__clang__)
-+#if defined(__GNUC__)
- # define ANGLE_CRASH() __builtin_trap()
- #else
- # define ANGLE_CRASH() ((void)(*(volatile char *)0 = 0)), __assume(0)
-@@ -336,7 +336,7 @@ std::ostream &FmtHex(std::ostream &os, T
- # define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS \
- _Pragma("clang diagnostic push") _Pragma("clang diagnostic error
\"-Wpadded\"")
- # define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS _Pragma("clang diagnostic
pop")
--#elif defined(COMPILER_GCC)
-+#elif defined(__GNUC__)
- # define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS \
- _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic error
\"-Wpadded\"")
- # define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS _Pragma("GCC diagnostic
pop")
diff --git a/chromium-75.0.3770.80-revert-daff6b.patch
b/chromium-75.0.3770.80-revert-daff6b.patch
deleted file mode 100644
index f996898..0000000
--- a/chromium-75.0.3770.80-revert-daff6b.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up
chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc.revert-daff6b
chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc
----
chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc.revert-daff6b 2019-06-06
14:54:13.819190586 -0400
-+++ chromium-75.0.3770.80/components/omnibox/browser/autocomplete_match.cc 2019-06-06
14:54:31.892839991 -0400
-@@ -154,8 +154,7 @@ AutocompleteMatch::AutocompleteMatch(con
- additional_info(match.additional_info),
- duplicate_matches(match.duplicate_matches) {}
-
--AutocompleteMatch::AutocompleteMatch(AutocompleteMatch&& match) noexcept =
-- default;
-+AutocompleteMatch::AutocompleteMatch(AutocompleteMatch&& match) = default;
-
- AutocompleteMatch::~AutocompleteMatch() {
- }
diff --git a/chromium-76.0.3809.100-libusb_interrupt_event_handler.patch
b/chromium-76.0.3809.100-libusb_interrupt_event_handler.patch
deleted file mode 100644
index 690f0f9..0000000
--- a/chromium-76.0.3809.100-libusb_interrupt_event_handler.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-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-77.0.3865.75-boolfix.patch b/chromium-77.0.3865.75-boolfix.patch
deleted file mode 100644
index c836214..0000000
--- a/chromium-77.0.3865.75-boolfix.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -up
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_ptr_info.h.boolfix
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_ptr_info.h
----
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_ptr_info.h.boolfix 2019-09-09
23:55:20.000000000 +0200
-+++
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_ptr_info.h 2019-09-12
15:43:30.025360946 +0200
-@@ -45,7 +45,7 @@ class AssociatedInterfacePtrInfo {
-
- bool is_valid() const { return handle_.is_valid(); }
-
-- explicit operator bool() const { return handle_.is_valid(); }
-+ explicit operator bool() const { return (bool) handle_.is_valid(); }
-
- ScopedInterfaceEndpointHandle PassHandle() {
- return std::move(handle_);
-diff -up
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_request.h.boolfix
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_request.h
----
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_request.h.boolfix 2019-09-09
23:55:20.000000000 +0200
-+++
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_request.h 2019-09-12
15:43:30.025360946 +0200
-@@ -51,7 +51,7 @@ class AssociatedInterfaceRequest {
- // handle.
- bool is_pending() const { return handle_.is_valid(); }
-
-- explicit operator bool() const { return handle_.is_valid(); }
-+ explicit operator bool() const { return (bool) handle_.is_valid(); }
-
- ScopedInterfaceEndpointHandle PassHandle() { return std::move(handle_); }
-
diff --git a/chromium-77.0.3865.75-gcc-no-opt-safe-math.patch
b/chromium-77.0.3865.75-gcc-no-opt-safe-math.patch
deleted file mode 100644
index 920a53e..0000000
--- a/chromium-77.0.3865.75-gcc-no-opt-safe-math.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -up chromium-77.0.3865.75/base/numerics/safe_math_shared_impl.h.nogccoptmath
chromium-77.0.3865.75/base/numerics/safe_math_shared_impl.h
---- chromium-77.0.3865.75/base/numerics/safe_math_shared_impl.h.nogccoptmath 2019-09-13
14:17:22.726738088 +0200
-+++ chromium-77.0.3865.75/base/numerics/safe_math_shared_impl.h 2019-09-13
14:31:37.686898493 +0200
-@@ -23,9 +23,8 @@
- // Where available use builtin math overflow support on Clang and GCC.
- #elif !defined(__native_client__) && \
- ((defined(__clang__) && \
-- ((__clang_major__ > 3) || \
-- (__clang_major__ == 3 && __clang_minor__ >= 4))) || \
-- (defined(__GNUC__) && __GNUC__ >= 5))
-+ (__clang_major__ > 3) || \
-+ (__clang_major__ == 3 && __clang_minor__ >= 4)))
- #include "base/numerics/safe_math_clang_gcc_impl.h"
- #define BASE_HAS_OPTIMIZED_SAFE_MATH (1)
- #else
diff --git a/chromium-77.0.3865.75-gcc5-r3.patch b/chromium-77.0.3865.75-gcc5-r3.patch
deleted file mode 100644
index 34b858a..0000000
--- a/chromium-77.0.3865.75-gcc5-r3.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-diff -up chromium-77.0.3865.75/gpu/ipc/common/mailbox_struct_traits.h.gcc5-r3
chromium-77.0.3865.75/gpu/ipc/common/mailbox_struct_traits.h
---- chromium-77.0.3865.75/gpu/ipc/common/mailbox_struct_traits.h.gcc5-r3 2019-09-09
23:55:18.000000000 +0200
-+++ chromium-77.0.3865.75/gpu/ipc/common/mailbox_struct_traits.h 2019-09-12
10:13:16.710206500 +0200
-@@ -15,7 +15,7 @@ namespace mojo {
- template <>
- struct StructTraits<gpu::mojom::MailboxDataView, gpu::Mailbox> {
- static base::span<const int8_t> name(const gpu::Mailbox& mailbox) {
-- return mailbox.name;
-+ return base::make_span(mailbox.name);
- }
- static bool Read(gpu::mojom::MailboxDataView data, gpu::Mailbox* out);
- };
-diff -up
chromium-77.0.3865.75/services/viz/public/cpp/compositing/quads_struct_traits.h.gcc5-r3
chromium-77.0.3865.75/services/viz/public/cpp/compositing/quads_struct_traits.h
----
chromium-77.0.3865.75/services/viz/public/cpp/compositing/quads_struct_traits.h.gcc5-r3 2019-09-09
23:55:23.000000000 +0200
-+++
chromium-77.0.3865.75/services/viz/public/cpp/compositing/quads_struct_traits.h 2019-09-12
10:13:16.710206500 +0200
-@@ -391,7 +391,7 @@ struct StructTraits<viz::mojom::TextureQ
- static base::span<const float> vertex_opacity(const viz::DrawQuad& input) {
- const viz::TextureDrawQuad* quad =
- viz::TextureDrawQuad::MaterialCast(&input);
-- return quad->vertex_opacity;
-+ return base::make_span(quad->vertex_opacity);
- }
-
- static bool y_flipped(const viz::DrawQuad& input) {
-diff -up
chromium-77.0.3865.75/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc.gcc5-r3
chromium-77.0.3865.75/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc
----
chromium-77.0.3865.75/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc.gcc5-r3 2019-09-12
10:13:16.711206509 +0200
-+++
chromium-77.0.3865.75/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc 2019-09-12
15:41:15.300158849 +0200
-@@ -10,7 +10,7 @@
-
- #include "modules/audio_processing/aec3/aec_state.h"
-
--#include <math.h>
-+#include <cmath>
-
- #include <algorithm>
- #include <numeric>
diff --git a/chromium.spec b/chromium.spec
index 4fa3d44..e426495 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -168,114 +168,61 @@ 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)
### Chromium Fedora Patches ###
-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
-Patch3: chromium-72.0.3626.121-notest.patch
-# Use libusb_interrupt_event_handler from current libusbx (1.0.21-0.1.git448584a)
-Patch4: chromium-76.0.3809.100-libusb_interrupt_event_handler.patch
-# Use PIE in the Linux sandbox (from openSUSE via Russian Fedora)
-Patch6: chromium-70.0.3538.67-sandbox-pie.patch
+Patch0: chromium-70.0.3538.67-sandbox-pie.patch
# Use /etc/chromium for master_prefs
-Patch7: chromium-68.0.3440.106-master-prefs-path.patch
+Patch1: chromium-68.0.3440.106-master-prefs-path.patch
# Use gn system files
-Patch8: chromium-67.0.3396.62-gn-system.patch
-# Fix issue where timespec is not defined when sys/stat.h is included.
-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
-Patch10: chromium-63.0.3289.84-nullfix.patch
-# Add explicit includedir for jpeglib.h
-Patch11: chromium-54.0.2840.59-jpeg-include-dir.patch
-# On i686, pass --no-keep-memory --reduce-memory-overheads to ld.
-Patch12: chromium-59.0.3071.86-i686-ld-memory-tricks.patch
+Patch2: chromium-67.0.3396.62-gn-system.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
-Patch13: chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
-# Correctly compile the stdatomic.h in ffmpeg with gcc 4.8
-Patch14: chromium-64.0.3282.119-ffmpeg-stdatomic.patch
-# Nacl can't die soon enough
-Patch15: chromium-66.0.3359.117-system-clang.patch
+Patch3: chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
# Do not prefix libpng functions
-Patch16: chromium-60.0.3112.78-no-libpng-prefix.patch
+Patch4: chromium-60.0.3112.78-no-libpng-prefix.patch
# Do not mangle libjpeg
-Patch17: chromium-60.0.3112.78-jpeg-nomangle.patch
+Patch5: chromium-60.0.3112.78-jpeg-nomangle.patch
# Do not mangle zlib
-Patch18: chromium-77.0.3865.75-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.
-Patch19: chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch
-# from gentoo
-Patch20: chromium-77.0.3865.75-gcc-no-opt-safe-math.patch
-# From gentoo
-Patch21: chromium-77.0.3865.75-gcc5-r3.patch
-# To use round with gcc, you need to #include <cmath>
-Patch22: chromium-65.0.3325.146-gcc-round-fix.patch
-# Include proper headers to invoke memcpy()
-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
-Patch24: chromium-77.0.3865.75-boolfix.patch
-# From Debian
-Patch25: chromium-71.0.3578.98-skia-aarch64-buildfix.patch
+Patch6: chromium-77.0.3865.75-no-zlib-mangle.patch
# Do not use unrar code, it is non-free
-Patch27: chromium-73.0.3683.75-norar.patch
-# Upstream GCC fixes
-Patch28: chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch
-# Add "Fedora" to the user agent string
-Patch29: chromium-77.0.3865.75-fedora-user-agent.patch
-# Try to fix version.py for Rawhide
-Patch30: chromium-71.0.3578.98-py2-bootstrap.patch
-# Fix default on redeclaration error
-#
https://chromium.googlesource.com/chromium/src/+/122692ccee62223f266a988c...
-Patch31: chromium-68.0.3440.106-fix-default-on-redeclaration.patch
+Patch7: chromium-73.0.3683.75-norar.patch
# Use Gentoo's Widevine hack
#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
-Patch32: chromium-71.0.3578.98-widevine-r3.patch
-# Do not require sysroot
-# Forget about trying to make libc++
-# BUILD SANELY PLEASE
-Patch33: chromium-69.0.3497.81-build-sanely-please.patch
+Patch8: chromium-71.0.3578.98-widevine-r3.patch
# Disable fontconfig cache magic that breaks remoting
-Patch34: chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch
-# Fix aarch64 build against latest linux kernel headers
-Patch35: chromium-70.0.3538.77-aarch64-arch-want-new-stat.patch
+Patch9: chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch
# drop rsp clobber, which breaks gcc9 (thanks to Jeff Law)
-Patch36: chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
+Patch10: chromium-71.0.3578.98-gcc9-drop-rsp-clobber.patch
# Try to load widevine from other places
-Patch37: chromium-widevine-other-locations.patch
-# Disable -fno-delete-null-pointer-checks
-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
-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.
-Patch43: chromium-75.0.3770.80-revert-daff6b.patch
+Patch11: chromium-widevine-other-locations.patch
+# Try to fix version.py for Rawhide
+Patch12: chromium-71.0.3578.98-py2-bootstrap.patch
+# Add "Fedora" to the user agent string
+Patch13: chromium-77.0.3865.75-fedora-user-agent.patch
+
# rename function to avoid conflict with rawhide glibc "gettid()"
-Patch45: chromium-75.0.3770.80-grpc-gettid-fix.patch
+Patch50: chromium-75.0.3770.80-grpc-gettid-fix.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
+Patch51: 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
+Patch52: 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
+Patch53: chromium-76.0.3809.100-vtable-symbol-undefined.patch
#
https://chromium.googlesource.com/chromium/src.git/+/3c9720245e440c4b7222...
-Patch64: chromium-77.0.3865.75-certificate-transparency.patch
+Patch54: chromium-77.0.3865.75-certificate-transparency.patch
#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
-Patch65: chromium-77.0.3865.75-unbundle-zlib.patch
+Patch55: chromium-77.0.3865.75-unbundle-zlib.patch
# Needs to be submitted..
-Patch66: chromium-77.0.3865.75-gcc-include-memory.patch
-# Needs to be submitted..
-Patch67: chromium-77.0.3865.75-base-gcc-no-alignas.patch
+Patch56: chromium-77.0.3865.75-gcc-include-memory.patch
+#
https://chromium.googlesource.com/chromium/src/+/6b633c4b14850df376d5cec5...
+Patch57: chromium-77.0.3865.75-base-gcc-no-alignas.patch
#
https://chromium.googlesource.com/chromium/src/+/27e25336b8316ff3ec4e4640...
-Patch68: chromium-77.0.3865.75-harfbuzz-subset.patch
+Patch58: chromium-77.0.3865.75-harfbuzz-subset.patch
#
https://chromium.googlesource.com/chromium/src.git/+/f08cb0022527081c078e...
-Patch69: chromium-77.0.3865.75-gcc-abstract-class.patch
+Patch59: chromium-77.0.3865.75-gcc-abstract-class.patch
#
https://chromium.googlesource.com/chromium/src/+/5baf7df7f4c5971dab552897...
-Patch70: chromium-77.0.3865.75-missing-limits.patch
+Patch60: chromium-77.0.3865.75-missing-limits.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
@@ -766,60 +713,40 @@ udev.
%setup -q -n chromium-%{version}
### Chromium Fedora Patches ###
-%patch0 -p1 -b .gcc5
-%patch1 -p1 -b .pathmax
-%patch2 -p1 -b .addrfix
-%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
-%patch45 -p1 -b .gettid-fix
-%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
-%patch65 -p1 -b .unbundle-zlib
-%patch66 -p1 -b .gcc-include-memory
-%patch67 -p1 -b .base-gcc-no-alignas
-%patch68 -p1 -b .harfbuzz-subset
-%patch69 -p1 -b .gcc-abstract-class
-%patch70 -p1 -b .missing-limits
+%patch0 -p1 -b .sandboxpie
+%patch1 -p1 -b .etc
+%patch2 -p1 -b .gnsystem
+%patch3 -p1 -b .revert
+%patch4 -p1 -b .nolibpngprefix
+%patch5 -p1 -b .nolibjpegmangle
+%patch6 -p1 -b .nozlibmangle
+%patch7 -p1 -b .nounrar
+%patch8 -p1 -b .widevine-hack
+%patch9 -p1 -b .nofontconfigcache
+%patch10 -p1 -b .gcc9
+%patch11 -p1 -b .widevine-other-locations
+%patch12 -p1 -b .py2
+
+# Short term fixes (usually gcc and backports)
+%patch50 -p1 -b .gettid-fix
+%patch51 -p1 -b .gcc-no-alignas-and-export
+%patch52 -p1 -b .gcc-remoting-constexpr
+%patch53 -p1 -b .vtable-symbol-undefined
+%patch54 -p1 -b .certificate-transparency
+%patch55 -p1 -b .unbundle-zlib
+%patch56 -p1 -b .gcc-include-memory
+%patch57 -p1 -b .base-gcc-no-alignas
+%patch58 -p1 -b .harfbuzz-subset
+%patch59 -p1 -b .gcc-abstract-class
+%patch60 -p1 -b .missing-limits
+
+# Fedora branded user agent
+%if 0%{?fedora}
+%patch13 -p1 -b .fedora-user-agent
+%endif
# EPEL specific patches
%if 0%{?rhel} == 7
-%patch100 -p1 -b .kmaxskip
%patch101 -p1 -b .epel7
%patch102 -p1 -b .el7-noexcept
%endif
@@ -1298,6 +1225,11 @@ sed -i.orig -e
's/getenv("CHROME_VERSION_EXTRA")/"Fedora Project"/' $FILE
. /opt/rh/devtoolset-%{dts_version}/enable
%endif
+# Decrease the debuginfo verbosity, so it compiles in koji
+%ifarch %{ix86}
+%global optflags %(echo %{optflags} | sed 's/-g /-g1 /')
+%endif
+
echo
# Now do the full browser
%if 0%{freeworld}
commit d8b8fc10a9d2bc16fbdc802ba975b68bc5f4d97b
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Sep 20 09:45:43 2019 +0200
Fix how the arguments are passed to GN's bootstrap.py
I don't know why, but previously it was failing only on aarch64.
diff --git a/chromium.spec b/chromium.spec
index 25eb383..4fa3d44 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -1267,7 +1267,7 @@ if python2 -c 'import google ; print google.__path__' 2>
/dev/null ; then \
exit 1 ; \
fi
-tools/gn/bootstrap/bootstrap.py -v "$CHROMIUM_CORE_GN_DEFINES
$CHROMIUM_BROWSER_GN_DEFINES"
+tools/gn/bootstrap/bootstrap.py -v --no-clean
--gn-gen-args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES"
%{builddir}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES" %{builddir}
%if %{freeworld}
commit 1ef42a21dcf51442af1b6830c71b060258844ef5
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Sep 20 09:37:33 2019 +0200
Remove support for (p)NaCL
We don't build it for quite some time and will by killed by Google in
Spring 2020. Let's drop the support for it from the SPEC file. We can
revert this patch if needed.
diff --git a/chromium-47.0.2526.80-nacl-ignore-broken-fd-counter.patch
b/chromium-47.0.2526.80-nacl-ignore-broken-fd-counter.patch
deleted file mode 100644
index c422957..0000000
--- a/chromium-47.0.2526.80-nacl-ignore-broken-fd-counter.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -up
chromium-47.0.2526.80/components/nacl/loader/sandbox_linux/nacl_sandbox_linux.cc.ignore-fd-count
chromium-47.0.2526.80/components/nacl/loader/sandbox_linux/nacl_sandbox_linux.cc
----
chromium-47.0.2526.80/components/nacl/loader/sandbox_linux/nacl_sandbox_linux.cc.ignore-fd-count 2015-12-15
14:48:07.119011866 -0500
-+++
chromium-47.0.2526.80/components/nacl/loader/sandbox_linux/nacl_sandbox_linux.cc 2015-12-15
14:48:14.151850055 -0500
-@@ -153,6 +153,14 @@ void NaClSandbox::InitializeLayerOneSand
- }
-
- void NaClSandbox::CheckForExpectedNumberOfOpenFds() {
-+ // Whatever logic this code is using is wrong more often than it is right.
-+ // If you set expected_num_fds to 6, it finds 7.
-+ // If you set expected_num_fds to 7, it finds 6.
-+ // Code like this makes a packager drink. And not the good stuff either.
-+ // Instead, we're just going to smile and tell it to never care about the
-+ // number of FDs open. Stupid code. We hates it.
-+
-+#if 0
- // We expect to have the following FDs open:
- // 1-3) stdin, stdout, stderr.
- // 4) The /dev/urandom FD used by base::GetUrandomFD().
-@@ -171,6 +179,8 @@ void NaClSandbox::CheckForExpectedNumber
- }
-
- CHECK_EQ(expected_num_fds, sandbox::ProcUtil::CountOpenFds(proc_fd_.get()));
-+#endif
-+
- }
-
- void NaClSandbox::InitializeLayerTwoSandbox(bool uses_nonsfi_mode) {
diff --git a/chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch
b/chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch
deleted file mode 100644
index bfe0422..0000000
--- a/chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up chromium-47.0.2526.80/native_client/build/untrusted.gypi.fixme
chromium-47.0.2526.80/native_client/build/untrusted.gypi
---- chromium-47.0.2526.80/native_client/build/untrusted.gypi.fixme 2015-12-09
11:54:27.584962337 -0500
-+++ chromium-47.0.2526.80/native_client/build/untrusted.gypi 2015-12-09
11:54:45.033571750 -0500
-@@ -1564,6 +1564,7 @@
- '-Wno-char-subscripts',
- '-Wno-unused-function',
- '-std=gnu++11',
-+ '-fgnu-inline-asm',
- ],
- 'native_irt_compile_flags': [
- # IRT compile/link flags to make the binary smaller.
diff --git a/chromium.spec b/chromium.spec
index a2538f0..25eb383 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -70,32 +70,11 @@
# If we build with shared on, then chrome-remote-desktop depends on chromium libs.
# If we build with shared off, then users cannot swap out libffmpeg (and i686 gets a lot
harder to build)
%global shared 1
-# We should not need to turn this on. The app in the webstore _should_ work.
-%global build_remoting_app 0
# AddressSanitizer mode
#
https://www.chromium.org/developers/testing/addresssanitizer
%global asan 0
-# nacl/pnacl are soon to be dead. We're just killing them off early.
-%global killnacl 1
-
-%if 0%{?killnacl}
- %global nacl 0
- %global nonacl 1
-%else
-# TODO: Try arm (nacl disabled)
-%if 0%{?fedora}
- %ifarch i686
- %global nacl 0
- %global nonacl 1
- %else
- %global nacl 1
- %global nonacl 0
- %endif
-%endif
-%endif
-
%if 0
# Chromium's fork of ICU is now something we can't unbundle.
# This is left here to ease the change if that ever switches.
@@ -302,16 +281,6 @@ Patch101: chromium-75.0.3770.100-epel7-stdc++.patch
# el7 only patch
Patch102: chromium-77.0.3865.75-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
@@ -419,24 +388,6 @@ BuildRequires: libappstream-glib
# gn needs these
BuildRequires: libstdc++-static
BuildRequires: libstdc++-devel, openssl-devel
-%if 0%{?nacl}
-BuildRequires: nacl-gcc, nacl-binutils, nacl-newlib
-BuildRequires: nacl-arm-gcc, nacl-arm-binutils, nacl-arm-newlib
-# pNaCl needs this monster
-# It's possible that someday this dep will stabilize, but
-# right now, it needs to be updated everytime chromium bumps
-# a major version.
-BuildRequires: chromium-native_client >= 52.0.2743.82
-BuildRequires: clang
-BuildRequires: llvm
-%ifarch x86_64
-# Really, this is what we want:
-# BuildRequires: glibc-devel(x86-32) libgcc(x86-32)
-# But, koji only offers glibc32. Maybe that's enough.
-# This BR will pull in either glibc.i686 or glibc32.
-BuildRequires: /lib/libc.so.6 /usr/lib/libc.so
-%endif
-%endif
# Fedora tries to use system libs whenever it can.
BuildRequires: bzip2-devel
BuildRequires: dbus-glib-devel
@@ -874,11 +825,6 @@ udev.
%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
@@ -907,101 +853,6 @@ export RANLIB="ranlib"
rm -rf buildtools/third_party/libc++/BUILD.gn
-%if 0%{?nacl}
-# prep the nacl tree
-mkdir -p out/Release/gen/sdk/linux_x86/nacl_x86_newlib
-cp -a --no-preserve=context /usr/%{_arch}-nacl/*
out/Release/gen/sdk/linux_x86/nacl_x86_newlib
-
-mkdir -p out/Release/gen/sdk/linux_x86/nacl_arm_newlib
-cp -a --no-preserve=context /usr/arm-nacl/*
out/Release/gen/sdk/linux_x86/nacl_arm_newlib
-
-# Not sure if we need this or not, but better safe than sorry.
-pushd out/Release/gen/sdk/linux_x86
-ln -s nacl_x86_newlib nacl_x86_newlib_raw
-ln -s nacl_arm_newlib nacl_arm_newlib_raw
-popd
-
-mkdir -p out/Release/gen/sdk/linux_x86/nacl_x86_newlib/bin
-pushd out/Release/gen/sdk/linux_x86/nacl_x86_newlib/bin
-ln -s /usr/bin/x86_64-nacl-gcc gcc
-ln -s /usr/bin/x86_64-nacl-gcc x86_64-nacl-gcc
-ln -s /usr/bin/x86_64-nacl-g++ g++
-ln -s /usr/bin/x86_64-nacl-g++ x86_64-nacl-g++
-# ln -s /usr/bin/x86_64-nacl-ar ar
-ln -s /usr/bin/x86_64-nacl-ar x86_64-nacl-ar
-# ln -s /usr/bin/x86_64-nacl-as as
-ln -s /usr/bin/x86_64-nacl-as x86_64-nacl-as
-# ln -s /usr/bin/x86_64-nacl-ranlib ranlib
-ln -s /usr/bin/x86_64-nacl-ranlib x86_64-nacl-ranlib
-# Cleanups
-rm addr2line
-ln -s /usr/bin/x86_64-nacl-addr2line addr2line
-rm c++filt
-ln -s /usr/bin/x86_64-nacl-c++filt c++filt
-rm gprof
-ln -s /usr/bin/x86_64-nacl-gprof gprof
-rm readelf
-ln -s /usr/bin/x86_64-nacl-readelf readelf
-rm size
-ln -s /usr/bin/x86_64-nacl-size size
-rm strings
-ln -s /usr/bin/x86_64-nacl-strings strings
-popd
-
-mkdir -p out/Release/gen/sdk/linux_x86/nacl_arm_newlib/bin
-pushd out/Release/gen/sdk/linux_x86/nacl_arm_newlib/bin
-ln -s /usr/bin/arm-nacl-gcc gcc
-ln -s /usr/bin/arm-nacl-gcc arm-nacl-gcc
-ln -s /usr/bin/arm-nacl-g++ g++
-ln -s /usr/bin/arm-nacl-g++ arm-nacl-g++
-ln -s /usr/bin/arm-nacl-ar arm-nacl-ar
-ln -s /usr/bin/arm-nacl-as arm-nacl-as
-ln -s /usr/bin/arm-nacl-ranlib arm-nacl-ranlib
-popd
-
-touch out/Release/gen/sdk/linux_x86/nacl_x86_newlib/stamp.untar
out/Release/gen/sdk/linux_x86/nacl_x86_newlib/stamp.prep
-touch out/Release/gen/sdk/linux_x86/nacl_x86_newlib/nacl_x86_newlib.json
-touch out/Release/gen/sdk/linux_x86/nacl_arm_newlib/stamp.untar
out/Release/gen/sdk/linux_x86/nacl_arm_newlib/stamp.prep
-touch out/Release/gen/sdk/linux_x86/nacl_arm_newlib/nacl_arm_newlib.json
-
-pushd out/Release/gen/sdk/linux_x86/
-mkdir -p pnacl_newlib pnacl_translator
-# Might be able to do symlinks here, but eh.
-cp -a --no-preserve=context /usr/pnacl_newlib/* pnacl_newlib/
-cp -a --no-preserve=context /usr/pnacl_translator/* pnacl_translator/
-for i in lib/libc.a lib/libc++.a lib/libg.a lib/libm.a; do
- /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/x86_64_bc-nacl/$i
- /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/i686_bc-nacl/$i
- /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/le32-nacl/$i
-done
-
-for i in lib/libpthread.a lib/libnacl.a; do
- /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/le32-nacl/$i
-done
-
-for i in lib/clang/3.7.0/lib/x86_64_bc-nacl/libpnaclmm.a
lib/clang/3.7.0/lib/i686_bc-nacl/libpnaclmm.a; do
- /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/$i
-done
-
-for i in lib/clang/3.7.0/lib/le32-nacl/libpnaclmm.a
lib/clang/3.7.0/lib/le32-nacl/libgcc.a; do
- /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/$i
-done
-
-popd
-
-mkdir -p native_client/toolchain/.tars/linux_x86
-touch native_client/toolchain/.tars/linux_x86/pnacl_translator.json
-
-pushd native_client/toolchain
-ln -s ../../out/Release/gen/sdk/linux_x86 linux_x86
-popd
-
-mkdir -p third_party/llvm-build/Release+Asserts/bin
-pushd third_party/llvm-build/Release+Asserts/bin
-ln -s /usr/bin/clang clang
-popd
-%endif
-
# Unpack fonts
%if %{freeworld}
# no font fun needed.
@@ -1072,9 +923,7 @@ export CHROMIUM_CORE_GN_DEFINES
CHROMIUM_BROWSER_GN_DEFINES=""
CHROMIUM_BROWSER_GN_DEFINES+=' use_gio=true use_pulseaudio=true
icu_use_data_file=true'
-%if 0%{?nonacl}
CHROMIUM_BROWSER_GN_DEFINES+=' enable_nacl=false'
-%endif
%if 0%{?shared}
CHROMIUM_BROWSER_GN_DEFINES+=' is_component_ffmpeg=true is_component_build=true'
%else
@@ -1236,9 +1085,6 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/libwebm' \
'third_party/libwebp' \
'third_party/libyuv' \
-%if 0%{?nacl}
- 'third_party/llvm-build' \
-%endif
'third_party/lss' \
'third_party/lzma_sdk' \
%if 0%{?bundlepylibs}
@@ -1471,20 +1317,8 @@ echo
# remote client
# ../../depot_tools/ninja -C ../%{builddir} -vvv remoting_me2me_host remoting_start_host
remoting_it2me_native_messaging_host remoting_me2me_native_messaging_host
remoting_native_messaging_manifests remoting_resources
%build_target %{remotingbuilddir} remoting_all
-%if 0%{?build_remoting_app}
-%if 0%{?nacl}
-export GOOGLE_CLIENT_ID_REMOTING_IDENTITY_API=%{chromoting_client_id}
-%build_target %{builddir} remoting_webapp
-%endif
-%endif
-
%endif
-# Nuke nacl/pnacl bits at the end of the build
-rm -rf %{builddir}/gen/sdk
-rm -rf native_client/toolchain
-rm -rf third_party/llvm-build/*
-
%install
rm -rf %{buildroot}
@@ -1522,10 +1356,6 @@ mkdir -p %{buildroot}%{_mandir}/man1/
pushd %{builddir}
cp -a *.pak locales resources icudtl.dat %{buildroot}%{chromium_path}
-%if 0%{?nacl}
-cp -a nacl_helper* *.nexe pnacl tls_edit %{buildroot}%{chromium_path}
-chmod -x %{buildroot}%{chromium_path}/nacl_helper_bootstrap* *.nexe
-%endif
# Reasonably sure we don't need this anymore. Chrome doesn't include it.
%if 0
cp -a protoc pyproto %{buildroot}%{chromium_path}
@@ -1607,12 +1437,6 @@ pushd %{buildroot}%{_sysconfdir}/pam.d/
ln -s system-auth chrome-remote-desktop
popd
-%if 0%{?build_remoting_app}
-%if 0%{?nacl}
-cp -a remoting_client_plugin_newlib.* %{buildroot}%{chromium_path}
-%endif
-%endif
-
%if %{build_headless}
pushd %{headlessbuilddir}
cp -a headless_lib.pak headless_shell %{buildroot}%{chromium_path}
@@ -1753,12 +1577,6 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%ifarch x86_64 i686 aarch64
%{chromium_path}/swiftshader/
%endif
-%if 0%{?nacl}
-%{chromium_path}/nacl_helper*
-%{chromium_path}/*.nexe
-%{chromium_path}/pnacl/
-%{chromium_path}/tls_edit
-%endif
%dir %{chromium_path}/PepperFlash/
%if 0
%{chromium_path}/protoc
@@ -1872,11 +1690,6 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%{crd_path}/user-session
%{_unitdir}/chrome-remote-desktop@.service
/var/lib/chrome-remote-desktop/
-%if 0%{?build_remoting_app}
-%if 0%{?nacl}
-%{chromium_path}/remoting_client_plugin_newlib.*
-%endif
-%endif
%files -n chromedriver
%doc AUTHORS
commit a2942aa1bba73adf0d336548aea65e3830f172ef
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Sun Sep 15 13:36:44 2019 +0200
Don't try to revert a previously removed patch
diff --git a/chromium.spec b/chromium.spec
index 7a0d711..a2538f0 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -871,8 +871,6 @@ udev.
%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
commit 06cf3b0691efe622951e72292af48063622b40c7
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Thu Sep 19 07:58:49 2019 +0200
Update to 77.0.3865.90
diff --git a/chromium.spec b/chromium.spec
index 5491e4c..7a0d711 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -182,8 +182,8 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
%else
Name: chromium%{chromium_channel}
%endif
-Version: %{majorversion}.0.3865.75
-Release: 2%{?dist}
+Version: %{majorversion}.0.3865.90
+Release: 1%{?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)
@@ -1902,6 +1902,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
+* Thu Sep 19 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.90-1
+- Update to 77.0.3865.90
+
* Mon Sep 16 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.75-2
- Update the list of private libraries
diff --git a/sources b/sources
index b9b0498..13e91e7 100644
--- a/sources
+++ b/sources
@@ -17,4 +17,4 @@ SHA512 (Tinos-Italic.ttf) =
d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0
SHA512 (Tinos-Regular.ttf) =
58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f
SHA512 (Ahem.ttf) =
aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
SHA512 (node-v8.9.1-linux-x64.tar.gz) =
a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
-SHA512 (chromium-77.0.3865.75-clean.tar.xz) =
ca7a71586a60abeacb70b9d08ba9a28455d875bfa5232070fdff079e52395924b80f05d7627e3a5d5c7a3df606a39a31e05634683a052c9efb634ed536afc092
+SHA512 (chromium-77.0.3865.90-clean.tar.xz) =
696c5b01756fb720645512fc997f4c378001a01f74bb61fe2b27722b7a3c6bbef782af82ec5678e8fe7ff76285164a331b3a99eff9c5f605ff477b3795c968c4
commit c510174e57208c85a6fe9add725046fa4233abf4
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Wed Sep 18 08:05:03 2019 +0200
Forget to generate diff for one affected el7-noexcept file
diff --git a/chromium-77.0.3865.75-el7-noexcept.patch
b/chromium-77.0.3865.75-el7-noexcept.patch
index 59b6fa9..366c139 100644
--- a/chromium-77.0.3865.75-el7-noexcept.patch
+++ b/chromium-77.0.3865.75-el7-noexcept.patch
@@ -58,6 +58,18 @@ diff -up
chromium-77.0.3865.75/components/history/core/browser/history_types.h.e
~QueryURLResult();
// Indicates whether the call to HistoryBackend::QueryURL was successfull
+diff -up chromium-77.0.3865.75/components/history/core/browser/url_row.cc.el7-noexcept
chromium-77.0.3865.75/components/history/core/browser/url_row.cc
+---
chromium-77.0.3865.75/components/history/core/browser/url_row.cc.el7-noexcept 2019-09-18
08:03:25.458138423 +0200
++++ chromium-77.0.3865.75/components/history/core/browser/url_row.cc 2019-09-18
08:03:34.363234155 +0200
+@@ -26,7 +26,7 @@ URLRow::~URLRow() {
+ }
+
+ URLRow& URLRow::operator=(const URLRow& other) = default;
+-URLRow& URLRow::operator=(URLRow&& other) noexcept = default;
++URLRow& URLRow::operator=(URLRow&& other) = default;
+
+ void URLRow::Swap(URLRow* other) {
+ std::swap(id_, other->id_);
diff -up
chromium-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc.el7-noexcept
chromium-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc
---
chromium-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc.el7-noexcept 2019-09-17
22:00:18.670108528 +0200
+++ chromium-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc 2019-09-17
22:00:32.518272148 +0200
commit 1a179e7d6a6aa7376e3b286bffa6901c66716294
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Wed Sep 18 06:35:01 2019 +0200
Update the el7 noexcept patch and fix the el7 build
diff --git a/chromium-76.0.3809.100-el7-noexcept.patch
b/chromium-76.0.3809.100-el7-noexcept.patch
deleted file mode 100644
index 407f8de..0000000
--- a/chromium-76.0.3809.100-el7-noexcept.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-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-77.0.3865.75-el7-noexcept.patch
b/chromium-77.0.3865.75-el7-noexcept.patch
new file mode 100644
index 0000000..59b6fa9
--- /dev/null
+++ b/chromium-77.0.3865.75-el7-noexcept.patch
@@ -0,0 +1,153 @@
+diff -up chromium-77.0.3865.75/chrome/common/media_router/media_sink.cc.el7-noexcept
chromium-77.0.3865.75/chrome/common/media_router/media_sink.cc
+---
chromium-77.0.3865.75/chrome/common/media_router/media_sink.cc.el7-noexcept 2019-09-17
18:42:37.137393137 +0200
++++ chromium-77.0.3865.75/chrome/common/media_router/media_sink.cc 2019-09-17
18:42:37.145393201 +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-77.0.3865.75/components/history/core/browser/history_types.cc.el7-noexcept
chromium-77.0.3865.75/components/history/core/browser/history_types.cc
+---
chromium-77.0.3865.75/components/history/core/browser/history_types.cc.el7-noexcept 2019-09-17
18:42:09.417172829 +0200
++++ chromium-77.0.3865.75/components/history/core/browser/history_types.cc 2019-09-17
18:42:09.385172574 +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-77.0.3865.75/components/history/core/browser/history_types.h.el7-noexcept
chromium-77.0.3865.75/components/history/core/browser/history_types.h
+---
chromium-77.0.3865.75/components/history/core/browser/history_types.h.el7-noexcept 2019-09-17
18:42:09.437172988 +0200
++++ chromium-77.0.3865.75/components/history/core/browser/history_types.h 2019-09-17
18:42:09.365172415 +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-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc.el7-noexcept
chromium-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc
+---
chromium-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc.el7-noexcept 2019-09-17
22:00:18.670108528 +0200
++++ chromium-77.0.3865.75/components/omnibox/browser/suggestion_answer.cc 2019-09-17
22:00:32.518272148 +0200
+@@ -60,7 +60,7 @@ SuggestionAnswer::TextField::TextField(T
+ SuggestionAnswer::TextField& SuggestionAnswer::TextField::operator=(
+ const TextField&) = default;
+ SuggestionAnswer::TextField& SuggestionAnswer::TextField::operator=(
+- TextField&&) noexcept = default;
++ TextField&&) = default;
+
+ // static
+ bool SuggestionAnswer::TextField::ParseTextField(const base::Value& field_json,
+diff -up chromium-77.0.3865.75/components/policy/core/common/policy_map.cc.el7-noexcept
chromium-77.0.3865.75/components/policy/core/common/policy_map.cc
+---
chromium-77.0.3865.75/components/policy/core/common/policy_map.cc.el7-noexcept 2019-09-17
18:42:14.622214197 +0200
++++ chromium-77.0.3865.75/components/policy/core/common/policy_map.cc 2019-09-17
18:42:14.556213673 +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-77.0.3865.75/components/signin/public/identity_manager/account_info.cc.el7-noexcept
chromium-77.0.3865.75/components/signin/public/identity_manager/account_info.cc
+---
chromium-77.0.3865.75/components/signin/public/identity_manager/account_info.cc.el7-noexcept 2019-09-17
21:06:27.037828110 +0200
++++
chromium-77.0.3865.75/components/signin/public/identity_manager/account_info.cc 2019-09-17
21:07:20.726472932 +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-77.0.3865.75/google_apis/gaia/core_account_id.cc.el7-noexcept
chromium-77.0.3865.75/google_apis/gaia/core_account_id.cc
+--- chromium-77.0.3865.75/google_apis/gaia/core_account_id.cc.el7-noexcept 2019-09-17
18:43:12.969677930 +0200
++++ chromium-77.0.3865.75/google_apis/gaia/core_account_id.cc 2019-09-17
18:43:12.989678089 +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-77.0.3865.75/google_apis/gaia/core_account_id.h.el7-noexcept
chromium-77.0.3865.75/google_apis/gaia/core_account_id.h
+--- chromium-77.0.3865.75/google_apis/gaia/core_account_id.h.el7-noexcept 2019-09-17
18:43:12.978678001 +0200
++++ chromium-77.0.3865.75/google_apis/gaia/core_account_id.h 2019-09-17
18:43:12.983678041 +0200
+@@ -20,7 +20,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-77.0.3865.75/gpu/config/gpu_info.cc.el7-noexcept
chromium-77.0.3865.75/gpu/config/gpu_info.cc
+--- chromium-77.0.3865.75/gpu/config/gpu_info.cc.el7-noexcept 2019-09-17
18:42:25.049297073 +0200
++++ chromium-77.0.3865.75/gpu/config/gpu_info.cc 2019-09-17 18:42:25.049297073 +0200
+@@ -170,7 +170,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 -up
chromium-77.0.3865.75/third_party/openscreen/src/osp/public/service_info.h.el7-noexcept
chromium-77.0.3865.75/third_party/openscreen/src/osp/public/service_info.h
+---
chromium-77.0.3865.75/third_party/openscreen/src/osp/public/service_info.h.el7-noexcept 2019-09-17
21:46:46.378655525 +0200
++++ chromium-77.0.3865.75/third_party/openscreen/src/osp/public/service_info.h 2019-09-17
21:47:16.897035418 +0200
+@@ -21,7 +21,7 @@ struct ServiceInfo {
+ ServiceInfo(ServiceInfo&&) MAYBE_NOEXCEPT = default;
+ ServiceInfo(const ServiceInfo&) MAYBE_NOEXCEPT = default;
+
+- ServiceInfo& operator=(ServiceInfo&&) MAYBE_NOEXCEPT = default;
++ ServiceInfo& operator=(ServiceInfo&&) = default;
+ ServiceInfo& operator=(const ServiceInfo&) MAYBE_NOEXCEPT = default;
+
+ bool operator==(const ServiceInfo& other) const;
diff --git a/chromium.spec b/chromium.spec
index 87d6b6c..5491e4c 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -300,7 +300,7 @@ 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
+Patch102: chromium-77.0.3865.75-el7-noexcept.patch
# In file included from ../linux/directory.c:21:
# In file included from ../../../../native_client/src/nonsfi/linux/abi_conversion.h:20:
commit ce1cd8e39484eefc8575db11fcc6c4b3ebceef43
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Mon Sep 16 14:23:29 2019 +0200
Update the list of private libraries
diff --git a/chromium.spec b/chromium.spec
index 6967dc4..87d6b6c 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -183,7 +183,7 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
Name: chromium%{chromium_channel}
%endif
Version: %{majorversion}.0.3865.75
-Release: 1%{?dist}
+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)
@@ -1902,6 +1902,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
+* Mon Sep 16 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.75-2
+- Update the list of private libraries
+
* Fri Sep 13 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.75-1
- Update to 77.0.3865.75
commit fa69419940e71be5ae2632b759bd664c1a3e8def
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Mon Sep 16 14:21:14 2019 +0200
Update the list of private libraries
diff --git a/chromium.spec b/chromium.spec
index 843f1a0..6967dc4 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -52,7 +52,7 @@
%global crd_path %{_libdir}/chrome-remote-desktop
# We don't want any libs in these directories to generate Provides
-# Requires is trickier.
+# Requires is trickier.
# To generate this list, go into %%{buildroot}%%{chromium_path} and run
# for i in `find . -name "*.so"`; do NAME=`basename -s .so $i`; printf
"$NAME|"; done
@@ -61,9 +61,9 @@
%global __provides_exclude_from
%{chromium_path}/.*\\.so|%{chromium_path}/lib/.*\\.so|%{chromium_path}/lib/.*\\.so.*
%if 0%{?rhel} == 7
-%global privlibs
libevents_devices_x11|libgfx_x11|libevents_x|libgl_wrapper|libmemory_instrumentation|libdevice_vr_mojo_bindings|libdiscardable_memory_common|libui_base_ime_init|libnetwork_cpp_base|libos_crypt|libmessage_center|libmanager|libdevice_gamepad|libembedder|libGLESv2|libtracing|libskia|libgl_in_process_context|libapdu|libbluetooth|libviz_resource_format_utils|libmojo_mojom_bindings|libblink_platform|libmojom_modules_shared|libwebdata_common|libshell_dialogs|libresource_coordinator_public_mojom_blink|libgles2_utils|libgpu_ipc_service|libcaptive_portal|libvr_common|libgles2|libdisplay|libgfx_ipc_geometry|libcc_paint|libandroid_mojo_bindings_shared|libipc_mojom_shared|libffmpeg|liburl_matcher|libbindings|libservice|libwtf|libcommon|libleveldatabase|libnetwork_session_configurator|libaura|libcloud_policy_proto_generated_compile|libservice_manager_mojom_constants|libui_touch_selection|libmojo_base_lib|libservice_manager_cpp_types|libservice_manager_mojom_blink|libmojo_core_embedder|libblink_embedded_frame_sink_mojo_bindings_shared|libgesture_detection|liburl_ipc|libweb_feature_mojo_bindings_mojom|libscheduling_metrics|libresource_coordinator_cpp_features|libcc|libdiscardable_memory_client|libsessions|libblink_common|libipc|libvulkan_init|libblink_mojom_broadcastchannel_bindings_shared|libheadless_non_renderer|libcbor|libmojo_core_embedder_internal|libmojo_public_system_cpp|libmojom_core_shared|libgfx|libusb_shared|libtracing_mojom|libuser_manager|libnet|libwebgpu|libplatform_window_handler_libs|libmojo_base_mojom_shared|libui_base|libprinting|libcontent_service_mojom_shared|libstartup_tracing|libdevice_vr_mojo_bindings_blink|libraster|libsandbox|libv8_libbase|libevents|libui_base_idle|libgles2_implementation|libkeyed_service_content|libprefs|libVkLayer_core_validation|libchrome_features|libdiscardable_memory_service|libcapture_lib|libperfetto|libicui18n|libdomain_reliability|libweb_dialogs|libcc_animation|libbase|libtracing_cpp|libGLESv2|libEGL|libVkLayer_thread_safety|libmedia_gpu|libparsers|libservice_manager_cpp|liblearning_common|libdevices|libvulkan_wrapper|libservice_manager_mojom_shared|libgfx_switches|libkeycodes_x11|libweb_feature_mojo_bindings_mojom_shared|liburl|libmpris|libppapi_proxy|libmojo_base_mojom|libprotobuf_lite|libui_base_features|libdevice_vr|libwm_public|libcolor_space|libseccomp_bpf|libinterfaces_shared|libui_base_x|libicuuc|libwebview|libdevice_event_log|libVkLayer_object_lifetimes|libvulkan_x11|libproxy_config|libnetwork_cpp|libextras|libVkICD_mock_icd|libv8_libplatform|libresource_coordinator_public_mojom|libwm|libviews|libsuid_sandbox_client|libEGL|libcapture_base|libnative_theme|libcrcrypto|libmojo_public_system|libservice_manager_mojom_constants_shared|libui_accessibility_ax_mojom_blink|libplatform|libui_data_pack|libgfx_ipc_buffer_types|libclearkeycdm|libmetrics_cpp|libmojo_base_shared_typemap_traits|libx11_events_platform|libcrash_key|libclient|libblink_controller|libfido|libfreetype_harfbuzz|libmojo_mojom_bindings_shared|libaccessibility|libstub_window|libui_base_ime|libpolicy_component|libweb_bluetooth_mojo_bindings_shared|libmojo_core_ports|libsandbox_services|libstorage_common|libviz_vulkan_context_provider|libcontent_common_mojo_bindings_shared|libgamepad_mojom_blink|libkeyed_service_core|libmedia_mojo_services|libmojo_ime_lib|libblink_modules|libgcm|libsql|libgeometry_skia|libVkLayer_unique_objects|libweb_feature_mojo_bindings_mojom_blink|libui_base_ime_linux|libdisplay_types|libdevice_vr_mojo_bindings_shared|libcc_base|libtracing_mojom_shared|libmedia_blink|libcc_mojo_embedder|libpdfium|libevents_ozone_layout|libgfx_ipc_color|libgtkui|libpolicy_proto|libcodec|libgpu|libcontent_service_cpp|libmojom_mhtml_load_result_shared|libdisplay_util|libcontent_service_mojom|libbase_i18n|libservice_manager_mojom_constants_blink|libcompositor|libmojo_base_mojom_blink|libui_message_center_cpp|libsnapshot|libdbus_thread_linux|libtab_count_metrics|libpublic|libui_accessibility_ax_mojom|liblearning_impl|librange|libbrowser_ui_views|libcontent|libvr_base|libppapi_host|libservice_manager_mojom_traits|libgamepad_mojom|libcertificate_matching|libgfx_ipc|libgl_init|libVkLayer_stateless_validation|libshared_with_blink|libshared_memory_support|libevents_base|libnet_with_v8|libmedia_webrtc|libsurface|libcontent_public_common_mojo_bindings_shared|libaura_extra|libdevice_base|libonc|libcdm_manager|libmojom_platform_shared|libui_accessibility_ax_mojom_shared|libhost|libblink_features|libdevice_features|libmirroring_service|libdbus|libgeometry|libchromium_sqlite3|libgamepad_mojom_shared|libauthenticator_test_mojo_bindings_shared|libboringssl|libembedder_switches|libgfx_ipc_skia|libzygote|libmedia_session_cpp|libv8|libnetwork_service|libx11_window|libui_base_clipboard|libanimation|libmessage_support|libui_devtools|libgamepad_shared_typemap_traits|libfingerprint|libviz_common|libppapi_shared|libstorage_browser|libbindings_base|libservice_manager_mojom|libblink_core|libgin|libresource_coordinator_public_mojom_shared|libuser_prefs|libui_base_ime_types|libipc_mojom|libmidi|libmojo_cpp_platform|libcc_debug|libui_base_clipboard_types|libmedia|libfontconfig
+%global privlibs
libservice|libui_accessibility_ax_mojom_blink|libmojo_mojom_bindings_shared|libcolor_space|libui_base_ime_linux|libv8|libtracing_cpp|libprotobuf_lite|librange|libui_touch_selection|libgtkui|libraster|libstub_window|libmessage_center|libv8_libplatform|libtab_count_metrics|libclient|libaura|libresource_coordinator_public_mojom_shared|libbluetooth|libipc_mojom_shared|libdevice_event_log|libcc_debug|libnet_with_v8|libcc_paint|libwm_public|libnetwork_cpp_base|libservice_manager_mojom|libaura_extra|libmojo_public_system|libpdfium|libui_base_ime_init|libmpris|libcc|libservice_manager_cpp|libblink_mojom_broadcastchannel_bindings_shared|libinterfaces_shared|libservice_manager_cpp_types|libservice_manager_mojom_shared|libwm|libbase_i18n|libnetwork_session_configurator|libwebview|libplatform_window_handler_libs|libx11_events_platform|libmojo_cpp_platform|libandroid_mojo_bindings_shared|libpublic|libmirroring_service|libmedia_session_cpp|libblink_platform|libicui18n|libwebdata_common|libgin|libdevice_gamepad|libdevice_vr_mojo_bindings|libffmpeg|libmetrics_cpp|liburl_matcher|libpolicy_proto|libshared_memory_support|libparsers|libgles2_utils|libweb_feature_mojo_bindings_mojom|libui_base_idle|libmojo_public_system_cpp|libsuid_sandbox_client|libgfx_ipc_skia|libmojo_base_shared_typemap_traits|libcapture_lib|libgl_init|libblink_common|libcc_base|libmojo_base_mojom|libtracing_mojom_shared|libgpu_ipc_service|libui_accessibility_ax_mojom|libweb_feature_mojo_bindings_mojom_shared|libgfx_switches|libmedia_session_base_cpp|libmessage_support|libvulkan_init|libonc|libgpu|libmojom_modules_shared|libnative_theme|libgcm|libvr_base|libmojo_core_embedder_internal|libuser_prefs|libweb_bluetooth_mojo_bindings_shared|libos_crypt|libbrowser_ui_views|libembedder_switches|libcontent_service_mojom_shared|libsandbox|libvulkan_x11|libdevice_vr_test_mojo_bindings|libmojo_core_ports|libblink_core|libx11_window|libmojo_mojom_bindings|libipc|libmojo_base_mojom_blink|libgl_wrapper|libprinting|libgesture_detection|libdiscardable_memory_service|libmojom_core_shared|libviz_vulkan_context_provider|libpolicy_component|libdisplay|libvr_common|libdevice_vr_test_mojo_bindings_shared|libui_accessibility_ax_mojom_shared|libresource_coordinator_public_mojom|libvulkan_wrapper|libcrcrypto|libGLESv2|libv8_libbase|libcrash_key|libchrome_features|libdiscardable_memory_common|libbindings|libfreetype_harfbuzz|libcapture_base|libmojo_core_embedder|libprefs|libdevice_features|libresource_coordinator_cpp_features|libgfx_ipc_geometry|libgfx|libui_devtools|libweb_dialogs|libkeyed_service_core|libcontent|libgeometry_skia|libdisplay_util|libservice_manager_mojom_traits|libkeycodes_x11|libipc_mojom|libmojo_base_lib|libui_base_clipboard_types|libtracing_mojom|libmanager|libmedia_webrtc|libmedia_mojo_services|libcontent_public_common_mojo_bindings_shared|libgfx_ipc|libdiscardable_memory_client|libmemory_instrumentation|libui_base_ime|libskia|libgfx_ipc_color|libshell_dialogs|libEGL|libmedia_blink|libmedia_message_center|libblink_controller|libdevice_vr_mojo_bindings_shared|libmidi|libapdu|libseccomp_bpf|libboringssl|libcolor_utils|libdbus|libproxy_config|libblink_features|libmojom_platform_shared|libshared_with_blink|libui_data_pack|libevents_x|libleveldatabase|libevents_ozone_layout|libgfx_x11|libsurface|liblearning_impl|libgamepad_mojom|libcontent_service_cpp|libui_base|libzygote|libevents|libvulkan|libGLESv2|libEGL|libcertificate_matching|libusb_shared|libbindings_base|libgfx_ipc_buffer_types|libcodec|libmojom_mhtml_load_result_shared|libstorage_common|libdevice_vr|libviz_resource_format_utils|libservice_manager_mojom_blink|libgles2|libauthenticator_test_mojo_bindings_shared|libui_base_clipboard|libgamepad_mojom_shared|libdomain_reliability|libmenu|libblink_embedded_frame_sink_mojo_bindings_shared|libwebgpu|liburl_ipc|libnet|libmedia_gpu|libservice_manager_mojom_constants_shared|libaccessibility|libservice_manager_mojom_constants|libembedder|libgamepad_mojom_blink|libcc_animation|libplatform|libdevice_base|libanimation|libgamepad_shared_typemap_traits|libwtf|libthread_linux|libui_base_x|libcloud_policy_proto_generated_compile|libsql|libhost|libextras|libchromium_sqlite3|libnetwork_cpp|libmojo_base_mojom_shared|libgeometry|libppapi_proxy|libweb_feature_mojo_bindings_mojom_blink|libcontent_common_mojo_bindings_shared|libVkICD_mock_icd|libdevice_vr_mojo_bindings_blink|libservice_manager_mojom_constants_blink|libevents_base|liburl|libresource_coordinator_public_mojom_blink|libppapi_host|libppapi_shared|libmedia|libtracing|libsandbox_services|libcontent_service_mojom|libevents_devices_x11|libcompositor|libfingerprint|libuser_manager|libstorage_browser|libbase|libkeyed_service_content|libviews|libcaptive_portal|libcbor|libviz_common|libcc_mojo_embedder|libheadless_non_renderer|libui_base_features|libsnapshot|libcommon|libnetwork_service|liblearning_common|libblink_modules|libscheduling_metrics|libperfetto|libgles2_implementation|libsessions|libdevices|libstartup_tracing|libdisplay_types|libgl_in_process_context|libui_base_ime_types|libui_message_center_cpp|libclearkeycdm|libicuuc|libfido|libfontconfig
%else
-%global privlibs
libevents_devices_x11|libgfx_x11|libevents_x|libgl_wrapper|libmemory_instrumentation|libdevice_vr_mojo_bindings|libdiscardable_memory_common|libui_base_ime_init|libnetwork_cpp_base|libos_crypt|libmessage_center|libmanager|libdevice_gamepad|libembedder|libGLESv2|libtracing|libskia|libgl_in_process_context|libapdu|libbluetooth|libviz_resource_format_utils|libmojo_mojom_bindings|libblink_platform|libmojom_modules_shared|libwebdata_common|libshell_dialogs|libresource_coordinator_public_mojom_blink|libgles2_utils|libgpu_ipc_service|libcaptive_portal|libvr_common|libgles2|libdisplay|libgfx_ipc_geometry|libcc_paint|libandroid_mojo_bindings_shared|libipc_mojom_shared|libffmpeg|liburl_matcher|libbindings|libservice|libwtf|libcommon|libleveldatabase|libnetwork_session_configurator|libaura|libcloud_policy_proto_generated_compile|libservice_manager_mojom_constants|libui_touch_selection|libmojo_base_lib|libservice_manager_cpp_types|libservice_manager_mojom_blink|libmojo_core_embedder|libblink_embedded_frame_sink_mojo_bindings_shared|libgesture_detection|liburl_ipc|libweb_feature_mojo_bindings_mojom|libscheduling_metrics|libresource_coordinator_cpp_features|libcc|libdiscardable_memory_client|libsessions|libblink_common|libipc|libvulkan_init|libblink_mojom_broadcastchannel_bindings_shared|libheadless_non_renderer|libcbor|libmojo_core_embedder_internal|libmojo_public_system_cpp|libmojom_core_shared|libgfx|libusb_shared|libtracing_mojom|libuser_manager|libnet|libwebgpu|libplatform_window_handler_libs|libmojo_base_mojom_shared|libui_base|libprinting|libcontent_service_mojom_shared|libstartup_tracing|libdevice_vr_mojo_bindings_blink|libraster|libsandbox|libv8_libbase|libevents|libui_base_idle|libgles2_implementation|libkeyed_service_content|libprefs|libVkLayer_core_validation|libchrome_features|libdiscardable_memory_service|libcapture_lib|libperfetto|libicui18n|libdomain_reliability|libweb_dialogs|libcc_animation|libbase|libtracing_cpp|libGLESv2|libEGL|libVkLayer_thread_safety|libmedia_gpu|libparsers|libservice_manager_cpp|liblearning_common|libdevices|libvulkan_wrapper|libservice_manager_mojom_shared|libgfx_switches|libkeycodes_x11|libweb_feature_mojo_bindings_mojom_shared|liburl|libmpris|libppapi_proxy|libmojo_base_mojom|libprotobuf_lite|libui_base_features|libdevice_vr|libwm_public|libcolor_space|libseccomp_bpf|libinterfaces_shared|libui_base_x|libicuuc|libwebview|libdevice_event_log|libVkLayer_object_lifetimes|libvulkan_x11|libproxy_config|libnetwork_cpp|libextras|libVkICD_mock_icd|libv8_libplatform|libresource_coordinator_public_mojom|libwm|libviews|libsuid_sandbox_client|libEGL|libcapture_base|libnative_theme|libcrcrypto|libmojo_public_system|libservice_manager_mojom_constants_shared|libui_accessibility_ax_mojom_blink|libplatform|libui_data_pack|libgfx_ipc_buffer_types|libclearkeycdm|libmetrics_cpp|libmojo_base_shared_typemap_traits|libx11_events_platform|libcrash_key|libclient|libblink_controller|libfido|libfreetype_harfbuzz|libmojo_mojom_bindings_shared|libaccessibility|libstub_window|libui_base_ime|libpolicy_component|libweb_bluetooth_mojo_bindings_shared|libmojo_core_ports|libsandbox_services|libstorage_common|libviz_vulkan_context_provider|libcontent_common_mojo_bindings_shared|libgamepad_mojom_blink|libkeyed_service_core|libmedia_mojo_services|libmojo_ime_lib|libblink_modules|libgcm|libsql|libgeometry_skia|libVkLayer_unique_objects|libweb_feature_mojo_bindings_mojom_blink|libui_base_ime_linux|libdisplay_types|libdevice_vr_mojo_bindings_shared|libcc_base|libtracing_mojom_shared|libmedia_blink|libcc_mojo_embedder|libpdfium|libevents_ozone_layout|libgfx_ipc_color|libgtkui|libpolicy_proto|libcodec|libgpu|libcontent_service_cpp|libmojom_mhtml_load_result_shared|libdisplay_util|libcontent_service_mojom|libbase_i18n|libservice_manager_mojom_constants_blink|libcompositor|libmojo_base_mojom_blink|libui_message_center_cpp|libsnapshot|libdbus_thread_linux|libtab_count_metrics|libpublic|libui_accessibility_ax_mojom|liblearning_impl|librange|libbrowser_ui_views|libcontent|libvr_base|libppapi_host|libservice_manager_mojom_traits|libgamepad_mojom|libcertificate_matching|libgfx_ipc|libgl_init|libVkLayer_stateless_validation|libshared_with_blink|libshared_memory_support|libevents_base|libnet_with_v8|libmedia_webrtc|libsurface|libcontent_public_common_mojo_bindings_shared|libaura_extra|libdevice_base|libonc|libcdm_manager|libmojom_platform_shared|libui_accessibility_ax_mojom_shared|libhost|libblink_features|libdevice_features|libmirroring_service|libdbus|libgeometry|libchromium_sqlite3|libgamepad_mojom_shared|libauthenticator_test_mojo_bindings_shared|libboringssl|libembedder_switches|libgfx_ipc_skia|libzygote|libmedia_session_cpp|libv8|libnetwork_service|libx11_window|libui_base_clipboard|libanimation|libmessage_support|libui_devtools|libgamepad_shared_typemap_traits|libfingerprint|libviz_common|libppapi_shared|libstorage_browser|libbindings_base|libservice_manager_mojom|libblink_core|libgin|libresource_coordinator_public_mojom_shared|libuser_prefs|libui_base_ime_types|libipc_mojom|libmidi|libmojo_cpp_platform|libcc_debug|libui_base_clipboard_types|libmedia
+%global privlibs
libservice|libui_accessibility_ax_mojom_blink|libmojo_mojom_bindings_shared|libcolor_space|libui_base_ime_linux|libv8|libtracing_cpp|libprotobuf_lite|librange|libui_touch_selection|libgtkui|libraster|libstub_window|libmessage_center|libv8_libplatform|libtab_count_metrics|libclient|libaura|libresource_coordinator_public_mojom_shared|libbluetooth|libipc_mojom_shared|libdevice_event_log|libcc_debug|libnet_with_v8|libcc_paint|libwm_public|libnetwork_cpp_base|libservice_manager_mojom|libaura_extra|libmojo_public_system|libpdfium|libui_base_ime_init|libmpris|libcc|libservice_manager_cpp|libblink_mojom_broadcastchannel_bindings_shared|libinterfaces_shared|libservice_manager_cpp_types|libservice_manager_mojom_shared|libwm|libbase_i18n|libnetwork_session_configurator|libwebview|libplatform_window_handler_libs|libx11_events_platform|libmojo_cpp_platform|libandroid_mojo_bindings_shared|libpublic|libmirroring_service|libmedia_session_cpp|libblink_platform|libicui18n|libwebdata_common|libgin|libdevice_gamepad|libdevice_vr_mojo_bindings|libffmpeg|libmetrics_cpp|liburl_matcher|libpolicy_proto|libshared_memory_support|libparsers|libgles2_utils|libweb_feature_mojo_bindings_mojom|libui_base_idle|libmojo_public_system_cpp|libsuid_sandbox_client|libgfx_ipc_skia|libmojo_base_shared_typemap_traits|libcapture_lib|libgl_init|libblink_common|libcc_base|libmojo_base_mojom|libtracing_mojom_shared|libgpu_ipc_service|libui_accessibility_ax_mojom|libweb_feature_mojo_bindings_mojom_shared|libgfx_switches|libmedia_session_base_cpp|libmessage_support|libvulkan_init|libonc|libgpu|libmojom_modules_shared|libnative_theme|libgcm|libvr_base|libmojo_core_embedder_internal|libuser_prefs|libweb_bluetooth_mojo_bindings_shared|libos_crypt|libbrowser_ui_views|libembedder_switches|libcontent_service_mojom_shared|libsandbox|libvulkan_x11|libdevice_vr_test_mojo_bindings|libmojo_core_ports|libblink_core|libx11_window|libmojo_mojom_bindings|libipc|libmojo_base_mojom_blink|libgl_wrapper|libprinting|libgesture_detection|libdiscardable_memory_service|libmojom_core_shared|libviz_vulkan_context_provider|libpolicy_component|libdisplay|libvr_common|libdevice_vr_test_mojo_bindings_shared|libui_accessibility_ax_mojom_shared|libresource_coordinator_public_mojom|libvulkan_wrapper|libcrcrypto|libGLESv2|libv8_libbase|libcrash_key|libchrome_features|libdiscardable_memory_common|libbindings|libfreetype_harfbuzz|libcapture_base|libmojo_core_embedder|libprefs|libdevice_features|libresource_coordinator_cpp_features|libgfx_ipc_geometry|libgfx|libui_devtools|libweb_dialogs|libkeyed_service_core|libcontent|libgeometry_skia|libdisplay_util|libservice_manager_mojom_traits|libkeycodes_x11|libipc_mojom|libmojo_base_lib|libui_base_clipboard_types|libtracing_mojom|libmanager|libmedia_webrtc|libmedia_mojo_services|libcontent_public_common_mojo_bindings_shared|libgfx_ipc|libdiscardable_memory_client|libmemory_instrumentation|libui_base_ime|libskia|libgfx_ipc_color|libshell_dialogs|libEGL|libmedia_blink|libmedia_message_center|libblink_controller|libdevice_vr_mojo_bindings_shared|libmidi|libapdu|libseccomp_bpf|libboringssl|libcolor_utils|libdbus|libproxy_config|libblink_features|libmojom_platform_shared|libshared_with_blink|libui_data_pack|libevents_x|libleveldatabase|libevents_ozone_layout|libgfx_x11|libsurface|liblearning_impl|libgamepad_mojom|libcontent_service_cpp|libui_base|libzygote|libevents|libvulkan|libGLESv2|libEGL|libcertificate_matching|libusb_shared|libbindings_base|libgfx_ipc_buffer_types|libcodec|libmojom_mhtml_load_result_shared|libstorage_common|libdevice_vr|libviz_resource_format_utils|libservice_manager_mojom_blink|libgles2|libauthenticator_test_mojo_bindings_shared|libui_base_clipboard|libgamepad_mojom_shared|libdomain_reliability|libmenu|libblink_embedded_frame_sink_mojo_bindings_shared|libwebgpu|liburl_ipc|libnet|libmedia_gpu|libservice_manager_mojom_constants_shared|libaccessibility|libservice_manager_mojom_constants|libembedder|libgamepad_mojom_blink|libcc_animation|libplatform|libdevice_base|libanimation|libgamepad_shared_typemap_traits|libwtf|libthread_linux|libui_base_x|libcloud_policy_proto_generated_compile|libsql|libhost|libextras|libchromium_sqlite3|libnetwork_cpp|libmojo_base_mojom_shared|libgeometry|libppapi_proxy|libweb_feature_mojo_bindings_mojom_blink|libcontent_common_mojo_bindings_shared|libVkICD_mock_icd|libdevice_vr_mojo_bindings_blink|libservice_manager_mojom_constants_blink|libevents_base|liburl|libresource_coordinator_public_mojom_blink|libppapi_host|libppapi_shared|libmedia|libtracing|libsandbox_services|libcontent_service_mojom|libevents_devices_x11|libcompositor|libfingerprint|libuser_manager|libstorage_browser|libbase|libkeyed_service_content|libviews|libcaptive_portal|libcbor|libviz_common|libcc_mojo_embedder|libheadless_non_renderer|libui_base_features|libsnapshot|libcommon|libnetwork_service|liblearning_common|libblink_modules|libscheduling_metrics|libperfetto|libgles2_implementation|libsessions|libdevices|libstartup_tracing|libdisplay_types|libgl_in_process_context|libui_base_ime_types|libui_message_center_cpp|libclearkeycdm|libicuuc|libfido
%endif
%global __requires_exclude ^(%{privlibs})\\.so*
commit 7fc281321af19c13b81aeaa367d93b7681482b00
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Sun Sep 15 08:11:22 2019 +0200
22x22 icon was removed and use the symbolic one as well
diff --git a/chromium.spec b/chromium.spec
index a198ddf..843f1a0 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -1645,8 +1645,8 @@ mkdir -p %{buildroot}%{_datadir}/icons/hicolor/48x48/apps
cp -a chrome/app/theme/chromium/product_logo_48.png
%{buildroot}%{_datadir}/icons/hicolor/48x48/apps/%{chromium_browser_channel}.png
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/24x24/apps
cp -a chrome/app/theme/chromium/product_logo_24.png
%{buildroot}%{_datadir}/icons/hicolor/24x24/apps/%{chromium_browser_channel}.png
-mkdir -p %{buildroot}%{_datadir}/icons/hicolor/22x22/apps
-cp -a chrome/app/theme/chromium/product_logo_22.png
%{buildroot}%{_datadir}/icons/hicolor/22x22/apps/%{chromium_browser_channel}.png
+mkdir -p %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+cp -a chrome/app/theme/chromium/product_logo_22_mono.png
%{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/%{chromium_browser_channel}.png
# Install the master_preferences file
mkdir -p %{buildroot}%{_sysconfdir}/%{name}
commit 4d35c8a98356aedecd1f0fe80534a454f93ecf6d
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Sun Sep 15 08:08:54 2019 +0200
Fix the aarch64 build
diff --git a/chromium-77.0.3865.75-missing-limits.patch
b/chromium-77.0.3865.75-missing-limits.patch
new file mode 100644
index 0000000..3ac1770
--- /dev/null
+++ b/chromium-77.0.3865.75-missing-limits.patch
@@ -0,0 +1,28 @@
+From 5baf7df7f4c5971dab552897eeef94b194650ce5 Mon Sep 17 00:00:00 2001
+From: Dave Tapuska <dtapuska(a)chromium.org>
+Date: Mon, 12 Aug 2019 22:30:13 +0000
+Subject: [PATCH] Fix build failure due to missing include for std::numeric_limits usage.
+
+Some configurations fail to build, limits should have been included.
+
+BUG=992832
+
+Change-Id: I894ba0543bfcef101c93259e39a31d12ae6d035c
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1747981
+Commit-Queue: Dave Tapuska <dtapuska(a)chromium.org>
+Reviewed-by: Mostyn Bramley-Moore <mostynb(a)vewd.com>
+Cr-Commit-Position: refs/heads/master@{#686214}
+---
+
+diff --git a/third_party/blink/renderer/platform/exported/web_time_range.cc
b/third_party/blink/renderer/platform/exported/web_time_range.cc
+index 384566a..68d83e1 100644
+--- a/third_party/blink/renderer/platform/exported/web_time_range.cc
++++ b/third_party/blink/renderer/platform/exported/web_time_range.cc
+@@ -31,6 +31,7 @@
+ #include "third_party/blink/public/platform/web_time_range.h"
+
+ #include <cmath>
++#include <limits>
+
+ namespace blink {
+
diff --git a/chromium.spec b/chromium.spec
index 5dec1f7..a198ddf 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -292,6 +292,8 @@ Patch67: chromium-77.0.3865.75-base-gcc-no-alignas.patch
Patch68: chromium-77.0.3865.75-harfbuzz-subset.patch
#
https://chromium.googlesource.com/chromium/src.git/+/f08cb0022527081c078e...
Patch69: chromium-77.0.3865.75-gcc-abstract-class.patch
+#
https://chromium.googlesource.com/chromium/src/+/5baf7df7f4c5971dab552897...
+Patch70: chromium-77.0.3865.75-missing-limits.patch
# Apply these changes to work around EPEL7 compiler issues
Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
@@ -862,6 +864,7 @@ udev.
%patch67 -p1 -b .base-gcc-no-alignas
%patch68 -p1 -b .harfbuzz-subset
%patch69 -p1 -b .gcc-abstract-class
+%patch70 -p1 -b .missing-limits
# EPEL specific patches
%if 0%{?rhel} == 7
commit 578228ae99ca125111d573ee5ff5c7cca67264ee
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Sat Sep 14 19:15:24 2019 +0200
Customize the ninja status to show the currently build target
So one is able to realize faster, where the build is failing.
diff --git a/chromium.spec b/chromium.spec
index d874dd5..5dec1f7 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -2,6 +2,13 @@
#
https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompi...
%global _python_bytecompile_extra 1
+# Fancy build status, so we at least know, where we are..
+# %1 where
+# %2 what
+%global build_target() \
+ export NINJA_STATUS="[%2:%f/%t] " ; \
+ ../depot_tools/ninja -C '%1' -vvv '%2'
+
# This is faster when it works, but it doesn't always.
%ifarch aarch64
%global use_jumbo 0
@@ -28,9 +35,9 @@
%global useapikeys 1
# Leave this alone, please.
-%global target out/Release
-%global headlesstarget out/Headless
-%global remotingtarget out/Remoting
+%global builddir out/Release
+%global headlessbuilddir out/Headless
+%global remotingbuilddir out/Remoting
# Debuginfo packages aren't very useful here. If you need to debug
# you should do a proper debug build (not implemented in this spec yet)
@@ -1414,17 +1421,17 @@ if python2 -c 'import google ; print google.__path__'
2> /dev/null ; then \
fi
tools/gn/bootstrap/bootstrap.py -v "$CHROMIUM_CORE_GN_DEFINES
$CHROMIUM_BROWSER_GN_DEFINES"
-%{target}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES" %{target}
+%{builddir}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES" %{builddir}
%if %{freeworld}
# do not need to do headless gen
%else
%if %{build_headless}
-%{target}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_HEADLESS_GN_DEFINES"
%{headlesstarget}
+%{builddir}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_HEADLESS_GN_DEFINES"
%{headlessbuilddir}
%endif
%endif
-%{target}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES"
%{remotingtarget}
+%{builddir}/gn --script-executable=/usr/bin/python2 gen
--args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES"
%{remotingbuilddir}
%if %{bundlelibusbx}
# no hackity hack hack
@@ -1444,34 +1451,36 @@ sed -i.orig -e
's/getenv("CHROME_VERSION_EXTRA")/"Fedora Project"/' $FILE
. /opt/rh/devtoolset-%{dts_version}/enable
%endif
-echo
+echo
# Now do the full browser
%if 0%{freeworld}
-../depot_tools/ninja -C %{target} -vvv media
+%build_target %{builddir} media
%else
%if %{build_headless}
-# Do headless first.
-../depot_tools/ninja -C %{headlesstarget} -vvv headless_shell
+# Do headless first.
+%build_target %{headlessbuilddir} headless_shell
%endif
-../depot_tools/ninja -C %{target} -vvv chrome chrome_sandbox chromedriver clear_key_cdm
policy_templates
+%build_target %{builddir} chrome
+%build_target %{builddir} chrome_sandbox
+%build_target %{builddir} chromedriver
+%build_target %{builddir} clear_key_cdm
+%build_target %{builddir} policy_templates
# remote client
-pushd remoting
-
-# ../../depot_tools/ninja -C ../%{target} -vvv remoting_me2me_host remoting_start_host
remoting_it2me_native_messaging_host remoting_me2me_native_messaging_host
remoting_native_messaging_manifests remoting_resources
-../../depot_tools/ninja -C ../%{remotingtarget} -vvv remoting_all
+# ../../depot_tools/ninja -C ../%{builddir} -vvv remoting_me2me_host remoting_start_host
remoting_it2me_native_messaging_host remoting_me2me_native_messaging_host
remoting_native_messaging_manifests remoting_resources
+%build_target %{remotingbuilddir} remoting_all
%if 0%{?build_remoting_app}
%if 0%{?nacl}
-GOOGLE_CLIENT_ID_REMOTING_IDENTITY_API=%{chromoting_client_id} ../../depot_tools/ninja
-vv -C ../out/Release/ remoting_webapp
+export GOOGLE_CLIENT_ID_REMOTING_IDENTITY_API=%{chromoting_client_id}
+%build_target %{builddir} remoting_webapp
%endif
%endif
-popd
%endif
# Nuke nacl/pnacl bits at the end of the build
-rm -rf out/Release/gen/sdk
+rm -rf %{builddir}/gen/sdk
rm -rf native_client/toolchain
rm -rf third_party/llvm-build/*
@@ -1481,7 +1490,7 @@ rm -rf %{buildroot}
%if 0%{freeworld}
mkdir -p %{buildroot}%{chromium_path}
-pushd %{target}
+pushd %{builddir}
cp -a libffmpeg.so* %{buildroot}%{chromium_path}
cp -a libmedia.so* %{buildroot}%{chromium_path}
mv %{buildroot}%{chromium_path}/libffmpeg.so{,.%{lsuffix}}
@@ -1510,7 +1519,7 @@ sed -i "s|@@EXTRA_FLAGS@@|$EXTRA_FLAGS|g"
%{buildroot}%{chromium_path}/%{chromiu
ln -s %{chromium_path}/%{chromium_browser_channel}.sh
%{buildroot}%{_bindir}/%{chromium_browser_channel}
mkdir -p %{buildroot}%{_mandir}/man1/
-pushd %{target}
+pushd %{builddir}
cp -a *.pak locales resources icudtl.dat %{buildroot}%{chromium_path}
%if 0%{?nacl}
cp -a nacl_helper* *.nexe pnacl tls_edit %{buildroot}%{chromium_path}
@@ -1561,7 +1570,7 @@ popd
%endif
popd
-pushd %{remotingtarget}
+pushd %{remotingbuilddir}
# See remoting/host/installer/linux/Makefile for logic
cp -a remoting_native_messaging_host %{buildroot}%{crd_path}/native-messaging-host
@@ -1604,7 +1613,7 @@ cp -a remoting_client_plugin_newlib.* %{buildroot}%{chromium_path}
%endif
%if %{build_headless}
-pushd %{headlesstarget}
+pushd %{headlessbuilddir}
cp -a headless_lib.pak headless_shell %{buildroot}%{chromium_path}
popd
%endif
commit 63ccbdcf58d947939423cf78126866370e0f78ba
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Sat Sep 14 17:06:52 2019 +0200
Backport another GCC build fix
diff --git a/chromium-77.0.3865.75-gcc-abstract-class.patch
b/chromium-77.0.3865.75-gcc-abstract-class.patch
new file mode 100644
index 0000000..6d77299
--- /dev/null
+++ b/chromium-77.0.3865.75-gcc-abstract-class.patch
@@ -0,0 +1,61 @@
+From f08cb0022527081c078e8b96062e6c9b4fbda151 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Fri, 26 Jul 2019 16:48:06 +0000
+Subject: [PATCH] BinaryUploadService: change parameter passing that cannot afford
abstract class
+
+The method UploadForDeepScanning gets a Request as parameter. But Request is an
+abstract class, so GCC will not allow that declaration (polimorphycs should be
+passed by reference). Use std::unique_ptr so BinaryUploadService can assume
+ownership.
+
+Bug: 819294
+Change-Id: I9e8c75cc92b01abd704d9049b0421555377da5ba
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1713550
+Reviewed-by: Daniel Rubery <drubery(a)chromium.org>
+Commit-Queue: Jos Dapena Paz <jose.dapena(a)lge.com>
+Cr-Commit-Position: refs/heads/master@{#681333}
+---
+
+diff --git a/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
b/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
+index 6430c89..4e90487 100644
+--- a/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
++++ b/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc
+@@ -10,7 +10,7 @@
+ namespace safe_browsing {
+
+ void BinaryUploadService::UploadForDeepScanning(
+- BinaryUploadService::Request request) {
++ std::unique_ptr<BinaryUploadService::Request> request) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ NOTREACHED();
+ }
+diff --git a/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
b/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
+index d2dfd83..9b6f395 100644
+--- a/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
++++ b/chrome/browser/safe_browsing/download_protection/binary_upload_service.h
+@@ -5,6 +5,8 @@
+ #ifndef CHROME_BROWSER_SAFE_BROWSING_DOWNLOAD_PROTECTION_BINARY_UPLOAD_SERVICE_H_
+ #define CHROME_BROWSER_SAFE_BROWSING_DOWNLOAD_PROTECTION_BINARY_UPLOAD_SERVICE_H_
+
++#include <memory>
++
+ #include "base/callback.h"
+ #include "components/safe_browsing/proto/webprotect.pb.h"
+
+@@ -40,6 +42,7 @@
+ public:
+ // |callback| will run on the UI thread.
+ explicit Request(Callback callback);
++ virtual ~Request() = default;
+ Request(const Request&) = delete;
+ Request& operator=(const Request&) = delete;
+
+@@ -67,7 +70,7 @@
+ // Upload the given file contents for deep scanning. The results will be
+ // returned asynchronously by calling |request|'s |callback|. This must be
+ // called on the UI thread.
+- void UploadForDeepScanning(Request request);
++ void UploadForDeepScanning(std::unique_ptr<Request> request);
+ };
+
+ } // namespace safe_browsing
diff --git a/chromium.spec b/chromium.spec
index 522df10..d874dd5 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -283,6 +283,8 @@ Patch66: chromium-77.0.3865.75-gcc-include-memory.patch
Patch67: chromium-77.0.3865.75-base-gcc-no-alignas.patch
#
https://chromium.googlesource.com/chromium/src/+/27e25336b8316ff3ec4e4640...
Patch68: chromium-77.0.3865.75-harfbuzz-subset.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/f08cb0022527081c078e...
+Patch69: chromium-77.0.3865.75-gcc-abstract-class.patch
# Apply these changes to work around EPEL7 compiler issues
Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
@@ -852,6 +854,7 @@ udev.
%patch66 -p1 -b .gcc-include-memory
%patch67 -p1 -b .base-gcc-no-alignas
%patch68 -p1 -b .harfbuzz-subset
+%patch69 -p1 -b .gcc-abstract-class
# EPEL specific patches
%if 0%{?rhel} == 7
commit 057d9fcd01bff959156616a47f0c13409dc6ecaf
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Sat Sep 14 11:10:29 2019 +0200
Don't remove an additional bundled library
diff --git a/chromium.spec b/chromium.spec
index 8039cd0..522df10 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -1243,6 +1243,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/openh264' \
%endif
'third_party/openscreen' \
+ 'third_party/openscreen/src/third_party/tinycbor' \
'third_party/opus' \
'third_party/one_euro_filter' \
'third_party/ots' \
commit dc2f301520eb0151967763d129a425fa0a509ada
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Sat Sep 14 11:09:46 2019 +0200
More of the harfbuzz related fixes
diff --git a/chromium-77.0.3865.75-harfbuzz-subset.patch
b/chromium-77.0.3865.75-harfbuzz-subset.patch
new file mode 100644
index 0000000..55d78d1
--- /dev/null
+++ b/chromium-77.0.3865.75-harfbuzz-subset.patch
@@ -0,0 +1,49 @@
+From 27e25336b8316ff3ec4e464058682ed85801fd06 Mon Sep 17 00:00:00 2001
+From: Raphael Kubo da Costa <raphael.kubo.da.costa(a)intel.com>
+Date: Mon, 29 Jul 2019 10:54:28 +0000
+Subject: [PATCH] Also link against libharfbuzz-subset when use_system_harfbuzz is true
+
+When building HarfBuzz as part of Chromium, there is a single source set
+with all the files we need in the build.
+
+Upstream HarfBuzz, on the other hand, produces a few different libraries:
+harfbuzz, harfbuzz-icu and harfbuzz-subset. When |use_system_harfbuzz| is
+true, we were only looking for (and using) harfbuzz.pc with pkg-config even
+though we also use symbols from libharfbuzz-subset.so. This resulted in
+errors when linking:
+
+ ld: obj/skia/skia/SkPDFSubsetFont.o: in function
`SkPDFSubsetFont(sk_sp<SkData>, SkPDFGlyphUse const&,
SkPDF::Metadata::Subsetter, char const*, int)':
+
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x48a):
undefined reference to `hb_subset_input_create_or_fail'
+ ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x4af):
undefined reference to `hb_subset_input_glyph_set'
+ ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x5d7):
undefined reference to `hb_subset_input_set_retain_gids'
+ ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x5e4):
undefined reference to `hb_subset_input_set_drop_hints'
+ ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x5f3):
undefined reference to `hb_subset'
+ ld:
SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x66f):
undefined reference to `hb_subset_input_destroy'
+
+as reported in
+https://groups.google.com/a/chromium.org/d/msg/chromium-packagers/UyJsVJ5QqWo/jSv5z7-rEQAJ
+
+Change-Id: I997af075c7b7263cd7cc71a63db5b0f93bd1ab59
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1715288
+Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa(a)intel.com>
+Commit-Queue: Dominik Rttsches <drott(a)chromium.org>
+Reviewed-by: Dominik Rttsches <drott(a)chromium.org>
+Cr-Commit-Position: refs/heads/master@{#681760}
+---
+
+diff --git a/third_party/harfbuzz-ng/BUILD.gn b/third_party/harfbuzz-ng/BUILD.gn
+index 37d8e33..72013eb1d 100644
+--- a/third_party/harfbuzz-ng/BUILD.gn
++++ b/third_party/harfbuzz-ng/BUILD.gn
+@@ -16,7 +16,10 @@
+ "//third_party:freetype_harfbuzz",
+ "//third_party/freetype:freetype_source",
+ ]
+- packages = [ "harfbuzz" ]
++ packages = [
++ "harfbuzz",
++ "harfbuzz-subset",
++ ]
+ }
+ } else {
+ config("harfbuzz_config") {
diff --git a/chromium.spec b/chromium.spec
index dd3fbaf..8039cd0 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -281,6 +281,8 @@ Patch65: chromium-77.0.3865.75-unbundle-zlib.patch
Patch66: chromium-77.0.3865.75-gcc-include-memory.patch
# Needs to be submitted..
Patch67: chromium-77.0.3865.75-base-gcc-no-alignas.patch
+#
https://chromium.googlesource.com/chromium/src/+/27e25336b8316ff3ec4e4640...
+Patch68: chromium-77.0.3865.75-harfbuzz-subset.patch
# Apply these changes to work around EPEL7 compiler issues
Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
@@ -366,7 +368,7 @@ BuildRequires: gperf
%if 0%{?bundleharfbuzz}
#nothing
%else
-BuildRequires: harfbuzz-devel >= 2.3.0
+BuildRequires: harfbuzz-devel >= 2.4.0
%endif
BuildRequires: libatomic
BuildRequires: libcap-devel
@@ -633,7 +635,7 @@ Provides: bundled(freetype) = 2.9.3
%endif
Provides: bundled(gperftools) = svn144
%if 0%{?bundleharfbuzz}
-Provides: bundled(harfbuzz) = 2.3.0
+Provides: bundled(harfbuzz) = 2.4.0
%endif
Provides: bundled(hunspell) = 1.6.0
Provides: bundled(iccjpeg)
@@ -849,6 +851,7 @@ udev.
%patch65 -p1 -b .unbundle-zlib
%patch66 -p1 -b .gcc-include-memory
%patch67 -p1 -b .base-gcc-no-alignas
+%patch68 -p1 -b .harfbuzz-subset
# EPEL specific patches
%if 0%{?rhel} == 7
commit ecb75dee3259ac4e802881ab69b036fa7019d553
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Sep 13 22:13:56 2019 +0200
Fix the release number and add a changelog entry
diff --git a/chromium.spec b/chromium.spec
index bfbc930..dd3fbaf 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -176,7 +176,7 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
Name: chromium%{chromium_channel}
%endif
Version: %{majorversion}.0.3865.75
-Release: 2%{?dist}
+Release: 1%{?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)
@@ -1883,6 +1883,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
+* Fri Sep 13 2019 Tomas Popela <tpopela(a)redhat.com> - 77.0.3865.75-1
+- Update to 77.0.3865.75
+
* Tue Sep 03 2019 Tomas Popela <tpopela(a)redhat.com> - 76.0.3809.132-2
- Backport patch to fix certificate transparency
commit fb22c7a5e910b0d702d8c8cace78936eff63eccc
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Sep 13 22:06:07 2019 +0200
Preserve the spirv heads for swiftshader compilation
diff --git a/chromium.spec b/chromium.spec
index 636aaab..bfbc930 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -1286,6 +1286,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/swiftshader/third_party/subzero' \
'third_party/swiftshader/third_party/llvm-subzero' \
'third_party/swiftshader/third_party/llvm-7.0' \
+ 'third_party/swiftshader/third_party/SPIRV-Headers' \
'third_party/tcmalloc' \
'third_party/test_fonts' \
'third_party/usb_ids' \
commit 8ed36c4625d4090e87a85bf5368f82289664d77f
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Sep 13 22:05:31 2019 +0200
Another export and alignas gcc compilation fix
diff --git a/chromium-77.0.3865.75-base-gcc-no-alignas.patch
b/chromium-77.0.3865.75-base-gcc-no-alignas.patch
new file mode 100644
index 0000000..86a2271
--- /dev/null
+++ b/chromium-77.0.3865.75-base-gcc-no-alignas.patch
@@ -0,0 +1,12 @@
+diff -up chromium-77.0.3865.75/base/task/promise/dependent_list.h.base-gcc-no-alignas
chromium-77.0.3865.75/base/task/promise/dependent_list.h
+---
chromium-77.0.3865.75/base/task/promise/dependent_list.h.base-gcc-no-alignas 2019-09-13
21:45:51.873172347 +0200
++++ chromium-77.0.3865.75/base/task/promise/dependent_list.h 2019-09-13
21:46:21.661522514 +0200
+@@ -59,7 +59,7 @@ class BASE_EXPORT DependentList {
+
+ // Align Node on an 8-byte boundary to ensure the first 3 bits are 0 and can
+ // be used to store additional state (see static_asserts below).
+- class BASE_EXPORT alignas(8) Node {
++ class BASE_EXPORT ALIGNAS(8) Node {
+ public:
+ Node();
+ explicit Node(Node&& other) noexcept;
diff --git a/chromium.spec b/chromium.spec
index 008873e..636aaab 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -279,6 +279,8 @@ Patch64: chromium-77.0.3865.75-certificate-transparency.patch
Patch65: chromium-77.0.3865.75-unbundle-zlib.patch
# Needs to be submitted..
Patch66: chromium-77.0.3865.75-gcc-include-memory.patch
+# Needs to be submitted..
+Patch67: chromium-77.0.3865.75-base-gcc-no-alignas.patch
# Apply these changes to work around EPEL7 compiler issues
Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
@@ -846,6 +848,7 @@ udev.
%patch64 -p1 -b .certificate-transparency
%patch65 -p1 -b .unbundle-zlib
%patch66 -p1 -b .gcc-include-memory
+%patch67 -p1 -b .base-gcc-no-alignas
# EPEL specific patches
%if 0%{?rhel} == 7
commit 63945f4efd038b18f3556b766e01ce17012d8ece
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Sep 13 21:48:17 2019 +0200
Remove an unneeded patch that's breaking the build
diff --git a/chromium-77.0.3865.75-fix-v8-gcc.patch
b/chromium-77.0.3865.75-fix-v8-gcc.patch
deleted file mode 100644
index 385778c..0000000
--- a/chromium-77.0.3865.75-fix-v8-gcc.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up chromium-77.0.3865.75/v8/src/objects/js-objects.cc.fix-v8-gcc
chromium-77.0.3865.75/v8/src/objects/js-objects.cc
---- chromium-77.0.3865.75/v8/src/objects/js-objects.cc.fix-v8-gcc 2019-09-12
15:55:18.936238980 +0200
-+++ chromium-77.0.3865.75/v8/src/objects/js-objects.cc 2019-09-12 15:56:06.796645726
+0200
-@@ -3773,6 +3773,10 @@ Handle<NumberDictionary> CreateElementDi
- return new_element_dictionary;
- }
-
-+template void JSObject::ApplyAttributesToDictionary(
-+ Isolate* isolate, ReadOnlyRoots roots, Handle<NumberDictionary> dictionary,
-+ const PropertyAttributes attributes);
-+
- template <PropertyAttributes attrs>
- Maybe<bool> JSObject::PreventExtensionsWithTransition(
- Handle<JSObject> object, ShouldThrow should_throw) {
diff --git a/chromium.spec b/chromium.spec
index 102f14d..008873e 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -266,9 +266,6 @@ Patch41: chromium-75.0.3770.80-SIOCGSTAMP.patch
Patch43: chromium-75.0.3770.80-revert-daff6b.patch
# rename function to avoid conflict with rawhide glibc "gettid()"
Patch45: chromium-75.0.3770.80-grpc-gettid-fix.patch
-# fix v8 compile with gcc
-#
https://chromium.googlesource.com/v8/v8/+/3b8c624bda58d05aea80dd9626cd550...
-Patch46: chromium-77.0.3865.75-fix-v8-gcc.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
@@ -843,7 +840,6 @@ udev.
%patch41 -p1 -b .SIOCGSTAMP
%patch43 -p1 -b .revert-daff6b
%patch45 -p1 -b .gettid-fix
-%patch46 -p1 -b .fix-v8-gcc
%patch61 -p1 -b .gcc-no-alignas-and-export
%patch62 -p1 -b .gcc-remoting-constexpr
%patch63 -p1 -b .vtable-symbol-undefined
commit 1a11ef1abaf843579269cb7f1a60aceb6b50b023
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Sep 13 15:00:03 2019 +0200
Use the bundled harfbuzz-ng for < F31
Needed because of the hb_subset_input_set_retain_gids(), that's only
available in harbuzz 2.4 that's only in F31+
diff --git a/chromium.spec b/chromium.spec
index f8a9800..102f14d 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -137,9 +137,9 @@ BuildRequires: libicu-devel >= 5.4
%global bundlefontconfig 0
%endif
-# Needs at least harfbuzz 2.3.0 now.
-# 2019-03-13
-%if 0%{?fedora} < 30
+# Needs at least harfbuzz 2.4.0 now.
+# 2019-09-13
+%if 0%{?fedora} < 31
%global bundleharfbuzz 1
%else
%global bundleharfbuzz 0
commit d08e680fa760fa174b8940428aafbf62cef21c50
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Sep 13 15:24:09 2019 +0200
Include <memory> to fix the headless build
diff --git a/chromium-77.0.3865.75-gcc-include-memory.patch
b/chromium-77.0.3865.75-gcc-include-memory.patch
new file mode 100644
index 0000000..93b4399
--- /dev/null
+++ b/chromium-77.0.3865.75-gcc-include-memory.patch
@@ -0,0 +1,12 @@
+diff -up
chromium-77.0.3865.75/third_party/one_euro_filter/src/one_euro_filter.h.gcc-include-memory
chromium-77.0.3865.75/third_party/one_euro_filter/src/one_euro_filter.h
+---
chromium-77.0.3865.75/third_party/one_euro_filter/src/one_euro_filter.h.gcc-include-memory 2019-09-13
14:44:24.962770079 +0200
++++ chromium-77.0.3865.75/third_party/one_euro_filter/src/one_euro_filter.h 2019-09-13
14:44:45.347073612 +0200
+@@ -3,6 +3,8 @@
+
+ #include "low_pass_filter.h"
+
++#include <memory>
++
+ namespace one_euro_filter {
+ namespace test {
+ class OneEuroFilterTest;
diff --git a/chromium.spec b/chromium.spec
index 4b20549..f8a9800 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -280,6 +280,8 @@ Patch63: chromium-76.0.3809.100-vtable-symbol-undefined.patch
Patch64: chromium-77.0.3865.75-certificate-transparency.patch
#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
Patch65: chromium-77.0.3865.75-unbundle-zlib.patch
+# Needs to be submitted..
+Patch66: chromium-77.0.3865.75-gcc-include-memory.patch
# Apply these changes to work around EPEL7 compiler issues
Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
@@ -847,6 +849,7 @@ udev.
%patch63 -p1 -b .vtable-symbol-undefined
%patch64 -p1 -b .certificate-transparency
%patch65 -p1 -b .unbundle-zlib
+%patch66 -p1 -b .gcc-include-memory
# EPEL specific patches
%if 0%{?rhel} == 7
commit 5e3b7f3e899c48fbabcf95b19bc275a629a0e871
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Sep 13 15:18:54 2019 +0200
Update the clean-ffmpeg.sh script
diff --git a/clean_ffmpeg.sh b/clean_ffmpeg.sh
index 2f27435..fd226e8 100755
--- a/clean_ffmpeg.sh
+++ b/clean_ffmpeg.sh
@@ -138,6 +138,7 @@ header_files=" libavcodec/x86/inline_asm.h \
libavcodec/vlc.h \
libavcodec/vorbisdsp.h \
libavcodec/vp3data.h \
+ libavcodec/vp4data.h \
libavcodec/vp3dsp.h \
libavcodec/vp56.h \
libavcodec/vp56dsp.h \
diff --git a/sources b/sources
index a1d28bf..b9b0498 100644
--- a/sources
+++ b/sources
@@ -17,4 +17,4 @@ SHA512 (Tinos-Italic.ttf) =
d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0
SHA512 (Tinos-Regular.ttf) =
58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f
SHA512 (Ahem.ttf) =
aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
SHA512 (node-v8.9.1-linux-x64.tar.gz) =
a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
-SHA512 (chromium-77.0.3865.75-clean.tar.xz) =
9531e5d533bf305bd82ae2dbc7bf1a9e081377b61a5611f4bfa14ed389f94d106e26a9981771ed11697ca9c2490eb24c69e992fd907de241698c89a6131db0b6
+SHA512 (chromium-77.0.3865.75-clean.tar.xz) =
ca7a71586a60abeacb70b9d08ba9a28455d875bfa5232070fdff079e52395924b80f05d7627e3a5d5c7a3df606a39a31e05634683a052c9efb634ed536afc092
commit 2cfc18c994143ce77664104024315e6056e4371e
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Sep 13 15:21:43 2019 +0200
Fix the previously rebased patched
diff --git a/chromium-77.0.3865.75-gcc-no-opt-safe-math.patch
b/chromium-77.0.3865.75-gcc-no-opt-safe-math.patch
index d342e2d..920a53e 100644
--- a/chromium-77.0.3865.75-gcc-no-opt-safe-math.patch
+++ b/chromium-77.0.3865.75-gcc-no-opt-safe-math.patch
@@ -1,13 +1,15 @@
diff -up chromium-77.0.3865.75/base/numerics/safe_math_shared_impl.h.nogccoptmath
chromium-77.0.3865.75/base/numerics/safe_math_shared_impl.h
---- chromium-77.0.3865.75/base/numerics/safe_math_shared_impl.h.nogccoptmath 2019-09-12
09:55:13.041038765 +0200
-+++ chromium-77.0.3865.75/base/numerics/safe_math_shared_impl.h 2019-09-12
10:11:14.088101504 +0200
-@@ -24,8 +24,7 @@
+--- chromium-77.0.3865.75/base/numerics/safe_math_shared_impl.h.nogccoptmath 2019-09-13
14:17:22.726738088 +0200
++++ chromium-77.0.3865.75/base/numerics/safe_math_shared_impl.h 2019-09-13
14:31:37.686898493 +0200
+@@ -23,9 +23,8 @@
+ // Where available use builtin math overflow support on Clang and GCC.
#elif !defined(__native_client__) && \
((defined(__clang__) && \
- ((__clang_major__ > 3) || \
+- ((__clang_major__ > 3) || \
- (__clang_major__ == 3 && __clang_minor__ >= 4))) || \
- (defined(__GNUC__) && __GNUC__ >= 5))
-+ (__clang_major__ == 3 && __clang_minor__ >= 4)))
++ (__clang_major__ > 3) || \
++ (__clang_major__ == 3 && __clang_minor__ >= 4)))
#include "base/numerics/safe_math_clang_gcc_impl.h"
#define BASE_HAS_OPTIMIZED_SAFE_MATH (1)
#else
commit 1b0a93bc239d9ee125a0356f974176ef82bafeb3
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Sep 13 15:23:46 2019 +0200
Missing bundled dependency for headless
diff --git a/chromium.spec b/chromium.spec
index cc79386..4b20549 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -1239,6 +1239,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
%endif
'third_party/openscreen' \
'third_party/opus' \
+ 'third_party/one_euro_filter' \
'third_party/ots' \
'third_party/pdfium' \
'third_party/pdfium/third_party/agg23' \
commit 8458f58818dc3548cdaec285bd680ff9c84f9f46
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Sep 13 15:18:03 2019 +0200
Unbundle the zlib
Use the gentoo patch.
diff --git a/chromium-77.0.3865.75-unbundle-zlib.patch
b/chromium-77.0.3865.75-unbundle-zlib.patch
new file mode 100644
index 0000000..d6c45ad
--- /dev/null
+++ b/chromium-77.0.3865.75-unbundle-zlib.patch
@@ -0,0 +1,25 @@
+From e1bbdec720a333937bd1b990ae0f7ee97db0d3b0 Mon Sep 17 00:00:00 2001
+From: Your Name <you(a)example.com>
+Date: Fri, 28 Jun 2019 15:56:23 +0000
+Subject: [PATCH] update zlib
+
+---
+ third_party/perfetto/gn/BUILD.gn | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/third_party/perfetto/gn/BUILD.gn b/third_party/perfetto/gn/BUILD.gn
+index c951f5f..297eee3 100644
+--- a/third_party/perfetto/gn/BUILD.gn
++++ b/third_party/perfetto/gn/BUILD.gn
+@@ -200,7 +200,7 @@ group("zlib") {
+ "//buildtools:zlib",
+ ]
+ } else if (build_with_chromium) {
+- public_configs = [ "//third_party/zlib:zlib_config" ]
++ public_configs = [ "//third_party/zlib:system_zlib" ]
+ public_deps = [
+ "//third_party/zlib",
+ ]
+--
+2.21.0
+
diff --git a/chromium.spec b/chromium.spec
index a2d54e4..cc79386 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -278,6 +278,8 @@ Patch62: chromium-76.0.3809.100-gcc-remoting-constexpr.patch
Patch63: chromium-76.0.3809.100-vtable-symbol-undefined.patch
#
https://chromium.googlesource.com/chromium/src.git/+/3c9720245e440c4b7222...
Patch64: chromium-77.0.3865.75-certificate-transparency.patch
+#
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/...
+Patch65: chromium-77.0.3865.75-unbundle-zlib.patch
# Apply these changes to work around EPEL7 compiler issues
Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
@@ -844,6 +846,7 @@ udev.
%patch62 -p1 -b .gcc-remoting-constexpr
%patch63 -p1 -b .vtable-symbol-undefined
%patch64 -p1 -b .certificate-transparency
+%patch65 -p1 -b .unbundle-zlib
# EPEL specific patches
%if 0%{?rhel} == 7
commit 892e596886b085085ee7b974404746d408db7cda
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Thu Sep 12 17:28:51 2019 +0200
Update to 77.0.3865.75
Rebase and clean the patches.
diff --git a/chromium-61.0.3163.79-gcc-no-opt-safe-math.patch
b/chromium-61.0.3163.79-gcc-no-opt-safe-math.patch
deleted file mode 100644
index 183b5ab..0000000
--- a/chromium-61.0.3163.79-gcc-no-opt-safe-math.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h.fixgcc3
chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h
---- chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h.fixgcc3 2017-09-06
16:30:15.898454585 -0400
-+++ chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h 2017-09-06
16:30:27.570229539 -0400
-@@ -21,8 +21,7 @@
- #if !defined(__native_client__) && \
- ((defined(__clang__) && \
- ((__clang_major__ > 3) || \
-- (__clang_major__ == 3 && __clang_minor__ >= 4))) || \
-- (defined(__GNUC__) && __GNUC__ >= 5))
-+ (__clang_major__ == 3 && __clang_minor__ >= 4))))
- #include "base/numerics/safe_math_clang_gcc_impl.h"
- #define BASE_HAS_OPTIMIZED_SAFE_MATH (1)
- #else
diff --git a/chromium-68.0.3440.106-boolfix.patch b/chromium-68.0.3440.106-boolfix.patch
deleted file mode 100644
index ed22aa9..0000000
--- a/chromium-68.0.3440.106-boolfix.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-diff -up
chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_ptr_info.h.boolfix
chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_ptr_info.h
----
chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_ptr_info.h.boolfix 2018-08-09
03:21:23.066802340 -0400
-+++
chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_ptr_info.h 2018-08-09
03:25:10.638595925 -0400
-@@ -45,7 +45,7 @@ class AssociatedInterfacePtrInfo {
-
- bool is_valid() const { return handle_.is_valid(); }
-
-- explicit operator bool() const { return handle_.is_valid(); }
-+ explicit operator bool() const { return (bool) handle_.is_valid(); }
-
- ScopedInterfaceEndpointHandle PassHandle() {
- return std::move(handle_);
-diff -up
chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_request.h.boolfix
chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_request.h
----
chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_request.h.boolfix 2018-08-09
03:21:23.067802318 -0400
-+++
chromium-68.0.3440.106/mojo/public/cpp/bindings/associated_interface_request.h 2018-08-09
03:24:44.935229067 -0400
-@@ -50,7 +50,7 @@ class AssociatedInterfaceRequest {
- // handle.
- bool is_pending() const { return handle_.is_valid(); }
-
-- explicit operator bool() const { return handle_.is_valid(); }
-+ explicit operator bool() const { return (bool) handle_.is_valid(); }
-
- ScopedInterfaceEndpointHandle PassHandle() { return std::move(handle_); }
-
-diff -up chromium-68.0.3440.106/mojo/public/cpp/bindings/interface_request.h.boolfix
chromium-68.0.3440.106/mojo/public/cpp/bindings/interface_request.h
----
chromium-68.0.3440.106/mojo/public/cpp/bindings/interface_request.h.boolfix 2018-08-08
15:11:05.000000000 -0400
-+++ chromium-68.0.3440.106/mojo/public/cpp/bindings/interface_request.h 2018-08-09
03:21:23.067802318 -0400
-@@ -54,7 +54,7 @@ class InterfaceRequest {
- // Indicates whether the request currently contains a valid message pipe.
- bool is_pending() const { return handle_.is_valid(); }
-
-- explicit operator bool() const { return handle_.is_valid(); }
-+ explicit operator bool() const { return (bool) handle_.is_valid(); }
-
- // Removes the message pipe from the request and returns it.
- ScopedMessagePipeHandle PassMessagePipe() { return std::move(handle_); }
diff --git a/chromium-72.0.3626.121-fedora-user-agent.patch
b/chromium-72.0.3626.121-fedora-user-agent.patch
deleted file mode 100644
index 5cef6f0..0000000
--- a/chromium-72.0.3626.121-fedora-user-agent.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up chromium-72.0.3626.121/content/common/user_agent.cc.fedora-user-agent
chromium-72.0.3626.121/content/common/user_agent.cc
---- chromium-72.0.3626.121/content/common/user_agent.cc.fedora-user-agent 2019-03-10
14:21:02.877454982 -0400
-+++ chromium-72.0.3626.121/content/common/user_agent.cc 2019-03-10 14:22:05.728812272
-0400
-@@ -36,7 +36,7 @@ std::string GetUserAgentPlatform() {
- #elif defined(OS_MACOSX)
- "Macintosh; ";
- #elif defined(USE_X11) || defined(USE_OZONE)
-- "X11; "; // strange, but that's what Firefox uses
-+ "X11; Fedora; "; // strange, but that's what Firefox uses
- #elif defined(OS_ANDROID)
- "Linux; ";
- #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
diff --git a/chromium-72.0.3626.121-gcc5-r3.patch b/chromium-72.0.3626.121-gcc5-r3.patch
deleted file mode 100644
index f4cf40b..0000000
--- a/chromium-72.0.3626.121-gcc5-r3.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-diff -up chromium-72.0.3626.121/gpu/ipc/common/mailbox_struct_traits.h.gcc5-r3
chromium-72.0.3626.121/gpu/ipc/common/mailbox_struct_traits.h
---- chromium-72.0.3626.121/gpu/ipc/common/mailbox_struct_traits.h.gcc5-r3 2019-03-01
23:10:21.000000000 -0500
-+++ chromium-72.0.3626.121/gpu/ipc/common/mailbox_struct_traits.h 2019-03-10
14:07:48.300244125 -0400
-@@ -15,7 +15,7 @@ namespace mojo {
- template <>
- struct StructTraits<gpu::mojom::MailboxDataView, gpu::Mailbox> {
- static base::span<const int8_t> name(const gpu::Mailbox& mailbox) {
-- return mailbox.name;
-+ return base::make_span(mailbox.name);
- }
- static bool Read(gpu::mojom::MailboxDataView data, gpu::Mailbox* out);
- };
-diff -up
chromium-72.0.3626.121/services/viz/public/cpp/compositing/quads_struct_traits.h.gcc5-r3
chromium-72.0.3626.121/services/viz/public/cpp/compositing/quads_struct_traits.h
----
chromium-72.0.3626.121/services/viz/public/cpp/compositing/quads_struct_traits.h.gcc5-r3 2019-03-01
23:10:31.000000000 -0500
-+++
chromium-72.0.3626.121/services/viz/public/cpp/compositing/quads_struct_traits.h 2019-03-10
14:07:48.303244046 -0400
-@@ -340,7 +340,7 @@ struct StructTraits<viz::mojom::TextureQ
- static base::span<const float> vertex_opacity(const viz::DrawQuad& input) {
- const viz::TextureDrawQuad* quad =
- viz::TextureDrawQuad::MaterialCast(&input);
-- return quad->vertex_opacity;
-+ return base::make_span(quad->vertex_opacity);
- }
-
- static bool y_flipped(const viz::DrawQuad& input) {
-diff -up
chromium-72.0.3626.121/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc.gcc5-r3
chromium-72.0.3626.121/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc
----
chromium-72.0.3626.121/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc.gcc5-r3 2019-03-10
14:07:48.307243941 -0400
-+++
chromium-72.0.3626.121/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc 2019-03-10
14:09:16.565920044 -0400
-@@ -10,7 +10,7 @@
-
- #include "modules/audio_processing/aec3/aec_state.h"
-
--#include <math.h>
-+#include <cmath>
- #include <algorithm>
- #include <numeric>
- #include <vector>
diff --git a/chromium-75.0.3770.100-fix-v8-gcc.patch
b/chromium-75.0.3770.100-fix-v8-gcc.patch
deleted file mode 100644
index 4a1a4b0..0000000
--- a/chromium-75.0.3770.100-fix-v8-gcc.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up chromium-75.0.3770.100/v8/src/objects/js-objects.cc.fix-v8-gcc
chromium-75.0.3770.100/v8/src/objects/js-objects.cc
---- chromium-75.0.3770.100/v8/src/objects/js-objects.cc.fix-v8-gcc 2019-06-25
10:55:08.132254304 -0400
-+++ chromium-75.0.3770.100/v8/src/objects/js-objects.cc 2019-06-25 10:55:23.147933648
-0400
-@@ -3792,6 +3792,10 @@ void JSObject::ApplyAttributesToDictiona
- }
- }
-
-+template void JSObject::ApplyAttributesToDictionary(
-+ Isolate* isolate, ReadOnlyRoots roots, Handle<NumberDictionary> dictionary,
-+ const PropertyAttributes attributes);
-+
- template <PropertyAttributes attrs>
- Maybe<bool> JSObject::PreventExtensionsWithTransition(
- Handle<JSObject> object, ShouldThrow should_throw) {
diff --git a/chromium-75.0.3770.80-no-zlib-mangle.patch
b/chromium-75.0.3770.80-no-zlib-mangle.patch
deleted file mode 100644
index 998be67..0000000
--- a/chromium-75.0.3770.80-no-zlib-mangle.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up chromium-75.0.3770.80/third_party/zlib/zconf.h.nozmangle
chromium-75.0.3770.80/third_party/zlib/zconf.h
---- chromium-75.0.3770.80/third_party/zlib/zconf.h.nozmangle 2019-06-05
11:12:30.420412467 -0400
-+++ chromium-75.0.3770.80/third_party/zlib/zconf.h 2019-06-05 11:17:43.512683058 -0400
-@@ -8,10 +8,6 @@
- #ifndef ZCONF_H
- #define ZCONF_H
-
--/* This include does prefixing as below, but with an updated set of names. Also
-- * sets up export macros in component builds. */
--#include "chromeconf.h"
--
- /*
- * If you *really* need a unique prefix for all types and library functions,
- * compile with -DZ_PREFIX. The "standard" zlib should be compiled without
it.
diff --git a/chromium-75.0.3770.80-pure-virtual-crash-fix.patch
b/chromium-75.0.3770.80-pure-virtual-crash-fix.patch
deleted file mode 100644
index 06c909f..0000000
--- a/chromium-75.0.3770.80-pure-virtual-crash-fix.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -up
chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc.pure-virtual-fix
chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc
----
chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc.pure-virtual-fix 2019-06-07
15:03:43.302202979 -0400
-+++
chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.cc 2019-06-07
15:04:25.140393048 -0400
-@@ -116,4 +116,9 @@ void RenderProcessUserData::RenderProces
- base::Unretained(process_node_.get()), info.exit_code));
- }
-
-+void RenderProcessUserData::RenderProcessHostDestroyed(
-+ content::RenderProcessHost* host) {
-+ host->RemoveUserData(kRenderProcessUserDataKey);
-+}
-+
- } // namespace performance_manager
-diff -up
chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h.pure-virtual-fix
chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h
----
chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h.pure-virtual-fix 2019-06-07
15:04:43.530039597 -0400
-+++
chromium-75.0.3770.80/chrome/browser/performance_manager/render_process_user_data.h 2019-06-07
15:05:13.770458374 -0400
-@@ -47,6 +47,7 @@ class RenderProcessUserData : public bas
- void RenderProcessExited(
- content::RenderProcessHost* host,
- const content::ChildProcessTerminationInfo& info) override;
-+ void RenderProcessHostDestroyed(content::RenderProcessHost* host) override;
-
- // All instances are linked together in a doubly linked list to allow orderly
- // destruction at browser shutdown time.
diff --git a/chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch
b/chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch
deleted file mode 100644
index 5f45a8f..0000000
--- a/chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-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
deleted file mode 100644
index e4d754a..0000000
--- a/chromium-76.0.3809.100-gcc-cc-no-except.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-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
deleted file mode 100644
index 0dbffd5..0000000
--- a/chromium-76.0.3809.100-gcc-feature-policy-parser.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-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
deleted file mode 100644
index 26bba05..0000000
--- a/chromium-76.0.3809.100-gcc-hasfraction-constexpr.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-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
deleted file mode 100644
index 2876de4..0000000
--- a/chromium-76.0.3809.100-gcc-history-move-noexcept.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-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
deleted file mode 100644
index 3bf394f..0000000
--- a/chromium-76.0.3809.100-gcc-initialization-order.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-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
deleted file mode 100644
index 1d4b90f..0000000
--- a/chromium-76.0.3809.100-gcc-move-explicit-initialization.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-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
deleted file mode 100644
index bc0ed98..0000000
--- a/chromium-76.0.3809.100-gcc-net-fetcher.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-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-themeservice-includes.patch
b/chromium-76.0.3809.100-gcc-themeservice-includes.patch
deleted file mode 100644
index ad40bb9..0000000
--- a/chromium-76.0.3809.100-gcc-themeservice-includes.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-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
deleted file mode 100644
index cf93bce..0000000
--- a/chromium-76.0.3809.100-gcc-vulkan.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-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-quiche-compile-fix.patch
b/chromium-76.0.3809.100-quiche-compile-fix.patch
deleted file mode 100644
index 98789d9..0000000
--- a/chromium-76.0.3809.100-quiche-compile-fix.patch
+++ /dev/null
@@ -1,225 +0,0 @@
-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
deleted file mode 100644
index 5e392e6..0000000
--- a/chromium-76.0.3809.100-throttling-dead-beef.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-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-weak-ptr-no-except.patch
b/chromium-76.0.3809.100-weak-ptr-no-except.patch
deleted file mode 100644
index a392971..0000000
--- a/chromium-76.0.3809.100-weak-ptr-no-except.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-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
deleted file mode 100644
index 8bfbced..0000000
--- a/chromium-76.0.3809.132-certificate-transparency.patch
+++ /dev/null
@@ -1,539 +0,0 @@
-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
deleted file mode 100644
index 73db4d4..0000000
--- a/chromium-76.0.3809.132-gcc-ambigous-instantiation.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-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-77.0.3865.75-boolfix.patch b/chromium-77.0.3865.75-boolfix.patch
new file mode 100644
index 0000000..c836214
--- /dev/null
+++ b/chromium-77.0.3865.75-boolfix.patch
@@ -0,0 +1,24 @@
+diff -up
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_ptr_info.h.boolfix
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_ptr_info.h
+---
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_ptr_info.h.boolfix 2019-09-09
23:55:20.000000000 +0200
++++
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_ptr_info.h 2019-09-12
15:43:30.025360946 +0200
+@@ -45,7 +45,7 @@ class AssociatedInterfacePtrInfo {
+
+ bool is_valid() const { return handle_.is_valid(); }
+
+- explicit operator bool() const { return handle_.is_valid(); }
++ explicit operator bool() const { return (bool) handle_.is_valid(); }
+
+ ScopedInterfaceEndpointHandle PassHandle() {
+ return std::move(handle_);
+diff -up
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_request.h.boolfix
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_request.h
+---
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_request.h.boolfix 2019-09-09
23:55:20.000000000 +0200
++++
chromium-77.0.3865.75/mojo/public/cpp/bindings/associated_interface_request.h 2019-09-12
15:43:30.025360946 +0200
+@@ -51,7 +51,7 @@ class AssociatedInterfaceRequest {
+ // handle.
+ bool is_pending() const { return handle_.is_valid(); }
+
+- explicit operator bool() const { return handle_.is_valid(); }
++ explicit operator bool() const { return (bool) handle_.is_valid(); }
+
+ ScopedInterfaceEndpointHandle PassHandle() { return std::move(handle_); }
+
diff --git a/chromium-77.0.3865.75-certificate-transparency.patch
b/chromium-77.0.3865.75-certificate-transparency.patch
new file mode 100644
index 0000000..82e2958
--- /dev/null
+++ b/chromium-77.0.3865.75-certificate-transparency.patch
@@ -0,0 +1,539 @@
+diff -up
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc
+---
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc.certificate-transparency 2019-09-12
16:09:52.818635106 +0200
++++
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager_browsertest.cc 2019-09-12
16:11:07.662562005 +0200
+@@ -21,6 +21,7 @@
+ #include "components/version_info/version_info.h"
+ #include "content/public/common/content_switches.h"
+ #include "content/public/common/user_agent.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"
+@@ -356,3 +357,55 @@ IN_PROC_BROWSER_TEST_P(SystemNetworkCont
+ INSTANTIATE_TEST_SUITE_P(,
+ SystemNetworkContextManagerFreezeQUICUaBrowsertest,
+ ::testing::Values(true, false));
++
++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-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc
+---
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc.certificate-transparency 2019-09-09
23:55:09.000000000 +0200
++++ chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.cc 2019-09-12
16:09:52.819635118 +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"
+@@ -50,6 +52,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"
+@@ -79,6 +82,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;
+
+@@ -658,14 +675,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 =
+@@ -723,6 +761,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-77.0.3865.75/chrome/browser/net/system_network_context_manager.h.certificate-transparency
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.h
+---
chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.h.certificate-transparency 2019-09-09
23:55:09.000000000 +0200
++++ chromium-77.0.3865.75/chrome/browser/net/system_network_context_manager.h 2019-09-12
16:09:52.819635118 +0200
+@@ -139,6 +139,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-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc
+---
chromium-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
++++ chromium-77.0.3865.75/chrome/browser/policy/policy_browsertest.cc 2019-09-12
16:09:52.820635131 +0200
+@@ -4836,7 +4836,7 @@ IN_PROC_BROWSER_TEST_F(PolicyTest,
+ 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-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc
+---
chromium-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
++++
chromium-77.0.3865.75/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc 2019-09-12
16:09:52.821635143 +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-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
+---
chromium-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
++++
chromium-77.0.3865.75/chrome/browser/ssl/security_state_tab_helper_browsertest.cc 2019-09-12
16:09:52.821635143 +0200
+@@ -433,6 +433,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-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc.certificate-transparency
chromium-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc
+---
chromium-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc.certificate-transparency 2019-09-09
23:55:10.000000000 +0200
++++ chromium-77.0.3865.75/chrome/browser/ssl/ssl_browsertest.cc 2019-09-12
16:09:52.822635155 +0200
+@@ -1853,8 +1853,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-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h.certificate-transparency
chromium-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h
+---
chromium-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h.certificate-transparency 2019-09-09
23:55:14.000000000 +0200
++++
chromium-77.0.3865.75/components/certificate_transparency/chrome_ct_policy_enforcer.h 2019-09-12
16:09:52.823635168 +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-77.0.3865.75/services/network/network_context.cc.certificate-transparency
chromium-77.0.3865.75/services/network/network_context.cc
+---
chromium-77.0.3865.75/services/network/network_context.cc.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
++++ chromium-77.0.3865.75/services/network/network_context.cc 2019-09-12
16:09:52.823635168 +0200
+@@ -36,6 +36,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"
+@@ -1877,16 +1878,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())
+@@ -1936,8 +1927,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) {
+@@ -1950,6 +1953,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-77.0.3865.75/services/network/network_context_unittest.cc.certificate-transparency
chromium-77.0.3865.75/services/network/network_context_unittest.cc
+---
chromium-77.0.3865.75/services/network/network_context_unittest.cc.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
++++ chromium-77.0.3865.75/services/network/network_context_unittest.cc 2019-09-12
16:13:10.479056669 +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/remote.h"
+ #include "mojo/public/cpp/bindings/self_owned_receiver.h"
+ #include "mojo/public/cpp/system/data_pipe_utils.h"
+@@ -115,6 +118,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(DISABLE_FTP_SUPPORT)
+ #include "net/ftp/ftp_auth_cache.h"
+ #endif // !BUILDFLAG(DISABLE_FTP_SUPPORT)
+@@ -5958,6 +5966,72 @@ TEST_F(NetworkContextSplitCacheTest,
+ true /* was_cached */, true /* is_navigation */);
+ }
+
++#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-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom.certificate-transparency
chromium-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom
+---
chromium-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
++++ chromium-77.0.3865.75/services/network/public/mojom/ct_log_info.mojom 2019-09-12
16:09:52.824635180 +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-77.0.3865.75/services/network/public/mojom/network_context.mojom.certificate-transparency
chromium-77.0.3865.75/services/network/public/mojom/network_context.mojom
+---
chromium-77.0.3865.75/services/network/public/mojom/network_context.mojom.certificate-transparency 2019-09-09
23:55:22.000000000 +0200
++++ chromium-77.0.3865.75/services/network/public/mojom/network_context.mojom 2019-09-12
16:09:52.825635192 +0200
+@@ -239,15 +239,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;
+
+@@ -300,6 +291,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]
+@@ -311,6 +311,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-77.0.3865.75-fedora-user-agent.patch
b/chromium-77.0.3865.75-fedora-user-agent.patch
new file mode 100644
index 0000000..8f6de51
--- /dev/null
+++ b/chromium-77.0.3865.75-fedora-user-agent.patch
@@ -0,0 +1,12 @@
+diff -up chromium-77.0.3865.75/content/common/user_agent.cc.fedora-user-agent
chromium-77.0.3865.75/content/common/user_agent.cc
+--- chromium-77.0.3865.75/content/common/user_agent.cc.fedora-user-agent 2019-09-12
15:49:11.902270729 +0200
++++ chromium-77.0.3865.75/content/common/user_agent.cc 2019-09-12 15:50:11.555732044
+0200
+@@ -35,7 +35,7 @@ std::string GetUserAgentPlatform() {
+ #elif defined(OS_MACOSX)
+ return "Macintosh; ";
+ #elif defined(USE_X11) || defined(USE_OZONE)
+- return "X11; "; // strange, but that's what Firefox uses
++ return "X11; Fedora; "; // strange, but that's what Firefox uses
+ #elif defined(OS_ANDROID)
+ return "Linux; ";
+ #elif defined(OS_POSIX)
diff --git a/chromium-77.0.3865.75-fix-v8-gcc.patch
b/chromium-77.0.3865.75-fix-v8-gcc.patch
new file mode 100644
index 0000000..385778c
--- /dev/null
+++ b/chromium-77.0.3865.75-fix-v8-gcc.patch
@@ -0,0 +1,14 @@
+diff -up chromium-77.0.3865.75/v8/src/objects/js-objects.cc.fix-v8-gcc
chromium-77.0.3865.75/v8/src/objects/js-objects.cc
+--- chromium-77.0.3865.75/v8/src/objects/js-objects.cc.fix-v8-gcc 2019-09-12
15:55:18.936238980 +0200
++++ chromium-77.0.3865.75/v8/src/objects/js-objects.cc 2019-09-12 15:56:06.796645726
+0200
+@@ -3773,6 +3773,10 @@ Handle<NumberDictionary> CreateElementDi
+ return new_element_dictionary;
+ }
+
++template void JSObject::ApplyAttributesToDictionary(
++ Isolate* isolate, ReadOnlyRoots roots, Handle<NumberDictionary> dictionary,
++ const PropertyAttributes attributes);
++
+ template <PropertyAttributes attrs>
+ Maybe<bool> JSObject::PreventExtensionsWithTransition(
+ Handle<JSObject> object, ShouldThrow should_throw) {
diff --git a/chromium-77.0.3865.75-gcc-no-opt-safe-math.patch
b/chromium-77.0.3865.75-gcc-no-opt-safe-math.patch
new file mode 100644
index 0000000..d342e2d
--- /dev/null
+++ b/chromium-77.0.3865.75-gcc-no-opt-safe-math.patch
@@ -0,0 +1,13 @@
+diff -up chromium-77.0.3865.75/base/numerics/safe_math_shared_impl.h.nogccoptmath
chromium-77.0.3865.75/base/numerics/safe_math_shared_impl.h
+--- chromium-77.0.3865.75/base/numerics/safe_math_shared_impl.h.nogccoptmath 2019-09-12
09:55:13.041038765 +0200
++++ chromium-77.0.3865.75/base/numerics/safe_math_shared_impl.h 2019-09-12
10:11:14.088101504 +0200
+@@ -24,8 +24,7 @@
+ #elif !defined(__native_client__) && \
+ ((defined(__clang__) && \
+ ((__clang_major__ > 3) || \
+- (__clang_major__ == 3 && __clang_minor__ >= 4))) || \
+- (defined(__GNUC__) && __GNUC__ >= 5))
++ (__clang_major__ == 3 && __clang_minor__ >= 4)))
+ #include "base/numerics/safe_math_clang_gcc_impl.h"
+ #define BASE_HAS_OPTIMIZED_SAFE_MATH (1)
+ #else
diff --git a/chromium-77.0.3865.75-gcc5-r3.patch b/chromium-77.0.3865.75-gcc5-r3.patch
new file mode 100644
index 0000000..34b858a
--- /dev/null
+++ b/chromium-77.0.3865.75-gcc5-r3.patch
@@ -0,0 +1,36 @@
+diff -up chromium-77.0.3865.75/gpu/ipc/common/mailbox_struct_traits.h.gcc5-r3
chromium-77.0.3865.75/gpu/ipc/common/mailbox_struct_traits.h
+--- chromium-77.0.3865.75/gpu/ipc/common/mailbox_struct_traits.h.gcc5-r3 2019-09-09
23:55:18.000000000 +0200
++++ chromium-77.0.3865.75/gpu/ipc/common/mailbox_struct_traits.h 2019-09-12
10:13:16.710206500 +0200
+@@ -15,7 +15,7 @@ namespace mojo {
+ template <>
+ struct StructTraits<gpu::mojom::MailboxDataView, gpu::Mailbox> {
+ static base::span<const int8_t> name(const gpu::Mailbox& mailbox) {
+- return mailbox.name;
++ return base::make_span(mailbox.name);
+ }
+ static bool Read(gpu::mojom::MailboxDataView data, gpu::Mailbox* out);
+ };
+diff -up
chromium-77.0.3865.75/services/viz/public/cpp/compositing/quads_struct_traits.h.gcc5-r3
chromium-77.0.3865.75/services/viz/public/cpp/compositing/quads_struct_traits.h
+---
chromium-77.0.3865.75/services/viz/public/cpp/compositing/quads_struct_traits.h.gcc5-r3 2019-09-09
23:55:23.000000000 +0200
++++
chromium-77.0.3865.75/services/viz/public/cpp/compositing/quads_struct_traits.h 2019-09-12
10:13:16.710206500 +0200
+@@ -391,7 +391,7 @@ struct StructTraits<viz::mojom::TextureQ
+ static base::span<const float> vertex_opacity(const viz::DrawQuad& input) {
+ const viz::TextureDrawQuad* quad =
+ viz::TextureDrawQuad::MaterialCast(&input);
+- return quad->vertex_opacity;
++ return base::make_span(quad->vertex_opacity);
+ }
+
+ static bool y_flipped(const viz::DrawQuad& input) {
+diff -up
chromium-77.0.3865.75/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc.gcc5-r3
chromium-77.0.3865.75/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc
+---
chromium-77.0.3865.75/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc.gcc5-r3 2019-09-12
10:13:16.711206509 +0200
++++
chromium-77.0.3865.75/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc 2019-09-12
15:41:15.300158849 +0200
+@@ -10,7 +10,7 @@
+
+ #include "modules/audio_processing/aec3/aec_state.h"
+
+-#include <math.h>
++#include <cmath>
+
+ #include <algorithm>
+ #include <numeric>
diff --git a/chromium-77.0.3865.75-no-zlib-mangle.patch
b/chromium-77.0.3865.75-no-zlib-mangle.patch
new file mode 100644
index 0000000..c32d226
--- /dev/null
+++ b/chromium-77.0.3865.75-no-zlib-mangle.patch
@@ -0,0 +1,22 @@
+diff -up chromium-77.0.3865.75/third_party/zlib/zconf.h.nozmangle
chromium-77.0.3865.75/third_party/zlib/zconf.h
+--- chromium-77.0.3865.75/third_party/zlib/zconf.h.nozmangle 2019-09-12
09:36:37.924086850 +0200
++++ chromium-77.0.3865.75/third_party/zlib/zconf.h 2019-09-12 09:53:01.623958551 +0200
+@@ -9,18 +9,6 @@
+ #define ZCONF_H
+
+ /*
+- * This library is also built as a part of AOSP, which does not need to include
+- * chromeconf.h. This config does not want chromeconf.h, so it can set this
+- * macro to opt out. While this works today, there's no guarantee that building
+- * zlib outside of Chromium keeps working in the future.
+- */
+-#if !defined(CHROMIUM_ZLIB_NO_CHROMECONF)
+-/* This include does prefixing as below, but with an updated set of names. Also
+- * sets up export macros in component builds. */
+-#include "chromeconf.h"
+-#endif
+-
+-/*
+ * If you *really* need a unique prefix for all types and library functions,
+ * compile with -DZ_PREFIX. The "standard" zlib should be compiled without
it.
+ * Even better than compiling with -DZ_PREFIX would be to use configure to set
diff --git a/chromium.spec b/chromium.spec
index 1471b94..a2d54e4 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -168,14 +168,14 @@ BuildRequires: libicu-devel >= 5.4
%global chromoting_client_id %nil
%endif
-%global majorversion 76
+%global majorversion 77
%if %{freeworld}
Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
%else
Name: chromium%{chromium_channel}
%endif
-Version: %{majorversion}.0.3809.132
+Version: %{majorversion}.0.3865.75
Release: 2%{?dist}
Summary: A WebKit (Blink) powered web browser
Url:
http://www.chromium.org/Home
@@ -215,20 +215,20 @@ Patch16: chromium-60.0.3112.78-no-libpng-prefix.patch
# Do not mangle libjpeg
Patch17: chromium-60.0.3112.78-jpeg-nomangle.patch
# Do not mangle zlib
-Patch18: chromium-75.0.3770.80-no-zlib-mangle.patch
+Patch18: chromium-77.0.3865.75-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.
Patch19: chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch
# from gentoo
-Patch20: chromium-61.0.3163.79-gcc-no-opt-safe-math.patch
+Patch20: chromium-77.0.3865.75-gcc-no-opt-safe-math.patch
# From gentoo
-Patch21: chromium-72.0.3626.121-gcc5-r3.patch
+Patch21: chromium-77.0.3865.75-gcc5-r3.patch
# To use round with gcc, you need to #include <cmath>
Patch22: chromium-65.0.3325.146-gcc-round-fix.patch
# Include proper headers to invoke memcpy()
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
-Patch24: chromium-68.0.3440.106-boolfix.patch
+Patch24: chromium-77.0.3865.75-boolfix.patch
# From Debian
Patch25: chromium-71.0.3578.98-skia-aarch64-buildfix.patch
# Do not use unrar code, it is non-free
@@ -236,7 +236,7 @@ Patch27: chromium-73.0.3683.75-norar.patch
# Upstream GCC fixes
Patch28: chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch
# Add "Fedora" to the user agent string
-Patch29: chromium-72.0.3626.121-fedora-user-agent.patch
+Patch29: chromium-77.0.3865.75-fedora-user-agent.patch
# Try to fix version.py for Rawhide
Patch30: chromium-71.0.3578.98-py2-bootstrap.patch
# Fix default on redeclaration error
@@ -264,43 +264,11 @@ 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.
Patch43: chromium-75.0.3770.80-revert-daff6b.patch
-# Avoid pure virtual crash destroying RenderProcessUserData
-#
https://chromium.googlesource.com/chromium/src/+/cdf306db81efaaaa95448758...
-Patch44: chromium-75.0.3770.80-pure-virtual-crash-fix.patch
# rename function to avoid conflict with rawhide glibc "gettid()"
Patch45: chromium-75.0.3770.80-grpc-gettid-fix.patch
# fix v8 compile with gcc
#
https://chromium.googlesource.com/v8/v8/+/3b8c624bda58d05aea80dd9626cd550...
-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
+Patch46: chromium-77.0.3865.75-fix-v8-gcc.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
@@ -309,7 +277,7 @@ 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
+Patch64: chromium-77.0.3865.75-certificate-transparency.patch
# Apply these changes to work around EPEL7 compiler issues
Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
@@ -855,7 +823,7 @@ udev.
%patch22 -p1 -b .gcc-round-fix
%patch23 -p1 -b .memcpyfix
%patch24 -p1 -b .boolfix
-%patch25 -p1 -b .aarch64fix
+#%patch25 -p1 -b .aarch64fix
%patch27 -p1 -b .nounrar
%patch28 -p1 -b .gcc-cpolicyprovider
%patch29 -p1 -b .fedora-user-agent
@@ -870,23 +838,8 @@ udev.
%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
@@ -1477,6 +1430,7 @@ sed -i.orig -e
's/getenv("CHROME_VERSION_EXTRA")/"Fedora Project"/' $FILE
. /opt/rh/devtoolset-%{dts_version}/enable
%endif
+echo
# Now do the full browser
%if 0%{freeworld}
../depot_tools/ninja -C %{target} -vvv media
diff --git a/sources b/sources
index 2d38a7c..a1d28bf 100644
--- a/sources
+++ b/sources
@@ -17,4 +17,4 @@ SHA512 (Tinos-Italic.ttf) =
d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0
SHA512 (Tinos-Regular.ttf) =
58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f
SHA512 (Ahem.ttf) =
aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
SHA512 (node-v8.9.1-linux-x64.tar.gz) =
a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
-SHA512 (chromium-76.0.3809.132-clean.tar.xz) =
fbc5f989945adfaffb9fb5199ccb988accdc53f41a03bba9c4ab3df8585b9267b1f34cd7a6ac487eff34ebb6e65865e32ceea4ad945eec30f871d8eed41f3e6f
+SHA512 (chromium-77.0.3865.75-clean.tar.xz) =
9531e5d533bf305bd82ae2dbc7bf1a9e081377b61a5611f4bfa14ed389f94d106e26a9981771ed11697ca9c2490eb24c69e992fd907de241698c89a6131db0b6
commit a0c0e33b0a2dc8f2eeba8711bd86c7c6eacfa943
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Sep 10 16:58:00 2019 -0400
take two
diff --git a/chromium-76.0.3809.132-chromedriver-zlib-fix.patch
b/chromium-76.0.3809.132-chromedriver-zlib-fix.patch
index 7ab46d8..f8b44d0 100644
--- a/chromium-76.0.3809.132-chromedriver-zlib-fix.patch
+++ b/chromium-76.0.3809.132-chromedriver-zlib-fix.patch
@@ -1,11 +1,11 @@
diff -up chromium-76.0.3809.132/chrome/test/chromedriver/BUILD.gn.fixme
chromium-76.0.3809.132/chrome/test/chromedriver/BUILD.gn
--- chromium-76.0.3809.132/chrome/test/chromedriver/BUILD.gn.fixme 2019-09-10
15:53:02.871463568 -0400
-+++ chromium-76.0.3809.132/chrome/test/chromedriver/BUILD.gn 2019-09-10
15:53:33.057824836 -0400
-@@ -197,6 +197,7 @@ source_set("automation_client_lib") {
- "//services/network/public/cpp",
++++ chromium-76.0.3809.132/chrome/test/chromedriver/BUILD.gn 2019-09-10
16:57:32.281112323 -0400
+@@ -319,6 +319,7 @@ executable("chromedriver") {
+ "//net/server:http_server",
+ "//net/traffic_annotation:test_support",
"//services/network/public/mojom",
- "//third_party/blink/public:buildflags",
+ "//third_party/zlib",
- "//third_party/zlib:minizip",
- "//third_party/zlib/google:zip",
- "//ui/accessibility:ax_enums_mojo",
+ ]
+ }
+
commit 7f0ec73cb7f97bea9a276d1e9d33c40557338c1a
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Sep 10 15:55:16 2019 -0400
trying this
diff --git a/chromium-76.0.3809.132-chromedriver-zlib-fix.patch
b/chromium-76.0.3809.132-chromedriver-zlib-fix.patch
new file mode 100644
index 0000000..7ab46d8
--- /dev/null
+++ b/chromium-76.0.3809.132-chromedriver-zlib-fix.patch
@@ -0,0 +1,11 @@
+diff -up chromium-76.0.3809.132/chrome/test/chromedriver/BUILD.gn.fixme
chromium-76.0.3809.132/chrome/test/chromedriver/BUILD.gn
+--- chromium-76.0.3809.132/chrome/test/chromedriver/BUILD.gn.fixme 2019-09-10
15:53:02.871463568 -0400
++++ chromium-76.0.3809.132/chrome/test/chromedriver/BUILD.gn 2019-09-10
15:53:33.057824836 -0400
+@@ -197,6 +197,7 @@ source_set("automation_client_lib") {
+ "//services/network/public/cpp",
+ "//services/network/public/mojom",
+ "//third_party/blink/public:buildflags",
++ "//third_party/zlib",
+ "//third_party/zlib:minizip",
+ "//third_party/zlib/google:zip",
+ "//ui/accessibility:ax_enums_mojo",
diff --git a/chromium.spec b/chromium.spec
index fd6a3ea..81982e2 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -316,8 +316,9 @@ 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
-# Apply this patches to work around EPEL8 issues
+# Apply these patches to work around EPEL8 issues
Patch300: chromium-76.0.3809.132-rhel8-force-disable-use_gnome_keyring.patch
+Patch301: chromium-76.0.3809.132-chromedriver-zlib-fix.patch
# Use chromium-latest.py to generate clean tarball from released build tarballs, found
here:
#
http://build.chromium.org/buildbot/official/
@@ -896,6 +897,10 @@ udev.
%patch300 -p1 -b .disblegnomekeyring
%endif
+%if %{bundleminizip}
+%patch301 -p1 -b .chromedriver-zlib
+%endif
+
# Change shebang in all relevant files in this directory and all subdirectories
# See `man find` for how the `-exec command {} +` syntax works
find -type f -exec sed -iE '1s=^#! */usr/bin/\(python\|env
python\)[23]\?=#!%{__python2}=' {} +
commit f53529c22595c5f8492df88b4f8b39875a168321
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Sep 10 13:28:28 2019 -0400
re-enable zlib mangling in bundleminizip conditional case
diff --git a/chromium.spec b/chromium.spec
index 5b07016..fd6a3ea 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -823,7 +823,11 @@ udev.
%patch15 -p1 -b .system-clang
%patch16 -p1 -b .noprefix
%patch17 -p1 -b .nomangle
+%if %{bundleminizip}
+# Leave zlib mangling in place
+%else
%patch18 -p1 -b .nozmangle
+%endif
%patch19 -p1 -b .pathfix
%patch20 -p1 -b .nogccoptmath
%patch21 -p1 -b .gcc5-r3
commit 71ab9fa61df4d55acdef90769e8f9238c38cbce7
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Mon Sep 9 07:54:13 2019 -0400
use bundled zlib here (ugh)
diff --git a/chromium.spec b/chromium.spec
index 9c12951..5b07016 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -1302,8 +1302,12 @@ build/linux/unbundle/replace_gn_files.py --system-libraries \
%else
re2 \
%endif
+%if %{bundleminizip}
+ yasm
+%else
yasm \
zlib
+%endif
# fix arm gcc
sed -i 's|arm-linux-gnueabihf-|arm-linux-gnu-|g' build/toolchain/linux/BUILD.gn
commit 1964554c88c8e379f9ceb934337f0fff260cbfba
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Fri Sep 6 17:10:21 2019 -0400
force disable use_gnome_keyring
diff --git a/chromium-76.0.3809.132-rhel8-force-disable-use_gnome_keyring.patch
b/chromium-76.0.3809.132-rhel8-force-disable-use_gnome_keyring.patch
new file mode 100644
index 0000000..ff6c523
--- /dev/null
+++ b/chromium-76.0.3809.132-rhel8-force-disable-use_gnome_keyring.patch
@@ -0,0 +1,10 @@
+diff -up chromium-76.0.3809.132/components/os_crypt/features.gni.rhel8
chromium-76.0.3809.132/components/os_crypt/features.gni
+--- chromium-76.0.3809.132/components/os_crypt/features.gni.rhel8 2019-09-06
17:08:01.242314126 -0400
++++ chromium-76.0.3809.132/components/os_crypt/features.gni 2019-09-06 17:08:10.139134707
-0400
+@@ -7,5 +7,5 @@ import("//build/config/ui.gni")
+ declare_args() {
+ # Whether to use libgnome-keyring (deprecated by libsecret).
+ # See
http://crbug.com/466975 and
http://crbug.com/355223.
+- use_gnome_keyring = is_desktop_linux && use_glib
++ use_gnome_keyring = false
+ }
diff --git a/chromium.spec b/chromium.spec
index 9bdec57..9c12951 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -316,6 +316,9 @@ 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
+# Apply this patches to work around EPEL8 issues
+Patch300: chromium-76.0.3809.132-rhel8-force-disable-use_gnome_keyring.patch
+
# Use chromium-latest.py to generate clean tarball from released build tarballs, found
here:
#
http://build.chromium.org/buildbot/official/
# For Chromium Fedora use chromium-latest.py --stable --ffmpegclean --ffmpegarm
@@ -885,6 +888,10 @@ udev.
%patch205 -p1 -b .pulseaudioapichange
%endif
+%if 0%{?rhel} == 8
+%patch300 -p1 -b .disblegnomekeyring
+%endif
+
# Change shebang in all relevant files in this directory and all subdirectories
# See `man find` for how the `-exec command {} +` syntax works
find -type f -exec sed -iE '1s=^#! */usr/bin/\(python\|env
python\)[23]\?=#!%{__python2}=' {} +
commit c76cbbc3b06ce1008fca84278d3653896474b7b2
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Fri Sep 6 16:40:41 2019 -0400
conditionalize minizip bundling since rhel 8 does not have it
diff --git a/chromium.spec b/chromium.spec
index d2a573a..9bdec57 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -133,6 +133,13 @@ BuildRequires: libicu-devel >= 5.4
%global pulseaudioapichange 0
%endif
+# RHEL 8 doesn't have minizip
+%if 0%{?rhel} == 8
+%global bundleminizip 1
+%else
+%global bundleminizip 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.
@@ -380,11 +387,15 @@ BuildRequires: libusb-devel
BuildRequires: libXdamage-devel
BuildRequires: libXScrnSaver-devel
BuildRequires: libXtst-devel
+%if %{bundleminizip}
+# We're using the bundle, baby.
+%else
%if 0%{?fedora} >= 30
BuildRequires: minizip-compat-devel
%else
BuildRequires: minizip-devel
%endif
+%endif
# RHEL 7's nodejs is too old
%if 0%{?fedora}
BuildRequires: nodejs
@@ -709,11 +720,15 @@ Chromium is an open-source web browser, powered by WebKit (Blink).
Summary: Files needed for both the headless_shell and full Chromium
# Chromium needs an explicit Requires: minizip-compat
# We put it here to cover headless too.
+%if %{bundleminizip}
+# Using the bundle. No Requires needed.
+%else
%if 0%{?fedora} >= 30
Requires: minizip-compat%{_isa}
%else
Requires: minizip%{_isa}
%endif
+%endif
%description common
%{summary}.
@@ -1131,6 +1146,9 @@ build/linux/unbundle/remove_bundled_libraries.py \
%endif
'third_party/mesa' \
'third_party/metrics_proto' \
+%if %{bundleminizip}
+ 'third_party/minizip' \
+%endif
'third_party/modp_b64' \
'third_party/nasm' \
'third_party/node' \
commit 911f7b2ea074e200c79a66dc07f57c3b39df4fbd
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Fri Sep 6 16:10:38 2019 -0400
disable gnome-keyring
diff --git a/chromium.spec b/chromium.spec
index b870100..d2a573a 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -955,6 +955,9 @@ CHROMIUM_CORE_GN_DEFINES+=' target_cpu="arm64"'
%if %{?use_jumbo}
CHROMIUM_CORE_GN_DEFINES+=' use_jumbo_build=true jumbo_file_merge_limit=8'
%endif
+%if 0%{?rhel} == 8
+CHROMIUM_CORE_GN_DEFINES+=' use_gnome_keyring=false use_glib=true'
+%endif
export CHROMIUM_CORE_GN_DEFINES
CHROMIUM_BROWSER_GN_DEFINES=""
commit e9192241d8d4cd7fc33052dcb2d9a1ebf95cdaa6
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Fri Sep 6 10:44:11 2019 -0400
lots of spec cleanups, support for epel8, remove nacl for good, apply freeworld fixes
diff --git a/chromium.spec b/chromium.spec
index 1471b94..b870100 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -70,25 +70,6 @@
#
https://www.chromium.org/developers/testing/addresssanitizer
%global asan 0
-# nacl/pnacl are soon to be dead. We're just killing them off early.
-%global killnacl 1
-
-%if 0%{?killnacl}
- %global nacl 0
- %global nonacl 1
-%else
-# TODO: Try arm (nacl disabled)
-%if 0%{?fedora}
- %ifarch i686
- %global nacl 0
- %global nonacl 1
- %else
- %global nacl 1
- %global nonacl 0
- %endif
-%endif
-%endif
-
%if 0
# Chromium's fork of ICU is now something we can't unbundle.
# This is left here to ease the change if that ever switches.
@@ -171,13 +152,14 @@ BuildRequires: libicu-devel >= 5.4
%global majorversion 76
%if %{freeworld}
-Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
+Name: chromium%{chromium_channel}%{?freeworld:-libs-media-freeworld}
+Summary: Chromium media libraries built with all possible codecs
%else
Name: chromium%{chromium_channel}
+Summary: A WebKit (Blink) powered web browser
%endif
Version: %{majorversion}.0.3809.132
-Release: 2%{?dist}
-Summary: A WebKit (Blink) powered web browser
+Release: 3%{?dist}
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)
@@ -318,16 +300,6 @@ 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
@@ -387,9 +359,6 @@ BuildRequires: flex
BuildRequires: fontconfig-devel
BuildRequires: GConf2-devel
BuildRequires: glib2-devel
-%if 0%{?fedora} <= 27
-BuildRequires: gnome-keyring-devel
-%endif
BuildRequires: glibc-devel
BuildRequires: gperf
%if 0%{?bundleharfbuzz}
@@ -435,24 +404,6 @@ BuildRequires: libappstream-glib
# gn needs these
BuildRequires: libstdc++-static
BuildRequires: libstdc++-devel, openssl-devel
-%if 0%{?nacl}
-BuildRequires: nacl-gcc, nacl-binutils, nacl-newlib
-BuildRequires: nacl-arm-gcc, nacl-arm-binutils, nacl-arm-newlib
-# pNaCl needs this monster
-# It's possible that someday this dep will stabilize, but
-# right now, it needs to be updated everytime chromium bumps
-# a major version.
-BuildRequires: chromium-native_client >= 52.0.2743.82
-BuildRequires: clang
-BuildRequires: llvm
-%ifarch x86_64
-# Really, this is what we want:
-# BuildRequires: glibc-devel(x86-32) libgcc(x86-32)
-# But, koji only offers glibc32. Maybe that's enough.
-# This BR will pull in either glibc.i686 or glibc32.
-BuildRequires: /lib/libc.so.6 /usr/lib/libc.so
-%endif
-%endif
# Fedora tries to use system libs whenever it can.
BuildRequires: bzip2-devel
BuildRequires: dbus-glib-devel
@@ -550,7 +501,9 @@ BuildRequires: re2-devel >= 20160401
BuildRequires: speech-dispatcher-devel
BuildRequires: yasm
BuildRequires: zlib-devel
+%if 0%{?rhel} < 8
BuildRequires: pkgconfig(gnome-keyring-1)
+%endif
# remote desktop needs this
BuildRequires: pam-devel
BuildRequires: systemd
@@ -558,7 +511,7 @@ BuildRequires: systemd
%if %{freeworld}
# dont need fonts for this
%else
-%if 0%{?rhel} == 7
+%if 0%{?rhel} >= 7
Source100:
https://github.com/google/fonts/blob/master/apache/arimo/Arimo-Bold.ttf
Source101:
https://github.com/google/fonts/blob/master/apache/arimo/Arimo-BoldItalic...
Source102:
https://github.com/google/fonts/blob/master/apache/arimo/Arimo-Italic.ttf
@@ -571,12 +524,15 @@
Source108:
https://github.com/google/fonts/blob/master/apache/tinos/Tinos-Bold.t
Source109:
https://github.com/google/fonts/blob/master/apache/tinos/Tinos-BoldItalic...
Source110:
https://github.com/google/fonts/blob/master/apache/tinos/Tinos-Italic.ttf
Source111:
https://github.com/google/fonts/blob/master/apache/tinos/Tinos-Regular.ttf
+%else
+BuildRequires: google-croscore-arimo-fonts
+BuildRequires: google-croscore-cousine-fonts
+BuildRequires: google-croscore-tinos-fonts
+%endif
+%if 0%{?rhel} == 7
Source112:
https://releases.pagure.org/lohit/lohit-gurmukhi-ttf-2.91.2.tar.gz
Source113:
https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip
%else
-BuildRequires: google-croscore-arimo-fonts
-BuildRequires: google-croscore-cousine-fonts
-BuildRequires: google-croscore-tinos-fonts
BuildRequires: google-noto-sans-cjk-jp-fonts
BuildRequires: lohit-gurmukhi-fonts
%endif
@@ -732,8 +688,22 @@ Provides: bundled(xdg-user-dirs)
Requires(post): /usr/sbin/semanage
Requires(post): /usr/sbin/restorecon
+%if %{freeworld}
+Provides: chromium-libs-media = %{version}-%{release}
+Provides: chromium-libs-media%{_isa} = %{version}-%{release}
+Requires: chromium-libs%{_isa} = %{version}
+Requires(post): %{_sbindir}/update-alternatives
+Requires(preun): %{_sbindir}/update-alternatives
+
+%description
+Chromium media libraries built with all possible codecs. Chromium is an
+open-source web browser, powered by WebKit (Blink). This package replaces
+the default chromium-libs-media package, which is limited in what it
+can include.
+%else
%description
Chromium is an open-source web browser, powered by WebKit (Blink).
+%endif
%package common
Summary: Files needed for both the headless_shell and full Chromium
@@ -760,19 +730,6 @@ Requires(preun): %{_sbindir}/update-alternatives
Shared libraries used by chromium (and chrome-remote-desktop).
%if %{freeworld}
-%package -n chromium-libs-media-freeworld
-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}
-Requires(post): %{_sbindir}/update-alternatives
-Requires(preun): %{_sbindir}/update-alternatives
-
-%description -n chromium-libs-media-freeworld
-Chromium media libraries built with all possible codecs. Chromium is an
-open-source web browser, powered by WebKit (Blink). This package replaces
-the default chromium-libs-media package, which is limited in what it
-can include.
%else
%package libs-media
Summary: Shared libraries used by the chromium media subsystem
@@ -901,12 +858,6 @@ udev.
%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
@@ -935,101 +886,6 @@ export RANLIB="ranlib"
rm -rf buildtools/third_party/libc++/BUILD.gn
-%if 0%{?nacl}
-# prep the nacl tree
-mkdir -p out/Release/gen/sdk/linux_x86/nacl_x86_newlib
-cp -a --no-preserve=context /usr/%{_arch}-nacl/*
out/Release/gen/sdk/linux_x86/nacl_x86_newlib
-
-mkdir -p out/Release/gen/sdk/linux_x86/nacl_arm_newlib
-cp -a --no-preserve=context /usr/arm-nacl/*
out/Release/gen/sdk/linux_x86/nacl_arm_newlib
-
-# Not sure if we need this or not, but better safe than sorry.
-pushd out/Release/gen/sdk/linux_x86
-ln -s nacl_x86_newlib nacl_x86_newlib_raw
-ln -s nacl_arm_newlib nacl_arm_newlib_raw
-popd
-
-mkdir -p out/Release/gen/sdk/linux_x86/nacl_x86_newlib/bin
-pushd out/Release/gen/sdk/linux_x86/nacl_x86_newlib/bin
-ln -s /usr/bin/x86_64-nacl-gcc gcc
-ln -s /usr/bin/x86_64-nacl-gcc x86_64-nacl-gcc
-ln -s /usr/bin/x86_64-nacl-g++ g++
-ln -s /usr/bin/x86_64-nacl-g++ x86_64-nacl-g++
-# ln -s /usr/bin/x86_64-nacl-ar ar
-ln -s /usr/bin/x86_64-nacl-ar x86_64-nacl-ar
-# ln -s /usr/bin/x86_64-nacl-as as
-ln -s /usr/bin/x86_64-nacl-as x86_64-nacl-as
-# ln -s /usr/bin/x86_64-nacl-ranlib ranlib
-ln -s /usr/bin/x86_64-nacl-ranlib x86_64-nacl-ranlib
-# Cleanups
-rm addr2line
-ln -s /usr/bin/x86_64-nacl-addr2line addr2line
-rm c++filt
-ln -s /usr/bin/x86_64-nacl-c++filt c++filt
-rm gprof
-ln -s /usr/bin/x86_64-nacl-gprof gprof
-rm readelf
-ln -s /usr/bin/x86_64-nacl-readelf readelf
-rm size
-ln -s /usr/bin/x86_64-nacl-size size
-rm strings
-ln -s /usr/bin/x86_64-nacl-strings strings
-popd
-
-mkdir -p out/Release/gen/sdk/linux_x86/nacl_arm_newlib/bin
-pushd out/Release/gen/sdk/linux_x86/nacl_arm_newlib/bin
-ln -s /usr/bin/arm-nacl-gcc gcc
-ln -s /usr/bin/arm-nacl-gcc arm-nacl-gcc
-ln -s /usr/bin/arm-nacl-g++ g++
-ln -s /usr/bin/arm-nacl-g++ arm-nacl-g++
-ln -s /usr/bin/arm-nacl-ar arm-nacl-ar
-ln -s /usr/bin/arm-nacl-as arm-nacl-as
-ln -s /usr/bin/arm-nacl-ranlib arm-nacl-ranlib
-popd
-
-touch out/Release/gen/sdk/linux_x86/nacl_x86_newlib/stamp.untar
out/Release/gen/sdk/linux_x86/nacl_x86_newlib/stamp.prep
-touch out/Release/gen/sdk/linux_x86/nacl_x86_newlib/nacl_x86_newlib.json
-touch out/Release/gen/sdk/linux_x86/nacl_arm_newlib/stamp.untar
out/Release/gen/sdk/linux_x86/nacl_arm_newlib/stamp.prep
-touch out/Release/gen/sdk/linux_x86/nacl_arm_newlib/nacl_arm_newlib.json
-
-pushd out/Release/gen/sdk/linux_x86/
-mkdir -p pnacl_newlib pnacl_translator
-# Might be able to do symlinks here, but eh.
-cp -a --no-preserve=context /usr/pnacl_newlib/* pnacl_newlib/
-cp -a --no-preserve=context /usr/pnacl_translator/* pnacl_translator/
-for i in lib/libc.a lib/libc++.a lib/libg.a lib/libm.a; do
- /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/x86_64_bc-nacl/$i
- /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/i686_bc-nacl/$i
- /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/le32-nacl/$i
-done
-
-for i in lib/libpthread.a lib/libnacl.a; do
- /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/le32-nacl/$i
-done
-
-for i in lib/clang/3.7.0/lib/x86_64_bc-nacl/libpnaclmm.a
lib/clang/3.7.0/lib/i686_bc-nacl/libpnaclmm.a; do
- /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/$i
-done
-
-for i in lib/clang/3.7.0/lib/le32-nacl/libpnaclmm.a
lib/clang/3.7.0/lib/le32-nacl/libgcc.a; do
- /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/$i
-done
-
-popd
-
-mkdir -p native_client/toolchain/.tars/linux_x86
-touch native_client/toolchain/.tars/linux_x86/pnacl_translator.json
-
-pushd native_client/toolchain
-ln -s ../../out/Release/gen/sdk/linux_x86 linux_x86
-popd
-
-mkdir -p third_party/llvm-build/Release+Asserts/bin
-pushd third_party/llvm-build/Release+Asserts/bin
-ln -s /usr/bin/clang clang
-popd
-%endif
-
# Unpack fonts
%if %{freeworld}
# no font fun needed.
@@ -1044,7 +900,7 @@ rm -rf MuktiNarrow0.94
cp %{SOURCE16} .
cp %{SOURCE17} .
cp %{SOURCE18} .
-%if 0%{?rhel} == 7
+%if 0%{?rhel} >= 7
cp %{SOURCE100} .
cp %{SOURCE101} .
cp %{SOURCE102} .
@@ -1057,14 +913,17 @@ cp %{SOURCE108} .
cp %{SOURCE109} .
cp %{SOURCE110} .
cp %{SOURCE111} .
+%else
+cp -a /usr/share/fonts/google-croscore/Arimo-*.ttf .
+cp -a /usr/share/fonts/google-croscore/Cousine-*.ttf .
+cp -a /usr/share/fonts/google-croscore/Tinos-*.ttf .
+%endif
+%if 0%{?rhel} == 7
tar xf %{SOURCE112}
mv lohit-gurmukhi-ttf-2.91.2/Lohit-Gurmukhi.ttf .
rm -rf lohit-gurmukhi-ttf-2.91.2
unzip %{SOURCE113}
%else
-cp -a /usr/share/fonts/google-croscore/Arimo-*.ttf .
-cp -a /usr/share/fonts/google-croscore/Cousine-*.ttf .
-cp -a /usr/share/fonts/google-croscore/Tinos-*.ttf .
cp -a /usr/share/fonts/lohit-gurmukhi/Lohit-Gurmukhi.ttf .
cp -a /usr/share/fonts/google-noto-cjk/NotoSansCJKjp-Regular.otf .
%endif
@@ -1100,9 +959,7 @@ export CHROMIUM_CORE_GN_DEFINES
CHROMIUM_BROWSER_GN_DEFINES=""
CHROMIUM_BROWSER_GN_DEFINES+=' use_gio=true use_pulseaudio=true
icu_use_data_file=true'
-%if 0%{?nonacl}
CHROMIUM_BROWSER_GN_DEFINES+=' enable_nacl=false'
-%endif
%if 0%{?shared}
CHROMIUM_BROWSER_GN_DEFINES+=' is_component_ffmpeg=true is_component_build=true'
%else
@@ -1264,9 +1121,6 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/libwebm' \
'third_party/libwebp' \
'third_party/libyuv' \
-%if 0%{?nacl}
- 'third_party/llvm-build' \
-%endif
'third_party/lss' \
'third_party/lzma_sdk' \
%if 0%{?bundlepylibs}
@@ -1494,10 +1348,8 @@ pushd remoting
# ../../depot_tools/ninja -C ../%{target} -vvv remoting_me2me_host remoting_start_host
remoting_it2me_native_messaging_host remoting_me2me_native_messaging_host
remoting_native_messaging_manifests remoting_resources
../../depot_tools/ninja -C ../%{remotingtarget} -vvv remoting_all
%if 0%{?build_remoting_app}
-%if 0%{?nacl}
GOOGLE_CLIENT_ID_REMOTING_IDENTITY_API=%{chromoting_client_id} ../../depot_tools/ninja
-vv -C ../out/Release/ remoting_webapp
%endif
-%endif
popd
%endif
@@ -1544,14 +1396,7 @@ mkdir -p %{buildroot}%{_mandir}/man1/
pushd %{target}
cp -a *.pak locales resources icudtl.dat %{buildroot}%{chromium_path}
-%if 0%{?nacl}
-cp -a nacl_helper* *.nexe pnacl tls_edit %{buildroot}%{chromium_path}
-chmod -x %{buildroot}%{chromium_path}/nacl_helper_bootstrap* *.nexe
-%endif
# Reasonably sure we don't need this anymore. Chrome doesn't include it.
-%if 0
-cp -a protoc pyproto %{buildroot}%{chromium_path}
-%endif
%ifarch x86_64 i686 aarch64
cp -a swiftshader %{buildroot}%{chromium_path}
%endif
@@ -1630,10 +1475,8 @@ ln -s system-auth chrome-remote-desktop
popd
%if 0%{?build_remoting_app}
-%if 0%{?nacl}
cp -a remoting_client_plugin_newlib.* %{buildroot}%{chromium_path}
%endif
-%endif
%if %{build_headless}
pushd %{headlesstarget}
@@ -1704,7 +1547,7 @@ if st and st.type == "link" then
end
%if %{freeworld}
-%posttrans -n chromium-libs-media-freeworld
+%posttrans
%{_sbindir}/update-alternatives --install \
%{_libdir}/chromium-browser/libffmpeg.so libffmpeg.so \
%{_libdir}/chromium-browser/libffmpeg.so.freeworld 20 \
@@ -1715,7 +1558,7 @@ end
--slave %{_libdir}/chromium-browser/libmedia.so.TOC libmedia.so.TOC \
%{_libdir}/chromium-browser/libmedia.so.TOC.freeworld
-%preun -n chromium-libs-media-freeworld
+%preun
if [ $1 = 0 ]; then
%{_sbindir}/alternatives --remove libffmpeg.so \
%{_libdir}/chromium-browser/libffmpeg.so.freeworld
@@ -1775,16 +1618,7 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%ifarch x86_64 i686 aarch64
%{chromium_path}/swiftshader/
%endif
-%if 0%{?nacl}
-%{chromium_path}/nacl_helper*
-%{chromium_path}/*.nexe
-%{chromium_path}/pnacl/
-%{chromium_path}/tls_edit
-%endif
%dir %{chromium_path}/PepperFlash/
-%if 0
-%{chromium_path}/protoc
-%endif
# %%{chromium_path}/remoting_locales/
# %%{chromium_path}/pseudo_locales/
# %%{chromium_path}/plugins/
@@ -1895,10 +1729,8 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%{_unitdir}/chrome-remote-desktop@.service
/var/lib/chrome-remote-desktop/
%if 0%{?build_remoting_app}
-%if 0%{?nacl}
%{chromium_path}/remoting_client_plugin_newlib.*
%endif
-%endif
%files -n chromedriver
%doc AUTHORS
@@ -1910,7 +1742,7 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%if 0%{?shared}
%if %{freeworld}
-%files -n chromium-libs-media-freeworld
+%files
%else
%files libs-media
%endif
@@ -1922,6 +1754,10 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
+* Fri Sep 6 2019 Tom Callaway <spot(a)fedoraproject.org> - 76.0.3809.132-3
+- spec cleanups and changes to make EPEL8 try to build
+- freeworld changes from Nicolas Chauvet
+
* Tue Sep 03 2019 Tomas Popela <tpopela(a)redhat.com> - 76.0.3809.132-2
- Backport patch to fix certificate transparency
commit 67061b489484edb1d5e87b3551ed72695fbaafce
Merge: 2c4faae f341b67
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Thu Sep 5 16:58:58 2019 -0400
Merge branch 'master' into epel8
commit 2c4faaedb3611d1d5cbf09d7e277a7586b1e9084
Author: Gwyn Ciesla <gwync(a)protonmail.com>
Date: Thu Sep 5 15:46:11 2019 -0500
"Adding package.cfg file"
diff --git a/package.cfg b/package.cfg
new file mode 100644
index 0000000..66ea79d
--- /dev/null
+++ b/package.cfg
@@ -0,0 +1,2 @@
+[koji]
+targets = epel8 epel8-playground
\ No newline at end of file
commit f341b670a040a236cc836e45e0de0e9e3361cb50
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Wed Sep 4 10:48:30 2019 +0200
More fixes to a backported patch for certificate transparency
diff --git a/chromium-76.0.3809.132-certificate-transparency.patch
b/chromium-76.0.3809.132-certificate-transparency.patch
index 51937e0..8bfbced 100644
--- a/chromium-76.0.3809.132-certificate-transparency.patch
+++ b/chromium-76.0.3809.132-certificate-transparency.patch
@@ -1,6 +1,73 @@
+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
12:01:33.004949320 +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"
@@ -23,52 +90,205 @@ diff -up
chromium-76.0.3809.132/chrome/browser/net/system_network_context_manage
#include "mojo/public/cpp/bindings/associated_interface_ptr.h"
#include "net/dns/public/util.h"
#include "net/net_buildflags.h"
-@@ -686,15 +689,41 @@ SystemNetworkContextManager::CreateDefau
+@@ -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();
+
-+#if BUILDFLAG(GOOGLE_CHROME_BRANDING) && defined(OFFICIAL_BUILD) && \
-+ !defined(OS_IOS)
-+ // Certificate Transparency is only enabled if:
-+ // - Desktop (!OS_ANDROID, !OS_IOS)
-+ // - base::GetBuildTime() is deterministic to the source (OFFICIAL_BUILD)
-+ // - The build in reliably updatable (GOOGLE_CHROME_BRANDING)
- 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;
++ 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));
+ }
- network_context_params->ct_logs.push_back(std::move(log_info));
}
-+#endif
const base::Value* value =
- g_browser_process->policy_service()
+@@ -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
12:04:01.983890928 +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"
@@ -115,12 +335,16 @@ diff -up
chromium-76.0.3809.132/services/network/network_context.cc.certificate-
scoped_refptr<const net::CTLogVerifier> log_verifier =
net::CTLogVerifier::Create(log->public_key, log->name);
if (!log_verifier) {
-@@ -1924,6 +1927,13 @@ URLRequestContextOwner NetworkContext::A
+@@ -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,
@@ -129,9 +353,118 @@ diff -up
chromium-76.0.3809.132/services/network/network_context.cc.certificate-
#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
11:59:48.423862022 +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;
@@ -148,7 +481,7 @@ diff -up
chromium-76.0.3809.132/services/network/public/mojom/ct_log_info.mojom.
+
+ // 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;
++ 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.
@@ -157,7 +490,7 @@ diff -up
chromium-76.0.3809.132/services/network/public/mojom/ct_log_info.mojom.
};
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
11:59:48.424862032 +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;
commit be81360432cb7ef6251b4f39a0b164e04b33c044
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Tue Sep 3 15:26:53 2019 +0200
Fix certificate-transparency patch
diff --git a/chromium-76.0.3809.132-certificate-transparency.patch
b/chromium-76.0.3809.132-certificate-transparency.patch
index 25a08af..51937e0 100644
--- a/chromium-76.0.3809.132-certificate-transparency.patch
+++ b/chromium-76.0.3809.132-certificate-transparency.patch
@@ -121,7 +121,7 @@ diff -up
chromium-76.0.3809.132/services/network/network_context.cc.certificate-
}
+
+ if (params_->enforce_chrome_ct_policy) {
-+ builder.set_ct_policy_enforcer(
++ builder->set_ct_policy_enforcer(
+ std::make_unique<certificate_transparency::ChromeCTPolicyEnforcer>(
+ params_->ct_log_update_time, disqualified_logs,
+ operated_by_google_logs));
commit 41c22993b3320f535a33080157da4f49f69bf69e
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Tue Sep 3 12:20:51 2019 +0200
Backport patch to fix certificate transparency
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..25a08af
--- /dev/null
+++ b/chromium-76.0.3809.132-certificate-transparency.patch
@@ -0,0 +1,206 @@
+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
12:01:33.004949320 +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"
+@@ -686,15 +689,41 @@ SystemNetworkContextManager::CreateDefau
+
+ bool http_09_on_non_default_ports_enabled = false;
+ #if !defined(OS_ANDROID)
+- // CT is only enabled on Desktop platforms for now.
++
++#if BUILDFLAG(GOOGLE_CHROME_BRANDING) && defined(OFFICIAL_BUILD) && \
++ !defined(OS_IOS)
++ // Certificate Transparency is only enabled if:
++ // - Desktop (!OS_ANDROID, !OS_IOS)
++ // - base::GetBuildTime() is deterministic to the source (OFFICIAL_BUILD)
++ // - The build in reliably updatable (GOOGLE_CHROME_BRANDING)
+ 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));
+ }
++#endif
+
+ const base::Value* value =
+ g_browser_process->policy_service()
+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
12:04:01.983890928 +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,13 @@ URLRequestContextOwner NetworkContext::A
+ ct_verifier->AddLogs(ct_logs);
+ builder->set_ct_verifier(std::move(ct_verifier));
+ }
++
++ if (params_->enforce_chrome_ct_policy) {
++ 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/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
11:59:48.423862022 +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;
++
++ // 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
11:59:48.424862032 +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.spec b/chromium.spec
index 8e251b9..1471b94 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -176,7 +176,7 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
Name: chromium%{chromium_channel}
%endif
Version: %{majorversion}.0.3809.132
-Release: 1%{?dist}
+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)
@@ -308,6 +308,8 @@ Patch61: chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
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
@@ -888,6 +890,7 @@ udev.
%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
@@ -1919,6 +1922,9 @@ 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
commit 9bb933dc67b7e0b2051c0f48ef3783365b86fc8b
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Thu Aug 29 16:22:39 2019 -0400
update chromium-latest.py to Python3
diff --git a/chromium-latest.py b/chromium-latest.py
index 87889ad..5af8628 100755
--- a/chromium-latest.py
+++ b/chromium-latest.py
@@ -1,5 +1,5 @@
-#!/usr/bin/python
-# Copyright 2010,2015-2016 Tom Callaway <tcallawa(a)redhat.com>
+#!/usr/bin/python3
+# Copyright 2010,2015-2019 Tom Callaway <tcallawa(a)redhat.com>
# Copyright 2013-2016 Tomas Popela <tpopela(a)redhat.com>
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,9 +32,9 @@ import hashlib
import locale
import os
import shutil
-import StringIO
+import io
import sys
-import urllib
+import urllib.request, urllib.parse, urllib.error
chromium_url =
"http://commondatastorage.googleapis.com/chromium-browser-official/"
@@ -59,22 +59,22 @@ def dlProgress(count, blockSize, totalSize):
def delete_chromium_dir(ch_dir):
full_dir = "%s/%s" % (latest_dir, ch_dir)
- print 'Deleting %s ' % full_dir
+ print('Deleting %s ' % full_dir)
if os.path.isdir(full_dir):
shutil.rmtree(full_dir)
- print '[DONE]'
+ print('[DONE]')
else:
- print '[NOT FOUND]'
+ print('[NOT FOUND]')
def delete_chromium_files(files):
full_path = "%s/%s" % (latest_dir, files)
- print 'Deleting ' + full_path + ' ',
+ print('Deleting ' + full_path + ' ', end=' ')
for filename in glob.glob(full_path):
- print 'Deleting ' + filename + ' ',
+ print('Deleting ' + filename + ' ', end=' ')
os.remove(filename)
- print '[DONE]'
+ print('[DONE]')
def check_omahaproxy(channel="stable"):
@@ -82,20 +82,20 @@ def check_omahaproxy(channel="stable"):
version = 0
status_url = "http://omahaproxy.appspot.com/all?os=linux&channel=" +
channel
- usock = urllib.urlopen(status_url)
- status_dump = usock.read()
+ usock = urllib.request.urlopen(status_url)
+ status_dump = usock.read().decode('utf-8')
usock.close()
- status_list = StringIO.StringIO(status_dump)
+ status_list = io.StringIO(status_dump)
status_reader = list(csv.reader(status_list, delimiter=','))
linux_channels = [s for s in status_reader if "linux" in s]
linux_channel = [s for s in linux_channels if channel in s]
version = linux_channel[0][2]
if version == 0:
- print 'I could not find the latest %s build. Bailing out.' % channel
+ print('I could not find the latest %s build. Bailing out.' % channel)
sys.exit(1)
else:
- print 'Latest Chromium Version on %s at %s is %s' % (channel, status_url,
version)
+ print('Latest Chromium Version on %s at %s is %s' % (channel, status_url,
version))
return version
@@ -119,27 +119,27 @@ def download_file_and_compare_hashes(file_to_download):
# Let's make sure we haven't already downloaded it.
tarball_local_file = "./%s" % file_to_download
if os.path.isfile(tarball_local_file):
- print "%s already exists!" % file_to_download
+ print("%s already exists!" % file_to_download)
else:
path = '%s%s' % (chromium_url, file_to_download)
- print "Downloading %s" % path
+ print("Downloading %s" % path)
# Perhaps look at using python-progressbar at some point?
- info=urllib.urlretrieve(path, file_to_download, reporthook=dlProgress)[1]
- urllib.urlcleanup()
- print ""
+ info=urllib.request.urlretrieve(path, file_to_download, reporthook=dlProgress)[1]
+ urllib.request.urlcleanup()
+ print("")
if (info["Content-Type"] != "application/x-tar"):
- print 'Chromium tarballs for %s are not on servers.' % file_to_download
+ print('Chromium tarballs for %s are not on servers.' % file_to_download)
remove_file_if_exists (file_to_download)
sys.exit(1)
hashes_local_file = "./%s" % hashes_file
if not os.path.isfile(hashes_local_file):
path = '%s%s' % (chromium_url, hashes_file)
- print "Downloading %s" % path
+ print("Downloading %s" % path)
# Perhaps look at using python-progressbar at some point?
- info=urllib.urlretrieve(path, hashes_file, reporthook=dlProgress)[1]
- urllib.urlcleanup()
- print ""
+ info=urllib.request.urlretrieve(path, hashes_file, reporthook=dlProgress)[1]
+ urllib.request.urlcleanup()
+ print("")
if os.path.isfile(hashes_local_file):
with open(hashes_local_file, "r") as input_file:
@@ -149,12 +149,12 @@ def download_file_and_compare_hashes(file_to_download):
for block in iter(lambda: f.read(65536), b""):
md5.update(block)
if (md5sum == md5.hexdigest()):
- print "MD5 matches for %s!" % file_to_download
+ print("MD5 matches for %s!" % file_to_download)
else:
- print "MD5 mismatch for %s!" % file_to_download
+ print("MD5 mismatch for %s!" % file_to_download)
sys.exit(1)
else:
- print "Cannot compare hashes for %s!" % file_to_download
+ print("Cannot compare hashes for %s!" % file_to_download)
def download_version(version):
@@ -175,16 +175,16 @@ def nacl_versions(version):
for line in myfile:
name, var = line.partition("=")[::2]
myvars[name] = var
- print "nacl-binutils commit: %s" % myvars["NACL_BINUTILS_COMMIT"]
- print "nacl-gcc commit: %s" % myvars["NACL_GCC_COMMIT"]
- print "nacl-newlib commit: %s" % myvars["NACL_NEWLIB_COMMIT"]
+ print("nacl-binutils commit: %s" % myvars["NACL_BINUTILS_COMMIT"])
+ print("nacl-gcc commit: %s" % myvars["NACL_GCC_COMMIT"])
+ print("nacl-newlib commit: %s" % myvars["NACL_NEWLIB_COMMIT"])
# Parse GIT_REVISIONS dict from toolchain_build.py
sys.path.append(os.path.abspath(chrome_dir +
"/native_client/toolchain_build"))
from toolchain_build import GIT_REVISIONS
- print "nacl-arm-binutils commit: %s" %
GIT_REVISIONS['binutils']['rev']
- print "nacl-arm-gcc commit: %s" %
GIT_REVISIONS['gcc']['rev']
+ print("nacl-arm-binutils commit: %s" %
GIT_REVISIONS['binutils']['rev'])
+ print("nacl-arm-gcc commit: %s" %
GIT_REVISIONS['gcc']['rev'])
def download_chrome_latest_rpm(arch):
@@ -197,15 +197,15 @@ def download_chrome_latest_rpm(arch):
# Let's make sure we haven't already downloaded it.
if os.path.isfile("./%s" % chrome_rpm):
- print "%s already exists!" % chrome_rpm
+ print("%s already exists!" % chrome_rpm)
else:
- print "Downloading %s" % path
+ print("Downloading %s" % path)
# Perhaps look at using python-progressbar at some point?
- info=urllib.urlretrieve(path, chrome_rpm, reporthook=dlProgress)[1]
- urllib.urlcleanup()
- print ""
+ info=urllib.request.urlretrieve(path, chrome_rpm, reporthook=dlProgress)[1]
+ urllib.request.urlcleanup()
+ print("")
if (info["Content-Type"] != "binary/octet-stream" and
info["Content-Type"] != "application/x-redhat-package-manager"):
- print 'Chrome %s rpms are not on servers.' % version_string
+ print('Chrome %s rpms are not on servers.' % version_string)
remove_file_if_exists (chrome_rpm)
sys.exit(1)
@@ -274,7 +274,7 @@ if __name__ == '__main__':
version_string = "dev"
elif (not (args.stable or args.beta or args.dev)):
if (not args.version):
- print 'No version specified, downloading STABLE'
+ print('No version specified, downloading STABLE')
args.stable = True
chromium_version = args.version if args.version else check_omahaproxy(version_string)
@@ -284,7 +284,7 @@ if __name__ == '__main__':
if args.chrome:
if args.version:
- print 'You cannot specify a Chrome RPM version!'
+ print('You cannot specify a Chrome RPM version!')
sys.exit(1)
latest = 'google-chrome-%s_current_i386' % version_string
download_chrome_latest_rpm("i386")
@@ -303,11 +303,11 @@ if __name__ == '__main__':
shutil.rmtree(latest_dir)
if os.path.isdir(latest_dir):
- print "%s already exists, perhaps %s has already been unpacked?" %
(latest_dir, latest)
+ print("%s already exists, perhaps %s has already been unpacked?" %
(latest_dir, latest))
else:
- print "Unpacking %s into %s, please wait." % (latest, latest_dir)
+ print("Unpacking %s into %s, please wait." % (latest, latest_dir))
if (os.system("tar -xJf %s" % latest) != 0):
- print "%s is possibly corrupted, exiting." % (latest)
+ print("%s is possibly corrupted, exiting." % (latest))
sys.exit(1)
if (args.naclvers):
@@ -334,11 +334,11 @@ if __name__ == '__main__':
if (args.ffmpegclean):
print("Cleaning ffmpeg from proprietary things...")
os.system("./clean_ffmpeg.sh %s %d" % (latest_dir, 0 if args.ffmpegarm else
1))
- print "Done!"
+ print("Done!")
if (not args.prep):
- print "Compressing cleaned tree, please wait..."
+ print("Compressing cleaned tree, please wait...")
os.chdir(chromium_root_dir)
os.system("tar --exclude=\.svn -cf - chromium-%s | xz -9 -T 0 -f > %s" %
(chromium_version, chromium_clean_xz_file))
- print "Finished!"
+ print("Finished!")
commit ec9d075ebbacdd8fa116137d33f073fa37713b54
Author: Miro Hronok <miro(a)hroncok.cz>
Date: Mon Aug 26 19:17:48 2019 +0200
Use bundled Python 2 libraries during build
This removes the dependency on a small stack of Python 2 libraries.
There is a %global flag to control this, however only markupsafe is handled
differently when %bundlepylibs is set, other libraries seem to have been bundled
already.
diff --git a/chromium.spec b/chromium.spec
index cbc4fa4..8e251b9 100644
--- a/chromium.spec
+++ b/chromium.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
@@ -515,8 +519,11 @@ BuildRequires: pkgconfig(gtk+-3.0)
%else
BuildRequires: pkgconfig(gtk+-2.0)
%endif
-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
@@ -530,6 +537,8 @@ BuildRequires: python-markupsafe
BuildRequires: python-ply
%endif
BuildRequires: python2-simplejson
+BuildRequires: python2-devel
+%endif
%if 0%{?bundlere2}
# Using bundled bits, do nothing.
%else
@@ -1257,7 +1266,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' \
@@ -1345,10 +1354,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
commit 5039438024ac562fb0db46dc2c07c76ead8daa0c
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Tue Aug 27 07:56:12 2019 +0200
Add an updated patch that was missed
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.
commit 937790beb5adc1bcd8c978d0e60d064afc9ad318
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Tue Aug 27 07:13:54 2019 +0200
Update to 76.0.3809.132
diff --git a/chromium-76.0.3809.100-gcc-ambigous-instantiation.patch
b/chromium-76.0.3809.100-gcc-ambigous-instantiation.patch
deleted file mode 100644
index 587abf3..0000000
--- a/chromium-76.0.3809.100-gcc-ambigous-instantiation.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 52b5ceac95b67491b1c71f0ef9a32b778bbbaa2e Mon Sep 17 00:00:00 2001
-From: Jose Dapena Paz <jose.dapena(a)lge.com>
-Date: Wed, 05 Jun 2019 19:46:55 +0000
-Subject: [PATCH] GCC: avoid ambiguous NoDestructor creation in GetNeverSniffedMimeTypes.
-
-Use brace-list notation to wrap the already existing brace-list for
-initializing the flat-set. This resolves an ambiguous instantiation
-in GCC.
-
-Bug: 819294
-Change-Id: I89ddf12522d62a5140a8c2c41dc98e30ec7a0e78
-Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1645774
-Reviewed-by: Matt Menke <mmenke(a)chromium.org>
-Commit-Queue: Jos Dapena Paz <jose.dapena(a)lge.com>
-Cr-Commit-Position: refs/heads/master@{#666401}
----
-
-diff --git a/services/network/cross_origin_read_blocking.cc
b/services/network/cross_origin_read_blocking.cc
-index 30999c0..60a03f6 100644
---- a/services/network/cross_origin_read_blocking.cc
-+++ b/services/network/cross_origin_read_blocking.cc
-@@ -211,7 +211,7 @@
- // 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
-@@ -224,7 +224,7 @@
- "application/x-www-form-urlencoded",
- "application/zip",
- "text/event-stream",
-- });
-+ }};
-
- // All items need to be lower-case, to support case-insensitive comparisons
- // later.
diff --git a/chromium.spec b/chromium.spec
index c961abc..cbc4fa4 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -171,7 +171,7 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
%else
Name: chromium%{chromium_channel}
%endif
-Version: %{majorversion}.0.3809.100
+Version: %{majorversion}.0.3809.132
Release: 1%{?dist}
Summary: A WebKit (Blink) powered web browser
Url:
http://www.chromium.org/Home
@@ -280,7 +280,7 @@ 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.100-gcc-ambigous-instantiation.patch
+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...
@@ -1908,6 +1908,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r
chrome-remote-deskt
%changelog
+* 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
diff --git a/sources b/sources
index b7a420d..2d38a7c 100644
--- a/sources
+++ b/sources
@@ -17,4 +17,4 @@ SHA512 (Tinos-Italic.ttf) =
d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0
SHA512 (Tinos-Regular.ttf) =
58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f
SHA512 (Ahem.ttf) =
aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
SHA512 (node-v8.9.1-linux-x64.tar.gz) =
a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
-SHA512 (chromium-76.0.3809.100-clean.tar.xz) =
418ade473185717595b47fbf49ad58bd9bf7cece43f9e200108a2f4df1391bc6a09673e7c30a9958205e13650ed220ad289fe3d79d140612ec5c0bb7891fc8c8
+SHA512 (chromium-76.0.3809.132-clean.tar.xz) =
fbc5f989945adfaffb9fb5199ccb988accdc53f41a03bba9c4ab3df8585b9267b1f34cd7a6ac487eff34ebb6e65865e32ceea4ad945eec30f871d8eed41f3e6f
commit 77fd050dd942221c6dd0e8b09183bf3319e1fdfd
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Mon Aug 26 14:40:26 2019 +0200
Another noexec fix for EL7
diff --git a/chromium-76.0.3809.100-el7-noexcept.patch
b/chromium-76.0.3809.100-el7-noexcept.patch
index 99593f7..407f8de 100644
--- a/chromium-76.0.3809.100-el7-noexcept.patch
+++ b/chromium-76.0.3809.100-el7-noexcept.patch
@@ -18,7 +18,7 @@ diff -up
chromium-76.0.3809.100/chrome/common/media_router/media_sink.cc.el7-noe
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-23
13:47:02.463525385 +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);
}
@@ -28,9 +28,18 @@ diff -up
chromium-76.0.3809.100/components/history/core/browser/history_types.cc
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-23
13:46:48.022367596 +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();
@@ -40,6 +49,15 @@ diff -up
chromium-76.0.3809.100/components/history/core/browser/history_types.h.
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
commit 2f9ffec1c569135a8630d144cb0c4e833e55aabf
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Aug 23 13:48:03 2019 +0200
Another el7 noexcept change
diff --git a/chromium-76.0.3809.100-el7-noexcept.patch
b/chromium-76.0.3809.100-el7-noexcept.patch
index 054d42e..99593f7 100644
--- a/chromium-76.0.3809.100-el7-noexcept.patch
+++ b/chromium-76.0.3809.100-el7-noexcept.patch
@@ -1,6 +1,6 @@
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
10:35:14.911079823 +0200
-+++ chromium-76.0.3809.100/chrome/common/media_router/media_sink.cc 2019-08-23
10:35:14.911079823 +0200
+---
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) {}
@@ -16,11 +16,33 @@ diff -up
chromium-76.0.3809.100/chrome/common/media_router/media_sink.cc.el7-noe
bool MediaSink::IsMaybeCloudSink() const {
switch (icon_type_) {
-diff -up chromium-76.0.3809.100/components/history/core/browser/url_row.cc.el7-noexcept
chromium-76.0.3809.100/components/history/core/browser/url_row.cc
-diff -up chromium-76.0.3809.100/components/history/core/browser/url_row.h.el7-noexcept
chromium-76.0.3809.100/components/history/core/browser/url_row.h
+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-23
13:47:02.463525385 +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;
+ }
+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-23
13:46:48.022367596 +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_; }
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
10:35:01.127962168 +0200
-+++ chromium-76.0.3809.100/components/policy/core/common/policy_map.cc 2019-08-23
10:35:01.075961724 +0200
+---
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;
@@ -31,8 +53,8 @@ diff -up
chromium-76.0.3809.100/components/policy/core/common/policy_map.cc.el7-
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
10:35:02.341972531 +0200
-+++ chromium-76.0.3809.100/components/signin/core/browser/account_info.cc 2019-08-23
10:35:02.314972300 +0200
+---
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;
@@ -52,8 +74,8 @@ diff -up
chromium-76.0.3809.100/components/signin/core/browser/account_info.cc.e
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
10:52:29.047592493 +0200
-+++ chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc 2019-08-23
10:52:48.243763687 +0200
+--- 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;
@@ -64,8 +86,8 @@ diff -up
chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc.el7-noexcept
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
10:52:31.541614735 +0200
-+++ chromium-76.0.3809.100/google_apis/gaia/core_account_id.h 2019-08-23
10:53:03.252898948 +0200
+--- 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();
@@ -76,8 +98,8 @@ diff -up
chromium-76.0.3809.100/google_apis/gaia/core_account_id.h.el7-noexcept
// 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-23
10:38:00.659317249 +0200
-+++ chromium-76.0.3809.100/gpu/config/gpu_info.cc 2019-08-23 10:38:00.656317223 +0200
+--- 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;
commit 250b15f9a2ed573472abda7e6cc642f2c3372167
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Aug 23 11:01:37 2019 +0200
More el7 fixes
Merge the previously committed change in to the el7-noexcept patch and
revert another change that is needed on Fedora, but breaking the build
on EL7.
diff --git a/chromium-75.0.3770.100-el7-fix-noexcept.patch
b/chromium-75.0.3770.100-el7-fix-noexcept.patch
deleted file mode 100644
index eaba072..0000000
--- a/chromium-75.0.3770.100-el7-fix-noexcept.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-diff -up chromium-75.0.3770.100/chrome/common/media_router/media_sink.cc.el7-noexcept
chromium-75.0.3770.100/chrome/common/media_router/media_sink.cc
----
chromium-75.0.3770.100/chrome/common/media_router/media_sink.cc.el7-noexcept 2019-06-18
11:47:55.000000000 -0400
-+++ chromium-75.0.3770.100/chrome/common/media_router/media_sink.cc 2019-06-20
10:17:27.440446569 -0400
-@@ -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-75.0.3770.100/components/policy/core/common/policy_map.cc.el7-noexcept
chromium-75.0.3770.100/components/policy/core/common/policy_map.cc
----
chromium-75.0.3770.100/components/policy/core/common/policy_map.cc.el7-noexcept 2019-06-18
11:48:01.000000000 -0400
-+++ chromium-75.0.3770.100/components/policy/core/common/policy_map.cc 2019-06-20
10:17:27.444446463 -0400
-@@ -31,7 +31,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-75.0.3770.100/components/signin/core/browser/account_info.cc.el7-noexcept
chromium-75.0.3770.100/components/signin/core/browser/account_info.cc
----
chromium-75.0.3770.100/components/signin/core/browser/account_info.cc.el7-noexcept 2019-06-20
10:17:27.444446463 -0400
-+++ chromium-75.0.3770.100/components/signin/core/browser/account_info.cc 2019-06-20
10:19:17.959532865 -0400
-@@ -51,7 +51,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 {
-diff -up chromium-75.0.3770.100/gpu/config/gpu_info.cc.el7-noexcept
chromium-75.0.3770.100/gpu/config/gpu_info.cc
---- chromium-75.0.3770.100/gpu/config/gpu_info.cc.el7-noexcept 2019-06-18
11:48:10.000000000 -0400
-+++ chromium-75.0.3770.100/gpu/config/gpu_info.cc 2019-06-20 10:17:27.445446437 -0400
-@@ -181,7 +181,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-el7-gcc-accountinfo-move-noexcept.patch
b/chromium-76.0.3809.100-el7-gcc-accountinfo-move-noexcept.patch
deleted file mode 100644
index 09fccf6..0000000
--- a/chromium-76.0.3809.100-el7-gcc-accountinfo-move-noexcept.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff -up
chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc.gcc-accountinfo-move-noexcept-epel
chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc
----
chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc.gcc-accountinfo-move-noexcept-epel 2019-08-23
07:35:16.544308344 +0200
-+++ chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc 2019-08-23
07:35:34.115441446 +0200
-@@ -14,8 +14,6 @@ CoreAccountId::~CoreAccountId() = defaul
-
- 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 -up
chromium-76.0.3809.100/google_apis/gaia/core_account_id.h.gcc-accountinfo-move-noexcept-epel
chromium-76.0.3809.100/google_apis/gaia/core_account_id.h
----
chromium-76.0.3809.100/google_apis/gaia/core_account_id.h.gcc-accountinfo-move-noexcept-epel 2019-08-23
07:36:05.994682935 +0200
-+++ chromium-76.0.3809.100/google_apis/gaia/core_account_id.h 2019-08-23
07:36:13.039736302 +0200
-@@ -19,7 +19,6 @@ struct CoreAccountId {
- ~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
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..054d42e
--- /dev/null
+++ b/chromium-76.0.3809.100-el7-noexcept.patch
@@ -0,0 +1,89 @@
+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
10:35:14.911079823 +0200
++++ chromium-76.0.3809.100/chrome/common/media_router/media_sink.cc 2019-08-23
10:35:14.911079823 +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/url_row.cc.el7-noexcept
chromium-76.0.3809.100/components/history/core/browser/url_row.cc
+diff -up chromium-76.0.3809.100/components/history/core/browser/url_row.h.el7-noexcept
chromium-76.0.3809.100/components/history/core/browser/url_row.h
+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
10:35:01.127962168 +0200
++++ chromium-76.0.3809.100/components/policy/core/common/policy_map.cc 2019-08-23
10:35:01.075961724 +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
10:35:02.341972531 +0200
++++ chromium-76.0.3809.100/components/signin/core/browser/account_info.cc 2019-08-23
10:35:02.314972300 +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
10:52:29.047592493 +0200
++++ chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc 2019-08-23
10:52:48.243763687 +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
10:52:31.541614735 +0200
++++ chromium-76.0.3809.100/google_apis/gaia/core_account_id.h 2019-08-23
10:53:03.252898948 +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-23
10:38:00.659317249 +0200
++++ chromium-76.0.3809.100/gpu/config/gpu_info.cc 2019-08-23 10:38:00.656317223 +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.spec b/chromium.spec
index e09a0ac..c961abc 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -310,9 +310,7 @@ 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-75.0.3770.100-el7-fix-noexcept.patch
-# el7 only patch as it doesn't like on of the operator= change in patch59
-Patch103: chromium-76.0.3809.100-el7-gcc-accountinfo-move-noexcept.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:
@@ -887,7 +885,8 @@ udev.
%patch100 -p1 -b .kmaxskip
%patch101 -p1 -b .epel7
%patch102 -p1 -b .el7-noexcept
-%patch103 -p1 -b .el7-gcc-accountinfo-move-noexcept
+# Revert patch58 because it's breaking the build on el7
+%patch58 -R -p1
%endif
# Feature specific patches
commit fcd18a8550ce791c6826f2ccbabb31ffef32a923
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Aug 23 07:54:57 2019 +0200
Fix the EL7 build as it doesn't like part of the upstream GCC patch
diff --git a/chromium-76.0.3809.100-el7-gcc-accountinfo-move-noexcept.patch
b/chromium-76.0.3809.100-el7-gcc-accountinfo-move-noexcept.patch
new file mode 100644
index 0000000..09fccf6
--- /dev/null
+++ b/chromium-76.0.3809.100-el7-gcc-accountinfo-move-noexcept.patch
@@ -0,0 +1,23 @@
+diff -up
chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc.gcc-accountinfo-move-noexcept-epel
chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc
+---
chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc.gcc-accountinfo-move-noexcept-epel 2019-08-23
07:35:16.544308344 +0200
++++ chromium-76.0.3809.100/google_apis/gaia/core_account_id.cc 2019-08-23
07:35:34.115441446 +0200
+@@ -14,8 +14,6 @@ CoreAccountId::~CoreAccountId() = defaul
+
+ 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 -up
chromium-76.0.3809.100/google_apis/gaia/core_account_id.h.gcc-accountinfo-move-noexcept-epel
chromium-76.0.3809.100/google_apis/gaia/core_account_id.h
+---
chromium-76.0.3809.100/google_apis/gaia/core_account_id.h.gcc-accountinfo-move-noexcept-epel 2019-08-23
07:36:05.994682935 +0200
++++ chromium-76.0.3809.100/google_apis/gaia/core_account_id.h 2019-08-23
07:36:13.039736302 +0200
+@@ -19,7 +19,6 @@ struct CoreAccountId {
+ ~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
diff --git a/chromium.spec b/chromium.spec
index 8a246b7..e09a0ac 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -311,6 +311,8 @@ Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
Patch101: chromium-75.0.3770.100-epel7-stdc++.patch
# el7 only patch
Patch102: chromium-75.0.3770.100-el7-fix-noexcept.patch
+# el7 only patch as it doesn't like on of the operator= change in patch59
+Patch103: chromium-76.0.3809.100-el7-gcc-accountinfo-move-noexcept.patch
# In file included from ../linux/directory.c:21:
# In file included from ../../../../native_client/src/nonsfi/linux/abi_conversion.h:20:
@@ -885,6 +887,7 @@ udev.
%patch100 -p1 -b .kmaxskip
%patch101 -p1 -b .epel7
%patch102 -p1 -b .el7-noexcept
+%patch103 -p1 -b .el7-gcc-accountinfo-move-noexcept
%endif
# Feature specific patches
commit 32351d81ff14bde0babcab29de22c9c28d8a53d7
Author: Nicolas Chauvet <kwizart(a)gmail.com>
Date: Fri Aug 23 18:15:28 2019 +0200
Clean-up gitignore using wildcard
diff --git a/.gitignore b/.gitignore
index 2bfdc54..06de94b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,51 +1,7 @@
/chromium-52.0.2743.75-clean.tar.xz
/depot_tools.git-master.tar.gz
/policy_templates.zip
-/chromium-52.0.2743.82-clean.tar.xz
-/chromium-52.0.2743.116-clean.tar.xz
-/chromium-53.0.2785.92-clean.tar.xz
-/chromium-53.0.2785.101-clean.tar.xz
-/chromium-53.0.2785.113-clean.tar.xz
-/chromium-53.0.2785.116-clean.tar.xz
-/chromium-53.0.2785.143-clean.tar.xz
-/chromium-54.0.2840.59-clean.tar.xz
-/chromium-54.0.2840.71-clean.tar.xz
-/chromium-54.0.2840.90-clean.tar.xz
-/chromium-54.0.2840.100.tar.xz
-/chromium-54.0.2840.100-clean.tar.xz
-/chromium-55.0.2883.75-clean.tar.xz
-/chromium-55.0.2883.87-clean.tar.xz
-/chromium-56.0.2924.87-clean.tar.xz
-/chromium-57.0.2987.110-clean.tar.xz
-/chromium-57.0.2987.133-clean.tar.xz
-/chromium-58.0.3029.81-clean.tar.xz
-/chromium-58.0.3029.110-clean.tar.xz
-/chromium-59.0.3071.86-clean.tar.xz
-/chromium-59.0.3071.104-clean.tar.xz
-/chromium-59.0.3071.109-clean.tar.xz
-/chromium-59.0.3071.115-clean.tar.xz
-/chromium-59.0.3071.109-freetype.tar.bz2
-/chromium-60.0.3112.90-clean.tar.xz
-/chromium-60.0.3112.101-clean.tar.xz
-/chromium-60.0.3112.113-clean.tar.xz
-/chromium-60.0.3112.113.tar.xz
-/chromium-61.0.3163.79-clean.tar.xz
-/chromium-61.0.3163.100-clean.tar.xz
-/chromium-62.0.3202.75-clean.tar.xz
-/chromium-62.0.3202.89-clean.tar.xz
-/chromium-63.0.3239.84-clean.tar.xz
-/chromium-63.0.3239.108-clean.tar.xz
-/chromium-64.0.3282.119-clean.tar.xz
-/chromium-64.0.3282.140-clean.tar.xz
-/chromium-64.0.3282.167-clean.tar.xz
-/chromium-64.0.3282.186-clean.tar.xz
-/chromium-65.0.3325.146-clean.tar.xz
-/chromium-65.0.3325.162-clean.tar.xz
-/chromium-65.0.3325.181-clean.tar.xz
-/chromium-66.0.3359.139-clean.tar.xz
-/chromium-66.0.3359.170-clean.tar.xz
-/chromium-66.0.3359.181-clean.tar.xz
-/chromium-67.0.3396.62-clean.tar.xz
+/chromium-*.tar.xz
/gelasio.zip
/MuktiNarrow-0.94.tar.bz2
/NotoSansCJKjp-hinted.zip
@@ -62,23 +18,5 @@
/Tinos-Bold.ttf
/Tinos-Italic.ttf
/Tinos-Regular.ttf
-/chromium-67.0.3396.79-clean.tar.xz
-/chromium-67.0.3396.87-clean.tar.xz
-/chromium-67.0.3396.99-clean.tar.xz
-/chromium-68.0.3440.106-clean.tar.xz
/Ahem.ttf
-/chromium-69.0.3497.92-clean.tar.xz
-/chromium-69.0.3497.100-clean.tar.xz
-/chromium-70.0.3538.77-clean.tar.xz
-/chromium-70.0.3538.110-clean.tar.xz
-/chromium-71.0.3578.98-clean.tar.xz
/node-v8.9.1-linux-x64.tar.gz
-/chromium-72.0.3626.121-clean.tar.xz
-/chromium-73.0.3683.75-clean.tar.xz
-/chromium-73.0.3683.86-clean.tar.xz
-/chromium-73.0.3683.103-clean.tar.xz
-/chromium-74.0.3729.169-clean.tar.xz
-/chromium-75.0.3770.80-clean.tar.xz
-/chromium-75.0.3770.90-clean.tar.xz
-/chromium-75.0.3770.100-clean.tar.xz
-/chromium-76.0.3809.100-clean.tar.xz
commit 02877cca954a9e0168139293baedef66fd483257
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Wed Aug 21 13:51:11 2019 +0200
Update the list of private libraries and remove a pak file that was removed
diff --git a/chromium.spec b/chromium.spec
index e06bcdd..8a246b7 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -54,9 +54,9 @@
%global __provides_exclude_from
%{chromium_path}/.*\\.so|%{chromium_path}/lib/.*\\.so|%{chromium_path}/lib/.*\\.so.*
%if 0%{?rhel} == 7
-%global privlibs
libEGL|libGLESv2|libVkICD_mock_icd|libVkLayer_core_validation|libVkLayer_object_lifetimes|libVkLayer_stateless_validation|libVkLayer_thread_safety|libVkLayer_unique_objects|libaccessibility|libandroid_mojo_bindings_shared|libanimation|libapdu|libaura|libaura_extra|libauthenticator_test_mojo_bindings_shared|libbase|libbase_i18n|libbindings|libbindings_base|libblink_common|libblink_controller|libblink_core|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_features|libblink_modules|libblink_mojo_bindings_shared|libblink_mojom_broadcastchannel_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcbor|libcc|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcdm_manager|libcertificate_matching|libchrome_features|libchromium_sqlite3|libclearkeycdm|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libcontent_common_mojo_bindings_shared|libcontent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom|libcontent_service_mojom_shared|libcrash_key|libcrcrypto|libdbus|libdbus_thread_linux|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevice_vr|libdevice_vr_mojo_bindings|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libembedder_switches|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libextras|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_shared_typemap_traits|libgcm|libgeometry|libgeometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_switches|libgfx_x11|libgin|libgl_in_process_context|libgl_init|libgl_wrapper|libgles2|libgles2_implementation|libgles2_utils|libgpu|libgpu_ipc_service|libgtkui|libheadless|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc|libipc_mojom|libipc_mojom_shared|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|liblearning_common|liblearning_impl|libleveldatabase|liblive_tab_count_metrics|libmanager|libmedia_blink|libmedia_filters_jpeg_parser|libmedia_gpu|libmedia_mojo_services|libmedia_session_cpp|libmedia_webrtc|libmemory_instrumentation|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmirclient.so.9|libmirroring_service|libmojo_base_lib|libmojo_base_mojom|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_shared_typemap_traits|libmojo_core_embedder|libmojo_core_embedder_internal|libmojo_core_ports|libmojo_cpp_platform|libmojo_ime_lib|libmojo_mojom_bindings|libmojo_mojom_bindings_shared|libmojo_public_system|libmojo_public_system_cpp|libmojom_core_shared|libmojom_mhtml_load_result_shared|libmojom_modules_shared|libmojom_platform_shared|libmpris|libnative_theme|libnet|libnet_with_v8|libnetwork_cpp|libnetwork_cpp_base|libnetwork_service|libnetwork_session_configurator|libonc|libos_crypt|libperfetto|libplatform|libplatform_window_handler_libs|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_cpp_base|libresource_coordinator_cpp_features|libresource_coordinator_public_mojom|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libsandbox|libsandbox_services|libscheduling_metrics|libseccomp_bpf|libservice|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom|libservice_manager_mojom_blink|libservice_manager_mojom_constants|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_shared|libservice_manager_mojom_traits|libsessions|libshared_memory_support|libshell_dialogs|libskia|libsnapshot|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libtracing_cpp|libtracing_mojom|libtracing_mojom_shared|libui_accessibility_ax_mojom|libui_accessibility_ax_mojom_blink|libui_accessibility_ax_mojom_shared|libui_base|libui_base_clipboard|libui_base_clipboard_types|libui_base_features|libui_base_idle|libui_base_ime|libui_base_ime_init|libui_base_ime_linux|libui_base_ime_types|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|libui_views_mus_lib|liburl|liburl_ipc|liburl_matcher|libusb_shared|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libviz_common|libviz_resource_format_utils|libviz_vulkan_context_provider|libvr_base|libvr_common|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_dialogs|libweb_feature_mojo_bindings_mojom|libweb_feature_mojo_bindings_mojom_blink|libweb_feature_mojo_bindings_mojom_shared|libwebdata_common|libwebgpu|libwebview|libwm|libwm_public|libwtf|libx11_events_platform|libx11_window|libzygote|libmedia|libffmpeg|libfontconfig
+%global privlibs
libevents_devices_x11|libgfx_x11|libevents_x|libgl_wrapper|libmemory_instrumentation|libdevice_vr_mojo_bindings|libdiscardable_memory_common|libui_base_ime_init|libnetwork_cpp_base|libos_crypt|libmessage_center|libmanager|libdevice_gamepad|libembedder|libGLESv2|libtracing|libskia|libgl_in_process_context|libapdu|libbluetooth|libviz_resource_format_utils|libmojo_mojom_bindings|libblink_platform|libmojom_modules_shared|libwebdata_common|libshell_dialogs|libresource_coordinator_public_mojom_blink|libgles2_utils|libgpu_ipc_service|libcaptive_portal|libvr_common|libgles2|libdisplay|libgfx_ipc_geometry|libcc_paint|libandroid_mojo_bindings_shared|libipc_mojom_shared|libffmpeg|liburl_matcher|libbindings|libservice|libwtf|libcommon|libleveldatabase|libnetwork_session_configurator|libaura|libcloud_policy_proto_generated_compile|libservice_manager_mojom_constants|libui_touch_selection|libmojo_base_lib|libservice_manager_cpp_types|libservice_manager_mojom_blink|libmojo_core_embedder|libblink_embedded_frame_sink_mojo_bindings_shared|libgesture_detection|liburl_ipc|libweb_feature_mojo_bindings_mojom|libscheduling_metrics|libresource_coordinator_cpp_features|libcc|libdiscardable_memory_client|libsessions|libblink_common|libipc|libvulkan_init|libblink_mojom_broadcastchannel_bindings_shared|libheadless_non_renderer|libcbor|libmojo_core_embedder_internal|libmojo_public_system_cpp|libmojom_core_shared|libgfx|libusb_shared|libtracing_mojom|libuser_manager|libnet|libwebgpu|libplatform_window_handler_libs|libmojo_base_mojom_shared|libui_base|libprinting|libcontent_service_mojom_shared|libstartup_tracing|libdevice_vr_mojo_bindings_blink|libraster|libsandbox|libv8_libbase|libevents|libui_base_idle|libgles2_implementation|libkeyed_service_content|libprefs|libVkLayer_core_validation|libchrome_features|libdiscardable_memory_service|libcapture_lib|libperfetto|libicui18n|libdomain_reliability|libweb_dialogs|libcc_animation|libbase|libtracing_cpp|libGLESv2|libEGL|libVkLayer_thread_safety|libmedia_gpu|libparsers|libservice_manager_cpp|liblearning_common|libdevices|libvulkan_wrapper|libservice_manager_mojom_shared|libgfx_switches|libkeycodes_x11|libweb_feature_mojo_bindings_mojom_shared|liburl|libmpris|libppapi_proxy|libmojo_base_mojom|libprotobuf_lite|libui_base_features|libdevice_vr|libwm_public|libcolor_space|libseccomp_bpf|libinterfaces_shared|libui_base_x|libicuuc|libwebview|libdevice_event_log|libVkLayer_object_lifetimes|libvulkan_x11|libproxy_config|libnetwork_cpp|libextras|libVkICD_mock_icd|libv8_libplatform|libresource_coordinator_public_mojom|libwm|libviews|libsuid_sandbox_client|libEGL|libcapture_base|libnative_theme|libcrcrypto|libmojo_public_system|libservice_manager_mojom_constants_shared|libui_accessibility_ax_mojom_blink|libplatform|libui_data_pack|libgfx_ipc_buffer_types|libclearkeycdm|libmetrics_cpp|libmojo_base_shared_typemap_traits|libx11_events_platform|libcrash_key|libclient|libblink_controller|libfido|libfreetype_harfbuzz|libmojo_mojom_bindings_shared|libaccessibility|libstub_window|libui_base_ime|libpolicy_component|libweb_bluetooth_mojo_bindings_shared|libmojo_core_ports|libsandbox_services|libstorage_common|libviz_vulkan_context_provider|libcontent_common_mojo_bindings_shared|libgamepad_mojom_blink|libkeyed_service_core|libmedia_mojo_services|libmojo_ime_lib|libblink_modules|libgcm|libsql|libgeometry_skia|libVkLayer_unique_objects|libweb_feature_mojo_bindings_mojom_blink|libui_base_ime_linux|libdisplay_types|libdevice_vr_mojo_bindings_shared|libcc_base|libtracing_mojom_shared|libmedia_blink|libcc_mojo_embedder|libpdfium|libevents_ozone_layout|libgfx_ipc_color|libgtkui|libpolicy_proto|libcodec|libgpu|libcontent_service_cpp|libmojom_mhtml_load_result_shared|libdisplay_util|libcontent_service_mojom|libbase_i18n|libservice_manager_mojom_constants_blink|libcompositor|libmojo_base_mojom_blink|libui_message_center_cpp|libsnapshot|libdbus_thread_linux|libtab_count_metrics|libpublic|libui_accessibility_ax_mojom|liblearning_impl|librange|libbrowser_ui_views|libcontent|libvr_base|libppapi_host|libservice_manager_mojom_traits|libgamepad_mojom|libcertificate_matching|libgfx_ipc|libgl_init|libVkLayer_stateless_validation|libshared_with_blink|libshared_memory_support|libevents_base|libnet_with_v8|libmedia_webrtc|libsurface|libcontent_public_common_mojo_bindings_shared|libaura_extra|libdevice_base|libonc|libcdm_manager|libmojom_platform_shared|libui_accessibility_ax_mojom_shared|libhost|libblink_features|libdevice_features|libmirroring_service|libdbus|libgeometry|libchromium_sqlite3|libgamepad_mojom_shared|libauthenticator_test_mojo_bindings_shared|libboringssl|libembedder_switches|libgfx_ipc_skia|libzygote|libmedia_session_cpp|libv8|libnetwork_service|libx11_window|libui_base_clipboard|libanimation|libmessage_support|libui_devtools|libgamepad_shared_typemap_traits|libfingerprint|libviz_common|libppapi_shared|libstorage_browser|libbindings_base|libservice_manager_mojom|libblink_core|libgin|libresource_coordinator_public_mojom_shared|libuser_prefs|libui_base_ime_types|libipc_mojom|libmidi|libmojo_cpp_platform|libcc_debug|libui_base_clipboard_types|libmedia|libfontconfig
%else
-%global privlibs
libEGL|libGLESv2|libVkICD_mock_icd|libVkLayer_core_validation|libVkLayer_object_lifetimes|libVkLayer_stateless_validation|libVkLayer_thread_safety|libVkLayer_unique_objects|libaccessibility|libandroid_mojo_bindings_shared|libanimation|libapdu|libaura|libaura_extra|libauthenticator_test_mojo_bindings_shared|libbase|libbase_i18n|libbindings|libbindings_base|libblink_common|libblink_controller|libblink_core|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_features|libblink_modules|libblink_mojo_bindings_shared|libblink_mojom_broadcastchannel_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcbor|libcc|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcdm_manager|libcertificate_matching|libchrome_features|libchromium_sqlite3|libclearkeycdm|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libcontent_common_mojo_bindings_shared|libcontent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom|libcontent_service_mojom_shared|libcrash_key|libcrcrypto|libdbus|libdbus_thread_linux|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevice_vr|libdevice_vr_mojo_bindings|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libembedder_switches|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libextras|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_shared_typemap_traits|libgcm|libgeometry|libgeometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_switches|libgfx_x11|libgin|libgl_in_process_context|libgl_init|libgl_wrapper|libgles2|libgles2_implementation|libgles2_utils|libgpu|libgpu_ipc_service|libgtkui|libheadless|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc|libipc_mojom|libipc_mojom_shared|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|liblearning_common|liblearning_impl|libleveldatabase|liblive_tab_count_metrics|libmanager|libmedia_blink|libmedia_filters_jpeg_parser|libmedia_gpu|libmedia_mojo_services|libmedia_session_cpp|libmedia_webrtc|libmemory_instrumentation|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmirclient.so.9|libmirroring_service|libmojo_base_lib|libmojo_base_mojom|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_shared_typemap_traits|libmojo_core_embedder|libmojo_core_embedder_internal|libmojo_core_ports|libmojo_cpp_platform|libmojo_ime_lib|libmojo_mojom_bindings|libmojo_mojom_bindings_shared|libmojo_public_system|libmojo_public_system_cpp|libmojom_core_shared|libmojom_mhtml_load_result_shared|libmojom_modules_shared|libmojom_platform_shared|libmpris|libnative_theme|libnet|libnet_with_v8|libnetwork_cpp|libnetwork_cpp_base|libnetwork_service|libnetwork_session_configurator|libonc|libos_crypt|libperfetto|libplatform|libplatform_window_handler_libs|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_cpp_base|libresource_coordinator_cpp_features|libresource_coordinator_public_mojom|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libsandbox|libsandbox_services|libscheduling_metrics|libseccomp_bpf|libservice|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom|libservice_manager_mojom_blink|libservice_manager_mojom_constants|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_shared|libservice_manager_mojom_traits|libsessions|libshared_memory_support|libshell_dialogs|libskia|libsnapshot|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libtracing_cpp|libtracing_mojom|libtracing_mojom_shared|libui_accessibility_ax_mojom|libui_accessibility_ax_mojom_blink|libui_accessibility_ax_mojom_shared|libui_base|libui_base_clipboard|libui_base_clipboard_types|libui_base_features|libui_base_idle|libui_base_ime|libui_base_ime_init|libui_base_ime_linux|libui_base_ime_types|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|libui_views_mus_lib|liburl|liburl_ipc|liburl_matcher|libusb_shared|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libviz_common|libviz_resource_format_utils|libviz_vulkan_context_provider|libvr_base|libvr_common|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_dialogs|libweb_feature_mojo_bindings_mojom|libweb_feature_mojo_bindings_mojom_blink|libweb_feature_mojo_bindings_mojom_shared|libwebdata_common|libwebgpu|libwebview|libwm|libwm_public|libwtf|libx11_events_platform|libx11_window|libzygote|libmedia|libffmpeg
+%global privlibs
libevents_devices_x11|libgfx_x11|libevents_x|libgl_wrapper|libmemory_instrumentation|libdevice_vr_mojo_bindings|libdiscardable_memory_common|libui_base_ime_init|libnetwork_cpp_base|libos_crypt|libmessage_center|libmanager|libdevice_gamepad|libembedder|libGLESv2|libtracing|libskia|libgl_in_process_context|libapdu|libbluetooth|libviz_resource_format_utils|libmojo_mojom_bindings|libblink_platform|libmojom_modules_shared|libwebdata_common|libshell_dialogs|libresource_coordinator_public_mojom_blink|libgles2_utils|libgpu_ipc_service|libcaptive_portal|libvr_common|libgles2|libdisplay|libgfx_ipc_geometry|libcc_paint|libandroid_mojo_bindings_shared|libipc_mojom_shared|libffmpeg|liburl_matcher|libbindings|libservice|libwtf|libcommon|libleveldatabase|libnetwork_session_configurator|libaura|libcloud_policy_proto_generated_compile|libservice_manager_mojom_constants|libui_touch_selection|libmojo_base_lib|libservice_manager_cpp_types|libservice_manager_mojom_blink|libmojo_core_embedder|libblink_embedded_frame_sink_mojo_bindings_shared|libgesture_detection|liburl_ipc|libweb_feature_mojo_bindings_mojom|libscheduling_metrics|libresource_coordinator_cpp_features|libcc|libdiscardable_memory_client|libsessions|libblink_common|libipc|libvulkan_init|libblink_mojom_broadcastchannel_bindings_shared|libheadless_non_renderer|libcbor|libmojo_core_embedder_internal|libmojo_public_system_cpp|libmojom_core_shared|libgfx|libusb_shared|libtracing_mojom|libuser_manager|libnet|libwebgpu|libplatform_window_handler_libs|libmojo_base_mojom_shared|libui_base|libprinting|libcontent_service_mojom_shared|libstartup_tracing|libdevice_vr_mojo_bindings_blink|libraster|libsandbox|libv8_libbase|libevents|libui_base_idle|libgles2_implementation|libkeyed_service_content|libprefs|libVkLayer_core_validation|libchrome_features|libdiscardable_memory_service|libcapture_lib|libperfetto|libicui18n|libdomain_reliability|libweb_dialogs|libcc_animation|libbase|libtracing_cpp|libGLESv2|libEGL|libVkLayer_thread_safety|libmedia_gpu|libparsers|libservice_manager_cpp|liblearning_common|libdevices|libvulkan_wrapper|libservice_manager_mojom_shared|libgfx_switches|libkeycodes_x11|libweb_feature_mojo_bindings_mojom_shared|liburl|libmpris|libppapi_proxy|libmojo_base_mojom|libprotobuf_lite|libui_base_features|libdevice_vr|libwm_public|libcolor_space|libseccomp_bpf|libinterfaces_shared|libui_base_x|libicuuc|libwebview|libdevice_event_log|libVkLayer_object_lifetimes|libvulkan_x11|libproxy_config|libnetwork_cpp|libextras|libVkICD_mock_icd|libv8_libplatform|libresource_coordinator_public_mojom|libwm|libviews|libsuid_sandbox_client|libEGL|libcapture_base|libnative_theme|libcrcrypto|libmojo_public_system|libservice_manager_mojom_constants_shared|libui_accessibility_ax_mojom_blink|libplatform|libui_data_pack|libgfx_ipc_buffer_types|libclearkeycdm|libmetrics_cpp|libmojo_base_shared_typemap_traits|libx11_events_platform|libcrash_key|libclient|libblink_controller|libfido|libfreetype_harfbuzz|libmojo_mojom_bindings_shared|libaccessibility|libstub_window|libui_base_ime|libpolicy_component|libweb_bluetooth_mojo_bindings_shared|libmojo_core_ports|libsandbox_services|libstorage_common|libviz_vulkan_context_provider|libcontent_common_mojo_bindings_shared|libgamepad_mojom_blink|libkeyed_service_core|libmedia_mojo_services|libmojo_ime_lib|libblink_modules|libgcm|libsql|libgeometry_skia|libVkLayer_unique_objects|libweb_feature_mojo_bindings_mojom_blink|libui_base_ime_linux|libdisplay_types|libdevice_vr_mojo_bindings_shared|libcc_base|libtracing_mojom_shared|libmedia_blink|libcc_mojo_embedder|libpdfium|libevents_ozone_layout|libgfx_ipc_color|libgtkui|libpolicy_proto|libcodec|libgpu|libcontent_service_cpp|libmojom_mhtml_load_result_shared|libdisplay_util|libcontent_service_mojom|libbase_i18n|libservice_manager_mojom_constants_blink|libcompositor|libmojo_base_mojom_blink|libui_message_center_cpp|libsnapshot|libdbus_thread_linux|libtab_count_metrics|libpublic|libui_accessibility_ax_mojom|liblearning_impl|librange|libbrowser_ui_views|libcontent|libvr_base|libppapi_host|libservice_manager_mojom_traits|libgamepad_mojom|libcertificate_matching|libgfx_ipc|libgl_init|libVkLayer_stateless_validation|libshared_with_blink|libshared_memory_support|libevents_base|libnet_with_v8|libmedia_webrtc|libsurface|libcontent_public_common_mojo_bindings_shared|libaura_extra|libdevice_base|libonc|libcdm_manager|libmojom_platform_shared|libui_accessibility_ax_mojom_shared|libhost|libblink_features|libdevice_features|libmirroring_service|libdbus|libgeometry|libchromium_sqlite3|libgamepad_mojom_shared|libauthenticator_test_mojo_bindings_shared|libboringssl|libembedder_switches|libgfx_ipc_skia|libzygote|libmedia_session_cpp|libv8|libnetwork_service|libx11_window|libui_base_clipboard|libanimation|libmessage_support|libui_devtools|libgamepad_shared_typemap_traits|libfingerprint|libviz_common|libppapi_shared|libstorage_browser|libbindings_base|libservice_manager_mojom|libblink_core|libgin|libresource_coordinator_public_mojom_shared|libuser_prefs|libui_base_ime_types|libipc_mojom|libmidi|libmojo_cpp_platform|libcc_debug|libui_base_clipboard_types|libmedia
%endif
%global __requires_exclude ^(%{privlibs})\\.so*
@@ -1753,7 +1753,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/
commit 234bd983cba301fe205f7b9c924fd5acbbf415c4
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Tue Aug 20 22:07:44 2019 +0200
Fix the previously uploaded patch
diff --git a/chromium-76.0.3809.100-gcc-remoting-constexpr.patch
b/chromium-76.0.3809.100-gcc-remoting-constexpr.patch
index c59702f..aec3107 100644
--- a/chromium-76.0.3809.100-gcc-remoting-constexpr.patch
+++ b/chromium-76.0.3809.100-gcc-remoting-constexpr.patch
@@ -12,13 +12,13 @@ diff -up
chromium-76.0.3809.100/remoting/signaling/message_tracker.cc.gcc-conste
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
21:27:53.539653248 +0200
+--- 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 constexpr base::TimeDelta kCleanupInterval;
+- static const base::TimeDelta kCleanupInterval;
+ static constexpr base::TimeDelta kCleanupInterval =
+ base::TimeDelta::FromMinutes(2);
commit 05ed80ce7ee4f1c18ac322cf720e62d21ec15bbc
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Tue Aug 20 21:36:06 2019 +0200
Fix the build of remoting_all target
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..c59702f
--- /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
21:27:53.539653248 +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 constexpr 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-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.spec b/chromium.spec
index f003849..e06bcdd 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -297,10 +297,13 @@ Patch58: chromium-76.0.3809.100-gcc-history-move-noexcept.patch
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
-# TBD - need to submit it
-# In GCC one can't use alignas() for exported classes (as described in
-#
https://cs.chromium.org/chromium/src/base/compiler_specific.h?rcl=a5bcc05...)
+# 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
# Apply these changes to work around EPEL7 compiler issues
Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
@@ -874,6 +877,8 @@ udev.
%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
# EPEL specific patches
%if 0%{?rhel} == 7
commit f32de4175a201b0ba68395cf00dec837e06d6079
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Fri Aug 16 13:58:53 2019 +0200
//third_party dependency missing for remoting
diff --git a/chromium.spec b/chromium.spec
index de9e05b..f003849 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -1207,6 +1207,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' \
commit 6ab36cdf55a4aa71200853ab75f3532831f1adab
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Thu Aug 15 21:14:35 2019 +0200
Backport and create more of the GCC fixes
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-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-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-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.spec b/chromium.spec
index 64e3243..de9e05b 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -291,6 +291,16 @@ Patch55: chromium-76.0.3809.100-gcc-hasfraction-constexpr.patch
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
+# TBD - need to submit it
+# In GCC one can't use alignas() for exported classes (as described in
+#
https://cs.chromium.org/chromium/src/base/compiler_specific.h?rcl=a5bcc05...)
+Patch61: chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
# Apply these changes to work around EPEL7 compiler issues
Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
@@ -860,6 +870,10 @@ udev.
%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
# EPEL specific patches
%if 0%{?rhel} == 7
commit cfc50a59ed81324387d036954e96c08805d4f25a
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Thu Aug 15 07:10:04 2019 +0200
Upload the new cleaned tarball with aarch64 sources
Previously I forgot to pass the --ffmpegarm while generating the
tarball.
diff --git a/clean_ffmpeg.sh b/clean_ffmpeg.sh
index e190296..2f27435 100755
--- a/clean_ffmpeg.sh
+++ b/clean_ffmpeg.sh
@@ -216,7 +216,6 @@ manual_files=" libavcodec/aarch64/fft_neon.S \
libavcodec/x86/videodsp_init.c \
libavcodec/x86/vorbisdsp_init.c \
libavcodec/autorename_libavcodec_mdct15.c \
- libavcodec/aarch64/autorename_libavcodec_aarch64_fft_neon.S \
libavcodec/bit_depth_template.c \
libavcodec/fft_template.c \
libavcodec/flacdec.c \
diff --git a/sources b/sources
index d6d53e4..b7a420d 100644
--- a/sources
+++ b/sources
@@ -17,4 +17,4 @@ SHA512 (Tinos-Italic.ttf) =
d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0
SHA512 (Tinos-Regular.ttf) =
58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f
SHA512 (Ahem.ttf) =
aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
SHA512 (node-v8.9.1-linux-x64.tar.gz) =
a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
-SHA512 (chromium-76.0.3809.100-clean.tar.xz) =
ca39cf3df4716293d40ea78d8b6c7beb134340c42051dc5ae243f127729cc13fb60e9d168ccac29d55b4ef47aba598e3211caa8f3a8ed5689748873a36fce753
+SHA512 (chromium-76.0.3809.100-clean.tar.xz) =
418ade473185717595b47fbf49ad58bd9bf7cece43f9e200108a2f4df1391bc6a09673e7c30a9958205e13650ed220ad289fe3d79d140612ec5c0bb7891fc8c8
commit 453dfe1db369095fe7f201737409eb6ff0829790
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Thu Aug 15 07:03:49 2019 +0200
Backport another upstream build fix
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.spec b/chromium.spec
index f91b60b..64e3243 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -289,6 +289,8 @@ Patch54: chromium-76.0.3809.100-gcc-feature-policy-parser.patch
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
# Apply these changes to work around EPEL7 compiler issues
Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
@@ -857,6 +859,7 @@ udev.
%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
# EPEL specific patches
%if 0%{?rhel} == 7
commit 4376be3d5fd00f265b236e6bc9a7814e0b8dfa24
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Wed Aug 14 23:22:37 2019 +0200
Update the Pulseaudio's pa_operation_get_state() signature
Missed it while updating the Pulseaudio signatures.
diff --git a/chromium-76.0.3809.100-pulse-api-change.patch
b/chromium-76.0.3809.100-pulse-api-change.patch
index 37d3dfa..d4e2b46 100644
--- a/chromium-76.0.3809.100-pulse-api-change.patch
+++ b/chromium-76.0.3809.100-pulse-api-change.patch
@@ -1,7 +1,7 @@
-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
16:27:55.057702172 +0200
-+++ chromium-76.0.3809.100/media/audio/pulse/pulse.sigs 2019-08-14 16:37:21.603479886
+0200
-@@ -24,7 +24,7 @@ pa_operation* pa_context_get_source_info
+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);
@@ -10,6 +10,11 @@ diff -up
chromium-76.0.3809.100/media/audio/pulse/pulse.sigs.pulse_api_change ch
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);
commit a491a863e2af05db76391aec32b831d00342a716
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Wed Aug 14 23:17:42 2019 +0200
Add missing ffmpeg file on aarch64
diff --git a/clean_ffmpeg.sh b/clean_ffmpeg.sh
index 2f27435..e190296 100755
--- a/clean_ffmpeg.sh
+++ b/clean_ffmpeg.sh
@@ -216,6 +216,7 @@ manual_files=" libavcodec/aarch64/fft_neon.S \
libavcodec/x86/videodsp_init.c \
libavcodec/x86/vorbisdsp_init.c \
libavcodec/autorename_libavcodec_mdct15.c \
+ libavcodec/aarch64/autorename_libavcodec_aarch64_fft_neon.S \
libavcodec/bit_depth_template.c \
libavcodec/fft_template.c \
libavcodec/flacdec.c \
diff --git a/sources b/sources
index 4e53fd1..d6d53e4 100644
--- a/sources
+++ b/sources
@@ -17,4 +17,4 @@ SHA512 (Tinos-Italic.ttf) =
d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0
SHA512 (Tinos-Regular.ttf) =
58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f
SHA512 (Ahem.ttf) =
aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd
SHA512 (node-v8.9.1-linux-x64.tar.gz) =
a707fd4567041c56e7f9d415e505e3fa650627f31def7fefdd7ec50f9e7066bb33332b67f479e1159d85e1105a7e6d034aad7429f4f3d034c9161170d7e0b844
-SHA512 (chromium-76.0.3809.100-clean.tar.xz) =
f9fecad99618dffbfa3331b77dd82244447382761ca864380ea145d58f4bd90bb1c0fd3d433aca7d71f63e24c4120bff15c3a4dd9b86e94096cdf31c02b80cd5
+SHA512 (chromium-76.0.3809.100-clean.tar.xz) =
ca39cf3df4716293d40ea78d8b6c7beb134340c42051dc5ae243f127729cc13fb60e9d168ccac29d55b4ef47aba598e3211caa8f3a8ed5689748873a36fce753
commit 8b12346860ef33607fa96d2ed9e4b0014889345c
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Wed Aug 14 16:52:41 2019 +0200
Pulseaudio changed the API in 12.99 and we need to adapt the signatures
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..37d3dfa
--- /dev/null
+++ b/chromium-76.0.3809.100-pulse-api-change.patch
@@ -0,0 +1,42 @@
+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
16:27:55.057702172 +0200
++++ chromium-76.0.3809.100/media/audio/pulse/pulse.sigs 2019-08-14 16:37:21.603479886
+0200
+@@ -24,7 +24,7 @@ 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);
+@@ -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.spec b/chromium.spec
index bf6bdcb..f91b60b 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -141,6 +141,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.
@@ -306,6 +313,8 @@ 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/
@@ -491,7 +500,6 @@ BuildRequires: pkgconfig(gtk+-3.0)
%else
BuildRequires: pkgconfig(gtk+-2.0)
%endif
-BuildRequires: pulseaudio-libs-devel
BuildRequires: python2-devel
%if 0%{?fedora} > 27
BuildRequires: python2-beautifulsoup4
@@ -871,6 +879,9 @@ udev.
%endif
%endif
+%if 0%{?pulseaudioapichange}
+%patch205 -p1 -b .pulseaudioapichange
+%endif
# Change shebang in all relevant files in this directory and all subdirectories
# See `man find` for how the `-exec command {} +` syntax works
commit 6c1fd53b98f2b055fe077a77f604ce681272b4a4
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Aug 14 09:52:16 2019 -0400
loosen dependency on chromium-libs in freeworld build
diff --git a/chromium.spec b/chromium.spec
index 0d575b1..bf6bdcb 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -730,7 +730,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
commit 3f2dbf438203976abc9b0107bff6bdf3297c6fae
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Wed Aug 14 15:41:23 2019 +0200
third_party/boringssl/linux-x86_64/crypto/third_party/sike needs to be preserved
diff --git a/chromium.spec b/chromium.spec
index f23664a..0d575b1 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -1137,7 +1137,8 @@ build/linux/unbundle/remove_bundled_libraries.py \
'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-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' \
commit 481c90e3a6ad165906e4760ef4739d4cc10f1376
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Wed Aug 14 15:38:35 2019 +0200
third_party/openscreen need to be preserved
diff --git a/chromium.spec b/chromium.spec
index 383bfa9..f23664a 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -1232,6 +1232,7 @@ build/linux/unbundle/remove_bundled_libraries.py \
%if %{freeworld}
'third_party/openh264' \
%endif
+ 'third_party/openscreen' \
'third_party/opus' \
'third_party/ots' \
'third_party/pdfium' \
commit fcb9e6e6edba2dee44b4896fe6e94eabc5ab8009
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Wed Aug 14 14:38:51 2019 +0200
Backport more build fixes from upstream
diff --git a/chromium-76.0.3809.100-gcc-ambigous-instantiation.patch
b/chromium-76.0.3809.100-gcc-ambigous-instantiation.patch
new file mode 100644
index 0000000..587abf3
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-ambigous-instantiation.patch
@@ -0,0 +1,39 @@
+From 52b5ceac95b67491b1c71f0ef9a32b778bbbaa2e Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Wed, 05 Jun 2019 19:46:55 +0000
+Subject: [PATCH] GCC: avoid ambiguous NoDestructor creation in GetNeverSniffedMimeTypes.
+
+Use brace-list notation to wrap the already existing brace-list for
+initializing the flat-set. This resolves an ambiguous instantiation
+in GCC.
+
+Bug: 819294
+Change-Id: I89ddf12522d62a5140a8c2c41dc98e30ec7a0e78
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1645774
+Reviewed-by: Matt Menke <mmenke(a)chromium.org>
+Commit-Queue: Jos Dapena Paz <jose.dapena(a)lge.com>
+Cr-Commit-Position: refs/heads/master@{#666401}
+---
+
+diff --git a/services/network/cross_origin_read_blocking.cc
b/services/network/cross_origin_read_blocking.cc
+index 30999c0..60a03f6 100644
+--- a/services/network/cross_origin_read_blocking.cc
++++ b/services/network/cross_origin_read_blocking.cc
+@@ -211,7 +211,7 @@
+ // 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
+@@ -224,7 +224,7 @@
+ "application/x-www-form-urlencoded",
+ "application/zip",
+ "text/event-stream",
+- });
++ }};
+
+ // All items need to be lower-case, to support case-insensitive comparisons
+ // later.
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-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-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-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.spec b/chromium.spec
index 602b236..383bfa9 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -268,6 +268,20 @@ Patch47: chromium-76.0.3809.100-gcc-vulkan.patch
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.100-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
# Apply these changes to work around EPEL7 compiler issues
Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
@@ -828,6 +842,13 @@ udev.
%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
# EPEL specific patches
%if 0%{?rhel} == 7