summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Hartmann <stha09@googlemail.com>2019-12-23 16:07:03 +0100
committerMike Gilbert <floppym@gentoo.org>2019-12-23 11:21:56 -0500
commit8ba7a983c4c70ff8d4afe770efeebe60160baafd (patch)
tree3c55c41e3103b597e1da0ae32aa186d7caf9fa5a /www-client/chromium/files
parentnet-ftp/lftp: Version 4.9.0 (diff)
downloadgentoo-8ba7a983c4c70ff8d4afe770efeebe60160baafd.tar.gz
gentoo-8ba7a983c4c70ff8d4afe770efeebe60160baafd.tar.bz2
gentoo-8ba7a983c4c70ff8d4afe770efeebe60160baafd.zip
www-client/chromium: beta channel bump to 80.0.3987.16
Package-Manager: Portage-2.3.76, Repoman-2.3.16 Signed-off-by: Stephan Hartmann <stha09@googlemail.com> Signed-off-by: Mike Gilbert <floppym@gentoo.org>
Diffstat (limited to 'www-client/chromium/files')
-rw-r--r--www-client/chromium/files/chromium-80-gcc-abstract.patch41
-rw-r--r--www-client/chromium/files/chromium-80-gcc-blink.patch18
-rw-r--r--www-client/chromium/files/chromium-80-gcc-incomplete-type.patch229
-rw-r--r--www-client/chromium/files/chromium-80-gcc-noexcept.patch48
-rw-r--r--www-client/chromium/files/chromium-80-gcc-permissive.patch33
-rw-r--r--www-client/chromium/files/chromium-80-include.patch44
6 files changed, 353 insertions, 60 deletions
diff --git a/www-client/chromium/files/chromium-80-gcc-abstract.patch b/www-client/chromium/files/chromium-80-gcc-abstract.patch
new file mode 100644
index 000000000000..190a67258e1d
--- /dev/null
+++ b/www-client/chromium/files/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/www-client/chromium/files/chromium-80-gcc-blink.patch b/www-client/chromium/files/chromium-80-gcc-blink.patch
index fdc28f324350..2118b46f39a4 100644
--- a/www-client/chromium/files/chromium-80-gcc-blink.patch
+++ b/www-client/chromium/files/chromium-80-gcc-blink.patch
@@ -1,3 +1,21 @@
+../../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
diff --git a/www-client/chromium/files/chromium-80-gcc-incomplete-type.patch b/www-client/chromium/files/chromium-80-gcc-incomplete-type.patch
new file mode 100644
index 000000000000..8d10620a7170
--- /dev/null
+++ b/www-client/chromium/files/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@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@intel.com>
+Reviewed-by: Mikel Astiz <mastiz@chromium.org>
+Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@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/www-client/chromium/files/chromium-80-gcc-noexcept.patch b/www-client/chromium/files/chromium-80-gcc-noexcept.patch
deleted file mode 100644
index 93ac6c409be3..000000000000
--- a/www-client/chromium/files/chromium-80-gcc-noexcept.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From a75a2539ca600163f2136776fdc751111e887cd7 Mon Sep 17 00:00:00 2001
-From: Jose Dapena Paz <jose.dapena@lge.com>
-Date: Tue, 05 Nov 2019 17:57:52 +0100
-Subject: [PATCH] GCC: do not set noexcept on move assignment operator of ColorSet
-
-GCC build is broken because ColorSet default move assign operator is
-noexcept (because the color flat_map is not noexcept). It does not
-break clang because clang does not warn about this situation when
-building with -fno-exception.
-
-../../ui/color/color_set.cc:14:11: error: function ‘ui::ColorSet& ui::ColorSet::operator=(ui::ColorSet&&)’ defaulted on its redeclaration with an exception-specification that differs from the implicit exception-specification ‘’
- ColorSet& ColorSet::operator=(ColorSet&&) noexcept = default;
-
-Bug: 819294
-Change-Id: I00f4374fbf3d41dced9f9451c90478db528cb986
----
-
-diff --git a/ui/color/color_set.cc b/ui/color/color_set.cc
-index 56564d7..0d43b2b 100644
---- a/ui/color/color_set.cc
-+++ b/ui/color/color_set.cc
-@@ -9,9 +9,9 @@
- ColorSet::ColorSet(ColorSetId id, ColorMap&& colors)
- : id(id), colors(std::move(colors)) {}
-
--ColorSet::ColorSet(ColorSet&&) noexcept = default;
-+ColorSet::ColorSet(ColorSet&&) = default;
-
--ColorSet& ColorSet::operator=(ColorSet&&) noexcept = default;
-+ColorSet& ColorSet::operator=(ColorSet&&) = default;
-
- ColorSet::~ColorSet() = default;
-
-diff --git a/ui/color/color_set.h b/ui/color/color_set.h
-index b273c48..3eaea42 100644
---- a/ui/color/color_set.h
-+++ b/ui/color/color_set.h
-@@ -28,8 +28,8 @@
- using ColorMap = base::flat_map<ColorId, SkColor>;
-
- ColorSet(ColorSetId id, ColorMap&& colors);
-- ColorSet(ColorSet&&) noexcept;
-- ColorSet& operator=(ColorSet&&) noexcept;
-+ ColorSet(ColorSet&&);
-+ ColorSet& operator=(ColorSet&&);
- ~ColorSet();
-
- ColorSetId id;
diff --git a/www-client/chromium/files/chromium-80-gcc-permissive.patch b/www-client/chromium/files/chromium-80-gcc-permissive.patch
new file mode 100644
index 000000000000..c7aef49add12
--- /dev/null
+++ b/www-client/chromium/files/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/www-client/chromium/files/chromium-80-include.patch b/www-client/chromium/files/chromium-80-include.patch
index a2a00a9d4557..dd85de7249c4 100644
--- a/www-client/chromium/files/chromium-80-include.patch
+++ b/www-client/chromium/files/chromium-80-include.patch
@@ -1,13 +1,33 @@
-diff --git a/third_party/blink/renderer/core/core_initializer.h b/third_party/blink/renderer/core/core_initializer.h
-index 5e67f46..3b750c7 100644
---- a/third_party/blink/renderer/core/core_initializer.h
-+++ b/third_party/blink/renderer/core/core_initializer.h
-@@ -36,6 +36,8 @@
- #include "third_party/blink/renderer/core/core_export.h"
- #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
+From 8273f4d3130e06fd8b6bef87b07c936304b971d9 Mon Sep 17 00:00:00 2001
+From: Raphael Kubo da Costa <raphael.kubo.da.costa@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@intel.com>
+Reviewed-by: Jia Meng <jiameng@chromium.org>
+Commit-Queue: Raphael Kubo da Costa <raphael.kubo.da.costa@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 <memory>
-+
- namespace mojo {
- class BinderMap;
- }
+ #include <algorithm>
++#include <cmath>
+ #include <iterator>
+
+ #include "base/i18n/case_conversion.h"