commit b762f0b6cdefd0feef2c5e3aab05c9027a3deea3
Author: qvint <dotqvint(a)gmail.com>
Date: Sun Mar 1 10:32:45 2020 +0300
Update to 80.0.3987.122
chromium-73.0.3683.75-pipewire-cstring-fix.patch | 11 -
chromium-77.0.3865.75-gcc-include-memory.patch | 34 +++
...-use-c++17-to-work-around-ugly-angle-code.patch | 28 +++
chromium-79.0.3945.56-glibc-clock-nanosleep.patch | 52 -----
chromium-80-gcc-abstract.patch | 41 ++++
chromium-80-gcc-blink.patch | 45 ++++
chromium-80-gcc-incomplete-type.patch | 229 +++++++++++++++++++++
chromium-80-gcc-permissive.patch | 33 +++
chromium-80-gcc-quiche.patch | 30 +++
chromium-80-include.patch | 33 +++
chromium-80-unbundle-libxml.patch | 101 +++++++++
...mium-80.0.3987.106-missing-cstddef-header.patch | 44 ++++
...mium-80.0.3987.106-missing-cstring-header.patch | 34 +++
chromium-80.0.3987.87-fix-for-c++17.patch | 190 +++++++++++++++++
chromium-80.0.3987.87-missing-cstdint-header.patch | 55 +++++
chromium-80.0.3987.87-missing-string-header.patch | 11 +
chromium-fix-use_system_harfbuzz-ng.patch | 44 ----
chromium-freeworld.spec | 62 +++---
fix-spammy-unique-font-matching-log.patch | 13 --
icu65.patch | 64 ------
include-algorithm-to-use-std-lower_bound.patch | 49 -----
launch_manager.h-uses-std-vector.patch | 36 ----
sources | 2 +-
23 files changed, 940 insertions(+), 301 deletions(-)
---
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..e1d4bdb
--- /dev/null
+++ b/chromium-77.0.3865.75-gcc-include-memory.patch
@@ -0,0 +1,34 @@
+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 -up
chromium-80.0.3987.106/third_party/webrtc/modules/audio_processing/aec3/reverb_model_estimator.h.missing-memory
chromium-80.0.3987.106/third_party/webrtc/modules/audio_processing/aec3/reverb_model_estimator.h
+---
chromium-80.0.3987.106/third_party/webrtc/modules/audio_processing/aec3/reverb_model_estimator.h.missing-memory 2020-02-21
12:25:17.206021379 -0500
++++
chromium-80.0.3987.106/third_party/webrtc/modules/audio_processing/aec3/reverb_model_estimator.h 2020-02-21
12:25:31.613759976 -0500
+@@ -12,6 +12,7 @@
+ #define MODULES_AUDIO_PROCESSING_AEC3_REVERB_MODEL_ESTIMATOR_H_
+
+ #include <array>
++#include <memory>
+ #include <vector>
+
+ #include "absl/types/optional.h"
+diff -up
chromium-80.0.3987.106/third_party/openscreen/src/util/trace_logging/scoped_trace_operations.h.memory
chromium-80.0.3987.106/third_party/openscreen/src/util/trace_logging/scoped_trace_operations.h
+---
chromium-80.0.3987.106/third_party/openscreen/src/util/trace_logging/scoped_trace_operations.h.memory 2020-02-24
11:35:38.283880819 -0500
++++
chromium-80.0.3987.106/third_party/openscreen/src/util/trace_logging/scoped_trace_operations.h 2020-02-24
11:35:48.366670897 -0500
+@@ -7,6 +7,7 @@
+
+ #include <atomic>
+ #include <cstring>
++#include <memory>
+ #include <stack>
+ #include <vector>
+
diff --git a/chromium-79.0.3945.130-gcc10-use-c++17-to-work-around-ugly-angle-code.patch
b/chromium-79.0.3945.130-gcc10-use-c++17-to-work-around-ugly-angle-code.patch
new file mode 100644
index 0000000..8401ea2
--- /dev/null
+++ b/chromium-79.0.3945.130-gcc10-use-c++17-to-work-around-ugly-angle-code.patch
@@ -0,0 +1,28 @@
+diff -up chromium-79.0.3945.130/third_party/angle/BUILD.gn.fixme
chromium-79.0.3945.130/third_party/angle/BUILD.gn
+--- chromium-79.0.3945.130/third_party/angle/BUILD.gn.fixme 2020-02-05 15:50:58.810040419
-0500
++++ chromium-79.0.3945.130/third_party/angle/BUILD.gn 2020-02-05 15:52:03.720848822
-0500
+@@ -228,6 +228,9 @@ config("angle_common_config") {
+ if (is_android) {
+ libs = [ "log" ]
+ }
++ if (!is_clang) {
++ cflags_cc = [ "-std=c++17" ]
++ }
+ }
+
+ if (is_win && !angle_is_winuwp) {
+diff -up chromium-79.0.3945.130/third_party/angle/src/common/PackedEnums.h.fixme
chromium-79.0.3945.130/third_party/angle/src/common/PackedEnums.h
+--- chromium-79.0.3945.130/third_party/angle/src/common/PackedEnums.h.fixme 2020-02-05
15:35:47.473867905 -0500
++++ chromium-79.0.3945.130/third_party/angle/src/common/PackedEnums.h 2020-02-05
15:36:30.362065300 -0500
+@@ -85,8 +85,9 @@ class PackedEnumMap
+ {
+ // This horrible const_cast pattern is necessary to work around a constexpr
limitation.
+ // See
https://stackoverflow.com/q/34199774/ . Note that it should be fixed
with C++17.
+- const_cast<T &>(const_cast<const Storage &>(
+- mPrivateData)[static_cast<UnderlyingType>(it->first)]) =
it->second;
++ // const_cast<T &>(const_cast<const Storage &>(
++ // mPrivateData)[static_cast<UnderlyingType>(it->first)]) =
it->second;
++ mPrivateData[static_cast<UnderlyingType>(it->first)] =
it->second;
+ }
+ }
+
diff --git a/chromium-80-gcc-abstract.patch b/chromium-80-gcc-abstract.patch
new file mode 100644
index 0000000..190a672
--- /dev/null
+++ b/chromium-80-gcc-abstract.patch
@@ -0,0 +1,41 @@
+In file included from ../../third_party/blink/renderer/platform/heap/persistent.h:18,
+ from ../../third_party/blink/public/platform/web_private_ptr.h:40,
+ from
../../third_party/blink/public/platform/web_media_stream_track.h:33,
+ from
../../third_party/blink/public/platform/web_media_stream_source.h:37,
+ from
../../third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.h:19,
+ from
../../third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.cc:5:
+../../third_party/blink/renderer/platform/wtf/cross_thread_copier.h: In instantiation of
'struct WTF::CrossThreadCopierPassThrough<webrtc::VideoTrackInterface>':
+../../third_party/blink/renderer/modules/peerconnection/adapters/web_rtc_cross_thread_copier.h:169:14:
required from here
+../../third_party/blink/renderer/platform/wtf/cross_thread_copier.h:80:15: error: invalid
abstract return type 'webrtc::VideoTrackInterface'
+ 80 | static Type Copy(const T& parameter) { return parameter; }
+ | ^~~~
+In file included from ../../third_party/webrtc/api/peer_connection_interface.h:88,
+ from
../../third_party/blink/public/platform/web_rtc_peer_connection_handler.h:39,
+ from
../../third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.h:20,
+ from
../../third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.cc:5:
+../../third_party/webrtc/api/media_stream_interface.h:174:18: note: because the
following virtual functions are pure within 'webrtc::VideoTrackInterface':
+ 174 | class RTC_EXPORT VideoTrackInterface
+ | ^~~~~~~~~~~~~~~~~~~
+../../third_party/webrtc/api/media_stream_interface.h:48:16: note: 'virtual void
webrtc::NotifierInterface::RegisterObserver(webrtc::ObserverInterface*)'
+ 48 | virtual void RegisterObserver(ObserverInterface* observer) = 0;
+ | ^~~~~~~~~~~~~~~~
+../../third_party/webrtc/api/media_stream_interface.h:49:16: note: 'virtual void
webrtc::NotifierInterface::UnregisterObserver(webrtc::ObserverInterface*)'
+ 49 | virtual void UnregisterObserver(ObserverInterface* observer) = 0;
+ | ^~~~~~~~~~~~~~~~~~
+
+diff --git
a/third_party/blink/renderer/modules/peerconnection/adapters/web_rtc_cross_thread_copier.h
b/third_party/blink/renderer/modules/peerconnection/adapters/web_rtc_cross_thread_copier.h
+index 54cb7d1..0d6c40f 100644
+---
a/third_party/blink/renderer/modules/peerconnection/adapters/web_rtc_cross_thread_copier.h
++++
b/third_party/blink/renderer/modules/peerconnection/adapters/web_rtc_cross_thread_copier.h
+@@ -165,8 +165,9 @@ struct CrossThreadCopier<blink::MediaStreamVideoTrack>
+ };
+
+ template <>
+-struct CrossThreadCopier<webrtc::VideoTrackInterface>
+- : public CrossThreadCopierPassThrough<webrtc::VideoTrackInterface> {
++struct CrossThreadCopier<rtc::scoped_refptr<webrtc::VideoTrackInterface>>
++ : public CrossThreadCopierPassThrough<
++ rtc::scoped_refptr<webrtc::VideoTrackInterface>> {
+ STATIC_ONLY(CrossThreadCopier);
+ };
+
diff --git a/chromium-80-gcc-blink.patch b/chromium-80-gcc-blink.patch
new file mode 100644
index 0000000..2118b46
--- /dev/null
+++ b/chromium-80-gcc-blink.patch
@@ -0,0 +1,45 @@
+../../third_party/blink/renderer/core/editing/commands/delete_selection_command.cc: In
member function 'void
blink::DeleteSelectionCommand::InitializePositionData(blink::EditingState*)':
+../../third_party/blink/renderer/core/editing/commands/delete_selection_command.cc:256:59:
error: no matching function for call to 'EnclosingNodeOfType(blink::Position&,
<unresolved overloaded function type>)'
+ 256 | EnclosingNodeOfType(start, &IsA<HTMLTableRowElement>));
+ | ^
+In file included from
../../third_party/blink/renderer/core/editing/commands/delete_selection_command.cc:34:
+../../third_party/blink/renderer/core/editing/editing_utilities.h:112:19: note:
candidate: 'blink::Node* blink::EnclosingNodeOfType(const Position&, bool
(*)(const blink::Node*), blink::EditingBoundaryCrossingRule)'
+ 112 | CORE_EXPORT Node* EnclosingNodeOfType(
+ | ^~~~~~~~~~~~~~~~~~~
+../../third_party/blink/renderer/core/editing/editing_utilities.h:114:12: note: no
known conversion for argument 2 from '<unresolved overloaded function type>'
to 'bool (*)(const blink::Node*)'
+ 114 | bool (*node_is_of_type)(const Node*),
+ | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+../../third_party/blink/renderer/core/editing/editing_utilities.h:116:19: note:
candidate: 'blink::Node* blink::EnclosingNodeOfType(const PositionInFlatTree&,
bool (*)(const blink::Node*), blink::EditingBoundaryCrossingRule)'
+ 116 | CORE_EXPORT Node* EnclosingNodeOfType(
+ | ^~~~~~~~~~~~~~~~~~~
+../../third_party/blink/renderer/core/editing/editing_utilities.h:117:5: note: no known
conversion for argument 1 from 'blink::Position' {aka
'blink::PositionTemplate<blink::EditingAlgorithm<blink::NodeTraversal>
>'} to 'const PositionInFlatTree&' {aka 'const
blink::PositionTemplate<blink::EditingAlgorithm<blink::FlatTreeTraversal>
>&'}
+ 117 | const PositionInFlatTree&,
+ | ^~~~~~~~~~~~~~~~~~~~~~~~~
+
+diff --git a/third_party/blink/renderer/core/editing/commands/delete_selection_command.cc
b/third_party/blink/renderer/core/editing/commands/delete_selection_command.cc
+index 6ff6906..dd531ae 100644
+--- a/third_party/blink/renderer/core/editing/commands/delete_selection_command.cc
++++ b/third_party/blink/renderer/core/editing/commands/delete_selection_command.cc
+@@ -224,6 +224,10 @@ static Position TrailingWhitespacePosition(const Position&
position,
+ return Position();
+ }
+
++static bool IsAHTMLTableRowElement(const Node* node) {
++ return IsA<HTMLTableRowElement>(node);
++}
++
+ void DeleteSelectionCommand::InitializePositionData(
+ EditingState* editing_state) {
+ DCHECK(!GetDocument().NeedsLayoutTreeUpdate());
+@@ -253,9 +257,9 @@ void DeleteSelectionCommand::InitializePositionData(
+ end_root_ = RootEditableElementOf(end);
+
+ start_table_row_ = To<HTMLTableRowElement>(
+- EnclosingNodeOfType(start, &IsA<HTMLTableRowElement>));
++ EnclosingNodeOfType(start, &IsAHTMLTableRowElement));
+ end_table_row_ = To<HTMLTableRowElement>(
+- EnclosingNodeOfType(end, &IsA<HTMLTableRowElement>));
++ EnclosingNodeOfType(end, &IsAHTMLTableRowElement));
+
+ // Don't move content out of a table cell.
+ // If the cell is non-editable, enclosingNodeOfType won't return it by
diff --git a/chromium-80-gcc-incomplete-type.patch
b/chromium-80-gcc-incomplete-type.patch
new file mode 100644
index 0000000..8d10620
--- /dev/null
+++ b/chromium-80-gcc-incomplete-type.patch
@@ -0,0 +1,229 @@
+From cdf3e81ff49b200213d67d65558f2919222b60ab Mon Sep 17 00:00:00 2001
+From: Raphael Kubo da Costa <raphael.kubo.da.costa(a)intel.com>
+Date: Mon, 16 Dec 2019 11:39:11 +0000
+Subject: [PATCH] BookmarkModelMerger: Move RemoteTreeNode declaration to header.
+
+This fixes the build with libstdc++ after commit 8f5dad93e58 ("Fix CHECK
+failure due to untracked local nodes"):
+
+/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/stl_pair.h:215:11:
error: field has incomplete type
'sync_bookmarks::BookmarkModelMerger::RemoteTreeNode'
+ _T2 second; /// @c second is a copy of the second object
+ ^
+/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/ext/aligned_buffer.h:91:28:
note: in instantiation of template class 'std::pair<const
std::__cxx11::basic_string<char>,
sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>' requested here
+ : std::aligned_storage<sizeof(_Tp), __alignof__(_Tp)>
+ ^
+/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable_policy.h:233:43:
note: in instantiation of template class
'__gnu_cxx::__aligned_buffer<std::pair<const
std::__cxx11::basic_string<char>,
sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> >' requested here
+ __gnu_cxx::__aligned_buffer<_Value> _M_storage;
+ ^
+/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable_policy.h:264:39:
note: in instantiation of template class
'std::__detail::_Hash_node_value_base<std::pair<const
std::__cxx11::basic_string<char>,
sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> >' requested here
+ struct _Hash_node<_Value, true> : _Hash_node_value_base<_Value>
+ ^
+/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable_policy.h:2028:25:
note: in instantiation of template class
'std::__detail::_Hash_node<std::pair<const
std::__cxx11::basic_string<char>,
sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>, true>' requested here
+ rebind_traits<typename __node_type::value_type>;
+ ^
+/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable.h:184:15:
note: in instantiation of template class
'std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<const
std::__cxx11::basic_string<char>,
sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>, true> > >
+' requested here
+ private __detail::_Hashtable_alloc<
+ ^
+/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/unordered_map.h:105:18:
note: in instantiation of template class
'std::_Hashtable<std::__cxx11::basic_string<char>, std::pair<const
std::__cxx11::basic_string<char>,
sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>,
std::allocator<std::pair<con
+st std::__cxx11::basic_string<char>,
sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> >, std::__detail::_Select1st,
std::equal_to<std::__cxx11::basic_string<char> >,
std::hash<std::string>, std::__detail::_Mod_range_hashing,
std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__deta
+il::_Hashtable_traits<true, false, true> >' requested here
+ _Hashtable _M_h;
+ ^
+../../components/sync_bookmarks/bookmark_model_merger.h:146:22: note: in instantiation of
template class 'std::unordered_map<std::__cxx11::basic_string<char>,
sync_bookmarks::BookmarkModelMerger::RemoteTreeNode, std::hash<std::string>,
std::equal_to<std::__cxx11::basic_string<char> >,
std::allocator<std::pair<con
+st std::__cxx11::basic_string<char>,
sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> > >' requested here
+ const RemoteForest remote_forest_;
+ ^
+../../components/sync_bookmarks/bookmark_model_merger.h:53:9: note: forward declaration
of 'sync_bookmarks::BookmarkModelMerger::RemoteTreeNode'
+ class RemoteTreeNode;
+ ^
+
+Essentially, the problem is that libstdc++'s std::unordered_map<T, U>
+implementation requires both T and U to be fully declared. I raised the
+problem in
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92770, and GCC's
+position is that we are relying on undefined behavior according to the C++
+standard (
https://eel.is/c++draft/requirements#res.on.functions-2.5).
+
+Bug: 957519
+Change-Id: Ife7e435e516932a795bfbe05b2c910c3272878f0
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1960156
+Commit-Queue: Raphael Kubo da Costa <raphael.kubo.da.costa(a)intel.com>
+Reviewed-by: Mikel Astiz <mastiz(a)chromium.org>
+Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa(a)intel.com>
+Cr-Commit-Position: refs/heads/master@{#725070}
+---
+
+diff --git a/components/sync_bookmarks/bookmark_model_merger.cc
b/components/sync_bookmarks/bookmark_model_merger.cc
+index eae153ef..579848e 100644
+--- a/components/sync_bookmarks/bookmark_model_merger.cc
++++ b/components/sync_bookmarks/bookmark_model_merger.cc
+@@ -5,7 +5,6 @@
+ #include "components/sync_bookmarks/bookmark_model_merger.h"
+
+ #include <algorithm>
+-#include <memory>
+ #include <set>
+ #include <string>
+ #include <utility>
+@@ -205,66 +204,44 @@
+
+ } // namespace
+
+-class BookmarkModelMerger::RemoteTreeNode final {
+- public:
+- // Constructs a tree given |update| as root and recursively all descendants by
+- // traversing |*updates_per_parent_id|. |update| and |updates_per_parent_id|
+- // must not be null. All updates |*updates_per_parent_id| must represent valid
+- // updates. Updates corresponding from descendant nodes are moved away from
+- // |*updates_per_parent_id|.
+- static RemoteTreeNode BuildTree(
+- std::unique_ptr<syncer::UpdateResponseData> update,
+- UpdatesPerParentId* updates_per_parent_id);
++BookmarkModelMerger::RemoteTreeNode::RemoteTreeNode() = default;
+
+- ~RemoteTreeNode() = default;
++BookmarkModelMerger::RemoteTreeNode::~RemoteTreeNode() = default;
+
+- // Allow moves, useful during construction.
+- RemoteTreeNode(RemoteTreeNode&&) = default;
+- RemoteTreeNode& operator=(RemoteTreeNode&&) = default;
++BookmarkModelMerger::RemoteTreeNode::RemoteTreeNode(
++ BookmarkModelMerger::RemoteTreeNode&&) = default;
++BookmarkModelMerger::RemoteTreeNode& BookmarkModelMerger::RemoteTreeNode::
++operator=(BookmarkModelMerger::RemoteTreeNode&&) = default;
+
+- const syncer::EntityData& entity() const { return *update_->entity; }
+- int64_t response_version() const { return update_->response_version; }
++void BookmarkModelMerger::RemoteTreeNode::EmplaceSelfAndDescendantsByGUID(
++ std::unordered_map<std::string, const RemoteTreeNode*>*
++ guid_to_remote_node_map) const {
++ DCHECK(guid_to_remote_node_map);
+
+- // Direct children nodes, sorted by ascending unique position. These are
+- // guaranteed to be valid updates (e.g. IsValidBookmarkSpecifics()).
+- const std::vector<RemoteTreeNode>& children() const { return children_; }
++ const std::string& guid = entity().specifics.bookmark().guid();
++ if (!guid.empty()) {
++ DCHECK(base::IsValidGUID(guid));
+
+- // Recursively emplaces all GUIDs (this node and descendants) into
+- // |*guid_to_remote_node_map|, which must not be null.
+- void EmplaceSelfAndDescendantsByGUID(
+- std::unordered_map<std::string, const RemoteTreeNode*>*
+- guid_to_remote_node_map) const {
+- DCHECK(guid_to_remote_node_map);
+-
+- const std::string& guid = entity().specifics.bookmark().guid();
+- if (!guid.empty()) {
+- DCHECK(base::IsValidGUID(guid));
+-
+- // Duplicate GUIDs have been sorted out before.
+- bool success = guid_to_remote_node_map->emplace(guid, this).second;
+- DCHECK(success);
+- }
+-
+- for (const RemoteTreeNode& child : children_) {
+- child.EmplaceSelfAndDescendantsByGUID(guid_to_remote_node_map);
+- }
++ // Duplicate GUIDs have been sorted out before.
++ bool success = guid_to_remote_node_map->emplace(guid, this).second;
++ DCHECK(success);
+ }
+
+- private:
+- static bool UniquePositionLessThan(const RemoteTreeNode& lhs,
+- const RemoteTreeNode& rhs) {
+- const syncer::UniquePosition a_pos =
+- syncer::UniquePosition::FromProto(lhs.entity().unique_position);
+- const syncer::UniquePosition b_pos =
+- syncer::UniquePosition::FromProto(rhs.entity().unique_position);
+- return a_pos.LessThan(b_pos);
++ for (const RemoteTreeNode& child : children_) {
++ child.EmplaceSelfAndDescendantsByGUID(guid_to_remote_node_map);
+ }
++}
+
+- RemoteTreeNode() = default;
+-
+- std::unique_ptr<syncer::UpdateResponseData> update_;
+- std::vector<RemoteTreeNode> children_;
+-};
++// static
++bool BookmarkModelMerger::RemoteTreeNode::UniquePositionLessThan(
++ const RemoteTreeNode& lhs,
++ const RemoteTreeNode& rhs) {
++ const syncer::UniquePosition a_pos =
++ syncer::UniquePosition::FromProto(lhs.entity().unique_position);
++ const syncer::UniquePosition b_pos =
++ syncer::UniquePosition::FromProto(rhs.entity().unique_position);
++ return a_pos.LessThan(b_pos);
++}
+
+ // static
+ BookmarkModelMerger::RemoteTreeNode
+diff --git a/components/sync_bookmarks/bookmark_model_merger.h
b/components/sync_bookmarks/bookmark_model_merger.h
+index 9b59200..bf0783ec 100644
+--- a/components/sync_bookmarks/bookmark_model_merger.h
++++ b/components/sync_bookmarks/bookmark_model_merger.h
+@@ -5,6 +5,7 @@
+ #ifndef COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_MODEL_MERGER_H_
+ #define COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_MODEL_MERGER_H_
+
++#include <memory>
+ #include <string>
+ #include <unordered_map>
+ #include <vector>
+@@ -50,7 +51,52 @@
+
+ private:
+ // Internal representation of a remote tree, composed of nodes.
+- class RemoteTreeNode;
++ class RemoteTreeNode final {
++ private:
++ using UpdatesPerParentId =
++ std::unordered_map<base::StringPiece,
++ syncer::UpdateResponseDataList,
++ base::StringPieceHash>;
++
++ public:
++ // Constructs a tree given |update| as root and recursively all descendants
++ // by traversing |*updates_per_parent_id|. |update| and
++ // |updates_per_parent_id| must not be null. All updates
++ // |*updates_per_parent_id| must represent valid updates. Updates
++ // corresponding from descendant nodes are moved away from
++ // |*updates_per_parent_id|.
++ static RemoteTreeNode BuildTree(
++ std::unique_ptr<syncer::UpdateResponseData> update,
++ UpdatesPerParentId* updates_per_parent_id);
++
++ ~RemoteTreeNode();
++
++ // Allow moves, useful during construction.
++ RemoteTreeNode(RemoteTreeNode&&);
++ RemoteTreeNode& operator=(RemoteTreeNode&&);
++
++ const syncer::EntityData& entity() const { return *update_->entity; }
++ int64_t response_version() const { return update_->response_version; }
++
++ // Direct children nodes, sorted by ascending unique position. These are
++ // guaranteed to be valid updates (e.g. IsValidBookmarkSpecifics()).
++ const std::vector<RemoteTreeNode>& children() const { return children_; }
++
++ // Recursively emplaces all GUIDs (this node and descendants) into
++ // |*guid_to_remote_node_map|, which must not be null.
++ void EmplaceSelfAndDescendantsByGUID(
++ std::unordered_map<std::string, const RemoteTreeNode*>*
++ guid_to_remote_node_map) const;
++
++ private:
++ static bool UniquePositionLessThan(const RemoteTreeNode& lhs,
++ const RemoteTreeNode& rhs);
++
++ RemoteTreeNode();
++
++ std::unique_ptr<syncer::UpdateResponseData> update_;
++ std::vector<RemoteTreeNode> children_;
++ };
+
+ // A forest composed of multiple trees where the root of each tree represents
+ // a permanent node, keyed by server-defined unique tag of the root.
diff --git a/chromium-80-gcc-permissive.patch b/chromium-80-gcc-permissive.patch
new file mode 100644
index 0000000..c7aef49
--- /dev/null
+++ b/chromium-80-gcc-permissive.patch
@@ -0,0 +1,33 @@
+In file included from ../../media/base/media_log_properties.h:13,
+ from ../../media/base/media_log.h:23,
+ from ../../media/filters/frame_processor.h:15,
+ from ../../media/filters/frame_processor.cc:5:
+../../media/base/media_log_properties_helper.h:86:8: error: extra qualification not
allowed [-fpermissive]
+ 86 | struct internal::MediaLogPropertyTypeConverter<media::AudioDecoderConfig>
{
+ | ^~~~~~~~
+../../media/base/media_log_properties_helper.h:86:75: error: explicit specialization of
non-template 'media::internal::<unnamed struct>'
+ 86 | struct internal::MediaLogPropertyTypeConverter<media::AudioDecoderConfig>
{
+ | ^
+
+diff --git a/media/base/media_log_properties_helper.h
b/media/base/media_log_properties_helper.h
+index 95ff70a..549b003 100644
+--- a/media/base/media_log_properties_helper.h
++++ b/media/base/media_log_properties_helper.h
+@@ -83,7 +83,7 @@ struct MediaLogPropertyTypeConverter<std::vector<T>> {
+
+ // Specializer for sending AudioDecoderConfigs to the media tab in devtools.
+ template <>
+-struct internal::MediaLogPropertyTypeConverter<media::AudioDecoderConfig> {
++struct MediaLogPropertyTypeConverter<media::AudioDecoderConfig> {
+ static base::Value Convert(const AudioDecoderConfig& value) {
+ base::Value result(base::Value::Type::DICTIONARY);
+ result.SetStringKey("codec", GetCodecName(value.codec()));
+@@ -114,7 +114,7 @@ struct
internal::MediaLogPropertyTypeConverter<media::AudioDecoderConfig> {
+
+ // Specializer for sending VideoDecoderConfigs to the media tab in devtools.
+ template <>
+-struct internal::MediaLogPropertyTypeConverter<VideoDecoderConfig> {
++struct MediaLogPropertyTypeConverter<VideoDecoderConfig> {
+ static base::Value Convert(const VideoDecoderConfig& value) {
+ base::Value result(base::Value::Type::DICTIONARY);
+ result.SetStringKey("codec", GetCodecName(value.codec()));
diff --git a/chromium-80-gcc-quiche.patch b/chromium-80-gcc-quiche.patch
new file mode 100644
index 0000000..aa3d541
--- /dev/null
+++ b/chromium-80-gcc-quiche.patch
@@ -0,0 +1,30 @@
+From 00f47df999c9b19e80fdc01db0ae9ca1b6a12b3a Mon Sep 17 00:00:00 2001
+From: vasilvv <vasilvv(a)google.com>
+Date: Wed, 03 Apr 2019 13:58:53 -0700
+Subject: [PATCH] GCC: do not delete move constructor of QuicStreamSendBuffer
+
+QuicStreamSendBuffer constructor is implicitely required in the
+initialization of the vector of substreams in QuicCryptoStream.
+Though clang apparently ignores that, GCC fails to build.
+
+BUG=chromium:819294
+
+Originally submitted by José Dapena Paz <jose.dapena(a)lge.com> at
https://quiche-review.googlesource.com/c/quiche/+/2420
+
+PiperOrigin-RevId: 241800134
+Change-Id: I4e3c97d6e5895d85340e8c1b740e6196d9104066
+---
+
+diff --git a/net/third_party/quiche/src/quic/core/quic_stream_send_buffer.h
b/net/third_party/quiche/src/quic/core/quic_stream_send_buffer.h
+index e34514b..74e9d0d 100644
+--- a/net/third_party/quiche/src/quic/core/quic_stream_send_buffer.h
++++ b/net/third_party/quiche/src/quic/core/quic_stream_send_buffer.h
+@@ -62,7 +62,7 @@
+ public:
+ explicit QuicStreamSendBuffer(QuicBufferAllocator* allocator);
+ QuicStreamSendBuffer(const QuicStreamSendBuffer& other) = delete;
+- QuicStreamSendBuffer(QuicStreamSendBuffer&& other) = delete;
++ QuicStreamSendBuffer(QuicStreamSendBuffer&& other) = default;
+ ~QuicStreamSendBuffer();
+
+ // Save |data_length| of data starts at |iov_offset| in |iov| to send buffer.
diff --git a/chromium-80-include.patch b/chromium-80-include.patch
new file mode 100644
index 0000000..dd85de7
--- /dev/null
+++ b/chromium-80-include.patch
@@ -0,0 +1,33 @@
+From 8273f4d3130e06fd8b6bef87b07c936304b971d9 Mon Sep 17 00:00:00 2001
+From: Raphael Kubo da Costa <raphael.kubo.da.costa(a)intel.com>
+Date: Tue, 10 Dec 2019 20:59:57 +0000
+Subject: [PATCH] [cros search service]: Include <cmath> for std::pow()
+
+IWYU. Follow up to commit 2b2ea3c09b ("[cros search service] Move shared
+string matching functions to //chrome"), which broke the libstdc++ build:
+
+ ../../chrome/common/string_matching/fuzzy_tokenized_string_match.cc:199:14: error: no
member named 'pow' in namespace 'std'
+ std::pow(partial_match_penalty_rate, long_start - current - 1);
+ ~~~~~^
+
+Bug: 957519
+Change-Id: I66f61cb4f93cfa0bfa3d1b00ba391ddd8f31a7fb
+Reviewed-on:
https://chromium-review.googlesource.com/c/chromium/src/+/1960310
+Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa(a)intel.com>
+Reviewed-by: Jia Meng <jiameng(a)chromium.org>
+Commit-Queue: Raphael Kubo da Costa <raphael.kubo.da.costa(a)intel.com>
+Cr-Commit-Position: refs/heads/master@{#723499}
+---
+
+diff --git a/chrome/common/string_matching/fuzzy_tokenized_string_match.cc
b/chrome/common/string_matching/fuzzy_tokenized_string_match.cc
+index 8351fa7..884ef63 100644
+--- a/chrome/common/string_matching/fuzzy_tokenized_string_match.cc
++++ b/chrome/common/string_matching/fuzzy_tokenized_string_match.cc
+@@ -5,6 +5,7 @@
+ #include "chrome/common/string_matching/fuzzy_tokenized_string_match.h"
+
+ #include <algorithm>
++#include <cmath>
+ #include <iterator>
+
+ #include "base/i18n/case_conversion.h"
diff --git a/chromium-80-unbundle-libxml.patch b/chromium-80-unbundle-libxml.patch
new file mode 100644
index 0000000..0f36905
--- /dev/null
+++ b/chromium-80-unbundle-libxml.patch
@@ -0,0 +1,101 @@
+diff --git a/build/linux/unbundle/libxml.gn b/build/linux/unbundle/libxml.gn
+index c481bd3..3aaa1a4 100644
+--- a/build/linux/unbundle/libxml.gn
++++ b/build/linux/unbundle/libxml.gn
+@@ -8,11 +8,52 @@ pkg_config("system_libxml") {
+ packages = [ "libxml-2.0" ]
+ }
+
+-static_library("libxml") {
++source_set("libxml") {
++ public_configs = [ ":system_libxml" ]
++}
++
++static_library("libxml_utils") {
++ # Do not expand this visibility list without first consulting with the
++ # Security Team.
++ visibility = [
++ ":xml_reader",
++ ":xml_writer",
++ "//base/test:test_support",
++ "//services/data_decoder:xml_parser_fuzzer",
++ ]
+ sources = [
+ "chromium/libxml_utils.cc",
+ "chromium/libxml_utils.h",
+ ]
+-
+ public_configs = [ ":system_libxml" ]
+ }
++
++static_library("xml_reader") {
++ # Do not expand this visibility list without first consulting with the
++ # Security Team.
++ visibility = [
++ "//base/test:test_support",
++ "//components/policy/core/common:unit_tests",
++ "//services/data_decoder:*",
++ "//tools/traffic_annotation/auditor:auditor_sources",
++ ]
++ sources = [
++ "chromium/xml_reader.cc",
++ "chromium/xml_reader.h",
++ ]
++ deps = [
++ ":libxml_utils",
++ ]
++}
++
++static_library("xml_writer") {
++ # The XmlWriter is considered safe to use from any target.
++ visibility = [ "*" ]
++ sources = [
++ "chromium/xml_writer.cc",
++ "chromium/xml_writer.h",
++ ]
++ deps = [
++ ":libxml_utils",
++ ]
++}
+diff --git a/third_party/libxml/chromium/libxml_utils.h
b/third_party/libxml/chromium/libxml_utils.h
+index ff969fa..e0f3ecd 100644
+--- a/third_party/libxml/chromium/libxml_utils.h
++++ b/third_party/libxml/chromium/libxml_utils.h
+@@ -6,8 +6,7 @@
+ #define THIRD_PARTY_LIBXML_CHROMIUM_LIBXML_UTILS_H_
+
+ #include <string>
+-
+-#include "third_party/libxml/src/include/libxml/xmlreader.h"
++#include <libxml/xmlreader.h>
+
+ // libxml uses a global error function pointer for reporting errors.
+ // A ScopedXmlErrorFunc object lets you change the global error pointer
+diff --git a/third_party/libxml/chromium/xml_reader.cc
b/third_party/libxml/chromium/xml_reader.cc
+index 92464f4..4779290 100644
+--- a/third_party/libxml/chromium/xml_reader.cc
++++ b/third_party/libxml/chromium/xml_reader.cc
+@@ -7,7 +7,8 @@
+ #include <vector>
+
+ #include "third_party/libxml/chromium/libxml_utils.h"
+-#include "third_party/libxml/src/include/libxml/xmlreader.h"
++
++#include <libxml/xmlreader.h>
+
+ using internal::XmlStringToStdString;
+
+diff --git a/third_party/libxml/chromium/xml_writer.cc
b/third_party/libxml/chromium/xml_writer.cc
+index 51fce8e..aa3a34f 100644
+--- a/third_party/libxml/chromium/xml_writer.cc
++++ b/third_party/libxml/chromium/xml_writer.cc
+@@ -5,7 +5,8 @@
+ #include "third_party/libxml/chromium/xml_writer.h"
+
+ #include "third_party/libxml/chromium/libxml_utils.h"
+-#include "third_party/libxml/src/include/libxml/xmlwriter.h"
++
++#include <libxml/xmlwriter.h>
+
+ XmlWriter::XmlWriter() : writer_(nullptr), buffer_(nullptr) {}
+
diff --git a/chromium-80.0.3987.106-missing-cstddef-header.patch
b/chromium-80.0.3987.106-missing-cstddef-header.patch
new file mode 100644
index 0000000..832cf02
--- /dev/null
+++ b/chromium-80.0.3987.106-missing-cstddef-header.patch
@@ -0,0 +1,44 @@
+diff -up
chromium-80.0.3987.106/chrome/browser/search/background/ntp_backgrounds.h.missing-cstddef
chromium-80.0.3987.106/chrome/browser/search/background/ntp_backgrounds.h
+---
chromium-80.0.3987.106/chrome/browser/search/background/ntp_backgrounds.h.missing-cstddef 2020-02-18
08:42:38.088243182 -0500
++++ chromium-80.0.3987.106/chrome/browser/search/background/ntp_backgrounds.h 2020-02-18
08:42:59.679782858 -0500
+@@ -6,6 +6,7 @@
+ #define CHROME_BROWSER_SEARCH_BACKGROUND_NTP_BACKGROUNDS_H_
+
+ #include <array>
++#include <cstddef>
+
+ class GURL;
+
+diff -up chromium-80.0.3987.106/media/cdm/supported_cdm_versions.h.missing-cstddef
chromium-80.0.3987.106/media/cdm/supported_cdm_versions.h
+--- chromium-80.0.3987.106/media/cdm/supported_cdm_versions.h.missing-cstddef 2020-02-17
16:26:51.661246220 -0500
++++ chromium-80.0.3987.106/media/cdm/supported_cdm_versions.h 2020-02-17
16:26:51.662246200 -0500
+@@ -6,6 +6,7 @@
+ #define MEDIA_CDM_SUPPORTED_CDM_VERSIONS_H_
+
+ #include <array>
++#include <cstddef>
+
+ #include "media/base/media_export.h"
+ #include "media/cdm/api/content_decryption_module.h"
+diff -up
chromium-80.0.3987.106/third_party/angle/include/platform/Platform.h.missing-cstddef
chromium-80.0.3987.106/third_party/angle/include/platform/Platform.h
+---
chromium-80.0.3987.106/third_party/angle/include/platform/Platform.h.missing-cstddef 2020-02-17
16:26:07.433130572 -0500
++++ chromium-80.0.3987.106/third_party/angle/include/platform/Platform.h 2020-02-17
16:26:07.434130552 -0500
+@@ -11,6 +11,7 @@
+
+ #include <stdint.h>
+ #include <array>
++#include <cstddef>
+
+ #define EGL_PLATFORM_ANGLE_PLATFORM_METHODS_ANGLEX 0x3482
+
+diff -up
chromium-80.0.3987.106/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h.missing-cstddef
chromium-80.0.3987.106/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
+---
chromium-80.0.3987.106/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h.missing-cstddef 2020-02-17
16:23:41.385050827 -0500
++++
chromium-80.0.3987.106/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h 2020-02-17
16:23:41.368051167 -0500
+@@ -12,6 +12,7 @@
+ #define MODULES_AUDIO_PROCESSING_AEC3_CLOCKDRIFT_DETECTOR_H_
+
+ #include <array>
++#include <cstddef>
+
+ namespace webrtc {
+
diff --git a/chromium-80.0.3987.106-missing-cstring-header.patch
b/chromium-80.0.3987.106-missing-cstring-header.patch
new file mode 100644
index 0000000..646dac6
--- /dev/null
+++ b/chromium-80.0.3987.106-missing-cstring-header.patch
@@ -0,0 +1,34 @@
+diff -up
chromium-80.0.3987.106/third_party/webrtc/audio/utility/channel_mixer.cc.missing-cstring
chromium-80.0.3987.106/third_party/webrtc/audio/utility/channel_mixer.cc
+---
chromium-80.0.3987.106/third_party/webrtc/audio/utility/channel_mixer.cc.missing-cstring 2020-02-21
13:19:47.077683105 -0500
++++ chromium-80.0.3987.106/third_party/webrtc/audio/utility/channel_mixer.cc 2020-02-21
13:19:47.077683105 -0500
+@@ -8,6 +8,8 @@
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
++#include <cstring>
++
+ #include "audio/utility/channel_mixer.h"
+
+ #include "audio/utility/channel_mixing_matrix.h"
+diff -up
chromium-80.0.3987.106/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc.missing-cstring
chromium-80.0.3987.106/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
+---
chromium-80.0.3987.106/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc.missing-cstring 2020-02-21
13:19:48.171659179 -0500
++++
chromium-80.0.3987.106/third_party/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc 2020-02-21
13:19:48.174659113 -0500
+@@ -17,6 +17,7 @@
+ #include <spa/param/video/raw-utils.h>
+ #include <spa/support/type-map.h>
+
++#include <cstring>
+ #include <memory>
+ #include <utility>
+
+diff -up
chromium-80.0.3987.106/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-cstring
chromium-80.0.3987.106/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc
+---
chromium-80.0.3987.106/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-cstring 2020-02-21
13:30:09.609068057 -0500
++++
chromium-80.0.3987.106/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc 2020-02-21
13:30:23.791757875 -0500
+@@ -10,6 +10,7 @@
+
+ #include "modules/video_coding/utility/ivf_file_reader.h"
+
++#include <cstring>
+ #include <string>
+ #include <vector>
+
diff --git a/chromium-80.0.3987.87-fix-for-c++17.patch
b/chromium-80.0.3987.87-fix-for-c++17.patch
new file mode 100644
index 0000000..3a29df9
--- /dev/null
+++ b/chromium-80.0.3987.87-fix-for-c++17.patch
@@ -0,0 +1,190 @@
+diff -up chromium-80.0.3987.87/base/containers/flat_tree.h.c17
chromium-80.0.3987.87/base/containers/flat_tree.h
+--- chromium-80.0.3987.87/base/containers/flat_tree.h.c17 2020-02-10 10:48:05.982500272
-0500
++++ chromium-80.0.3987.87/base/containers/flat_tree.h 2020-02-10 11:04:42.148507892
-0500
+@@ -776,7 +776,11 @@ template <class Key, class Value, class
+ template <typename K>
+ auto flat_tree<Key, Value, GetKeyFromValue, KeyCompare>::find(const K& key)
+ -> iterator {
++#ifdef __cpp_lib_as_const
++ return const_cast_it(std::as_const(*this).find(key));
++#else
+ return const_cast_it(as_const(*this).find(key));
++#endif
+ }
+
+ template <class Key, class Value, class GetKeyFromValue, class KeyCompare>
+@@ -799,7 +803,11 @@ template <class Key, class Value, class
+ template <typename K>
+ auto flat_tree<Key, Value, GetKeyFromValue, KeyCompare>::equal_range(
+ const K& key) -> std::pair<iterator, iterator> {
++#ifdef __cpp_lib_as_const
++ auto res = std::as_const(*this).equal_range(key);
++#else
+ auto res = as_const(*this).equal_range(key);
++#endif
+ return {const_cast_it(res.first), const_cast_it(res.second)};
+ }
+
+@@ -820,7 +828,11 @@ template <class Key, class Value, class
+ template <typename K>
+ auto flat_tree<Key, Value, GetKeyFromValue, KeyCompare>::lower_bound(
+ const K& key) -> iterator {
++#ifdef __cpp_lib_as_const
++ return const_cast_it(std::as_const(*this).lower_bound(key));
++#else
+ return const_cast_it(as_const(*this).lower_bound(key));
++#endif
+ }
+
+ template <class Key, class Value, class GetKeyFromValue, class KeyCompare>
+@@ -841,7 +853,11 @@ template <class Key, class Value, class
+ template <typename K>
+ auto flat_tree<Key, Value, GetKeyFromValue, KeyCompare>::upper_bound(
+ const K& key) -> iterator {
++#ifdef __cpp_lib_as_const
++ return const_cast_it(std::as_const(*this).upper_bound(key));
++#else
+ return const_cast_it(as_const(*this).upper_bound(key));
++#endif
+ }
+
+ template <class Key, class Value, class GetKeyFromValue, class KeyCompare>
+diff -up chromium-80.0.3987.106/third_party/webrtc/BUILD.gn.c17fix
chromium-80.0.3987.106/third_party/webrtc/BUILD.gn
+--- chromium-80.0.3987.106/third_party/webrtc/BUILD.gn.c17fix 2020-02-20
15:00:23.439563056 -0500
++++ chromium-80.0.3987.106/third_party/webrtc/BUILD.gn 2020-02-20 15:01:36.282355645
-0500
+@@ -237,6 +237,10 @@ config("common_config") {
+ cflags_objc = []
+ defines = []
+
++ if (!is_clang) {
++ cflags_cc += [ "-std=c++17" ]
++ }
++
+ if (rtc_enable_protobuf) {
+ defines += [ "WEBRTC_ENABLE_PROTOBUF=1" ]
+ } else {
+diff -up chromium-80.0.3987.106/third_party/abseil-cpp/BUILD.gn.c17fix
chromium-80.0.3987.106/third_party/abseil-cpp/BUILD.gn
+--- chromium-80.0.3987.106/third_party/abseil-cpp/BUILD.gn.c17fix 2020-02-21
15:12:14.413937754 -0500
++++ chromium-80.0.3987.106/third_party/abseil-cpp/BUILD.gn 2020-02-21 15:12:59.128967149
-0500
+@@ -46,6 +46,10 @@ config("absl_default_cflags_cc") {
+ cflags_cc += [ "-Wbitfield-enum-conversion" ]
+ }
+ }
++ if (!is_clang) {
++ cflags_cc = [ "-std=c++17" ]
++ }
++
+ if (is_win) {
+ cflags_cc += [
+ "/wd4005", # macro-redefinition
+diff -up chromium-80.0.3987.106/third_party/openscreen/src/tools/cddl/BUILD.gn.c17fix
chromium-80.0.3987.106/third_party/openscreen/src/tools/cddl/BUILD.gn
+---
chromium-80.0.3987.106/third_party/openscreen/src/tools/cddl/BUILD.gn.c17fix 2020-02-21
15:35:56.269180510 -0500
++++ chromium-80.0.3987.106/third_party/openscreen/src/tools/cddl/BUILD.gn 2020-02-21
15:42:12.718900742 -0500
+@@ -22,6 +22,10 @@ if (current_toolchain == host_toolchain)
+ "../../third_party/abseil",
+ ]
+
++ if (!is_clang) {
++ cflags_cc = [ "-std=c++17" ]
++ }
++
+ configs += [ "../../build:openscreen_include_dirs" ]
+ }
+ }
+diff -up chromium-80.0.3987.106/build/config/compiler/BUILD.gn.c17hack
chromium-80.0.3987.106/build/config/compiler/BUILD.gn
+--- chromium-80.0.3987.106/build/config/compiler/BUILD.gn.c17hack 2020-02-21
16:09:22.871980103 -0500
++++ chromium-80.0.3987.106/build/config/compiler/BUILD.gn 2020-02-21 16:09:28.606856106
-0500
+@@ -570,7 +570,7 @@ config("compiler") {
+ if (cxx11_override) {
+ cflags_cc += [ "-std=c++11" ]
+ } else {
+- cflags_cc += [ "-std=c++14" ]
++ cflags_cc += [ "-std=c++17" ]
+ }
+ }
+
+diff -up chromium-80.0.3987.106/third_party/openscreen/src/build/config/BUILD.gn.c17fix
chromium-80.0.3987.106/third_party/openscreen/src/build/config/BUILD.gn
+---
chromium-80.0.3987.106/third_party/openscreen/src/build/config/BUILD.gn.c17fix 2020-02-24
08:55:52.674819783 -0500
++++ chromium-80.0.3987.106/third_party/openscreen/src/build/config/BUILD.gn 2020-02-24
08:56:08.665466317 -0500
+@@ -67,8 +67,8 @@ config("openscreen_code") {
+ "-fno-strict-aliasing", # See
http://crbug.com/32204
+ ]
+
+- cflags_cc = [ "-std=c++14" ]
+- cflags_objcc = [ "-std=c++14" ]
++ cflags_cc = [ "-std=c++17" ]
++ cflags_objcc = [ "-std=c++17" ]
+
+ ldflags = [ "-Werror" ]
+
+diff -up chromium-80.0.3987.106/build/config/compiler/BUILD.gn.c17fix
chromium-80.0.3987.106/build/config/compiler/BUILD.gn
+--- chromium-80.0.3987.106/build/config/compiler/BUILD.gn.c17fix 2020-02-24
09:39:14.659536642 -0500
++++ chromium-80.0.3987.106/build/config/compiler/BUILD.gn 2020-02-24 09:39:23.098366657
-0500
+@@ -553,7 +553,7 @@ config("compiler") {
+ # Override Chromium's default for projects that wish to stay on C++11.
+ cflags_cc += [ "-std=${standard_prefix}++11" ]
+ } else {
+- cflags_cc += [ "-std=${standard_prefix}++14" ]
++ cflags_cc += [ "-std=${standard_prefix}++17" ]
+ }
+ } else if (!is_win && !is_nacl) {
+ if (target_os == "android") {
+diff -up
chromium-80.0.3987.106/third_party/openscreen/src/platform/api/task_runner.h.spot
chromium-80.0.3987.106/third_party/openscreen/src/platform/api/task_runner.h
+---
chromium-80.0.3987.106/third_party/openscreen/src/platform/api/task_runner.h.spot 2020-02-24
10:56:54.645126949 -0500
++++
chromium-80.0.3987.106/third_party/openscreen/src/platform/api/task_runner.h 2020-02-24
10:57:26.788407144 -0500
+@@ -22,7 +22,7 @@ namespace platform {
+ // that A shall run before B.
+ class TaskRunner {
+ public:
+- using Task = std::packaged_task<void() noexcept>;
++ using Task = std::packaged_task<void()>;
+
+ virtual ~TaskRunner() = default;
+
+diff -up chromium-80.0.3987.106/base/containers/circular_deque.h.c17fix
chromium-80.0.3987.106/base/containers/circular_deque.h
+--- chromium-80.0.3987.106/base/containers/circular_deque.h.c17fix 2020-02-24
14:42:14.163076162 -0500
++++ chromium-80.0.3987.106/base/containers/circular_deque.h 2020-02-24 14:43:38.393120439
-0500
+@@ -522,11 +522,19 @@ class circular_deque {
+ return buffer_[i - right_size];
+ }
+ value_type& at(size_type i) {
++#ifdef __cpp_lib_as_const
++ return const_cast<value_type&>(std::as_const(*this).at(i));
++#else
+ return const_cast<value_type&>(as_const(*this).at(i));
++#endif
+ }
+
+ value_type& operator[](size_type i) {
++#ifdef __cpp_lib_as_const
++ return const_cast<value_type&>(std::as_const(*this)[i]);
++#else
+ return const_cast<value_type&>(as_const(*this)[i]);
++#endif
+ }
+
+ const value_type& operator[](size_type i) const { return at(i); }
+diff -up chromium-80.0.3987.106/device/bluetooth/bluetooth_adapter.cc.c17fix
chromium-80.0.3987.106/device/bluetooth/bluetooth_adapter.cc
+--- chromium-80.0.3987.106/device/bluetooth/bluetooth_adapter.cc.c17fix 2020-02-24
16:09:58.810502665 -0500
++++ chromium-80.0.3987.106/device/bluetooth/bluetooth_adapter.cc 2020-02-24
16:10:35.484705843 -0500
+@@ -638,7 +638,7 @@ void BluetoothAdapter::RecordBluetoothDi
+ }
+
+ // static
+-constexpr base::TimeDelta BluetoothAdapter::timeoutSec =
++const extern base::TimeDelta BluetoothAdapter::timeoutSec =
+ base::TimeDelta::FromSeconds(180);
+
+ } // namespace device
+diff -up
chromium-80.0.3987.122/content/browser/web_package/signed_exchange_prologue.cc.c17fix
chromium-80.0.3987.122/content/browser/web_package/signed_exchange_prologue.cc
+---
chromium-80.0.3987.122/content/browser/web_package/signed_exchange_prologue.cc.c17fix 2020-02-27
13:48:15.815885662 -0500
++++
chromium-80.0.3987.122/content/browser/web_package/signed_exchange_prologue.cc 2020-02-27
13:48:24.146711682 -0500
+@@ -30,7 +30,7 @@ constexpr size_t kMaximumCBORHeaderLengt
+
+ namespace signed_exchange_prologue {
+
+-constexpr size_t BeforeFallbackUrl::kEncodedSizeInBytes =
++const extern size_t BeforeFallbackUrl::kEncodedSizeInBytes =
+ sizeof(kSignedExchangeMagic) + kFallbackUrlLengthFieldSizeInBytes;
+
+ size_t Parse2BytesEncodedLength(base::span<const uint8_t> input) {
diff --git a/chromium-80.0.3987.87-missing-cstdint-header.patch
b/chromium-80.0.3987.87-missing-cstdint-header.patch
new file mode 100644
index 0000000..e61042f
--- /dev/null
+++ b/chromium-80.0.3987.87-missing-cstdint-header.patch
@@ -0,0 +1,55 @@
+diff -up
chromium-80.0.3987.106/third_party/perfetto/include/perfetto/base/task_runner.h.missing-cstdint
chromium-80.0.3987.106/third_party/perfetto/include/perfetto/base/task_runner.h
+---
chromium-80.0.3987.106/third_party/perfetto/include/perfetto/base/task_runner.h.missing-cstdint 2020-02-21
12:29:43.393191877 -0500
++++
chromium-80.0.3987.106/third_party/perfetto/include/perfetto/base/task_runner.h 2020-02-21
12:29:43.393191877 -0500
+@@ -17,6 +17,7 @@
+ #ifndef INCLUDE_PERFETTO_BASE_TASK_RUNNER_H_
+ #define INCLUDE_PERFETTO_BASE_TASK_RUNNER_H_
+
++#include <cstdint>
+ #include <functional>
+
+ #include "perfetto/base/export.h"
+diff -up
chromium-80.0.3987.106/third_party/webrtc/call/rtx_receive_stream.h.missing-cstdint
chromium-80.0.3987.106/third_party/webrtc/call/rtx_receive_stream.h
+---
chromium-80.0.3987.106/third_party/webrtc/call/rtx_receive_stream.h.missing-cstdint 2020-02-21
12:30:30.739332871 -0500
++++ chromium-80.0.3987.106/third_party/webrtc/call/rtx_receive_stream.h 2020-02-21
12:30:30.747332725 -0500
+@@ -11,6 +11,7 @@
+ #ifndef CALL_RTX_RECEIVE_STREAM_H_
+ #define CALL_RTX_RECEIVE_STREAM_H_
+
++#include <cstdint>
+ #include <map>
+
+ #include "call/rtp_packet_sink_interface.h"
+diff -up
chromium-80.0.3987.106/third_party/webrtc/common_video/h264/pps_parser.h.missing-cstdint
chromium-80.0.3987.106/third_party/webrtc/common_video/h264/pps_parser.h
+---
chromium-80.0.3987.106/third_party/webrtc/common_video/h264/pps_parser.h.missing-cstdint 2020-02-21
12:30:31.564317903 -0500
++++ chromium-80.0.3987.106/third_party/webrtc/common_video/h264/pps_parser.h 2020-02-21
12:30:31.561317957 -0500
+@@ -11,6 +11,7 @@
+ #ifndef COMMON_VIDEO_H264_PPS_PARSER_H_
+ #define COMMON_VIDEO_H264_PPS_PARSER_H_
+
++#include <cstdint>
+ #include "absl/types/optional.h"
+
+ namespace rtc {
+diff -up
chromium-80.0.3987.106/third_party/webrtc/common_video/h264/sps_parser.h.missing-cstdint
chromium-80.0.3987.106/third_party/webrtc/common_video/h264/sps_parser.h
+---
chromium-80.0.3987.106/third_party/webrtc/common_video/h264/sps_parser.h.missing-cstdint 2020-02-21
12:30:31.565317885 -0500
++++ chromium-80.0.3987.106/third_party/webrtc/common_video/h264/sps_parser.h 2020-02-21
12:30:31.565317885 -0500
+@@ -11,6 +11,7 @@
+ #ifndef COMMON_VIDEO_H264_SPS_PARSER_H_
+ #define COMMON_VIDEO_H264_SPS_PARSER_H_
+
++#include <cstdint>
+ #include "absl/types/optional.h"
+
+ namespace rtc {
+diff -up
chromium-80.0.3987.106/third_party/webrtc/modules/include/module_common_types_public.h.missing-cstdint
chromium-80.0.3987.106/third_party/webrtc/modules/include/module_common_types_public.h
+---
chromium-80.0.3987.106/third_party/webrtc/modules/include/module_common_types_public.h.missing-cstdint 2020-02-21
12:52:16.946512744 -0500
++++
chromium-80.0.3987.106/third_party/webrtc/modules/include/module_common_types_public.h 2020-02-21
12:52:26.220312608 -0500
+@@ -11,6 +11,7 @@
+ #ifndef MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
+ #define MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
+
++#include <cstdint>
+ #include <limits>
+
+ #include "absl/types/optional.h"
diff --git a/chromium-80.0.3987.87-missing-string-header.patch
b/chromium-80.0.3987.87-missing-string-header.patch
new file mode 100644
index 0000000..6bb4c7d
--- /dev/null
+++ b/chromium-80.0.3987.87-missing-string-header.patch
@@ -0,0 +1,11 @@
+diff -up
chromium-80.0.3987.87/base/trace_event/trace_event_memory_overhead.h.missing-string
chromium-80.0.3987.87/base/trace_event/trace_event_memory_overhead.h
+---
chromium-80.0.3987.87/base/trace_event/trace_event_memory_overhead.h.missing-string 2020-02-06
16:47:15.707676509 -0500
++++ chromium-80.0.3987.87/base/trace_event/trace_event_memory_overhead.h 2020-02-06
16:47:23.782504337 -0500
+@@ -8,6 +8,7 @@
+ #include <stddef.h>
+ #include <stdint.h>
+
++#include <string>
+ #include <unordered_map>
+
+ #include "base/base_export.h"
diff --git a/chromium-freeworld.spec b/chromium-freeworld.spec
index 6ae20c2..c33acb9 100644
--- a/chromium-freeworld.spec
+++ b/chromium-freeworld.spec
@@ -35,7 +35,7 @@
%bcond_without system_libxml2
# Clang toggle
-%global clang 1
+%global clang 0
# Allow testing whether icu can be unbundled
# A patch fix building so enabled by default for Fedora 30
@@ -69,8 +69,8 @@
%global ozone 0
##############################Package Definitions######################################
Name: chromium-freeworld
-Version: 79.0.3945.130
-Release: 2%{?dist}
+Version: 80.0.3987.122
+Release: 1%{?dist}
Summary: Chromium-freeworld is an open-source web browser, powered by WebKit (Blink).
It comes with all freeworld codecs and video acceleration enabled.
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)
URL:
https://www.chromium.org/Home
@@ -222,23 +222,32 @@ Patch51: py2-bootstrap.patch
Patch52: chromium-system-icu.patch
# Let's brand chromium!
Patch54: brand.patch
-#Stolen from Fedora to fix building with pipewire
-#
https://src.fedoraproject.org/rpms/chromium/blob/master/f/chromium-73.0.3...
-Patch65: chromium-73.0.3683.75-pipewire-cstring-fix.patch
# Fix header
Patch68: Add-missing-header-to-fix-webrtc-build.patch
Patch69: chromium-unbundle-zlib.patch
Patch70: chromium-base-location.patch
-Patch71: fix-spammy-unique-font-matching-log.patch
-# GCC
-Patch72: include-algorithm-to-use-std-lower_bound.patch
-Patch73: launch_manager.h-uses-std-vector.patch
-# Fix: STolen from Fedora
-Patch74: chromium-79.0.3945.56-glibc-clock-nanosleep.patch
-# ICU ver. 65 support on Rawhide
-Patch75: icu65.patch
-#Fix building with system harfbuzz
-Patch76: chromium-fix-use_system_harfbuzz-ng.patch
+
+# Gentoo:
+Patch400: chromium-80-include.patch
+Patch401: chromium-80-gcc-incomplete-type.patch
+Patch402: chromium-80-gcc-quiche.patch
+Patch403: chromium-80-gcc-permissive.patch
+Patch404: chromium-80-gcc-blink.patch
+Patch405: chromium-80-gcc-abstract.patch
+%if %{with system_libxml2}
+Patch406: chromium-80-unbundle-libxml.patch
+%endif
+
+# Fedora:
+Patch500: chromium-80.0.3987.87-missing-string-header.patch
+Patch501: chromium-80.0.3987.106-missing-cstddef-header.patch
+Patch502: chromium-80.0.3987.87-missing-cstdint-header.patch
+Patch503: chromium-77.0.3865.75-gcc-include-memory.patch
+Patch504: chromium-80.0.3987.106-missing-cstring-header.patch
+%if 0%{?fedora} >= 32
+Patch505: chromium-79.0.3945.130-gcc10-use-c++17-to-work-around-ugly-angle-code.patch
+Patch506: chromium-80.0.3987.87-fix-for-c++17.patch
+%endif
%description
@@ -252,11 +261,6 @@ Patch76: chromium-fix-use_system_harfbuzz-ng.patch
%if !%{freeworld}
%patch54 -p1 -R
%endif
-%if 0%{?fedora} <= 31
-# Only on Rawhide
-%patch74 -p1 -R
-%patch75 -p1 -R
-%endif
#Let's change the default shebang of python files.
@@ -292,6 +296,7 @@ find -depth -type f -writable -name "*.py" -exec sed -iE
'1s=^#! */usr/bin/\(pyt
third_party/angle/src/third_party/compiler \
third_party/angle/src/third_party/libXNVCtrl \
third_party/angle/src/third_party/trace_event \
+ third_party/libgifcodec \
third_party/glslang \
third_party/angle/third_party/spirv-headers \
third_party/angle/third_party/spirv-tools \
@@ -303,9 +308,6 @@ find -depth -type f -writable -name "*.py" -exec sed -iE
'1s=^#! */usr/bin/\(pyt
third_party/axe-core \
third_party/boringssl \
third_party/boringssl/src/third_party/fiat \
- third_party/boringssl/src/third_party/sike \
- third_party/boringssl/linux-aarch64/crypto/third_party/sike \
- third_party/boringssl/linux-x86_64/crypto/third_party/sike \
third_party/blink \
third_party/breakpad \
third_party/breakpad/breakpad/src/third_party/curl \
@@ -339,13 +341,14 @@ find -depth -type f -writable -name "*.py" -exec sed -iE
'1s=^#! */usr/bin/\(pyt
third_party/depot_tools \
third_party/dav1d \
third_party/devscripts \
+ third_party/devtools-frontend \
+ third_party/devtools-frontend/src/third_party \
third_party/dom_distiller_js \
third_party/emoji-segmenter \
%if !%{with system_ffmpeg}
third_party/ffmpeg \
%endif
third_party/flatbuffers \
- third_party/flot \
third_party/freetype \
third_party/google_input_tools \
third_party/google_input_tools/third_party/closure_library \
@@ -439,7 +442,6 @@ find -depth -type f -writable -name "*.py" -exec sed -iE
'1s=^#! */usr/bin/\(pyt
third_party/skia \
third_party/skia/include/third_party/skcms \
third_party/skia/include/third_party/vulkan \
- third_party/skia/third_party/gif \
third_party/skia/third_party/vulkan \
third_party/skia/third_party/skcms \
third_party/smhasher \
@@ -693,7 +695,6 @@ install -m 755 %{target}/chromedriver %{buildroot}%{chromiumdir}/
%if !%{with system_libicu}
install -m 644 %{target}/icudtl.dat %{buildroot}%{chromiumdir}/
%endif
-install -m 644 %{target}/natives_blob.bin %{buildroot}%{chromiumdir}/
install -m 644 %{target}/v8_context_snapshot.bin %{buildroot}%{chromiumdir}/
install -m 644 %{target}/*.pak %{buildroot}%{chromiumdir}/
install -m 644 %{target}/locales/*.pak %{buildroot}%{chromiumdir}/locales/
@@ -741,7 +742,6 @@ appstream-util validate-relax --nonet
"%{buildroot}%{_metainfodir}/%{name}.appda
%if !%{with system_libicu}
%{chromiumdir}/icudtl.dat
%endif
-%{chromiumdir}/natives_blob.bin
%{chromiumdir}/v8_context_snapshot.bin
%{chromiumdir}/*.pak
%{chromiumdir}/xdg-mime
@@ -756,6 +756,9 @@ appstream-util validate-relax --nonet
"%{buildroot}%{_metainfodir}/%{name}.appda
%{chromiumdir}/swiftshader/libGLESv2.so
#########################################changelogs#################################################
%changelog
+* Sun Mar 01 2020 qvint <dotqvint(a)gmail.com> - 80.0.3987.122-1
+- Update to 80.0.3987.122
+
* Tue Feb 04 2020 RPM Fusion Release Engineering <leigh123linux(a)gmail.com> -
79.0.3945.130-2
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
@@ -785,6 +788,3 @@ appstream-util validate-relax --nonet
"%{buildroot}%{_metainfodir}/%{name}.appda
* Thu Oct 31 2019 Akarshan Biswas <akarshanbiswas(a)fedoraproject.org> -
78.0.3904.70-1
- IMPORT: rename package; add back Fedora build flags
-
-
-
diff --git a/sources b/sources
index 016cd54..27854b8 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (chromium-79.0.3945.130.tar.xz) =
4b5d4769b068f20b8028085a148cbaf31311eeffad0a22c5c0909af273a8e57e077b33cc93331bbeff9165477262eed2e345b2224ac4f76d8bdb79f983596a81
+SHA512 (chromium-80.0.3987.122.tar.xz) =
3a022c55f5745f2cfb7e28efb113f78ff686da638cd02f0585ef1ae8620f81ece864bc27b4e0a88daf3f409ff565a9b80b8859d1fd7d62c8b1d26cb8b311acc5