Hello community, here is the log from the commit of package chromium for openSUSE:Leap:15.2 checked in at 2020-02-17 17:35:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2/chromium (Old) and /work/SRC/openSUSE:Leap:15.2/.chromium.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "chromium" Mon Feb 17 17:35:04 2020 rev:99 rq:772411 version:80.0.3987.87 Changes: -------- --- /work/SRC/openSUSE:Leap:15.2/chromium/chromium.changes 2020-01-30 06:08:02.850452557 +0100 +++ /work/SRC/openSUSE:Leap:15.2/.chromium.new.26092/chromium.changes 2020-02-17 17:35:38.820384140 +0100 @@ -1,0 +2,65 @@ +Wed Feb 5 13:04:03 UTC 2020 - Tomáš Chvátal <tchva...@suse.com> + +- Update to 80.0.3987.87 bsc#1162833: + * CVE-2020-6381: Integer overflow in JavaScript + * CVE-2020-6382: Type Confusion in JavaScript + * CVE-2019-18197: Multiple vulnerabilities in XML + * CVE-2019-19926: Inappropriate implementation in SQLite + * CVE-2020-6385: Insufficient policy enforcement in storage + * CVE-2019-19880, CVE-2019-19925: Multiple vulnerabilities in SQLite + * CVE-2020-6387: Out of bounds write in WebRTC + * CVE-2020-6388: Out of bounds memory access in WebAudio + * CVE-2020-6389: Out of bounds write in WebRTC + * CVE-2020-6390: Out of bounds memory access in streams + * CVE-2020-6391: Insufficient validation of untrusted input in Blink + * CVE-2020-6392: Insufficient policy enforcement in extensions + * CVE-2020-6393: Insufficient policy enforcement in Blink + * CVE-2020-6394: Insufficient policy enforcement in Blink + * CVE-2020-6395: Out of bounds read in JavaScript + * CVE-2020-6396: Inappropriate implementation in Skia + * CVE-2020-6397: Incorrect security UI in sharing + * CVE-2020-6398: Uninitialized use in PDFium + * CVE-2020-6399: Insufficient policy enforcement in AppCache + * CVE-2020-6400: Inappropriate implementation in CORS + * CVE-2020-6401: Insufficient validation of untrusted input in Omnibox + * CVE-2020-6402: Insufficient policy enforcement in downloads + * CVE-2020-6403: Incorrect security UI in Omnibox + * CVE-2020-6404: Inappropriate implementation in Blink + * CVE-2020-6405: Out of bounds read in SQLite + * CVE-2020-6406: Use after free in audio + * CVE-2019-19923: Out of bounds memory access in SQLite + * CVE-2020-6408: Insufficient policy enforcement in CORS + * CVE-2020-6409: Inappropriate implementation in Omnibox + * CVE-2020-6410: Insufficient policy enforcement in navigation + * CVE-2020-6411: Insufficient validation of untrusted input in Omnibox + * CVE-2020-6412: Insufficient validation of untrusted input in Omnibox + * CVE-2020-6413: Inappropriate implementation in Blink + * CVE-2020-6414: Insufficient policy enforcement in Safe Browsing + * CVE-2020-6415: Inappropriate implementation in JavaScript + * CVE-2020-6416: Insufficient data validation in streams + * CVE-2020-6417: Inappropriate implementation in installer +- Disable lto for now as it consumes >16GB ram +- Added patches: + * chromium-80-gcc-abstract.patch + * chromium-80-gcc-blink.patch + * chromium-80-gcc-incomplete-type.patch + * chromium-80-gcc-permissive.patch + * chromium-80-gcc-quiche.patch + * chromium-80-include.patch + * chromium-80-unbundle-libxml.patch + * chromium-80.0.3987.87.tar.xz + * chromium-fix-char_traits.patch + * gpu-timeout.patch +- Removed patches: + * chromium-79-gcc-ambiguous-nodestructor.patch + * chromium-79-gcc-name-clash.patch + * chromium-79-gcc-permissive.patch + * chromium-79-icu-65.patch + * chromium-79-include.patch + * chromium-79-system-hb.patch +- Rebased patches: + * chromium-old-glibc-noexcept.patch + * chromium-vaapi-fix.patch + * chromium-vaapi.patch + +------------------------------------------------------------------- Old: ---- chromium-79-gcc-ambiguous-nodestructor.patch chromium-79-gcc-name-clash.patch chromium-79-gcc-permissive.patch chromium-79-icu-65.patch chromium-79-include.patch chromium-79-system-hb.patch chromium-79.0.3945.130.tar.xz New: ---- chromium-80-gcc-abstract.patch chromium-80-gcc-blink.patch chromium-80-gcc-incomplete-type.patch chromium-80-gcc-permissive.patch chromium-80-gcc-quiche.patch chromium-80-include.patch chromium-80-unbundle-libxml.patch chromium-80.0.3987.87.tar.xz chromium-fix-char_traits.patch gpu-timeout.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ chromium.spec ++++++ --- /var/tmp/diff_new_pack.G5YGuL/_old 2020-02-17 17:35:49.124407514 +0100 +++ /var/tmp/diff_new_pack.G5YGuL/_new 2020-02-17 17:35:49.128407523 +0100 @@ -46,7 +46,7 @@ %endif %ifarch x86_64 %if %{?suse_version} > 1500 -%bcond_without lto +%bcond_with lto %else %bcond_with lto %endif @@ -57,7 +57,7 @@ %bcond_with clang %bcond_with wayland Name: chromium -Version: 79.0.3945.130 +Version: 80.0.3987.87 Release: 0 Summary: Google's open source browser project License: BSD-3-Clause AND LGPL-2.1-or-later @@ -86,12 +86,15 @@ Patch11: chromium-unbundle-zlib.patch Patch12: chromium-old-glibc-noexcept.patch Patch13: chromium-79-gcc-alignas.patch -Patch14: chromium-79-gcc-ambiguous-nodestructor.patch -Patch15: chromium-79-gcc-name-clash.patch -Patch16: chromium-79-gcc-permissive.patch -Patch17: chromium-79-icu-65.patch -Patch18: chromium-79-include.patch -Patch19: chromium-79-system-hb.patch +Patch14: chromium-80-gcc-abstract.patch +Patch15: chromium-80-gcc-blink.patch +Patch16: chromium-80-gcc-incomplete-type.patch +Patch17: chromium-80-gcc-permissive.patch +Patch18: chromium-80-gcc-quiche.patch +Patch19: chromium-80-include.patch +Patch20: chromium-80-unbundle-libxml.patch +Patch21: chromium-fix-char_traits.patch +Patch22: gpu-timeout.patch # Google seem not too keen on merging this but GPU accel is quite important # https://chromium-review.googlesource.com/c/chromium/src/+/532294 # https://github.com/saiarcot895/chromium-ubuntu-build/tree/master/debian/patches @@ -174,7 +177,6 @@ BuildRequires: pkgconfig(nss) >= 3.26 BuildRequires: pkgconfig(ogg) BuildRequires: pkgconfig(openssl) -BuildRequires: pkgconfig(opus) BuildRequires: pkgconfig(python) BuildRequires: pkgconfig(re2) BuildRequires: pkgconfig(schroedinger-1.0) @@ -245,6 +247,7 @@ BuildRequires: python-xml BuildRequires: yasm-devel BuildRequires: pkgconfig(libwebp) +BuildRequires: pkgconfig(opus) >= 1.3.1 BuildRequires: pkgconfig(zlib) %endif %if %{with system_icu} @@ -330,9 +333,6 @@ third_party/blink 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/breakpad third_party/breakpad/breakpad/src/third_party/curl third_party/brotli @@ -366,10 +366,12 @@ third_party/depot_tools third_party/depot_tools/third_party/six third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/third_party third_party/dom_distiller_js third_party/emoji-segmenter third_party/flatbuffers - third_party/flot + third_party/libgifcodec third_party/glslang third_party/google_input_tools third_party/google_input_tools/third_party/closure_library @@ -438,7 +440,6 @@ third_party/sfntly third_party/simplejson third_party/skia - third_party/skia/third_party/gif third_party/skia/third_party/skcms third_party/skia/third_party/vulkan third_party/skia/include/third_party/vulkan/ @@ -471,6 +472,7 @@ third_party/webrtc/rtc_base/third_party/sigslot third_party/widevine third_party/woff2 + third_party/wuffs third_party/zlib/google tools/grit/third_party/six url/third_party/mozilla @@ -483,6 +485,7 @@ %if %{with sle_bundles} keeplibs+=( third_party/libwebp + third_party/opus third_party/yasm third_party/simplejson third_party/catapult/third_party/beautifulsoup4 @@ -561,9 +564,11 @@ %endif # do not eat all memory %limit_build -m 2600 - %if %{with lto} -export LDFLAGS="-flto=%{jobs} --param lto-max-streaming-parallelism=1" +# reduce the threads for linking even more due to LTO eating ton of memory +_link_threads=$(((%{jobs} - 2))) +test "$_link_threads" -le 0 && _link_threads=1 +export LDFLAGS="-flto=$_link_threads --param lto-max-streaming-parallelism=1" %endif # Set system libraries to be used @@ -576,7 +581,6 @@ libpng libxslt libusb - opus re2 snappy ) @@ -589,6 +593,7 @@ %if !%{with sle_bundles} gn_system_libraries+=( libwebp + opus yasm zlib ) @@ -619,13 +624,6 @@ myconf_gn+=" is_component_ffmpeg=true" myconf_gn+=" use_cups=true" myconf_gn+=" use_aura=true" -myconf_gn+=" use_jumbo_build=true" -%ifarch %{arm} aarch64 -# Limit number to avoid OOM errors -myconf_gn+=" jumbo_file_merge_limit=5" -%else -myconf_gn+=" jumbo_file_merge_limit=8" -%endif myconf_gn+=" concurrent_links=1" myconf_gn+=" symbol_level=1" myconf_gn+=" blink_symbol_level=0" ++++++ chromium-80-gcc-abstract.patch ++++++ 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); }; ++++++ chromium-80-gcc-blink.patch ++++++ ../../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 ++++++ chromium-80-gcc-incomplete-type.patch ++++++ >From cdf3e81ff49b200213d67d65558f2919222b60ab Mon Sep 17 00:00:00 2001 From: Raphael Kubo da Costa <raphael.kubo.da.co...@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.co...@intel.com> Reviewed-by: Mikel Astiz <mas...@chromium.org> Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.co...@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. ++++++ chromium-79-gcc-permissive.patch -> chromium-80-gcc-permissive.patch ++++++ --- /work/SRC/openSUSE:Leap:15.2/chromium/chromium-79-gcc-permissive.patch 2020-01-15 14:49:57.857398592 +0100 +++ /work/SRC/openSUSE:Leap:15.2/.chromium.new.26092/chromium-80-gcc-permissive.patch 2020-02-17 17:35:05.224289848 +0100 @@ -1,79 +1,33 @@ -From 528e9a3e1f25bd264549c4c7779748abfd16bb1c Mon Sep 17 00:00:00 2001 -From: Jan Wilken Dörrie <jdoer...@chromium.org> -Date: Fri, 18 Oct 2019 11:45:24 +0000 -Subject: [PATCH] Reland "GCC: Fix base::internal::InvokeFuncImpl" +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> { + | ^ -This is a reland of 9293d5c86eec1c34fc00716645400b44a14e764e - -Original change's description: -> GCC: Fix base::internal::InvokeFuncImpl -> -> GCC doesn't like that the Value data member has no out-of-line -> definition. The problem is triggered specifically only when compiling -> -> components/services/leveldb/leveldb_database_impl.cc -> -> which has lambda functions returning locally-defined classes. -> -> The current code works as-is in C++17 mode which introduces the concept -> of inline variables, but in C++14 we need either an explicit out-of-line -> definition or a function member instead of a data member. -> -> Use std::integral_constant for defining the value. -> -> Bug: 819294 -> Change-Id: I5c68e14ce3fa9d8b4d8a2cb42d7f9b53938aabf3 -> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1862451 -> Reviewed-by: Jan Wilken Dörrie <jdoer...@chromium.org> -> Reviewed-by: Daniel Cheng <dch...@chromium.org> -> Commit-Queue: Jüri Valdmann <juri.valdm...@qt.io> -> Cr-Commit-Position: refs/heads/master@{#706384} - -Bug: 819294 -Change-Id: I3d5a52ddc6815516e2239f9347c60de06bf765a2 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1865212 -Reviewed-by: Daniel Cheng <dch...@chromium.org> -Commit-Queue: Jan Wilken Dörrie <jdoer...@chromium.org> -Cr-Commit-Position: refs/heads/master@{#707329} ---- - -diff --git a/base/bind.h b/base/bind.h -index 7a400af..1070ce6 100644 ---- a/base/bind.h -+++ b/base/bind.h -@@ -187,18 +187,15 @@ - // well-formed. Using `Invoker::Run` with a OnceCallback triggers a - // static_assert, which is why the ternary expression does not compile. - // TODO(crbug.com/752720): Remove this indirection once we have `if constexpr`. --template <bool is_once, typename Invoker> --struct InvokeFuncImpl; -+template <typename Invoker> -+constexpr auto GetInvokeFunc(std::true_type) { -+ return Invoker::RunOnce; -+} - - template <typename Invoker> --struct InvokeFuncImpl<true, Invoker> { -- static constexpr auto Value = &Invoker::RunOnce; --}; -- --template <typename Invoker> --struct InvokeFuncImpl<false, Invoker> { -- static constexpr auto Value = &Invoker::Run; --}; -+constexpr auto GetInvokeFunc(std::false_type) { -+ return Invoker::Run; -+} +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>> { - template <template <typename> class CallbackT, - typename Functor, -@@ -229,7 +226,8 @@ - // InvokeFuncStorage, so that we can ensure its type matches to - // PolymorphicInvoke, to which CallbackType will cast back. - using PolymorphicInvoke = typename CallbackType::PolymorphicInvoke; -- PolymorphicInvoke invoke_func = InvokeFuncImpl<kIsOnce, Invoker>::Value; -+ PolymorphicInvoke invoke_func = -+ GetInvokeFunc<Invoker>(std::integral_constant<bool, kIsOnce>()); + // 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> { - using InvokeFuncStorage = internal::BindStateBase::InvokeFuncStorage; - return CallbackType(BindState::Create( + // 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())); ++++++ chromium-80-gcc-quiche.patch ++++++ >From 00f47df999c9b19e80fdc01db0ae9ca1b6a12b3a Mon Sep 17 00:00:00 2001 From: vasilvv <vasi...@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.dap...@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. ++++++ chromium-79-include.patch -> chromium-80-include.patch ++++++ --- /work/SRC/openSUSE:Leap:15.2/chromium/chromium-79-include.patch 2020-01-15 14:49:57.893398614 +0100 +++ /work/SRC/openSUSE:Leap:15.2/.chromium.new.26092/chromium-80-include.patch 2020-02-17 17:35:05.268289986 +0100 @@ -1,131 +1,33 @@ -From f7c177d35242311ea7a2cf49a0980c61664f27ba Mon Sep 17 00:00:00 2001 -From: Jose Dapena Paz <jose.dap...@lge.com> -Date: Fri, 25 Oct 2019 15:07:09 +0000 -Subject: [PATCH] IWYU: include algorithm to use std::lower_bound in ui/gfx/font.cc - -Fix GCC build because of missing include: -../../ui/gfx/font.cc: In function ‘gfx::Font::Weight gfx::FontWeightFromInt(int)’: -../../ui/gfx/font.cc:114:8: error: no matching function for call to ‘lower_bound(const gfx::Font::Weight*, const gfx::Font::Weight*, int&, gfx::FontWeightFromInt(int)::<lambda(const gfx::Font::Weight&, const int&)>)’ - }); - ^ -In file included from /usr/include/c++/8/bits/char_traits.h:39, - from /usr/include/c++/8/string:40, - from ../../ui/gfx/font.h:8, - from ../../ui/gfx/font.cc:5: -/usr/include/c++/8/bits/stl_algobase.h:984:5: note: candidate: ‘template<class _ForwardIterator, class _Tp> _ForwardIterator std::lower_bound(_ForwardIterator, _ForwardIterator, const _Tp&)’ - lower_bound(_ForwardIterator __first, _ForwardIterator __last, - ^~~~~~~~~~~ -/usr/include/c++/8/bits/stl_algobase.h:984:5: note: template argument deduction/substitution failed: -../../ui/gfx/font.cc:114:8: note: candidate expects 3 arguments, 4 provided - }); - ^ - -Bug: 819294 -Change-Id: Ic59dcf3a06bdd54d1d426c08a61624873a0ff30c -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1879909 -Commit-Queue: Alexei Svitkine <asvitk...@chromium.org> -Reviewed-by: Alexei Svitkine <asvitk...@chromium.org> -Cr-Commit-Position: refs/heads/master@{#709472} ---- - -diff --git a/ui/gfx/font.cc b/ui/gfx/font.cc -index 21367fd7..92b159e 100644 ---- a/ui/gfx/font.cc -+++ b/ui/gfx/font.cc -@@ -4,6 +4,8 @@ - - #include "ui/gfx/font.h" - -+#include <algorithm> -+ - #include "base/strings/utf_string_conversions.h" - #include "build/build_config.h" - #include "ui/gfx/platform_font.h" - -From 97eb905ba262382bc3583078761c68f4452aea71 Mon Sep 17 00:00:00 2001 -From: Jose Dapena Paz <jose.dap...@lge.com> -Date: Fri, 25 Oct 2019 09:27:53 +0000 -Subject: [PATCH] IWYU: launch_manager.h uses std::vector - -Add #include <vector> for using std::vector. This fixes GCC build. - -./../chrome/browser/apps/launch_service/launch_manager.h:46:15: error: ‘vector’ in namespace ‘std’ does not name a template type - static std::vector<base::FilePath> GetLaunchFilesFromCommandLine( - ^~~~~~ - -Bug: 819294 -Change-Id: I02ec3a2914a8fbe3aa0041017a0228f4b0ca1ec9 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1879289 -Reviewed-by: Alexey Baskakov <lo...@chromium.org> -Commit-Queue: José Dapena Paz <jose.dap...@lge.com> -Cr-Commit-Position: refs/heads/master@{#709411} +From 8273f4d3130e06fd8b6bef87b07c936304b971d9 Mon Sep 17 00:00:00 2001 +From: Raphael Kubo da Costa <raphael.kubo.da.co...@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.co...@intel.com> +Reviewed-by: Jia Meng <jiam...@chromium.org> +Commit-Queue: Raphael Kubo da Costa <raphael.kubo.da.co...@intel.com> +Cr-Commit-Position: refs/heads/master@{#723499} --- -diff --git a/chrome/browser/apps/launch_service/launch_manager.h b/chrome/browser/apps/launch_service/launch_manager.h -index 00aeb9d..76570ea 100644 ---- a/chrome/browser/apps/launch_service/launch_manager.h -+++ b/chrome/browser/apps/launch_service/launch_manager.h -@@ -6,6 +6,7 @@ - #define CHROME_BROWSER_APPS_LAUNCH_SERVICE_LAUNCH_MANAGER_H_ - - #include <string> -+#include <vector> - - #include "base/macros.h" - -From e7407ce7fa262e9fd1a19dd0957e5a950520ee3a Mon Sep 17 00:00:00 2001 -From: Jose Dapena Paz <jose.dap...@lge.com> -Date: Fri, 25 Oct 2019 08:25:45 +0000 -Subject: [PATCH] IWYU: include cstdint in register_context.h as it uses uintptr_t - -GCC build fix as build fails with this: -../../base/profiler/register_context.h:31:1: error: ‘uintptr_t’ does not name a type; did you mean ‘intptr_t’? - uintptr_t& AsUintPtr(T* value) { - ^~~~~~~~~ - intptr_t -../../base/profiler/register_context.h:110:3: error: ‘uintptr_t’ does not name a type; did you mean ‘intptr_t’? - uintptr_t stack_pointer; - ^~~~~~~~~ - intptr_t -../../base/profiler/register_context.h:111:3: error: ‘uintptr_t’ does not name a type; did you mean ‘intptr_t’? - uintptr_t frame_pointer; - ^~~~~~~~~ - intptr_t -../../base/profiler/register_context.h:112:3: error: ‘uintptr_t’ does not name a type; did you mean ‘intptr_t’? - uintptr_t instruction_pointer; - ^~~~~~~~~ - intptr_t -../../base/profiler/register_context.h:115:8: error: ‘uintptr_t’ does not name a type; did you mean ‘intptr_t’? - inline uintptr_t& RegisterContextStackPointer(RegisterContext* context) { - ^~~~~~~~~ - intptr_t -../../base/profiler/register_context.h:119:8: error: ‘uintptr_t’ does not name a type; did you mean ‘intptr_t’? - inline uintptr_t& RegisterContextFramePointer(RegisterContext* context) { - ^~~~~~~~~ - intptr_t -../../base/profiler/register_context.h:123:8: error: ‘uintptr_t’ does not name a type; did you mean ‘intptr_t’? - inline uintptr_t& RegisterContextInstructionPointer(RegisterContext* context) { - ^~~~~~~~~ - intptr_t - - -Bug: 819294 -Change-Id: I49567b00a6f021686c52053a22fb9c502c84f1bc -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1879908 -Reviewed-by: Mike Wittman <witt...@chromium.org> -Commit-Queue: José Dapena Paz <jose.dap...@lge.com> -Cr-Commit-Position: refs/heads/master@{#709398} ---- - -diff --git a/base/profiler/register_context.h b/base/profiler/register_context.h -index 46c4250..7dd86ff 100644 ---- a/base/profiler/register_context.h -+++ b/base/profiler/register_context.h -@@ -9,6 +9,7 @@ - #ifndef BASE_PROFILER_REGISTER_CONTEXT_H_ - #define BASE_PROFILER_REGISTER_CONTEXT_H_ - -+#include <cstdint> - #include <type_traits> +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 "build/build_config.h" + #include "base/i18n/case_conversion.h" ++++++ chromium-80-unbundle-libxml.patch ++++++ 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) {} ++++++ chromium-79.0.3945.130.tar.xz -> chromium-80.0.3987.87.tar.xz ++++++ /work/SRC/openSUSE:Leap:15.2/chromium/chromium-79.0.3945.130.tar.xz /work/SRC/openSUSE:Leap:15.2/.chromium.new.26092/chromium-80.0.3987.87.tar.xz differ: char 25, line 1 ++++++ chromium-fix-char_traits.patch ++++++ --- a/base/strings/char_traits.h +++ b/base/strings/char_traits.h @@ -67,9 +67,9 @@ return __builtin_memcmp(s1, s2, n); #else for (; n; --n, ++s1, ++s2) { - if (*s1 < *s2) + if ((unsigned char)*s1 < (unsigned char)*s2) return -1; - if (*s1 > *s2) + if ((unsigned char)*s1 > (unsigned char)*s2) return 1; } return 0; ++++++ chromium-old-glibc-noexcept.patch ++++++ --- /var/tmp/diff_new_pack.G5YGuL/_old 2020-02-17 17:35:49.292407895 +0100 +++ /var/tmp/diff_new_pack.G5YGuL/_new 2020-02-17 17:35:49.296407904 +0100 @@ -1,7 +1,7 @@ -Index: chromium-79.0.3941.4/chrome/common/media_router/media_sink.cc +Index: chromium-80.0.3987.16/chrome/common/media_router/media_sink.cc =================================================================== ---- chromium-79.0.3941.4.orig/chrome/common/media_router/media_sink.cc -+++ chromium-79.0.3941.4/chrome/common/media_router/media_sink.cc +--- chromium-80.0.3987.16.orig/chrome/common/media_router/media_sink.cc ++++ chromium-80.0.3987.16/chrome/common/media_router/media_sink.cc @@ -19,12 +19,12 @@ MediaSink::MediaSink(const MediaSink::Id provider_id_(provider_id) {} @@ -17,10 +17,10 @@ bool MediaSink::IsMaybeCloudSink() const { switch (icon_type_) { -Index: chromium-79.0.3941.4/components/history/core/browser/history_types.cc +Index: chromium-80.0.3987.16/components/history/core/browser/history_types.cc =================================================================== ---- chromium-79.0.3941.4.orig/components/history/core/browser/history_types.cc -+++ chromium-79.0.3941.4/components/history/core/browser/history_types.cc +--- chromium-80.0.3987.16.orig/components/history/core/browser/history_types.cc ++++ chromium-80.0.3987.16/components/history/core/browser/history_types.cc @@ -42,7 +42,7 @@ QueryResults::QueryResults(QueryResults& Swap(&other); } @@ -39,10 +39,10 @@ // MostVisitedURL -------------------------------------------------------------- -Index: chromium-79.0.3941.4/components/history/core/browser/history_types.h +Index: chromium-80.0.3987.16/components/history/core/browser/history_types.h =================================================================== ---- chromium-79.0.3941.4.orig/components/history/core/browser/history_types.h -+++ chromium-79.0.3941.4/components/history/core/browser/history_types.h +--- chromium-80.0.3987.16.orig/components/history/core/browser/history_types.h ++++ chromium-80.0.3987.16/components/history/core/browser/history_types.h @@ -141,7 +141,7 @@ class QueryResults { ~QueryResults(); @@ -61,10 +61,10 @@ ~QueryURLResult(); // Indicates whether the call to HistoryBackend::QueryURL was successfull -Index: chromium-79.0.3941.4/components/history/core/browser/url_row.cc +Index: chromium-80.0.3987.16/components/history/core/browser/url_row.cc =================================================================== ---- chromium-79.0.3941.4.orig/components/history/core/browser/url_row.cc -+++ chromium-79.0.3941.4/components/history/core/browser/url_row.cc +--- chromium-80.0.3987.16.orig/components/history/core/browser/url_row.cc ++++ chromium-80.0.3987.16/components/history/core/browser/url_row.cc @@ -26,7 +26,7 @@ URLRow::~URLRow() { } @@ -74,10 +74,10 @@ void URLRow::Swap(URLRow* other) { std::swap(id_, other->id_); -Index: chromium-79.0.3941.4/components/omnibox/browser/suggestion_answer.cc +Index: chromium-80.0.3987.16/components/omnibox/browser/suggestion_answer.cc =================================================================== ---- chromium-79.0.3941.4.orig/components/omnibox/browser/suggestion_answer.cc -+++ chromium-79.0.3941.4/components/omnibox/browser/suggestion_answer.cc +--- chromium-80.0.3987.16.orig/components/omnibox/browser/suggestion_answer.cc ++++ chromium-80.0.3987.16/components/omnibox/browser/suggestion_answer.cc @@ -60,7 +60,7 @@ SuggestionAnswer::TextField::TextField(T SuggestionAnswer::TextField& SuggestionAnswer::TextField::operator=( const TextField&) = default; @@ -87,10 +87,10 @@ // static bool SuggestionAnswer::TextField::ParseTextField(const base::Value& field_json, -Index: chromium-79.0.3941.4/components/policy/core/common/policy_map.cc +Index: chromium-80.0.3987.16/components/policy/core/common/policy_map.cc =================================================================== ---- chromium-79.0.3941.4.orig/components/policy/core/common/policy_map.cc -+++ chromium-79.0.3941.4/components/policy/core/common/policy_map.cc +--- chromium-80.0.3987.16.orig/components/policy/core/common/policy_map.cc ++++ chromium-80.0.3987.16/components/policy/core/common/policy_map.cc @@ -52,7 +52,7 @@ PolicyMap::Entry::Entry( PolicyMap::Entry::~Entry() = default; @@ -100,10 +100,10 @@ PolicyMap::Entry PolicyMap::Entry::DeepCopy() const { Entry copy(level, scope, source, value ? value->CreateDeepCopy() : nullptr, -Index: chromium-79.0.3941.4/components/search_provider_logos/logo_common.cc +Index: chromium-80.0.3987.16/components/search_provider_logos/logo_common.cc =================================================================== ---- chromium-79.0.3941.4.orig/components/search_provider_logos/logo_common.cc -+++ chromium-79.0.3941.4/components/search_provider_logos/logo_common.cc +--- chromium-80.0.3987.16.orig/components/search_provider_logos/logo_common.cc ++++ chromium-80.0.3987.16/components/search_provider_logos/logo_common.cc @@ -14,14 +14,14 @@ LogoMetadata::LogoMetadata() = default; LogoMetadata::LogoMetadata(const LogoMetadata&) = default; LogoMetadata::LogoMetadata(LogoMetadata&&) noexcept = default; @@ -130,10 +130,10 @@ LogoCallbacks::~LogoCallbacks() = default; } // namespace search_provider_logos -Index: chromium-79.0.3941.4/components/signin/public/identity_manager/account_info.cc +Index: chromium-80.0.3987.16/components/signin/public/identity_manager/account_info.cc =================================================================== ---- chromium-79.0.3941.4.orig/components/signin/public/identity_manager/account_info.cc -+++ chromium-79.0.3941.4/components/signin/public/identity_manager/account_info.cc +--- chromium-80.0.3987.16.orig/components/signin/public/identity_manager/account_info.cc ++++ chromium-80.0.3987.16/components/signin/public/identity_manager/account_info.cc @@ -58,7 +58,7 @@ CoreAccountInfo::CoreAccountInfo(CoreAcc CoreAccountInfo& CoreAccountInfo::operator=(const CoreAccountInfo& other) = default; @@ -152,36 +152,36 @@ bool AccountInfo::IsEmpty() const { return CoreAccountInfo::IsEmpty() && hosted_domain.empty() && -Index: chromium-79.0.3941.4/google_apis/gaia/core_account_id.cc +Index: chromium-80.0.3987.16/google_apis/gaia/core_account_id.cc =================================================================== ---- chromium-79.0.3941.4.orig/google_apis/gaia/core_account_id.cc -+++ chromium-79.0.3941.4/google_apis/gaia/core_account_id.cc -@@ -14,7 +14,7 @@ CoreAccountId::~CoreAccountId() = defaul +--- chromium-80.0.3987.16.orig/google_apis/gaia/core_account_id.cc ++++ chromium-80.0.3987.16/google_apis/gaia/core_account_id.cc +@@ -24,7 +24,7 @@ CoreAccountId::~CoreAccountId() = defaul CoreAccountId& CoreAccountId::operator=(const CoreAccountId&) = default; -CoreAccountId& CoreAccountId::operator=(CoreAccountId&&) noexcept = default; +CoreAccountId& CoreAccountId::operator=(CoreAccountId&&) = default; - CoreAccountId::CoreAccountId(const char* id) : id(id) {} - -Index: chromium-79.0.3941.4/google_apis/gaia/core_account_id.h + // static + CoreAccountId CoreAccountId::FromGaiaId(const std::string& gaia_id) { +Index: chromium-80.0.3987.16/google_apis/gaia/core_account_id.h =================================================================== ---- chromium-79.0.3941.4.orig/google_apis/gaia/core_account_id.h -+++ chromium-79.0.3941.4/google_apis/gaia/core_account_id.h -@@ -20,7 +20,7 @@ struct CoreAccountId { +--- chromium-80.0.3987.16.orig/google_apis/gaia/core_account_id.h ++++ chromium-80.0.3987.16/google_apis/gaia/core_account_id.h +@@ -30,7 +30,7 @@ struct CoreAccountId { ~CoreAccountId(); CoreAccountId& operator=(const CoreAccountId&); - CoreAccountId& operator=(CoreAccountId&&) noexcept; + CoreAccountId& operator=(CoreAccountId&&); - // Those implicit constructor and conversion operator allow to - // progressively migrate the code to use this struct. Removing -Index: chromium-79.0.3941.4/gpu/config/gpu_info.cc + // Checks if the account is valid or not. + bool empty() const; +Index: chromium-80.0.3987.16/gpu/config/gpu_info.cc =================================================================== ---- chromium-79.0.3941.4.orig/gpu/config/gpu_info.cc -+++ chromium-79.0.3941.4/gpu/config/gpu_info.cc +--- chromium-80.0.3987.16.orig/gpu/config/gpu_info.cc ++++ chromium-80.0.3987.16/gpu/config/gpu_info.cc @@ -173,7 +173,7 @@ GPUInfo::GPUDevice& GPUInfo::GPUDevice:: const GPUInfo::GPUDevice& other) = default; @@ -191,11 +191,11 @@ GPUInfo::GPUInfo() : optimus(false), -Index: chromium-79.0.3941.4/third_party/openscreen/src/osp/public/service_info.h +Index: chromium-80.0.3987.16/third_party/openscreen/src/osp/public/service_info.h =================================================================== ---- chromium-79.0.3941.4.orig/third_party/openscreen/src/osp/public/service_info.h -+++ chromium-79.0.3941.4/third_party/openscreen/src/osp/public/service_info.h -@@ -21,7 +21,7 @@ struct ServiceInfo { +--- chromium-80.0.3987.16.orig/third_party/openscreen/src/osp/public/service_info.h ++++ chromium-80.0.3987.16/third_party/openscreen/src/osp/public/service_info.h +@@ -22,7 +22,7 @@ struct ServiceInfo { ServiceInfo(ServiceInfo&&) MAYBE_NOEXCEPT = default; ServiceInfo(const ServiceInfo&) MAYBE_NOEXCEPT = default; ++++++ chromium-vaapi-fix.patch ++++++ --- /var/tmp/diff_new_pack.G5YGuL/_old 2020-02-17 17:35:49.320407959 +0100 +++ /var/tmp/diff_new_pack.G5YGuL/_new 2020-02-17 17:35:49.320407959 +0100 @@ -1,151 +1,84 @@ -From fe61d25580bd22d68b20323e7cd684dcba0cd3f4 Mon Sep 17 00:00:00 2001 -From: Akarshan Biswas <akarshanbis...@fedoraproject.org> -Date: Tue, 9 Jul 2019 18:39:54 +0530 -Subject: [PATCH] Disable VAProfileNone on Linux and fix vaapi drm +description: fix vaapi with vdpau +author: Maxim Baz +origin: chromium-vaapi patches from Arch linux ---- - .../gpu_video_decode_accelerator_factory.cc | 2 ++ - .../vaapi/vaapi_video_decode_accelerator.cc | 21 ++++++++++++++++ - media/gpu/vaapi/vaapi_wrapper.cc | 24 +++++++++++++++---- - 3 files changed, 42 insertions(+), 5 deletions(-) - -Index: chromium-79.0.3945.36/media/gpu/gpu_video_decode_accelerator_factory.cc -=================================================================== ---- chromium-79.0.3945.36.orig/media/gpu/gpu_video_decode_accelerator_factory.cc -+++ chromium-79.0.3945.36/media/gpu/gpu_video_decode_accelerator_factory.cc -@@ -185,6 +185,8 @@ GpuVideoDecodeAcceleratorFactory::Create - vda = (this->*create_vda_function)(workarounds, gpu_preferences, media_log); - if (vda && vda->Initialize(config, client)) - return vda; -+ else -+ LOG(ERROR) << "Initialization of one or more VDAs failed."; - } - - return nullptr; -Index: chromium-79.0.3945.36/media/gpu/vaapi/vaapi_video_decode_accelerator.cc -=================================================================== ---- chromium-79.0.3945.36.orig/media/gpu/vaapi/vaapi_video_decode_accelerator.cc -+++ chromium-79.0.3945.36/media/gpu/vaapi/vaapi_video_decode_accelerator.cc -@@ -63,6 +63,9 @@ void ReportToUMA(VAVDADecoderFailure fai - VAVDA_DECODER_FAILURES_MAX + 1); - } - -+// Move this thing to chromeos only as build can fail if treat warnings as errors been set to true -+#if defined(OS_ANDROID) || defined(OS_CHROMEOS) -+ - // Returns true if the CPU is an Intel Gemini Lake or later (including Kaby - // Lake) Cpu platform id's are referenced from the following file in kernel - // source arch/x86/include/asm/intel-family.h -@@ -76,6 +79,8 @@ bool IsGeminiLakeOrLater() { - return is_geminilake_or_later; - } - -+#endif -+ - } // namespace - - #define RETURN_AND_NOTIFY_ON_FAILURE(result, log, error_code, ret) \ -@@ -637,6 +642,13 @@ void VaapiVideoDecodeAccelerator::Assign - va_surface_format_ = GetVaFormatForVideoCodecProfile(profile_); - std::vector<VASurfaceID> va_surface_ids; - -+ // Nvidia doesn't support VAProfileNone, so don't try to create a temporary -+ // copy buffer there. It's not needed anyways for hardware video decoding -+ // to work. -+ -+ #if defined(OS_ANDROID) || defined(OS_CHROMEOS) -+ -+ - // If we aren't in BufferAllocationMode::kNone, we have to allocate a +--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc ++++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc +@@ -641,6 +641,7 @@ void VaapiVideoDecodeAccelerator::Assign // |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's // internal decoded frame. -@@ -654,6 +666,7 @@ void VaapiVideoDecodeAccelerator::Assign - "Failed to create Context", - PLATFORM_FAILURE, ); - } -+ #endif - - for (size_t i = 0; i < buffers.size(); ++i) { - // If we aren't in BufferAllocationMode::kNone, this |picture| is -@@ -665,9 +678,13 @@ void VaapiVideoDecodeAccelerator::Assign + if (buffer_allocation_mode_ != BufferAllocationMode::kNone && ++ buffer_allocation_mode_ != BufferAllocationMode::kWrapVdpau && + !vpp_vaapi_wrapper_) { + vpp_vaapi_wrapper_ = VaapiWrapper::Create( + VaapiWrapper::kVideoProcess, VAProfileNone, +@@ -665,7 +666,8 @@ void VaapiVideoDecodeAccelerator::Assign PictureBuffer buffer = buffers[i]; buffer.set_size(requested_pic_size_); std::unique_ptr<VaapiPicture> picture = vaapi_picture_factory_->Create( -+ #if defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_CHROMEOS) -+ vaapi_wrapper_, -+ #else - (buffer_allocation_mode_ == BufferAllocationMode::kNone) +- (buffer_allocation_mode_ == BufferAllocationMode::kNone) ++ ((buffer_allocation_mode_ == BufferAllocationMode::kNone) || ++ (buffer_allocation_mode_ == BufferAllocationMode::kWrapVdpau)) ? vaapi_wrapper_ : vpp_vaapi_wrapper_, -+ #endif make_context_current_cb_, bind_image_cb_, buffer); - RETURN_AND_NOTIFY_ON_FAILURE(picture, "Failed creating a VaapiPicture", - PLATFORM_FAILURE, ); -@@ -1093,6 +1110,9 @@ VaapiVideoDecodeAccelerator::GetSupporte +@@ -1093,6 +1095,14 @@ VaapiVideoDecodeAccelerator::GetSupporte VaapiVideoDecodeAccelerator::BufferAllocationMode VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() { -+ #if defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_CHROMEOS) -+ return BufferAllocationMode::kNormal; -+ #else ++ // NVIDIA blobs use VDPAU ++ if (base::StartsWith(VaapiWrapper::GetVendorString(), ++ "Splitted-Desktop Systems VDPAU", ++ base::CompareCase::SENSITIVE)) { ++ LOG(INFO) << "VA-API driver on VDPAU backend"; ++ return BufferAllocationMode::kWrapVdpau; ++ } ++ // TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT // |output_mode_| as well. if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT) -@@ -1128,6 +1148,7 @@ VaapiVideoDecodeAccelerator::DecideBuffe - return BufferAllocationMode::kReduced; - - return BufferAllocationMode::kSuperReduced; -+ #endif - } - - bool VaapiVideoDecodeAccelerator::IsBufferAllocationModeReducedOrSuperReduced() -Index: chromium-79.0.3945.36/media/gpu/vaapi/vaapi_wrapper.cc -=================================================================== ---- chromium-79.0.3945.36.orig/media/gpu/vaapi/vaapi_wrapper.cc -+++ chromium-79.0.3945.36/media/gpu/vaapi/vaapi_wrapper.cc -@@ -344,6 +344,10 @@ void VADisplayState::PreSandboxInitializ - base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE); - if (drm_file.IsValid()) - VADisplayState::Get()->SetDrmFd(drm_file.GetPlatformFile()); -+ const char kNvidiaPath[] = "/dev/dri/nvidiactl"; -+ base::File nvidia_file = base::File( -+ base::FilePath::FromUTF8Unsafe(kNvidiaPath), -+ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE); +@@ -1105,7 +1115,7 @@ VaapiVideoDecodeAccelerator::DecideBuffe + // depends on the bitstream and sometimes it's not enough to cover the amount + // of frames needed by the client pipeline (see b/133733739). + // TODO(crbug.com/911754): Enable for VP9 Profile 2. +- if (IsGeminiLakeOrLater() && ++ if (false && IsGeminiLakeOrLater() && + (profile_ == VP9PROFILE_PROFILE0 || profile_ == VP8PROFILE_ANY)) { + // Add one to the reference frames for the one being currently egressed, and + // an extra allocation for both |client_| and |decoder_|, see +--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.h ++++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.h +@@ -204,6 +204,7 @@ class MEDIA_GPU_EXPORT VaapiVideoDecodeA + // Using |client_|s provided PictureBuffers and as many internally + // allocated. + kNormal, ++ kWrapVdpau, + }; + + // Decides the concrete buffer allocation mode, depending on the hardware +--- a/media/gpu/vaapi/vaapi_wrapper.cc ++++ b/media/gpu/vaapi/vaapi_wrapper.cc +@@ -1072,6 +1072,11 @@ VAImplementation VaapiWrapper::GetImplem } - VADisplayState::VADisplayState() -@@ -378,10 +382,11 @@ bool VADisplayState::InitializeOnce() { - case gl::kGLImplementationDesktopGL: - #if defined(USE_X11) - va_display_ = vaGetDisplay(gfx::GetXDisplay()); --#else -- LOG(WARNING) << "VAAPI video acceleration not available without " -- "DesktopGL (GLX)."; -+ if (vaDisplayIsValid(va_display_)) -+ break; + // static ++const std::string& VaapiWrapper::GetVendorString() { ++ return VADisplayState::Get()->va_vendor_string(); ++} + - #endif // USE_X11 -+ va_display_ = vaGetDisplayDRM(drm_fd_.get()); - break; - // Cannot infer platform from GL, try all available displays - case gl::kGLImplementationNone: -@@ -414,8 +419,17 @@ bool VADisplayState::InitializeOnce() { - int major_version, minor_version; - VAStatus va_res = vaInitialize(va_display_, &major_version, &minor_version); - if (va_res != VA_STATUS_SUCCESS) { -- LOG(ERROR) << "vaInitialize failed: " << vaErrorStr(va_res); -- return false; -+ LOG(ERROR) << "vaInitialize failed (ignore if using Wayland desktop environment, refer:(Github)akarshanbiswas/chromium-vaapi/issues/7): " << vaErrorStr(va_res); -+ va_display_ = vaGetDisplayDRM(drm_fd_.get()); -+ if (!vaDisplayIsValid(va_display_)) { -+ LOG(ERROR) << "Could not get a valid DRM VA display"; -+ return false; -+ } -+ va_res = vaInitialize(va_display_, &major_version, &minor_version); -+ if (va_res != VA_STATUS_SUCCESS) { -+ LOG(ERROR) << "vaInitialize failed using DRM: " << vaErrorStr(va_res); -+ return false; -+ } - } ++// static + scoped_refptr<VaapiWrapper> VaapiWrapper::Create( + CodecMode mode, + VAProfile va_profile, +--- a/media/gpu/vaapi/vaapi_wrapper.h ++++ b/media/gpu/vaapi/vaapi_wrapper.h +@@ -119,6 +119,9 @@ class MEDIA_GPU_EXPORT VaapiWrapper + // Returns the type of the underlying VA-API implementation. + static VAImplementation GetImplementationType(); - va_initialized_ = true; ++ // Returns the VAAPI vendor string (obtained using vaQueryVendorString()). ++ static const std::string& GetVendorString(); ++ + // Return an instance of VaapiWrapper initialized for |va_profile| and + // |mode|. |report_error_to_uma_cb| will be called independently from + // reporting errors to clients via method return values. ++++++ chromium-vaapi.patch ++++++ --- /var/tmp/diff_new_pack.G5YGuL/_old 2020-02-17 17:35:49.332407986 +0100 +++ /var/tmp/diff_new_pack.G5YGuL/_new 2020-02-17 17:35:49.332407986 +0100 @@ -1,22 +1,8 @@ -From abc7295ca1653c85472916909f0eb76e28e79a58 Mon Sep 17 00:00:00 2001 -From: Akarshan Biswas <akarshan.bis...@gmail.com> -Date: Thu, 24 Jan 2019 12:45:29 +0530 -Subject: [PATCH] Enable mojo with VDA2 on Linux - ---- - chrome/browser/about_flags.cc | 8 ++++---- - chrome/browser/flag_descriptions.cc | 9 +++++++-- - chrome/browser/flag_descriptions.h | 10 ++++++++-- - gpu/config/software_rendering_list.json | 3 ++- - media/media_options.gni | 9 ++++++--- - media/mojo/services/gpu_mojo_media_client.cc | 4 ++-- - 6 files changed, 29 insertions(+), 14 deletions(-) - -Index: chromium-78.0.3904.44/chrome/browser/about_flags.cc +Index: chromium-80.0.3987.87/chrome/browser/about_flags.cc =================================================================== ---- chromium-78.0.3904.44.orig/chrome/browser/about_flags.cc -+++ chromium-78.0.3904.44/chrome/browser/about_flags.cc -@@ -1738,14 +1738,14 @@ const FeatureEntry kFeatureEntries[] = { +--- chromium-80.0.3987.87.orig/chrome/browser/about_flags.cc ++++ chromium-80.0.3987.87/chrome/browser/about_flags.cc +@@ -1865,7 +1865,7 @@ const FeatureEntry kFeatureEntries[] = { "disable-accelerated-video-decode", flag_descriptions::kAcceleratedVideoDecodeName, flag_descriptions::kAcceleratedVideoDecodeDescription, @@ -25,15 +11,7 @@ SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), }, { - "disable-accelerated-video-encode", - flag_descriptions::kAcceleratedVideoEncodeName, - flag_descriptions::kAcceleratedVideoEncodeDescription, -- kOsMac | kOsWin | kOsCrOS | kOsAndroid, -+ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, - SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoEncode), - }, - {"enable-history-favicons-google-server-query", -@@ -2216,10 +2216,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -2325,10 +2325,10 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)}, #endif // !defined(OS_ANDROID) #endif // ENABLE_VR @@ -46,16 +24,16 @@ SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, #endif // OS_CHROMEOS {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName, -Index: chromium-78.0.3904.44/chrome/browser/flag_descriptions.cc +Index: chromium-80.0.3987.87/chrome/browser/flag_descriptions.cc =================================================================== ---- chromium-78.0.3904.44.orig/chrome/browser/flag_descriptions.cc -+++ chromium-78.0.3904.44/chrome/browser/flag_descriptions.cc -@@ -3064,15 +3064,20 @@ const char kMacSystemMediaPermissionsInf +--- chromium-80.0.3987.87.orig/chrome/browser/flag_descriptions.cc ++++ chromium-80.0.3987.87/chrome/browser/flag_descriptions.cc +@@ -3160,15 +3160,20 @@ const char kMetalDescription[] = #endif -// Chrome OS ------------------------------------------------------------------- -+// Chrome OS Linux------------------------------------------------------------------- ++// Chrome OS & Linux------------------------------------------------------------ -#if defined(OS_CHROMEOS) +#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) @@ -67,17 +45,17 @@ "available."; +#endif + -+// Chrome OS -------------------------------------------------- ++// Chrome OS ------------------------------------------------------------------- + +#if defined(OS_CHROMEOS) const char kAggregatedMlAppRankingName[] = "Rank suggested apps with ML."; const char kAggregatedMlAppRankingDescription[] = -Index: chromium-78.0.3904.44/chrome/browser/flag_descriptions.h +Index: chromium-80.0.3987.87/chrome/browser/flag_descriptions.h =================================================================== ---- chromium-78.0.3904.44.orig/chrome/browser/flag_descriptions.h -+++ chromium-78.0.3904.44/chrome/browser/flag_descriptions.h -@@ -1821,11 +1821,15 @@ extern const char kPermissionPromptPersi +--- chromium-80.0.3987.87.orig/chrome/browser/flag_descriptions.h ++++ chromium-80.0.3987.87/chrome/browser/flag_descriptions.h +@@ -1863,11 +1863,15 @@ extern const char kPermissionPromptPersi // Chrome OS ------------------------------------------------------------------ @@ -87,17 +65,17 @@ extern const char kAcceleratedMjpegDecodeName[]; extern const char kAcceleratedMjpegDecodeDescription[]; -+#endif // defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) ++#endif + +#if defined(OS_CHROMEOS) + extern const char kAggregatedMlAppRankingName[]; extern const char kAggregatedMlAppRankingDescription[]; -Index: chromium-78.0.3904.44/gpu/config/software_rendering_list.json +Index: chromium-80.0.3987.87/gpu/config/software_rendering_list.json =================================================================== ---- chromium-78.0.3904.44.orig/gpu/config/software_rendering_list.json -+++ chromium-78.0.3904.44/gpu/config/software_rendering_list.json +--- chromium-80.0.3987.87.orig/gpu/config/software_rendering_list.json ++++ chromium-80.0.3987.87/gpu/config/software_rendering_list.json @@ -334,11 +334,12 @@ }, { ++++++ gpu-timeout.patch ++++++ description: 10 seconds may not be enough, so don't kill the gpu process until 20. author: Chad MILLER <chad.mil...@canonical.com> bug-debian: http://bugs.debian.org/781940 --- a/gpu/ipc/service/gpu_watchdog_thread.cc +++ b/gpu/ipc/service/gpu_watchdog_thread.cc @@ -37,7 +37,7 @@ const int kGpuTimeout = 30000; // hangs at context creation during startup. See https://crbug.com/918490. const int kGpuTimeout = 15000; #else -const int kGpuTimeout = 10000; +const int kGpuTimeout = 20000; #endif #if defined(USE_X11)