1 |
commit: 8ba7a983c4c70ff8d4afe770efeebe60160baafd |
2 |
Author: Stephan Hartmann <stha09 <AT> googlemail <DOT> com> |
3 |
AuthorDate: Mon Dec 23 15:07:03 2019 +0000 |
4 |
Commit: Mike Gilbert <floppym <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Dec 23 16:21:56 2019 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8ba7a983 |
7 |
|
8 |
www-client/chromium: beta channel bump to 80.0.3987.16 |
9 |
|
10 |
Package-Manager: Portage-2.3.76, Repoman-2.3.16 |
11 |
Signed-off-by: Stephan Hartmann <stha09 <AT> googlemail.com> |
12 |
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org> |
13 |
|
14 |
www-client/chromium/Manifest | 2 +- |
15 |
....3970.5.ebuild => chromium-80.0.3987.16.ebuild} | 11 +- |
16 |
.../chromium/files/chromium-80-gcc-abstract.patch | 41 ++++ |
17 |
.../chromium/files/chromium-80-gcc-blink.patch | 18 ++ |
18 |
.../files/chromium-80-gcc-incomplete-type.patch | 229 +++++++++++++++++++++ |
19 |
.../chromium/files/chromium-80-gcc-noexcept.patch | 48 ----- |
20 |
.../files/chromium-80-gcc-permissive.patch | 33 +++ |
21 |
.../chromium/files/chromium-80-include.patch | 44 ++-- |
22 |
8 files changed, 360 insertions(+), 66 deletions(-) |
23 |
|
24 |
diff --git a/www-client/chromium/Manifest b/www-client/chromium/Manifest |
25 |
index 5fed89d9e5e..aae1648d6c6 100644 |
26 |
--- a/www-client/chromium/Manifest |
27 |
+++ b/www-client/chromium/Manifest |
28 |
@@ -1,2 +1,2 @@ |
29 |
DIST chromium-79.0.3945.88.tar.xz 778181840 BLAKE2B cf9eb0823f184f1590fc75df89bca907440f42244a519a5fd48bec9a25e16dd887c44b699acadc8a717f000c159bff843d5d0b007ca0e8d2c7eee09bb669e0ff SHA512 6474da7225beb9c99c01dc234b820924dd2fb3d736f53abbac02556f3bec43acd09aa02224666c4a735417500d10f57265ab130c29cce27124e5a69463cf5e0d |
30 |
-DIST chromium-80.0.3970.5.tar.xz 789810132 BLAKE2B 400fcefeb58cb784412eca7011267c9224786036494337ecb8dbc7f3f483ec05d6e26c424ef55286cbebdbc872e1c15acfb62413264bb8843334a11bbe73ab4d SHA512 398666d81beaeef3eeb3f00a9a512b2d4c4e74bd9f01f20fab06901eadcb6fdbd345c39c54f2af57c4e485f2cd35700cde6f6a3d6301df7ee920bf067bee31d6 |
31 |
+DIST chromium-80.0.3987.16.tar.xz 798746524 BLAKE2B 6b57e41d7859c179b513b9bc81dff2227e0cd3420349591286f27bdbb7fb21b489137c83949d32827c874d5aaccedea5b82fabc9a5325354c7f6519ba1606074 SHA512 6d6108cabead5e67fa2fc01894a26b07c16d1061e78c52180ee20b612b2943aa40f5743d75b6048f5aa90ffb2c94a6125ef9d0f4d3cd11abe4c94a6759d48869 |
32 |
|
33 |
diff --git a/www-client/chromium/chromium-80.0.3970.5.ebuild b/www-client/chromium/chromium-80.0.3987.16.ebuild |
34 |
similarity index 98% |
35 |
rename from www-client/chromium/chromium-80.0.3970.5.ebuild |
36 |
rename to www-client/chromium/chromium-80.0.3987.16.ebuild |
37 |
index c6af893cb11..34a27c4e758 100644 |
38 |
--- a/www-client/chromium/chromium-80.0.3970.5.ebuild |
39 |
+++ b/www-client/chromium/chromium-80.0.3987.16.ebuild |
40 |
@@ -33,7 +33,7 @@ COMMON_DEPEND=" |
41 |
dev-libs/libxslt:= |
42 |
dev-libs/nspr:= |
43 |
>=dev-libs/nss-3.26:= |
44 |
- >=dev-libs/re2-0.2016.11.01:= |
45 |
+ >=dev-libs/re2-0.2019.08.01:= |
46 |
gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) |
47 |
>=media-libs/alsa-lib-1.0.19:= |
48 |
media-libs/fontconfig:= |
49 |
@@ -51,7 +51,7 @@ COMMON_DEPEND=" |
50 |
>=net-fs/samba-4.5.10-r1[-debug(-)] |
51 |
) |
52 |
!=net-fs/samba-4.5.12-r0 |
53 |
- media-libs/opus:= |
54 |
+ >=media-libs/opus-1.3.1:= |
55 |
) |
56 |
sys-apps/dbus:= |
57 |
sys-apps/pciutils:= |
58 |
@@ -148,9 +148,11 @@ PATCHES=( |
59 |
"${FILESDIR}/chromium-79-gcc-alignas.patch" |
60 |
"${FILESDIR}/chromium-80-unbundle-libxml.patch" |
61 |
"${FILESDIR}/chromium-80-include.patch" |
62 |
- "${FILESDIR}/chromium-80-gcc-noexcept.patch" |
63 |
"${FILESDIR}/chromium-80-gcc-quiche.patch" |
64 |
+ "${FILESDIR}/chromium-80-gcc-permissive.patch" |
65 |
"${FILESDIR}/chromium-80-gcc-blink.patch" |
66 |
+ "${FILESDIR}/chromium-80-gcc-abstract.patch" |
67 |
+ "${FILESDIR}/chromium-80-gcc-incomplete-type.patch" |
68 |
) |
69 |
|
70 |
pre_build_checks() { |
71 |
@@ -275,8 +277,8 @@ src_prepare() { |
72 |
third_party/dom_distiller_js |
73 |
third_party/emoji-segmenter |
74 |
third_party/flatbuffers |
75 |
- third_party/flot |
76 |
third_party/freetype |
77 |
+ third_party/libgifcodec |
78 |
third_party/glslang |
79 |
third_party/google_input_tools |
80 |
third_party/google_input_tools/third_party/closure_library |
81 |
@@ -344,7 +346,6 @@ src_prepare() { |
82 |
third_party/skia |
83 |
third_party/skia/include/third_party/skcms |
84 |
third_party/skia/include/third_party/vulkan |
85 |
- third_party/skia/third_party/gif |
86 |
third_party/skia/third_party/skcms |
87 |
third_party/skia/third_party/vulkan |
88 |
third_party/smhasher |
89 |
|
90 |
diff --git a/www-client/chromium/files/chromium-80-gcc-abstract.patch b/www-client/chromium/files/chromium-80-gcc-abstract.patch |
91 |
new file mode 100644 |
92 |
index 00000000000..190a67258e1 |
93 |
--- /dev/null |
94 |
+++ b/www-client/chromium/files/chromium-80-gcc-abstract.patch |
95 |
@@ -0,0 +1,41 @@ |
96 |
+In file included from ../../third_party/blink/renderer/platform/heap/persistent.h:18, |
97 |
+ from ../../third_party/blink/public/platform/web_private_ptr.h:40, |
98 |
+ from ../../third_party/blink/public/platform/web_media_stream_track.h:33, |
99 |
+ from ../../third_party/blink/public/platform/web_media_stream_source.h:37, |
100 |
+ from ../../third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.h:19, |
101 |
+ from ../../third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.cc:5: |
102 |
+../../third_party/blink/renderer/platform/wtf/cross_thread_copier.h: In instantiation of 'struct WTF::CrossThreadCopierPassThrough<webrtc::VideoTrackInterface>': |
103 |
+../../third_party/blink/renderer/modules/peerconnection/adapters/web_rtc_cross_thread_copier.h:169:14: required from here |
104 |
+../../third_party/blink/renderer/platform/wtf/cross_thread_copier.h:80:15: error: invalid abstract return type 'webrtc::VideoTrackInterface' |
105 |
+ 80 | static Type Copy(const T& parameter) { return parameter; } |
106 |
+ | ^~~~ |
107 |
+In file included from ../../third_party/webrtc/api/peer_connection_interface.h:88, |
108 |
+ from ../../third_party/blink/public/platform/web_rtc_peer_connection_handler.h:39, |
109 |
+ from ../../third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.h:20, |
110 |
+ from ../../third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.cc:5: |
111 |
+../../third_party/webrtc/api/media_stream_interface.h:174:18: note: because the following virtual functions are pure within 'webrtc::VideoTrackInterface': |
112 |
+ 174 | class RTC_EXPORT VideoTrackInterface |
113 |
+ | ^~~~~~~~~~~~~~~~~~~ |
114 |
+../../third_party/webrtc/api/media_stream_interface.h:48:16: note: 'virtual void webrtc::NotifierInterface::RegisterObserver(webrtc::ObserverInterface*)' |
115 |
+ 48 | virtual void RegisterObserver(ObserverInterface* observer) = 0; |
116 |
+ | ^~~~~~~~~~~~~~~~ |
117 |
+../../third_party/webrtc/api/media_stream_interface.h:49:16: note: 'virtual void webrtc::NotifierInterface::UnregisterObserver(webrtc::ObserverInterface*)' |
118 |
+ 49 | virtual void UnregisterObserver(ObserverInterface* observer) = 0; |
119 |
+ | ^~~~~~~~~~~~~~~~~~ |
120 |
+ |
121 |
+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 |
122 |
+index 54cb7d1..0d6c40f 100644 |
123 |
+--- a/third_party/blink/renderer/modules/peerconnection/adapters/web_rtc_cross_thread_copier.h |
124 |
++++ b/third_party/blink/renderer/modules/peerconnection/adapters/web_rtc_cross_thread_copier.h |
125 |
+@@ -165,8 +165,9 @@ struct CrossThreadCopier<blink::MediaStreamVideoTrack> |
126 |
+ }; |
127 |
+ |
128 |
+ template <> |
129 |
+-struct CrossThreadCopier<webrtc::VideoTrackInterface> |
130 |
+- : public CrossThreadCopierPassThrough<webrtc::VideoTrackInterface> { |
131 |
++struct CrossThreadCopier<rtc::scoped_refptr<webrtc::VideoTrackInterface>> |
132 |
++ : public CrossThreadCopierPassThrough< |
133 |
++ rtc::scoped_refptr<webrtc::VideoTrackInterface>> { |
134 |
+ STATIC_ONLY(CrossThreadCopier); |
135 |
+ }; |
136 |
+ |
137 |
|
138 |
diff --git a/www-client/chromium/files/chromium-80-gcc-blink.patch b/www-client/chromium/files/chromium-80-gcc-blink.patch |
139 |
index fdc28f32435..2118b46f39a 100644 |
140 |
--- a/www-client/chromium/files/chromium-80-gcc-blink.patch |
141 |
+++ b/www-client/chromium/files/chromium-80-gcc-blink.patch |
142 |
@@ -1,3 +1,21 @@ |
143 |
+../../third_party/blink/renderer/core/editing/commands/delete_selection_command.cc: In member function 'void blink::DeleteSelectionCommand::InitializePositionData(blink::EditingState*)': |
144 |
+../../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>)' |
145 |
+ 256 | EnclosingNodeOfType(start, &IsA<HTMLTableRowElement>)); |
146 |
+ | ^ |
147 |
+In file included from ../../third_party/blink/renderer/core/editing/commands/delete_selection_command.cc:34: |
148 |
+../../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)' |
149 |
+ 112 | CORE_EXPORT Node* EnclosingNodeOfType( |
150 |
+ | ^~~~~~~~~~~~~~~~~~~ |
151 |
+../../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*)' |
152 |
+ 114 | bool (*node_is_of_type)(const Node*), |
153 |
+ | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
154 |
+../../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)' |
155 |
+ 116 | CORE_EXPORT Node* EnclosingNodeOfType( |
156 |
+ | ^~~~~~~~~~~~~~~~~~~ |
157 |
+../../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> >&'} |
158 |
+ 117 | const PositionInFlatTree&, |
159 |
+ | ^~~~~~~~~~~~~~~~~~~~~~~~~ |
160 |
+ |
161 |
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 |
162 |
index 6ff6906..dd531ae 100644 |
163 |
--- a/third_party/blink/renderer/core/editing/commands/delete_selection_command.cc |
164 |
|
165 |
diff --git a/www-client/chromium/files/chromium-80-gcc-incomplete-type.patch b/www-client/chromium/files/chromium-80-gcc-incomplete-type.patch |
166 |
new file mode 100644 |
167 |
index 00000000000..8d10620a717 |
168 |
--- /dev/null |
169 |
+++ b/www-client/chromium/files/chromium-80-gcc-incomplete-type.patch |
170 |
@@ -0,0 +1,229 @@ |
171 |
+From cdf3e81ff49b200213d67d65558f2919222b60ab Mon Sep 17 00:00:00 2001 |
172 |
+From: Raphael Kubo da Costa <raphael.kubo.da.costa@×××××.com> |
173 |
+Date: Mon, 16 Dec 2019 11:39:11 +0000 |
174 |
+Subject: [PATCH] BookmarkModelMerger: Move RemoteTreeNode declaration to header. |
175 |
+ |
176 |
+This fixes the build with libstdc++ after commit 8f5dad93e58 ("Fix CHECK |
177 |
+failure due to untracked local nodes"): |
178 |
+ |
179 |
+/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' |
180 |
+ _T2 second; /// @c second is a copy of the second object |
181 |
+ ^ |
182 |
+/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 |
183 |
+ : std::aligned_storage<sizeof(_Tp), __alignof__(_Tp)> |
184 |
+ ^ |
185 |
+/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 |
186 |
+ __gnu_cxx::__aligned_buffer<_Value> _M_storage; |
187 |
+ ^ |
188 |
+/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 |
189 |
+ struct _Hash_node<_Value, true> : _Hash_node_value_base<_Value> |
190 |
+ ^ |
191 |
+/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 |
192 |
+ rebind_traits<typename __node_type::value_type>; |
193 |
+ ^ |
194 |
+/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> > > |
195 |
+' requested here |
196 |
+ private __detail::_Hashtable_alloc< |
197 |
+ ^ |
198 |
+/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 |
199 |
+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 |
200 |
+il::_Hashtable_traits<true, false, true> >' requested here |
201 |
+ _Hashtable _M_h; |
202 |
+ ^ |
203 |
+../../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 |
204 |
+st std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> > >' requested here |
205 |
+ const RemoteForest remote_forest_; |
206 |
+ ^ |
207 |
+../../components/sync_bookmarks/bookmark_model_merger.h:53:9: note: forward declaration of 'sync_bookmarks::BookmarkModelMerger::RemoteTreeNode' |
208 |
+ class RemoteTreeNode; |
209 |
+ ^ |
210 |
+ |
211 |
+Essentially, the problem is that libstdc++'s std::unordered_map<T, U> |
212 |
+implementation requires both T and U to be fully declared. I raised the |
213 |
+problem in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92770, and GCC's |
214 |
+position is that we are relying on undefined behavior according to the C++ |
215 |
+standard (https://eel.is/c++draft/requirements#res.on.functions-2.5). |
216 |
+ |
217 |
+Bug: 957519 |
218 |
+Change-Id: Ife7e435e516932a795bfbe05b2c910c3272878f0 |
219 |
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1960156 |
220 |
+Commit-Queue: Raphael Kubo da Costa <raphael.kubo.da.costa@×××××.com> |
221 |
+Reviewed-by: Mikel Astiz <mastiz@××××××××.org> |
222 |
+Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@×××××.com> |
223 |
+Cr-Commit-Position: refs/heads/master@{#725070} |
224 |
+--- |
225 |
+ |
226 |
+diff --git a/components/sync_bookmarks/bookmark_model_merger.cc b/components/sync_bookmarks/bookmark_model_merger.cc |
227 |
+index eae153ef..579848e 100644 |
228 |
+--- a/components/sync_bookmarks/bookmark_model_merger.cc |
229 |
++++ b/components/sync_bookmarks/bookmark_model_merger.cc |
230 |
+@@ -5,7 +5,6 @@ |
231 |
+ #include "components/sync_bookmarks/bookmark_model_merger.h" |
232 |
+ |
233 |
+ #include <algorithm> |
234 |
+-#include <memory> |
235 |
+ #include <set> |
236 |
+ #include <string> |
237 |
+ #include <utility> |
238 |
+@@ -205,66 +204,44 @@ |
239 |
+ |
240 |
+ } // namespace |
241 |
+ |
242 |
+-class BookmarkModelMerger::RemoteTreeNode final { |
243 |
+- public: |
244 |
+- // Constructs a tree given |update| as root and recursively all descendants by |
245 |
+- // traversing |*updates_per_parent_id|. |update| and |updates_per_parent_id| |
246 |
+- // must not be null. All updates |*updates_per_parent_id| must represent valid |
247 |
+- // updates. Updates corresponding from descendant nodes are moved away from |
248 |
+- // |*updates_per_parent_id|. |
249 |
+- static RemoteTreeNode BuildTree( |
250 |
+- std::unique_ptr<syncer::UpdateResponseData> update, |
251 |
+- UpdatesPerParentId* updates_per_parent_id); |
252 |
++BookmarkModelMerger::RemoteTreeNode::RemoteTreeNode() = default; |
253 |
+ |
254 |
+- ~RemoteTreeNode() = default; |
255 |
++BookmarkModelMerger::RemoteTreeNode::~RemoteTreeNode() = default; |
256 |
+ |
257 |
+- // Allow moves, useful during construction. |
258 |
+- RemoteTreeNode(RemoteTreeNode&&) = default; |
259 |
+- RemoteTreeNode& operator=(RemoteTreeNode&&) = default; |
260 |
++BookmarkModelMerger::RemoteTreeNode::RemoteTreeNode( |
261 |
++ BookmarkModelMerger::RemoteTreeNode&&) = default; |
262 |
++BookmarkModelMerger::RemoteTreeNode& BookmarkModelMerger::RemoteTreeNode:: |
263 |
++operator=(BookmarkModelMerger::RemoteTreeNode&&) = default; |
264 |
+ |
265 |
+- const syncer::EntityData& entity() const { return *update_->entity; } |
266 |
+- int64_t response_version() const { return update_->response_version; } |
267 |
++void BookmarkModelMerger::RemoteTreeNode::EmplaceSelfAndDescendantsByGUID( |
268 |
++ std::unordered_map<std::string, const RemoteTreeNode*>* |
269 |
++ guid_to_remote_node_map) const { |
270 |
++ DCHECK(guid_to_remote_node_map); |
271 |
+ |
272 |
+- // Direct children nodes, sorted by ascending unique position. These are |
273 |
+- // guaranteed to be valid updates (e.g. IsValidBookmarkSpecifics()). |
274 |
+- const std::vector<RemoteTreeNode>& children() const { return children_; } |
275 |
++ const std::string& guid = entity().specifics.bookmark().guid(); |
276 |
++ if (!guid.empty()) { |
277 |
++ DCHECK(base::IsValidGUID(guid)); |
278 |
+ |
279 |
+- // Recursively emplaces all GUIDs (this node and descendants) into |
280 |
+- // |*guid_to_remote_node_map|, which must not be null. |
281 |
+- void EmplaceSelfAndDescendantsByGUID( |
282 |
+- std::unordered_map<std::string, const RemoteTreeNode*>* |
283 |
+- guid_to_remote_node_map) const { |
284 |
+- DCHECK(guid_to_remote_node_map); |
285 |
+- |
286 |
+- const std::string& guid = entity().specifics.bookmark().guid(); |
287 |
+- if (!guid.empty()) { |
288 |
+- DCHECK(base::IsValidGUID(guid)); |
289 |
+- |
290 |
+- // Duplicate GUIDs have been sorted out before. |
291 |
+- bool success = guid_to_remote_node_map->emplace(guid, this).second; |
292 |
+- DCHECK(success); |
293 |
+- } |
294 |
+- |
295 |
+- for (const RemoteTreeNode& child : children_) { |
296 |
+- child.EmplaceSelfAndDescendantsByGUID(guid_to_remote_node_map); |
297 |
+- } |
298 |
++ // Duplicate GUIDs have been sorted out before. |
299 |
++ bool success = guid_to_remote_node_map->emplace(guid, this).second; |
300 |
++ DCHECK(success); |
301 |
+ } |
302 |
+ |
303 |
+- private: |
304 |
+- static bool UniquePositionLessThan(const RemoteTreeNode& lhs, |
305 |
+- const RemoteTreeNode& rhs) { |
306 |
+- const syncer::UniquePosition a_pos = |
307 |
+- syncer::UniquePosition::FromProto(lhs.entity().unique_position); |
308 |
+- const syncer::UniquePosition b_pos = |
309 |
+- syncer::UniquePosition::FromProto(rhs.entity().unique_position); |
310 |
+- return a_pos.LessThan(b_pos); |
311 |
++ for (const RemoteTreeNode& child : children_) { |
312 |
++ child.EmplaceSelfAndDescendantsByGUID(guid_to_remote_node_map); |
313 |
+ } |
314 |
++} |
315 |
+ |
316 |
+- RemoteTreeNode() = default; |
317 |
+- |
318 |
+- std::unique_ptr<syncer::UpdateResponseData> update_; |
319 |
+- std::vector<RemoteTreeNode> children_; |
320 |
+-}; |
321 |
++// static |
322 |
++bool BookmarkModelMerger::RemoteTreeNode::UniquePositionLessThan( |
323 |
++ const RemoteTreeNode& lhs, |
324 |
++ const RemoteTreeNode& rhs) { |
325 |
++ const syncer::UniquePosition a_pos = |
326 |
++ syncer::UniquePosition::FromProto(lhs.entity().unique_position); |
327 |
++ const syncer::UniquePosition b_pos = |
328 |
++ syncer::UniquePosition::FromProto(rhs.entity().unique_position); |
329 |
++ return a_pos.LessThan(b_pos); |
330 |
++} |
331 |
+ |
332 |
+ // static |
333 |
+ BookmarkModelMerger::RemoteTreeNode |
334 |
+diff --git a/components/sync_bookmarks/bookmark_model_merger.h b/components/sync_bookmarks/bookmark_model_merger.h |
335 |
+index 9b59200..bf0783ec 100644 |
336 |
+--- a/components/sync_bookmarks/bookmark_model_merger.h |
337 |
++++ b/components/sync_bookmarks/bookmark_model_merger.h |
338 |
+@@ -5,6 +5,7 @@ |
339 |
+ #ifndef COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_MODEL_MERGER_H_ |
340 |
+ #define COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_MODEL_MERGER_H_ |
341 |
+ |
342 |
++#include <memory> |
343 |
+ #include <string> |
344 |
+ #include <unordered_map> |
345 |
+ #include <vector> |
346 |
+@@ -50,7 +51,52 @@ |
347 |
+ |
348 |
+ private: |
349 |
+ // Internal representation of a remote tree, composed of nodes. |
350 |
+- class RemoteTreeNode; |
351 |
++ class RemoteTreeNode final { |
352 |
++ private: |
353 |
++ using UpdatesPerParentId = |
354 |
++ std::unordered_map<base::StringPiece, |
355 |
++ syncer::UpdateResponseDataList, |
356 |
++ base::StringPieceHash>; |
357 |
++ |
358 |
++ public: |
359 |
++ // Constructs a tree given |update| as root and recursively all descendants |
360 |
++ // by traversing |*updates_per_parent_id|. |update| and |
361 |
++ // |updates_per_parent_id| must not be null. All updates |
362 |
++ // |*updates_per_parent_id| must represent valid updates. Updates |
363 |
++ // corresponding from descendant nodes are moved away from |
364 |
++ // |*updates_per_parent_id|. |
365 |
++ static RemoteTreeNode BuildTree( |
366 |
++ std::unique_ptr<syncer::UpdateResponseData> update, |
367 |
++ UpdatesPerParentId* updates_per_parent_id); |
368 |
++ |
369 |
++ ~RemoteTreeNode(); |
370 |
++ |
371 |
++ // Allow moves, useful during construction. |
372 |
++ RemoteTreeNode(RemoteTreeNode&&); |
373 |
++ RemoteTreeNode& operator=(RemoteTreeNode&&); |
374 |
++ |
375 |
++ const syncer::EntityData& entity() const { return *update_->entity; } |
376 |
++ int64_t response_version() const { return update_->response_version; } |
377 |
++ |
378 |
++ // Direct children nodes, sorted by ascending unique position. These are |
379 |
++ // guaranteed to be valid updates (e.g. IsValidBookmarkSpecifics()). |
380 |
++ const std::vector<RemoteTreeNode>& children() const { return children_; } |
381 |
++ |
382 |
++ // Recursively emplaces all GUIDs (this node and descendants) into |
383 |
++ // |*guid_to_remote_node_map|, which must not be null. |
384 |
++ void EmplaceSelfAndDescendantsByGUID( |
385 |
++ std::unordered_map<std::string, const RemoteTreeNode*>* |
386 |
++ guid_to_remote_node_map) const; |
387 |
++ |
388 |
++ private: |
389 |
++ static bool UniquePositionLessThan(const RemoteTreeNode& lhs, |
390 |
++ const RemoteTreeNode& rhs); |
391 |
++ |
392 |
++ RemoteTreeNode(); |
393 |
++ |
394 |
++ std::unique_ptr<syncer::UpdateResponseData> update_; |
395 |
++ std::vector<RemoteTreeNode> children_; |
396 |
++ }; |
397 |
+ |
398 |
+ // A forest composed of multiple trees where the root of each tree represents |
399 |
+ // a permanent node, keyed by server-defined unique tag of the root. |
400 |
|
401 |
diff --git a/www-client/chromium/files/chromium-80-gcc-noexcept.patch b/www-client/chromium/files/chromium-80-gcc-noexcept.patch |
402 |
deleted file mode 100644 |
403 |
index 93ac6c409be..00000000000 |
404 |
--- a/www-client/chromium/files/chromium-80-gcc-noexcept.patch |
405 |
+++ /dev/null |
406 |
@@ -1,48 +0,0 @@ |
407 |
-From a75a2539ca600163f2136776fdc751111e887cd7 Mon Sep 17 00:00:00 2001 |
408 |
-From: Jose Dapena Paz <jose.dapena@×××.com> |
409 |
-Date: Tue, 05 Nov 2019 17:57:52 +0100 |
410 |
-Subject: [PATCH] GCC: do not set noexcept on move assignment operator of ColorSet |
411 |
- |
412 |
-GCC build is broken because ColorSet default move assign operator is |
413 |
-noexcept (because the color flat_map is not noexcept). It does not |
414 |
-break clang because clang does not warn about this situation when |
415 |
-building with -fno-exception. |
416 |
- |
417 |
-../../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 ‘’ |
418 |
- ColorSet& ColorSet::operator=(ColorSet&&) noexcept = default; |
419 |
- |
420 |
-Bug: 819294 |
421 |
-Change-Id: I00f4374fbf3d41dced9f9451c90478db528cb986 |
422 |
---- |
423 |
- |
424 |
-diff --git a/ui/color/color_set.cc b/ui/color/color_set.cc |
425 |
-index 56564d7..0d43b2b 100644 |
426 |
---- a/ui/color/color_set.cc |
427 |
-+++ b/ui/color/color_set.cc |
428 |
-@@ -9,9 +9,9 @@ |
429 |
- ColorSet::ColorSet(ColorSetId id, ColorMap&& colors) |
430 |
- : id(id), colors(std::move(colors)) {} |
431 |
- |
432 |
--ColorSet::ColorSet(ColorSet&&) noexcept = default; |
433 |
-+ColorSet::ColorSet(ColorSet&&) = default; |
434 |
- |
435 |
--ColorSet& ColorSet::operator=(ColorSet&&) noexcept = default; |
436 |
-+ColorSet& ColorSet::operator=(ColorSet&&) = default; |
437 |
- |
438 |
- ColorSet::~ColorSet() = default; |
439 |
- |
440 |
-diff --git a/ui/color/color_set.h b/ui/color/color_set.h |
441 |
-index b273c48..3eaea42 100644 |
442 |
---- a/ui/color/color_set.h |
443 |
-+++ b/ui/color/color_set.h |
444 |
-@@ -28,8 +28,8 @@ |
445 |
- using ColorMap = base::flat_map<ColorId, SkColor>; |
446 |
- |
447 |
- ColorSet(ColorSetId id, ColorMap&& colors); |
448 |
-- ColorSet(ColorSet&&) noexcept; |
449 |
-- ColorSet& operator=(ColorSet&&) noexcept; |
450 |
-+ ColorSet(ColorSet&&); |
451 |
-+ ColorSet& operator=(ColorSet&&); |
452 |
- ~ColorSet(); |
453 |
- |
454 |
- ColorSetId id; |
455 |
|
456 |
diff --git a/www-client/chromium/files/chromium-80-gcc-permissive.patch b/www-client/chromium/files/chromium-80-gcc-permissive.patch |
457 |
new file mode 100644 |
458 |
index 00000000000..c7aef49add1 |
459 |
--- /dev/null |
460 |
+++ b/www-client/chromium/files/chromium-80-gcc-permissive.patch |
461 |
@@ -0,0 +1,33 @@ |
462 |
+In file included from ../../media/base/media_log_properties.h:13, |
463 |
+ from ../../media/base/media_log.h:23, |
464 |
+ from ../../media/filters/frame_processor.h:15, |
465 |
+ from ../../media/filters/frame_processor.cc:5: |
466 |
+../../media/base/media_log_properties_helper.h:86:8: error: extra qualification not allowed [-fpermissive] |
467 |
+ 86 | struct internal::MediaLogPropertyTypeConverter<media::AudioDecoderConfig> { |
468 |
+ | ^~~~~~~~ |
469 |
+../../media/base/media_log_properties_helper.h:86:75: error: explicit specialization of non-template 'media::internal::<unnamed struct>' |
470 |
+ 86 | struct internal::MediaLogPropertyTypeConverter<media::AudioDecoderConfig> { |
471 |
+ | ^ |
472 |
+ |
473 |
+diff --git a/media/base/media_log_properties_helper.h b/media/base/media_log_properties_helper.h |
474 |
+index 95ff70a..549b003 100644 |
475 |
+--- a/media/base/media_log_properties_helper.h |
476 |
++++ b/media/base/media_log_properties_helper.h |
477 |
+@@ -83,7 +83,7 @@ struct MediaLogPropertyTypeConverter<std::vector<T>> { |
478 |
+ |
479 |
+ // Specializer for sending AudioDecoderConfigs to the media tab in devtools. |
480 |
+ template <> |
481 |
+-struct internal::MediaLogPropertyTypeConverter<media::AudioDecoderConfig> { |
482 |
++struct MediaLogPropertyTypeConverter<media::AudioDecoderConfig> { |
483 |
+ static base::Value Convert(const AudioDecoderConfig& value) { |
484 |
+ base::Value result(base::Value::Type::DICTIONARY); |
485 |
+ result.SetStringKey("codec", GetCodecName(value.codec())); |
486 |
+@@ -114,7 +114,7 @@ struct internal::MediaLogPropertyTypeConverter<media::AudioDecoderConfig> { |
487 |
+ |
488 |
+ // Specializer for sending VideoDecoderConfigs to the media tab in devtools. |
489 |
+ template <> |
490 |
+-struct internal::MediaLogPropertyTypeConverter<VideoDecoderConfig> { |
491 |
++struct MediaLogPropertyTypeConverter<VideoDecoderConfig> { |
492 |
+ static base::Value Convert(const VideoDecoderConfig& value) { |
493 |
+ base::Value result(base::Value::Type::DICTIONARY); |
494 |
+ result.SetStringKey("codec", GetCodecName(value.codec())); |
495 |
|
496 |
diff --git a/www-client/chromium/files/chromium-80-include.patch b/www-client/chromium/files/chromium-80-include.patch |
497 |
index a2a00a9d455..dd85de7249c 100644 |
498 |
--- a/www-client/chromium/files/chromium-80-include.patch |
499 |
+++ b/www-client/chromium/files/chromium-80-include.patch |
500 |
@@ -1,13 +1,33 @@ |
501 |
-diff --git a/third_party/blink/renderer/core/core_initializer.h b/third_party/blink/renderer/core/core_initializer.h |
502 |
-index 5e67f46..3b750c7 100644 |
503 |
---- a/third_party/blink/renderer/core/core_initializer.h |
504 |
-+++ b/third_party/blink/renderer/core/core_initializer.h |
505 |
-@@ -36,6 +36,8 @@ |
506 |
- #include "third_party/blink/renderer/core/core_export.h" |
507 |
- #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" |
508 |
+From 8273f4d3130e06fd8b6bef87b07c936304b971d9 Mon Sep 17 00:00:00 2001 |
509 |
+From: Raphael Kubo da Costa <raphael.kubo.da.costa@×××××.com> |
510 |
+Date: Tue, 10 Dec 2019 20:59:57 +0000 |
511 |
+Subject: [PATCH] [cros search service]: Include <cmath> for std::pow() |
512 |
+ |
513 |
+IWYU. Follow up to commit 2b2ea3c09b ("[cros search service] Move shared |
514 |
+string matching functions to //chrome"), which broke the libstdc++ build: |
515 |
+ |
516 |
+ ../../chrome/common/string_matching/fuzzy_tokenized_string_match.cc:199:14: error: no member named 'pow' in namespace 'std' |
517 |
+ std::pow(partial_match_penalty_rate, long_start - current - 1); |
518 |
+ ~~~~~^ |
519 |
+ |
520 |
+Bug: 957519 |
521 |
+Change-Id: I66f61cb4f93cfa0bfa3d1b00ba391ddd8f31a7fb |
522 |
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1960310 |
523 |
+Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@×××××.com> |
524 |
+Reviewed-by: Jia Meng <jiameng@××××××××.org> |
525 |
+Commit-Queue: Raphael Kubo da Costa <raphael.kubo.da.costa@×××××.com> |
526 |
+Cr-Commit-Position: refs/heads/master@{#723499} |
527 |
+--- |
528 |
+ |
529 |
+diff --git a/chrome/common/string_matching/fuzzy_tokenized_string_match.cc b/chrome/common/string_matching/fuzzy_tokenized_string_match.cc |
530 |
+index 8351fa7..884ef63 100644 |
531 |
+--- a/chrome/common/string_matching/fuzzy_tokenized_string_match.cc |
532 |
++++ b/chrome/common/string_matching/fuzzy_tokenized_string_match.cc |
533 |
+@@ -5,6 +5,7 @@ |
534 |
+ #include "chrome/common/string_matching/fuzzy_tokenized_string_match.h" |
535 |
|
536 |
-+#include <memory> |
537 |
-+ |
538 |
- namespace mojo { |
539 |
- class BinderMap; |
540 |
- } |
541 |
+ #include <algorithm> |
542 |
++#include <cmath> |
543 |
+ #include <iterator> |
544 |
+ |
545 |
+ #include "base/i18n/case_conversion.h" |