From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 4D6ED138334 for ; Mon, 23 Dec 2019 16:22:25 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 45DFBE0AB2; Mon, 23 Dec 2019 16:22:24 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 21629E0AAF for ; Mon, 23 Dec 2019 16:22:24 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id AEEDD34DAF7 for ; Mon, 23 Dec 2019 16:22:22 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 364F174BA0 for ; Mon, 23 Dec 2019 16:22:21 +0000 (UTC) From: "Mike Gilbert" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Mike Gilbert" Message-ID: <1577118116.8ba7a983c4c70ff8d4afe770efeebe60160baafd.floppym@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: www-client/chromium/files/, www-client/chromium/ X-VCS-Repository: repo/gentoo X-VCS-Files: www-client/chromium/Manifest www-client/chromium/chromium-80.0.3970.5.ebuild www-client/chromium/chromium-80.0.3987.16.ebuild www-client/chromium/files/chromium-80-gcc-abstract.patch www-client/chromium/files/chromium-80-gcc-blink.patch www-client/chromium/files/chromium-80-gcc-incomplete-type.patch www-client/chromium/files/chromium-80-gcc-noexcept.patch www-client/chromium/files/chromium-80-gcc-permissive.patch www-client/chromium/files/chromium-80-include.patch X-VCS-Directories: www-client/chromium/ www-client/chromium/files/ X-VCS-Committer: floppym X-VCS-Committer-Name: Mike Gilbert X-VCS-Revision: 8ba7a983c4c70ff8d4afe770efeebe60160baafd X-VCS-Branch: master Date: Mon, 23 Dec 2019 16:22:21 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 4d9b0f7a-2e98-460d-aa54-7cee58956142 X-Archives-Hash: d7e13e6fc1c7c3638e4f47420a822149 commit: 8ba7a983c4c70ff8d4afe770efeebe60160baafd Author: Stephan Hartmann googlemail com> AuthorDate: Mon Dec 23 15:07:03 2019 +0000 Commit: Mike Gilbert gentoo org> CommitDate: Mon Dec 23 16:21:56 2019 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8ba7a983 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 googlemail.com> Signed-off-by: Mike Gilbert gentoo.org> www-client/chromium/Manifest | 2 +- ....3970.5.ebuild => chromium-80.0.3987.16.ebuild} | 11 +- .../chromium/files/chromium-80-gcc-abstract.patch | 41 ++++ .../chromium/files/chromium-80-gcc-blink.patch | 18 ++ .../files/chromium-80-gcc-incomplete-type.patch | 229 +++++++++++++++++++++ .../chromium/files/chromium-80-gcc-noexcept.patch | 48 ----- .../files/chromium-80-gcc-permissive.patch | 33 +++ .../chromium/files/chromium-80-include.patch | 44 ++-- 8 files changed, 360 insertions(+), 66 deletions(-) diff --git a/www-client/chromium/Manifest b/www-client/chromium/Manifest index 5fed89d9e5e..aae1648d6c6 100644 --- a/www-client/chromium/Manifest +++ b/www-client/chromium/Manifest @@ -1,2 +1,2 @@ DIST chromium-79.0.3945.88.tar.xz 778181840 BLAKE2B cf9eb0823f184f1590fc75df89bca907440f42244a519a5fd48bec9a25e16dd887c44b699acadc8a717f000c159bff843d5d0b007ca0e8d2c7eee09bb669e0ff SHA512 6474da7225beb9c99c01dc234b820924dd2fb3d736f53abbac02556f3bec43acd09aa02224666c4a735417500d10f57265ab130c29cce27124e5a69463cf5e0d -DIST chromium-80.0.3970.5.tar.xz 789810132 BLAKE2B 400fcefeb58cb784412eca7011267c9224786036494337ecb8dbc7f3f483ec05d6e26c424ef55286cbebdbc872e1c15acfb62413264bb8843334a11bbe73ab4d SHA512 398666d81beaeef3eeb3f00a9a512b2d4c4e74bd9f01f20fab06901eadcb6fdbd345c39c54f2af57c4e485f2cd35700cde6f6a3d6301df7ee920bf067bee31d6 +DIST chromium-80.0.3987.16.tar.xz 798746524 BLAKE2B 6b57e41d7859c179b513b9bc81dff2227e0cd3420349591286f27bdbb7fb21b489137c83949d32827c874d5aaccedea5b82fabc9a5325354c7f6519ba1606074 SHA512 6d6108cabead5e67fa2fc01894a26b07c16d1061e78c52180ee20b612b2943aa40f5743d75b6048f5aa90ffb2c94a6125ef9d0f4d3cd11abe4c94a6759d48869 diff --git a/www-client/chromium/chromium-80.0.3970.5.ebuild b/www-client/chromium/chromium-80.0.3987.16.ebuild similarity index 98% rename from www-client/chromium/chromium-80.0.3970.5.ebuild rename to www-client/chromium/chromium-80.0.3987.16.ebuild index c6af893cb11..34a27c4e758 100644 --- a/www-client/chromium/chromium-80.0.3970.5.ebuild +++ b/www-client/chromium/chromium-80.0.3987.16.ebuild @@ -33,7 +33,7 @@ COMMON_DEPEND=" dev-libs/libxslt:= dev-libs/nspr:= >=dev-libs/nss-3.26:= - >=dev-libs/re2-0.2016.11.01:= + >=dev-libs/re2-0.2019.08.01:= gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) >=media-libs/alsa-lib-1.0.19:= media-libs/fontconfig:= @@ -51,7 +51,7 @@ COMMON_DEPEND=" >=net-fs/samba-4.5.10-r1[-debug(-)] ) !=net-fs/samba-4.5.12-r0 - media-libs/opus:= + >=media-libs/opus-1.3.1:= ) sys-apps/dbus:= sys-apps/pciutils:= @@ -148,9 +148,11 @@ PATCHES=( "${FILESDIR}/chromium-79-gcc-alignas.patch" "${FILESDIR}/chromium-80-unbundle-libxml.patch" "${FILESDIR}/chromium-80-include.patch" - "${FILESDIR}/chromium-80-gcc-noexcept.patch" "${FILESDIR}/chromium-80-gcc-quiche.patch" + "${FILESDIR}/chromium-80-gcc-permissive.patch" "${FILESDIR}/chromium-80-gcc-blink.patch" + "${FILESDIR}/chromium-80-gcc-abstract.patch" + "${FILESDIR}/chromium-80-gcc-incomplete-type.patch" ) pre_build_checks() { @@ -275,8 +277,8 @@ src_prepare() { third_party/dom_distiller_js third_party/emoji-segmenter third_party/flatbuffers - third_party/flot third_party/freetype + third_party/libgifcodec third_party/glslang third_party/google_input_tools third_party/google_input_tools/third_party/closure_library @@ -344,7 +346,6 @@ src_prepare() { 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/skcms third_party/skia/third_party/vulkan third_party/smhasher 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 00000000000..190a67258e1 --- /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': +../../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 + }; + + template <> +-struct CrossThreadCopier +- : public CrossThreadCopierPassThrough { ++struct CrossThreadCopier> ++ : public CrossThreadCopierPassThrough< ++ rtc::scoped_refptr> { + 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 fdc28f32435..2118b46f39a 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&, )' + 256 | EnclosingNodeOfType(start, &IsA)); + | ^ +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 '' 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 >'} to 'const PositionInFlatTree&' {aka 'const blink::PositionTemplate >&'} + 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 00000000000..8d10620a717 --- /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 +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, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>' requested here + : std::aligned_storage + ^ +/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, 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, 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, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>, true>' requested here + rebind_traits; + ^ +/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, 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::pair, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>, std::allocator, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> >, std::__detail::_Select1st, std::equal_to >, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__deta +il::_Hashtable_traits >' requested here + _Hashtable _M_h; + ^ +../../components/sync_bookmarks/bookmark_model_merger.h:146:22: note: in instantiation of template class 'std::unordered_map, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode, std::hash, std::equal_to >, std::allocator, 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 +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 +Reviewed-by: Mikel Astiz +Auto-Submit: Raphael Kubo da Costa +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 +-#include + #include + #include + #include +@@ -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 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* ++ 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& 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* +- 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 update_; +- std::vector 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 + #include + #include + #include +@@ -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; ++ ++ 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 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& 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* ++ guid_to_remote_node_map) const; ++ ++ private: ++ static bool UniquePositionLessThan(const RemoteTreeNode& lhs, ++ const RemoteTreeNode& rhs); ++ ++ RemoteTreeNode(); ++ ++ std::unique_ptr update_; ++ std::vector 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 93ac6c409be..00000000000 --- 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 -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; - - 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 00000000000..c7aef49add1 --- /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/base/media_log_properties_helper.h:86:75: error: explicit specialization of non-template 'media::internal::' + 86 | struct internal::MediaLogPropertyTypeConverter { + | ^ + +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> { + + // Specializer for sending AudioDecoderConfigs to the media tab in devtools. + template <> +-struct internal::MediaLogPropertyTypeConverter { ++struct MediaLogPropertyTypeConverter { + 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 { + + // Specializer for sending VideoDecoderConfigs to the media tab in devtools. + template <> +-struct internal::MediaLogPropertyTypeConverter { ++struct MediaLogPropertyTypeConverter { + 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 a2a00a9d455..dd85de7249c 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 +Date: Tue, 10 Dec 2019 20:59:57 +0000 +Subject: [PATCH] [cros search service]: Include 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 +Reviewed-by: Jia Meng +Commit-Queue: Raphael Kubo da Costa +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 -+ - namespace mojo { - class BinderMap; - } + #include ++#include + #include + + #include "base/i18n/case_conversion.h"