diff --git a/network/web/chromium-browser/actions.py b/network/web/chromium-browser/actions.py index 67fe5eaf36..c7be01f677 100644 --- a/network/web/chromium-browser/actions.py +++ b/network/web/chromium-browser/actions.py @@ -30,11 +30,12 @@ def setup(): shelltools.system("sed -i -e 's/\/malloc/' -e 's/\/free/' \ third_party/blink/renderer/core/xml/*.cc \ third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \ - third_party/libxml/chromium/libxml_utils.cc") + third_party/libxml/chromium/libxml_utils.cc") opt = 'custom_toolchain="//build/toolchain/linux/unbundle:default" \ host_toolchain="//build/toolchain/linux/unbundle:default" \ use_sysroot=false \ + chrome_pgo_phase=0 \ enable_nacl=true \ enable_nacl_nonsfi=true \ rtc_use_pipewire=true \ diff --git a/network/web/chromium-browser/files/add-dependency-on-opus-in-webcodecs.patch b/network/web/chromium-browser/files/add-dependency-on-opus-in-webcodecs.patch new file mode 100644 index 0000000000..12e1116faf --- /dev/null +++ b/network/web/chromium-browser/files/add-dependency-on-opus-in-webcodecs.patch @@ -0,0 +1,43 @@ +From b5b80df7dafba8cafa4c6c0ba2153dfda467dfc9 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann +Date: Wed, 27 Jan 2021 20:31:51 +0000 +Subject: [PATCH] add dependency on opus in webcodecs + +webcodecs uses opus, but dependency is missing. With unbundled +opus library build fails, because include path is incomplete. + +Bug: 1169758 +Change-Id: I01369364327461196a81002479636cf45017669a +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2644623 +Reviewed-by: Dale Curtis +Commit-Queue: Dale Curtis +Cr-Commit-Position: refs/heads/master@{#847754} +--- + third_party/blink/renderer/modules/webcodecs/BUILD.gn | 1 + + third_party/blink/renderer/modules/webcodecs/DEPS | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/third_party/blink/renderer/modules/webcodecs/BUILD.gn b/third_party/blink/renderer/modules/webcodecs/BUILD.gn +index fdf4ca0fafc72..01a7bf809ffca 100644 +--- a/third_party/blink/renderer/modules/webcodecs/BUILD.gn ++++ b/third_party/blink/renderer/modules/webcodecs/BUILD.gn +@@ -65,6 +65,7 @@ blink_modules_sources("webcodecs") { + "//media/mojo/clients", + "//media/mojo/mojom", + "//third_party/libyuv:libyuv", ++ "//third_party/opus", + ] + if (media_use_openh264) { + deps += [ "//third_party/openh264:encoder" ] +diff --git a/third_party/blink/renderer/modules/webcodecs/DEPS b/third_party/blink/renderer/modules/webcodecs/DEPS +index b8dd596da8caf..ea1919d12205a 100644 +--- a/third_party/blink/renderer/modules/webcodecs/DEPS ++++ b/third_party/blink/renderer/modules/webcodecs/DEPS +@@ -19,6 +19,7 @@ include_rules = [ + + "+third_party/libyuv", + "+third_party/openh264", ++ "+third_party/opus", + + "+ui/gfx/color_space.h", + "+ui/gfx/geometry/rect.h", diff --git a/network/web/chromium-browser/files/chromium-89-EnumTable-crash.patch b/network/web/chromium-browser/files/chromium-89-EnumTable-crash.patch new file mode 100644 index 0000000000..89a50702df --- /dev/null +++ b/network/web/chromium-browser/files/chromium-89-EnumTable-crash.patch @@ -0,0 +1,71 @@ +diff --git a/components/cast_channel/enum_table.h b/components/cast_channel/enum_table.h +index e3130c7..2ad16ea 100644 +--- a/components/cast_channel/enum_table.h ++++ b/components/cast_channel/enum_table.h +@@ -212,7 +212,7 @@ class + + template + friend class EnumTable; +- DISALLOW_COPY_AND_ASSIGN(GenericEnumTableEntry); ++ DISALLOW_ASSIGN(GenericEnumTableEntry); + }; + + // Yes, these constructors really needs to be inlined. Even though they look +@@ -250,8 +250,7 @@ class EnumTable { + // Constructor for regular entries. + constexpr Entry(E value, base::StringPiece str) + : GenericEnumTableEntry(static_cast(value), str) {} +- +- DISALLOW_COPY_AND_ASSIGN(Entry); ++ DISALLOW_ASSIGN(Entry); + }; + + static_assert(sizeof(E) <= sizeof(int32_t), +@@ -306,15 +305,14 @@ class EnumTable { + if (is_sorted_) { + const std::size_t index = static_cast(value); + if (ANALYZER_ASSUME_TRUE(index < data_.size())) { +- const auto& entry = data_.begin()[index]; ++ const auto& entry = data_[index]; + if (ANALYZER_ASSUME_TRUE(entry.has_str())) + return entry.str(); + } + return base::nullopt; + } + return GenericEnumTableEntry::FindByValue( +- reinterpret_cast(data_.begin()), +- data_.size(), static_cast(value)); ++ &data_[0], data_.size(), static_cast(value)); + } + + // This overload of GetString is designed for cases where the argument is a +@@ -342,8 +340,7 @@ class EnumTable { + // enum value directly. + base::Optional GetEnum(base::StringPiece str) const { + auto* entry = GenericEnumTableEntry::FindByString( +- reinterpret_cast(data_.begin()), +- data_.size(), str); ++ &data_[0], data_.size(), str); + return entry ? static_cast(entry->value) : base::Optional(); + } + +@@ -358,7 +355,7 @@ class EnumTable { + // Align the data on a cache line boundary. + alignas(64) + #endif +- std::initializer_list data_; ++ const std::vector data_; + bool is_sorted_; + + constexpr EnumTable(std::initializer_list data, bool is_sorted) +@@ -370,8 +367,8 @@ class EnumTable { + + for (std::size_t i = 0; i < data.size(); i++) { + for (std::size_t j = i + 1; j < data.size(); j++) { +- const Entry& ei = data.begin()[i]; +- const Entry& ej = data.begin()[j]; ++ const Entry& ei = data[i]; ++ const Entry& ej = data[j]; + DCHECK(ei.value != ej.value) + << "Found duplicate enum values at indices " << i << " and " << j; + DCHECK(!(ei.has_str() && ej.has_str() && ei.str() == ej.str())) diff --git a/network/web/chromium-browser/files/chromium-skia-harmony.patch b/network/web/chromium-browser/files/chromium-skia-harmony.patch deleted file mode 100644 index c96d07e114..0000000000 --- a/network/web/chromium-browser/files/chromium-skia-harmony.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig 2019-07-19 11:08:34.770972665 +0000 -+++ third_party/skia/src/ports/SkFontHost_FreeType.cpp 2019-07-19 11:08:44.274442065 +0000 -@@ -128,9 +128,9 @@ public: - : fGetVarDesignCoordinates(nullptr) - , fGetVarAxisFlags(nullptr) - , fLibrary(nullptr) -- , fIsLCDSupported(false) -+ , fIsLCDSupported(true) - , fLightHintingIsYOnly(false) -- , fLCDExtra(0) -+ , fLCDExtra(2) - { - if (FT_New_Library(&gFTMemory, &fLibrary)) { - return; diff --git a/network/web/chromium-browser/files/chromium-widevine.patch b/network/web/chromium-browser/files/chromium-widevine.patch deleted file mode 100644 index 32f0ae2fb5..0000000000 --- a/network/web/chromium-browser/files/chromium-widevine.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/third_party/widevine/cdm/BUILD.gn b/third_party/widevine/cdm/BUILD.gn -index ed0e2f5208b..5b431a030d5 100644 ---- a/third_party/widevine/cdm/BUILD.gn -+++ b/third_party/widevine/cdm/BUILD.gn -@@ -14,7 +14,7 @@ buildflag_header("buildflags") { - - flags = [ - "ENABLE_WIDEVINE=$enable_widevine", -- "BUNDLE_WIDEVINE_CDM=$bundle_widevine_cdm", -+ "BUNDLE_WIDEVINE_CDM=true", - "ENABLE_WIDEVINE_CDM_COMPONENT=$enable_widevine_cdm_component", - ] - } diff --git a/network/web/chromium-browser/files/cros-search-service-Include-cmath-for-std-pow.patch b/network/web/chromium-browser/files/cros-search-service-Include-cmath-for-std-pow.patch deleted file mode 100644 index 410b968d0f..0000000000 --- a/network/web/chromium-browser/files/cros-search-service-Include-cmath-for-std-pow.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 8273f4d3130e06fd8b6bef87b07c936304b971d9 Mon Sep 17 00:00:00 2001 -From: Raphael Kubo da Costa -Date: Tue, 10 Dec 2019 20:59:57 +0000 -Subject: [PATCH] [cros search service]: Include for std::pow() - -IWYU. Follow up to commit 2b2ea3c09b ("[cros search service] Move shared -string matching functions to //chrome"), which broke the libstdc++ build: - - ../../chrome/common/string_matching/fuzzy_tokenized_string_match.cc:199:14: error: no member named 'pow' in namespace 'std' - std::pow(partial_match_penalty_rate, long_start - current - 1); - ~~~~~^ - -Bug: 957519 -Change-Id: I66f61cb4f93cfa0bfa3d1b00ba391ddd8f31a7fb -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1960310 -Auto-Submit: Raphael Kubo da Costa -Reviewed-by: Jia Meng -Commit-Queue: Raphael Kubo da Costa -Cr-Commit-Position: refs/heads/master@{#723499} ---- - chrome/common/string_matching/fuzzy_tokenized_string_match.cc | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/chrome/common/string_matching/fuzzy_tokenized_string_match.cc b/chrome/common/string_matching/fuzzy_tokenized_string_match.cc -index 8351fa701e4..884ef638c61 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 -+#include - #include - - #include "base/i18n/case_conversion.h" diff --git a/network/web/chromium-browser/files/fix-building-with-unbundled-libxml.patch b/network/web/chromium-browser/files/fix-building-with-unbundled-libxml.patch deleted file mode 100644 index 7b934376e6..0000000000 --- a/network/web/chromium-browser/files/fix-building-with-unbundled-libxml.patch +++ /dev/null @@ -1,127 +0,0 @@ -From d3afade220ddb307e16a6dd4f2b0ec88b2af91e7 Mon Sep 17 00:00:00 2001 -From: Stephan Hartmann -Date: Tue, 28 Jan 2020 18:16:54 +0000 -Subject: [PATCH] Fix building with unbundled libxml - -Add new targets to libxml.gn that were added in - https://chromium-review.googlesource.com/c/chromium/src/+/1894877 -Adjust includes to use system libxml headers too - -Bug: 1043042 -Change-Id: I948c063e212e49b9e7f42fed2b8bf7f4af042ca7 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2007110 -Reviewed-by: Robert Sesek -Reviewed-by: Daniel Cheng -Reviewed-by: Nico Weber -Commit-Queue: Robert Sesek -Cr-Commit-Position: refs/heads/master@{#735957} ---- - build/linux/unbundle/libxml.gn | 41 ++++++++++++++++++++-- - third_party/libxml/chromium/libxml_utils.h | 4 +-- - third_party/libxml/chromium/xml_reader.cc | 3 +- - third_party/libxml/chromium/xml_writer.cc | 3 +- - 4 files changed, 45 insertions(+), 6 deletions(-) - -diff --git a/build/linux/unbundle/libxml.gn b/build/linux/unbundle/libxml.gn -index c481bd3547b..3587881eea8 100644 ---- a/build/linux/unbundle/libxml.gn -+++ b/build/linux/unbundle/libxml.gn -@@ -8,11 +8,48 @@ 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 ff969fab540..8b2383f9c8b 100644 ---- a/third_party/libxml/chromium/libxml_utils.h -+++ b/third_party/libxml/chromium/libxml_utils.h -@@ -5,9 +5,9 @@ - #ifndef THIRD_PARTY_LIBXML_CHROMIUM_LIBXML_UTILS_H_ - #define THIRD_PARTY_LIBXML_CHROMIUM_LIBXML_UTILS_H_ - --#include -+#include - --#include "third_party/libxml/src/include/libxml/xmlreader.h" -+#include - - // 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 92464f4cbcc..899ccefb7c8 100644 ---- a/third_party/libxml/chromium/xml_reader.cc -+++ b/third_party/libxml/chromium/xml_reader.cc -@@ -4,10 +4,11 @@ - - #include "third_party/libxml/chromium/xml_reader.h" - -+#include -+ - #include - - #include "third_party/libxml/chromium/libxml_utils.h" --#include "third_party/libxml/src/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 51fce8ebeb1..7c58031fe2d 100644 ---- a/third_party/libxml/chromium/xml_writer.cc -+++ b/third_party/libxml/chromium/xml_writer.cc -@@ -4,8 +4,9 @@ - - #include "third_party/libxml/chromium/xml_writer.h" - -+#include -+ - #include "third_party/libxml/chromium/libxml_utils.h" --#include "third_party/libxml/src/include/libxml/xmlwriter.h" - - XmlWriter::XmlWriter() : writer_(nullptr), buffer_(nullptr) {} - diff --git a/network/web/chromium-browser/files/fix-shim-header-generation-when-unbundling-ICU.patch b/network/web/chromium-browser/files/fix-shim-header-generation-when-unbundling-ICU.patch deleted file mode 100644 index 04f1ecd3bc..0000000000 --- a/network/web/chromium-browser/files/fix-shim-header-generation-when-unbundling-ICU.patch +++ /dev/null @@ -1,50 +0,0 @@ -From dcad5af090528018599277dc5d7e160fb6b2d68e Mon Sep 17 00:00:00 2001 -From: Stephan Hartmann -Date: Wed, 15 Jan 2020 20:26:40 +0000 -Subject: [PATCH] Fix shim header generation when unbundling ICU - -listformatter.h was moved from icuuc to icui18n - -Bug: 989153 -Change-Id: I9fcb56f6d5af7787f34ea99b737e2ed8fe741c84 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2000142 -Reviewed-by: Lei Zhang -Commit-Queue: Lei Zhang -Cr-Commit-Position: refs/heads/master@{#732114} ---- - AUTHORS | 1 + - build/linux/unbundle/icu.gn | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/AUTHORS b/AUTHORS -index 7523e483aae..1618fddc633 100644 ---- a/AUTHORS -+++ b/AUTHORS -@@ -891,6 +891,7 @@ Soren Dreijer - Sreerenj Balachandran - Srirama Chandra Sekhar Mogali - Staphany Park -+Stephan Hartmann - Stephen Searles - Steve Sanders - Steven Pennington -diff --git a/build/linux/unbundle/icu.gn b/build/linux/unbundle/icu.gn -index 923bd7f5ac3..e77bc43db87 100644 ---- a/build/linux/unbundle/icu.gn -+++ b/build/linux/unbundle/icu.gn -@@ -92,6 +92,7 @@ shim_headers("icui18n_shim") { - "unicode/fpositer.h", - "unicode/gender.h", - "unicode/gregocal.h", -+ "unicode/listformatter.h", - "unicode/measfmt.h", - "unicode/measunit.h", - "unicode/measure.h", -@@ -174,7 +175,6 @@ shim_headers("icuuc_shim") { - "unicode/icudataver.h", - "unicode/icuplug.h", - "unicode/idna.h", -- "unicode/listformatter.h", - "unicode/localpointer.h", - "unicode/locdspnm.h", - "unicode/locid.h", diff --git a/network/web/chromium-browser/files/move-RemoteTreeNode-declaration.patch b/network/web/chromium-browser/files/move-RemoteTreeNode-declaration.patch deleted file mode 100644 index 50fc78cdb4..0000000000 --- a/network/web/chromium-browser/files/move-RemoteTreeNode-declaration.patch +++ /dev/null @@ -1,237 +0,0 @@ -From cdf3e81ff49b200213d67d65558f2919222b60ab Mon Sep 17 00:00:00 2001 -From: Raphael Kubo da Costa -Date: Mon, 16 Dec 2019 11:39:11 +0000 -Subject: [PATCH] BookmarkModelMerger: Move RemoteTreeNode declaration to - header. - -This fixes the build with libstdc++ after commit 8f5dad93e58 ("Fix CHECK -failure due to untracked local nodes"): - -/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/stl_pair.h:215:11: error: field has incomplete type 'sync_bookmarks::BookmarkModelMerger::RemoteTreeNode' - _T2 second; /// @c second is a copy of the second object - ^ -/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/ext/aligned_buffer.h:91:28: note: in instantiation of template class 'std::pair, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>' requested here - : std::aligned_storage - ^ -/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable_policy.h:233:43: note: in instantiation of template class '__gnu_cxx::__aligned_buffer, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> >' requested here - __gnu_cxx::__aligned_buffer<_Value> _M_storage; - ^ -/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable_policy.h:264:39: note: in instantiation of template class 'std::__detail::_Hash_node_value_base, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> >' requested here - struct _Hash_node<_Value, true> : _Hash_node_value_base<_Value> - ^ -/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable_policy.h:2028:25: note: in instantiation of template class 'std::__detail::_Hash_node, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>, true>' requested here - rebind_traits; - ^ -/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable.h:184:15: note: in instantiation of template class 'std::__detail::_Hashtable_alloc, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>, true> > > -' requested here - private __detail::_Hashtable_alloc< - ^ -/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/unordered_map.h:105:18: note: in instantiation of template class 'std::_Hashtable, std::pair, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>, std::allocator, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> >, std::__detail::_Select1st, std::equal_to >, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__deta -il::_Hashtable_traits >' requested here - _Hashtable _M_h; - ^ -../../components/sync_bookmarks/bookmark_model_merger.h:146:22: note: in instantiation of template class 'std::unordered_map, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode, std::hash, std::equal_to >, std::allocator, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> > >' requested here - const RemoteForest remote_forest_; - ^ -../../components/sync_bookmarks/bookmark_model_merger.h:53:9: note: forward declaration of 'sync_bookmarks::BookmarkModelMerger::RemoteTreeNode' - class RemoteTreeNode; - ^ - -Essentially, the problem is that libstdc++'s std::unordered_map -implementation requires both T and U to be fully declared. I raised the -problem in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92770, and GCC's -position is that we are relying on undefined behavior according to the C++ -standard (https://eel.is/c++draft/requirements#res.on.functions-2.5). - -Bug: 957519 -Change-Id: Ife7e435e516932a795bfbe05b2c910c3272878f0 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1960156 -Commit-Queue: Raphael Kubo da Costa -Reviewed-by: Mikel Astiz -Auto-Submit: Raphael Kubo da Costa -Cr-Commit-Position: refs/heads/master@{#725070} ---- - .../sync_bookmarks/bookmark_model_merger.cc | 89 +++++++------------ - .../sync_bookmarks/bookmark_model_merger.h | 48 +++++++++- - 2 files changed, 80 insertions(+), 57 deletions(-) - -diff --git a/components/sync_bookmarks/bookmark_model_merger.cc b/components/sync_bookmarks/bookmark_model_merger.cc -index eae153eff95..579848ee664 100644 ---- a/components/sync_bookmarks/bookmark_model_merger.cc -+++ b/components/sync_bookmarks/bookmark_model_merger.cc -@@ -5,7 +5,6 @@ - #include "components/sync_bookmarks/bookmark_model_merger.h" - - #include --#include - #include - #include - #include -@@ -205,66 +204,44 @@ UpdatesPerParentId GroupValidUpdatesByParentId( - - } // namespace - --class BookmarkModelMerger::RemoteTreeNode final { -- public: -- // Constructs a tree given |update| as root and recursively all descendants by -- // traversing |*updates_per_parent_id|. |update| and |updates_per_parent_id| -- // must not be null. All updates |*updates_per_parent_id| must represent valid -- // updates. Updates corresponding from descendant nodes are moved away from -- // |*updates_per_parent_id|. -- static RemoteTreeNode BuildTree( -- std::unique_ptr update, -- UpdatesPerParentId* updates_per_parent_id); -- -- ~RemoteTreeNode() = default; -- -- // Allow moves, useful during construction. -- RemoteTreeNode(RemoteTreeNode&&) = default; -- RemoteTreeNode& operator=(RemoteTreeNode&&) = default; -- -- const syncer::EntityData& entity() const { return *update_->entity; } -- int64_t response_version() const { return update_->response_version; } -- -- // Direct children nodes, sorted by ascending unique position. These are -- // guaranteed to be valid updates (e.g. IsValidBookmarkSpecifics()). -- const std::vector& children() const { return children_; } -- -- // Recursively emplaces all GUIDs (this node and descendants) into -- // |*guid_to_remote_node_map|, which must not be null. -- void EmplaceSelfAndDescendantsByGUID( -- std::unordered_map* -- guid_to_remote_node_map) const { -- 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); -- } -+BookmarkModelMerger::RemoteTreeNode::RemoteTreeNode() = default; - -- for (const RemoteTreeNode& child : children_) { -- child.EmplaceSelfAndDescendantsByGUID(guid_to_remote_node_map); -- } -- } -+BookmarkModelMerger::RemoteTreeNode::~RemoteTreeNode() = default; -+ -+BookmarkModelMerger::RemoteTreeNode::RemoteTreeNode( -+ BookmarkModelMerger::RemoteTreeNode&&) = default; -+BookmarkModelMerger::RemoteTreeNode& BookmarkModelMerger::RemoteTreeNode:: -+operator=(BookmarkModelMerger::RemoteTreeNode&&) = default; -+ -+void BookmarkModelMerger::RemoteTreeNode::EmplaceSelfAndDescendantsByGUID( -+ std::unordered_map* -+ guid_to_remote_node_map) const { -+ DCHECK(guid_to_remote_node_map); -+ -+ const std::string& guid = entity().specifics.bookmark().guid(); -+ if (!guid.empty()) { -+ DCHECK(base::IsValidGUID(guid)); - -- 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); -+ // Duplicate GUIDs have been sorted out before. -+ bool success = guid_to_remote_node_map->emplace(guid, this).second; -+ DCHECK(success); - } - -- RemoteTreeNode() = default; -+ for (const RemoteTreeNode& child : children_) { -+ child.EmplaceSelfAndDescendantsByGUID(guid_to_remote_node_map); -+ } -+} - -- std::unique_ptr update_; -- std::vector children_; --}; -+// static -+bool BookmarkModelMerger::RemoteTreeNode::UniquePositionLessThan( -+ const RemoteTreeNode& lhs, -+ const RemoteTreeNode& rhs) { -+ const syncer::UniquePosition a_pos = -+ syncer::UniquePosition::FromProto(lhs.entity().unique_position); -+ const syncer::UniquePosition b_pos = -+ syncer::UniquePosition::FromProto(rhs.entity().unique_position); -+ return a_pos.LessThan(b_pos); -+} - - // static - BookmarkModelMerger::RemoteTreeNode -diff --git a/components/sync_bookmarks/bookmark_model_merger.h b/components/sync_bookmarks/bookmark_model_merger.h -index 9b592000dc5..bf0783ecf8e 100644 ---- a/components/sync_bookmarks/bookmark_model_merger.h -+++ b/components/sync_bookmarks/bookmark_model_merger.h -@@ -5,6 +5,7 @@ - #ifndef COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_MODEL_MERGER_H_ - #define COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_MODEL_MERGER_H_ - -+#include - #include - #include - #include -@@ -50,7 +51,52 @@ class BookmarkModelMerger { - - private: - // Internal representation of a remote tree, composed of nodes. -- class RemoteTreeNode; -+ class RemoteTreeNode final { -+ private: -+ using UpdatesPerParentId = -+ std::unordered_map; -+ -+ public: -+ // Constructs a tree given |update| as root and recursively all descendants -+ // by traversing |*updates_per_parent_id|. |update| and -+ // |updates_per_parent_id| must not be null. All updates -+ // |*updates_per_parent_id| must represent valid updates. Updates -+ // corresponding from descendant nodes are moved away from -+ // |*updates_per_parent_id|. -+ static RemoteTreeNode BuildTree( -+ std::unique_ptr update, -+ UpdatesPerParentId* updates_per_parent_id); -+ -+ ~RemoteTreeNode(); -+ -+ // Allow moves, useful during construction. -+ RemoteTreeNode(RemoteTreeNode&&); -+ RemoteTreeNode& operator=(RemoteTreeNode&&); -+ -+ const syncer::EntityData& entity() const { return *update_->entity; } -+ int64_t response_version() const { return update_->response_version; } -+ -+ // Direct children nodes, sorted by ascending unique position. These are -+ // guaranteed to be valid updates (e.g. IsValidBookmarkSpecifics()). -+ const std::vector& children() const { return children_; } -+ -+ // Recursively emplaces all GUIDs (this node and descendants) into -+ // |*guid_to_remote_node_map|, which must not be null. -+ void EmplaceSelfAndDescendantsByGUID( -+ std::unordered_map* -+ guid_to_remote_node_map) const; -+ -+ private: -+ static bool UniquePositionLessThan(const RemoteTreeNode& lhs, -+ const RemoteTreeNode& rhs); -+ -+ RemoteTreeNode(); -+ -+ std::unique_ptr update_; -+ std::vector children_; -+ }; - - // A forest composed of multiple trees where the root of each tree represents - // a permanent node, keyed by server-defined unique tag of the root. diff --git a/network/web/chromium-browser/files/patches/chromium-79-gcc-protobuf-alignas.patch b/network/web/chromium-browser/files/patches/chromium-79-gcc-protobuf-alignas.patch deleted file mode 100644 index 20180c473d..0000000000 --- a/network/web/chromium-browser/files/patches/chromium-79-gcc-protobuf-alignas.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 5d66d5907ac3e76d1e382b8a8e8afe653bd00f4c Mon Sep 17 00:00:00 2001 -From: Stephan Hartmann -Date: Sun, 31 May 2020 13:59:15 +0000 -Subject: [PATCH] Fix GCC build with PROTOBUF_USE_DLLS enabled - -GCC does not allow mixing __attribute__(()) syntax and alignas() -syntax. Re-use approach from chromium base/compiler_specific.h ---- - .../protobuf/src/google/protobuf/arena.h | 2 +- - .../protobuf/src/google/protobuf/port_def.inc | 29 +++++++++++++++++++ - .../src/google/protobuf/port_undef.inc | 1 + - 3 files changed, 31 insertions(+), 1 deletion(-) - -diff --git a/third_party/protobuf/src/google/protobuf/arena.h b/third_party/protobuf/src/google/protobuf/arena.h -index dedc221..a8515ce 100644 ---- a/third_party/protobuf/src/google/protobuf/arena.h -+++ b/third_party/protobuf/src/google/protobuf/arena.h -@@ -245,7 +245,7 @@ struct ArenaOptions { - // well as protobuf container types like RepeatedPtrField and Map. The protocol - // is internal to protobuf and is not guaranteed to be stable. Non-proto types - // should not rely on this protocol. --class PROTOBUF_EXPORT alignas(8) Arena final { -+class PROTOBUF_EXPORT PROTOBUF_ALIGNAS(8) Arena final { - public: - // Arena constructor taking custom options. See ArenaOptions below for - // descriptions of the options available. -diff --git a/third_party/protobuf/src/google/protobuf/port_def.inc b/third_party/protobuf/src/google/protobuf/port_def.inc -index f1bd85d..6d02b53 100644 ---- a/third_party/protobuf/src/google/protobuf/port_def.inc -+++ b/third_party/protobuf/src/google/protobuf/port_def.inc -@@ -528,6 +528,35 @@ PROTOBUF_EXPORT_TEMPLATE_TEST(DEFAULT, __declspec(dllimport)); - #undef IN - #endif // _MSC_VER - -+// Specify memory alignment for structs, classes, etc. -+// Use like: -+// class PROTOBUF_ALIGNAS(16) MyClass { ... } -+// PROTOBUF_ALIGNAS(16) int array[4]; -+// -+// In most places you can use the C++11 keyword "alignas", which is preferred. -+// -+// But compilers have trouble mixing __attribute__((...)) syntax with -+// alignas(...) syntax. -+// -+// Doesn't work in clang or gcc: -+// struct alignas(16) __attribute__((packed)) S { char c; }; -+// Works in clang but not gcc: -+// struct __attribute__((packed)) alignas(16) S2 { char c; }; -+// Works in clang and gcc: -+// struct alignas(16) S3 { char c; } __attribute__((packed)); -+// -+// There are also some attributes that must be specified *before* a class -+// definition: visibility (used for exporting functions/classes) is one of -+// these attributes. This means that it is not possible to use alignas() with a -+// class that is marked as exported. -+#if defined(_MSC_VER) -+#define PROTOBUF_ALIGNAS(byte_alignment) __declspec(align(byte_alignment)) -+#elif defined(__GNUC__) -+#define PROTOBUF_ALIGNAS(byte_alignment) __attribute__((aligned(byte_alignment))) -+#else -+#define PROTOBUF_ALIGNAS(byte_alignment) alignas(byte_alignment) -+#endif -+ - #if defined(__clang__) - #pragma clang diagnostic push - // TODO(gerbens) ideally we cleanup the code. But a cursory try shows many -diff --git a/third_party/protobuf/src/google/protobuf/port_undef.inc b/third_party/protobuf/src/google/protobuf/port_undef.inc -index b7e67fe..ba1fffc 100644 ---- a/third_party/protobuf/src/google/protobuf/port_undef.inc -+++ b/third_party/protobuf/src/google/protobuf/port_undef.inc -@@ -80,6 +80,7 @@ - #undef PROTOBUF_EXPORT_TEMPLATE_STYLE_MATCH_foj3FJo5StF0OvIzl7oMxA__declspec - #undef PROTOBUF_EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_dllexport - #undef PROTOBUF_EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_dllimport -+#undef PROTOBUF_ALIGNAS - - - --- -2.26.2 - diff --git a/network/web/chromium-browser/files/patches/chromium-84-blink-disable-clang-format.patch b/network/web/chromium-browser/files/patches/chromium-84-blink-disable-clang-format.patch deleted file mode 100644 index c573db8259..0000000000 --- a/network/web/chromium-browser/files/patches/chromium-84-blink-disable-clang-format.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 08ac7188f414218ac9d764e29e7aa64a6bfc2f96 Mon Sep 17 00:00:00 2001 -From: Stephan Hartmann -Date: Sun, 31 May 2020 10:02:03 +0000 -Subject: [PATCH] disable clang-format for generated code in blink - -For GCC builds clang-format might be not available. Additionally, -current scripts look for clang-format within chromium sources and -don't consider system clang-format. ---- - .../bindings/scripts/bind_gen/codegen_utils.py | 10 +--------- - 1 file changed, 1 insertion(+), 9 deletions(-) - -diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py -index 7021f1a..33bf5bf 100644 ---- a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py -+++ b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py -@@ -150,12 +150,4 @@ def write_code_node_to_file(code_node, filepath): - - rendered_text = render_code_node(code_node) - -- format_result = style_format.auto_format(rendered_text, filename=filepath) -- if not format_result.did_succeed: -- raise RuntimeError("Style-formatting failed: filename = {filename}\n" -- "---- stderr ----\n" -- "{stderr}:".format( -- filename=format_result.filename, -- stderr=format_result.error_message)) -- -- web_idl.file_io.write_to_file_if_changed(filepath, format_result.contents) -+ web_idl.file_io.write_to_file_if_changed(filepath, rendered_text) --- -2.26.2 - diff --git a/network/web/chromium-browser/files/patches/chromium-87-CursorFactory-include.patch b/network/web/chromium-browser/files/patches/chromium-87-CursorFactory-include.patch deleted file mode 100644 index 98cb9cf70d..0000000000 --- a/network/web/chromium-browser/files/patches/chromium-87-CursorFactory-include.patch +++ /dev/null @@ -1,36 +0,0 @@ -From c4f6e8cd34a245c3640b86a91c9694d69594d80b Mon Sep 17 00:00:00 2001 -From: Stephan Hartmann -Date: Wed, 16 Sep 2020 15:05:02 +0000 -Subject: [PATCH] IWYU: ui::CursorFactory is now required independent from - Ozone - ---- - .../ui/views/chrome_browser_main_extra_parts_views_linux.cc | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git a/chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc b/chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc -index 5a97d61..ccedd2a 100644 ---- a/chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc -+++ b/chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc -@@ -7,6 +7,7 @@ - #include "chrome/browser/themes/theme_service_aura_linux.h" - #include "chrome/browser/ui/browser_list.h" - #include "chrome/browser/ui/views/theme_profile_key.h" -+#include "ui/base/cursor/cursor_factory.h" - #include "ui/display/screen.h" - #include "ui/views/linux_ui/linux_ui.h" - -@@ -15,10 +16,6 @@ - #include "ui/gtk/gtk_ui_delegate.h" - #endif - --#if defined(USE_OZONE) --#include "ui/base/cursor/cursor_factory.h" --#endif -- - #if defined(USE_X11) - #include "ui/gfx/x/connection.h" // nogncheck - #if BUILDFLAG(USE_GTK) --- -2.26.2 - diff --git a/network/web/chromium-browser/files/patches/chromium-87-ServiceWorkerContainerHost-crash.patch b/network/web/chromium-browser/files/patches/chromium-87-ServiceWorkerContainerHost-crash.patch deleted file mode 100644 index 5efc460c10..0000000000 --- a/network/web/chromium-browser/files/patches/chromium-87-ServiceWorkerContainerHost-crash.patch +++ /dev/null @@ -1,22 +0,0 @@ -Bug: https://bugs.gentoo.org/750038 -Upstream bug: https://crbug.com/1135070 - ---- a/content/browser/service_worker/service_worker_container_host.cc -+++ b/content/browser/service_worker/service_worker_container_host.cc -@@ -626,6 +626,16 @@ - int64_t registration_id) { - DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId()); - DCHECK(base::Contains(registration_object_hosts_, registration_id)); -+ -+ // ServiceWorkerRegistrationObjectHost to be deleted may have the last reference to -+ // ServiceWorkerRegistration that indirectly owns this ServiceWorkerContainerHost. -+ // If we erase the object host directly from the map, |this| could be deleted -+ // during the map operation and may crash. To avoid the case, we take the -+ // ownership of the object host from the map first, and then erase the entry -+ // from the map. See https://crbug.com/1135070 for details. -+ std::unique_ptr to_be_deleted = -+ std::move(registration_object_hosts_[registration_id]); -+ DCHECK(to_be_deleted); - registration_object_hosts_.erase(registration_id); - } - diff --git a/network/web/chromium-browser/files/patches/chromium-87-openscreen-include.patch b/network/web/chromium-browser/files/patches/chromium-87-openscreen-include.patch deleted file mode 100644 index 42545a8cc1..0000000000 --- a/network/web/chromium-browser/files/patches/chromium-87-openscreen-include.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 0c0af4cabb7490db473cd2c28f069956974a4d98 Mon Sep 17 00:00:00 2001 -From: Stephan Hartmann -Date: Fri, 2 Oct 2020 12:11:58 +0000 -Subject: [PATCH] IWYU: uint8_t is defined in stdint.h - ---- - third_party/openscreen/src/util/crypto/random_bytes.h | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/third_party/openscreen/src/util/crypto/random_bytes.h b/third_party/openscreen/src/util/crypto/random_bytes.h -index 3cb2fa8..025b52c 100644 ---- a/third_party/openscreen/src/util/crypto/random_bytes.h -+++ b/third_party/openscreen/src/util/crypto/random_bytes.h -@@ -7,6 +7,8 @@ - - #include - -+#include -+ - namespace openscreen { - - std::array GenerateRandomBytes16(); --- -2.26.2 - diff --git a/network/web/chromium-browser/files/patches/chromium-87-compiler.patch b/network/web/chromium-browser/files/patches/chromium-88-compiler.patch similarity index 75% rename from network/web/chromium-browser/files/patches/chromium-87-compiler.patch rename to network/web/chromium-browser/files/patches/chromium-88-compiler.patch index c2f6a16d8d..fa05c20dfa 100644 --- a/network/web/chromium-browser/files/patches/chromium-87-compiler.patch +++ b/network/web/chromium-browser/files/patches/chromium-88-compiler.patch @@ -1,14 +1,14 @@ From f4d0b0eb899005b4b8b6388e1d8bb82cc0018fc8 Mon Sep 17 00:00:00 2001 From: Mike Gilbert -Date: Thu, 1 Oct 2020 18:14:51 +0000 +Date: Sun, 15 Nov 2020 08:37:23 +0000 Subject: [PATCH] Disable various compiler configs --- - build/config/compiler/BUILD.gn | 71 ++++++++-------------------------- - 1 file changed, 17 insertions(+), 54 deletions(-) + build/config/compiler/BUILD.gn | 52 +++++++++++----------------------- + 1 file changed, 17 insertions(+), 35 deletions(-) diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn -index 4f6461b..b5d2c77 100644 +index 9d66490..a2bc09e 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn @@ -254,8 +254,6 @@ config("compiler") { @@ -20,7 +20,7 @@ index 4f6461b..b5d2c77 100644 ":compiler_codegen", ":compiler_deterministic", ] -@@ -480,36 +478,6 @@ config("compiler") { +@@ -478,17 +476,6 @@ config("compiler") { ldflags += [ "-Wl,-z,keep-text-section-prefix" ] } @@ -33,31 +33,12 @@ index 4f6461b..b5d2c77 100644 - "-mllvm", - "-instcombine-lower-dbg-declare=0", - ] -- -- # Pinned clang has enable-dse-memoryssa enabled by default but it's broken, -- # so we have to force it off. -- # Trunk clang has it disabled by default but it might work, so we force it -- # on so the ToT bots can check if it works now. -- if (!llvm_force_head_revision) { -- cflags += [ -- # TODO(https://crbug.com/1127713): Investigate, remove. -- "-mllvm", -- "-enable-dse-memoryssa=false", -- ] -- } -- if (llvm_force_head_revision) { -- cflags += [ -- # TODO(https://crbug.com/1127713): Investigate, remove. -- "-mllvm", -- "-enable-dse-memoryssa=true", -- ] -- } - } - # C11/C++11 compiler flags setup. # --------------------------- if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) || -@@ -1571,7 +1539,7 @@ config("chromium_code") { +@@ -1574,7 +1561,7 @@ config("chromium_code") { defines = [ "_HAS_NODISCARD" ] } } else { @@ -66,7 +47,7 @@ index 4f6461b..b5d2c77 100644 if (treat_warnings_as_errors) { cflags += [ "-Werror" ] -@@ -1580,10 +1548,6 @@ config("chromium_code") { +@@ -1583,10 +1570,6 @@ config("chromium_code") { # well. ldflags = [ "-Werror" ] } @@ -77,7 +58,7 @@ index 4f6461b..b5d2c77 100644 # In Chromium code, we define __STDC_foo_MACROS in order to get the # C99 macros on Mac and Linux. -@@ -1592,15 +1556,6 @@ config("chromium_code") { +@@ -1595,15 +1578,6 @@ config("chromium_code") { "__STDC_FORMAT_MACROS", ] @@ -93,7 +74,7 @@ index 4f6461b..b5d2c77 100644 if (is_mac) { cflags_objc = [ "-Wobjc-missing-property-synthesis" ] cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] -@@ -1998,7 +1953,8 @@ config("default_stack_frames") { +@@ -2006,7 +1980,8 @@ config("default_stack_frames") { } # Default "optimization on" config. @@ -103,7 +84,7 @@ index 4f6461b..b5d2c77 100644 if (is_win) { if (chrome_pgo_phase != 2) { # Favor size over speed, /O1 must be before the common flags. -@@ -2033,7 +1989,8 @@ config("optimize") { +@@ -2041,7 +2016,8 @@ config("optimize") { } # Turn off optimizations. @@ -113,7 +94,7 @@ index 4f6461b..b5d2c77 100644 if (is_win) { cflags = [ "/Od", # Disable optimization. -@@ -2073,7 +2030,8 @@ config("no_optimize") { +@@ -2081,7 +2057,8 @@ config("no_optimize") { # Turns up the optimization level. On Windows, this implies whole program # optimization and link-time code generation which is very expensive and should # be used sparingly. @@ -123,7 +104,7 @@ index 4f6461b..b5d2c77 100644 if (is_nacl && is_nacl_irt) { # The NaCl IRT is a special case and always wants its own config. # Various components do: -@@ -2105,7 +2063,8 @@ config("optimize_max") { +@@ -2113,7 +2090,8 @@ config("optimize_max") { # # TODO(crbug.com/621335) - rework how all of these configs are related # so that we don't need this disclaimer. @@ -133,7 +114,7 @@ index 4f6461b..b5d2c77 100644 if (is_nacl && is_nacl_irt) { # The NaCl IRT is a special case and always wants its own config. # Various components do: -@@ -2130,7 +2089,8 @@ config("optimize_speed") { +@@ -2138,7 +2116,8 @@ config("optimize_speed") { } } @@ -143,7 +124,7 @@ index 4f6461b..b5d2c77 100644 cflags = [ "-O1" ] + common_optimize_on_cflags ldflags = common_optimize_on_ldflags visibility = [ ":default_optimization" ] -@@ -2247,7 +2207,8 @@ config("win_pdbaltpath") { +@@ -2267,7 +2246,8 @@ config("win_pdbaltpath") { } # Full symbols. @@ -153,7 +134,7 @@ index 4f6461b..b5d2c77 100644 if (is_win) { if (is_clang) { cflags = [ "/Z7" ] # Debug information in the .obj files. -@@ -2355,7 +2316,8 @@ config("symbols") { +@@ -2365,7 +2345,8 @@ config("symbols") { # Minimal symbols. # This config guarantees to hold symbol for stack trace which are shown to user # when crash happens in unittests running on buildbot. @@ -163,7 +144,7 @@ index 4f6461b..b5d2c77 100644 if (is_win) { # Functions, files, and line tables only. cflags = [] -@@ -2408,7 +2370,8 @@ config("minimal_symbols") { +@@ -2418,7 +2399,8 @@ config("minimal_symbols") { # This configuration contains function names only. That is, the compiler is # told to not generate debug information and the linker then just puts function # names in the final debug information. diff --git a/network/web/chromium-browser/files/patches/chromium-88-vaapi-attribute.patch b/network/web/chromium-browser/files/patches/chromium-88-vaapi-attribute.patch deleted file mode 100644 index c524a3150e..0000000000 --- a/network/web/chromium-browser/files/patches/chromium-88-vaapi-attribute.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 4f4604877f3b666ac7a373ae443e3c3795424569 Mon Sep 17 00:00:00 2001 -From: Stephan Hartmann -Date: Fri, 6 Nov 2020 11:18:42 +0000 -Subject: [PATCH] GCC: fix attribute on function definition - -GCC does not accept attributes at the end for function definitions. -Solution is to move it before function name. Otherwise GCC fails like -this: - -../../base/compiler_specific.h:97:28: error: attributes are not allowed -on a function-definition - 97 | #define WARN_UNUSED_RESULT __attribute__((warn_unused_result)) - | ^~~~~~~~~~~~~ - ../../media/gpu/vaapi/vaapi_wrapper.h:322:36: note: in - expansion of macro 'WARN_UNUSED_RESULT' - 322 | const T* data) WARN_UNUSED_RESULT { - | ^~~~~~~~~~~~~~~~~~ ---- - media/gpu/vaapi/vaapi_wrapper.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/media/gpu/vaapi/vaapi_wrapper.h b/media/gpu/vaapi/vaapi_wrapper.h -index fd1fd82..deeda1f 100644 ---- a/media/gpu/vaapi/vaapi_wrapper.h -+++ b/media/gpu/vaapi/vaapi_wrapper.h -@@ -318,8 +318,8 @@ class MEDIA_GPU_EXPORT VaapiWrapper - // Convenient templatized version of SubmitBuffer() where |size| is deduced to - // be the size of the type of |*data|. - template -- bool SubmitBuffer(VABufferType va_buffer_type, -- const T* data) WARN_UNUSED_RESULT { -+ bool WARN_UNUSED_RESULT SubmitBuffer(VABufferType va_buffer_type, -+ const T* data) { - return SubmitBuffer(va_buffer_type, sizeof(T), data); - } - // Batch-version of SubmitBuffer(), where the lock for accessing libva is --- -2.26.2 - diff --git a/network/web/chromium-browser/files/patches/chromium-89-AXTreeSerializer-include.patch b/network/web/chromium-browser/files/patches/chromium-89-AXTreeSerializer-include.patch new file mode 100644 index 0000000000..5e8ac93843 --- /dev/null +++ b/network/web/chromium-browser/files/patches/chromium-89-AXTreeSerializer-include.patch @@ -0,0 +1,25 @@ +From c06ddc4935bf1394812c011ce5d93898ccc8a53a Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann +Date: Tue, 09 Feb 2021 19:22:57 +0000 +Subject: [PATCH] IWYU: add ctime for std::time + +Bug: None +Change-Id: I8bdae43209984242b9f5e538d74ece4409b65e3c +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2679610 +Reviewed-by: Katie Dektar +Commit-Queue: Katie Dektar +Cr-Commit-Position: refs/heads/master@{#852287} +--- + +diff --git a/ui/accessibility/ax_tree_serializer.h b/ui/accessibility/ax_tree_serializer.h +index ddbbdcd..1790e3b 100644 +--- a/ui/accessibility/ax_tree_serializer.h ++++ b/ui/accessibility/ax_tree_serializer.h +@@ -8,6 +8,7 @@ + #include + #include + ++#include + #include + #include + #include diff --git a/network/web/chromium-browser/files/patches/chromium-89-dawn-include.patch b/network/web/chromium-browser/files/patches/chromium-89-dawn-include.patch new file mode 100644 index 0000000000..b3e841cc92 --- /dev/null +++ b/network/web/chromium-browser/files/patches/chromium-89-dawn-include.patch @@ -0,0 +1,28 @@ +From 5a56bfe8d281250a1deee0d116a9fcde65b9c29a Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann +Date: Fri, 15 Jan 2021 18:37:05 +0000 +Subject: [PATCH] IWYU: add various missing includes + +std::weak_ptr and std::shared_ptr require map +*int*_t types require cstdint +--- + third_party/dawn/src/dawn_wire/client/Device.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/third_party/dawn/src/dawn_wire/client/Device.h b/third_party/dawn/src/dawn_wire/client/Device.h +index 3f16700..1082549 100644 +--- a/third_party/dawn/src/dawn_wire/client/Device.h ++++ b/third_party/dawn/src/dawn_wire/client/Device.h +@@ -22,7 +22,9 @@ + #include "dawn_wire/client/ApiObjects_autogen.h" + #include "dawn_wire/client/ObjectBase.h" + ++#include + #include ++#include + + namespace dawn_wire { namespace client { + +-- +2.26.2 + diff --git a/network/web/chromium-browser/files/patches/chromium-89-quiche-dcheck.patch b/network/web/chromium-browser/files/patches/chromium-89-quiche-dcheck.patch new file mode 100644 index 0000000000..7969a7fbe7 --- /dev/null +++ b/network/web/chromium-browser/files/patches/chromium-89-quiche-dcheck.patch @@ -0,0 +1,29 @@ +From 7cd4eab0bfca6192f14d6143410e1ae774eb1c29 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann +Date: Thu, 31 Dec 2020 11:57:22 +0000 +Subject: [PATCH] GCC: do not pass unique_ptr to DCHECK_NE, but the actual + pointer + +DCHECK_NE comparison requires CheckOpValueStr to be defined for the +type, or providing an output stream operator. A unique_ptr does not +provide any. USE DCHECK instead. +--- + net/third_party/quiche/src/quic/core/quic_path_validator.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/net/third_party/quiche/src/quic/core/quic_path_validator.cc b/net/third_party/quiche/src/quic/core/quic_path_validator.cc +index 0722216..fb2aeaf 100644 +--- a/net/third_party/quiche/src/quic/core/quic_path_validator.cc ++++ b/net/third_party/quiche/src/quic/core/quic_path_validator.cc +@@ -68,7 +68,7 @@ void QuicPathValidator::OnPathResponse(const QuicPathFrameBuffer& probing_data, + void QuicPathValidator::StartPathValidation( + std::unique_ptr context, + std::unique_ptr result_delegate) { +- DCHECK_NE(nullptr, context); ++ DCHECK(context); + QUIC_DLOG(INFO) << "Start validating path " << *context + << " via writer: " << context->WriterToUse(); + if (path_context_ != nullptr) { +-- +2.26.2 + diff --git a/network/web/chromium-browser/files/patches/chromium-89-quiche-private.patch b/network/web/chromium-browser/files/patches/chromium-89-quiche-private.patch new file mode 100644 index 0000000000..5872c37b40 --- /dev/null +++ b/network/web/chromium-browser/files/patches/chromium-89-quiche-private.patch @@ -0,0 +1,26 @@ +From 1ee06c3678a85d158eb82d4af438d1e43a4c814e Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann +Date: Sun, 6 Dec 2020 16:14:17 +0000 +Subject: [PATCH] GCC: change make_visitor visibility to public + +GCC complains that make_visitor is used in private context from +inner Iterator class. +--- + net/third_party/quiche/src/quic/core/quic_interval_set.h | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/net/third_party/quiche/src/quic/core/quic_interval_set.h b/net/third_party/quiche/src/quic/core/quic_interval_set.h +index af64e29..7ee8978 100644 +--- a/net/third_party/quiche/src/quic/core/quic_interval_set.h ++++ b/net/third_party/quiche/src/quic/core/quic_interval_set.h +@@ -1874,7 +1874,6 @@ class QUIC_NO_EXPORT QuicIntervalSet { + return absl::visit([&](auto& s) { return s.Contains(min, max); }, qiset_); + } + +- private: + template + struct overloader : A, B, C { + overloader(A a, B b, C c) : A(a), B(b), C(c) {} +-- +2.26.2 + diff --git a/network/web/chromium-browser/files/patches/chromium-89-skia-CropRect.patch b/network/web/chromium-browser/files/patches/chromium-89-skia-CropRect.patch new file mode 100644 index 0000000000..c79577d989 --- /dev/null +++ b/network/web/chromium-browser/files/patches/chromium-89-skia-CropRect.patch @@ -0,0 +1,38 @@ +diff --git a/third_party/skia/include/effects/SkImageFilters.h b/third_party/skia/include/effects/SkImageFilters.h +index 04cce0a..d06b007 100644 +--- a/third_party/skia/include/effects/SkImageFilters.h ++++ b/third_party/skia/include/effects/SkImageFilters.h +@@ -23,6 +23,9 @@ class SkColorFilter; + class SkPaint; + class SkRegion; + ++constexpr SkRect kNoCropRect = {SK_ScalarNegativeInfinity, SK_ScalarNegativeInfinity, ++ SK_ScalarInfinity, SK_ScalarInfinity}; ++ + // A set of factory functions providing useful SkImageFilter effects. For image filters that take an + // input filter, providing nullptr means it will automatically use the dynamic source image. This + // source depends on how the filter is applied, but is either the contents of a saved layer when +@@ -33,8 +36,6 @@ public: + // to those types as a crop rect for the image filter factories. It's not intended to be used + // directly. + struct CropRect { +- static constexpr SkRect kNoCropRect = {SK_ScalarNegativeInfinity, SK_ScalarNegativeInfinity, +- SK_ScalarInfinity, SK_ScalarInfinity}; + CropRect() : fCropRect(kNoCropRect) {} + // Intentionally not explicit so callers don't have to use this type but can use SkIRect or + // SkRect as desired. +diff --git a/third_party/skia/src/effects/imagefilters/SkImageFilters.cpp b/third_party/skia/src/effects/imagefilters/SkImageFilters.cpp +index 5290b00..fb97fc1 100644 +--- a/third_party/skia/src/effects/imagefilters/SkImageFilters.cpp ++++ b/third_party/skia/src/effects/imagefilters/SkImageFilters.cpp +@@ -47,10 +47,6 @@ static SkImageFilter::CropRect to_legacy_crop_rect(const SkImageFilters::CropRec + : SkImageFilter::CropRect(SkRect::MakeEmpty(), 0x0); + } + +-// Allow kNoCropRect to be referenced (for certain builds, e.g. macOS libFuzzer chromium target, +-// see crbug.com/1139725) +-constexpr SkRect SkImageFilters::CropRect::kNoCropRect; +- + void SkImageFilters::RegisterFlattenables() { + SkAlphaThresholdFilter::RegisterFlattenables(); + SkArithmeticImageFilter::RegisterFlattenables(); diff --git a/network/web/chromium-browser/files/patches/chromium-fix-char_traits.patch b/network/web/chromium-browser/files/patches/chromium-fix-char_traits.patch deleted file mode 100644 index 4cb9503a93..0000000000 --- a/network/web/chromium-browser/files/patches/chromium-fix-char_traits.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- 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; diff --git a/network/web/chromium-browser/files/rebuild-Linux-frame-button-cache-when-activation.patch b/network/web/chromium-browser/files/rebuild-Linux-frame-button-cache-when-activation.patch deleted file mode 100644 index 40764b3ba7..0000000000 --- a/network/web/chromium-browser/files/rebuild-Linux-frame-button-cache-when-activation.patch +++ /dev/null @@ -1,62 +0,0 @@ -From d10f885b9327399be9348b780967ebd6b7f2c4bc Mon Sep 17 00:00:00 2001 -From: Tom Anderson -Date: Fri, 7 Feb 2020 22:44:54 +0000 -Subject: [PATCH] Rebuild Linux frame button cache when activation state - changes - -This fixes an issue where the frame buttons would always render in an -inactive state on Linux (see repro steps in bug 1049258). - -Bug: 1049258 -R=sky -CC=pkasting - -Change-Id: Ic5af33199003e1d1cdf6cedf506e32388ea11fa9 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2044538 -Auto-Submit: Thomas Anderson -Commit-Queue: Scott Violet -Reviewed-by: Scott Violet -Cr-Commit-Position: refs/heads/master@{#739585} ---- - .../ui/views/frame/desktop_linux_browser_frame_view.cc | 6 +++--- - .../desktop_aura/desktop_window_tree_host_platform.cc | 3 +++ - 2 files changed, 6 insertions(+), 3 deletions(-) - -diff --git a/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view.cc b/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view.cc -index 954e776057f..4f579955675 100644 ---- a/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view.cc -+++ b/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view.cc -@@ -22,13 +22,13 @@ DesktopLinuxBrowserFrameView::DesktopLinuxBrowserFrameView( - : OpaqueBrowserFrameView(frame, browser_view, layout), - nav_button_provider_(std::move(nav_button_provider)) {} - --DesktopLinuxBrowserFrameView::~DesktopLinuxBrowserFrameView() {} -+DesktopLinuxBrowserFrameView::~DesktopLinuxBrowserFrameView() = default; - - void DesktopLinuxBrowserFrameView::Layout() { - // Calling MaybeUpdateCachedFrameButtonImages() from Layout() is sufficient to - // catch all cases that could update the appearance, since -- // DesktopWindowTreeHostPlatform::OnWindowStateChanged() does a layout any -- // time any properties change. -+ // DesktopWindowTreeHostPlatform::On{Window,Activation}StateChanged() does a -+ // layout any time the maximized and activation state changes, respectively. - MaybeUpdateCachedFrameButtonImages(); - OpaqueBrowserFrameView::Layout(); - } -diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc -index 9c695d8e5b1..9662f19aa90 100644 ---- a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc -+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc -@@ -677,9 +677,12 @@ void DesktopWindowTreeHostPlatform::OnCloseRequest() { - } - - void DesktopWindowTreeHostPlatform::OnActivationChanged(bool active) { -+ if (is_active_ == active) -+ return; - is_active_ = active; - aura::WindowTreeHostPlatform::OnActivationChanged(active); - desktop_native_widget_aura_->HandleActivationChanged(active); -+ ScheduleRelayout(); - } - - base::Optional diff --git a/network/web/chromium-browser/files/remove-verbose-logging-in-local-unique-font-matching.patch b/network/web/chromium-browser/files/remove-verbose-logging-in-local-unique-font-matching.patch deleted file mode 100644 index a882861810..0000000000 --- a/network/web/chromium-browser/files/remove-verbose-logging-in-local-unique-font-matching.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 8500a125e9fba8bb84d185542155747ee7157ff8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Dominik=20R=C3=B6ttsches?= -Date: Tue, 28 Jan 2020 13:48:07 +0000 -Subject: [PATCH] Remove verbose logging in local unique font matching on Linux -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Fixed: 1005508 -Change-Id: I97f5340c6d1881798ba51effc4a9e5c07de12e52 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2023552 -Commit-Queue: Dominik Röttsches -Commit-Queue: Kentaro Hara -Auto-Submit: Dominik Röttsches -Reviewed-by: Kentaro Hara -Cr-Commit-Position: refs/heads/master@{#735854} ---- - content/child/child_process_sandbox_support_impl_linux.cc | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/content/child/child_process_sandbox_support_impl_linux.cc b/content/child/child_process_sandbox_support_impl_linux.cc -index 693ead7f7a5..c97c8fa197b 100644 ---- a/content/child/child_process_sandbox_support_impl_linux.cc -+++ b/content/child/child_process_sandbox_support_impl_linux.cc -@@ -76,8 +76,6 @@ bool WebSandboxSupportLinux::MatchFontByPostscriptNameOrFullFontName( - std::string family_name; - if (!font_loader_->MatchFontByPostscriptNameOrFullFontName(font_unique_name, - &font_identity)) { -- LOG(ERROR) << "FontService unique font name matching request did not " -- "receive a response."; - return false; - } - diff --git a/network/web/chromium-browser/files/rename-Relayout-in-DesktopWindowTreeHostPlatform.patch b/network/web/chromium-browser/files/rename-Relayout-in-DesktopWindowTreeHostPlatform.patch deleted file mode 100644 index eda3cbdbaa..0000000000 --- a/network/web/chromium-browser/files/rename-Relayout-in-DesktopWindowTreeHostPlatform.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 5a2cd2409c7d65c019ad9f4595a4e85315857ac4 Mon Sep 17 00:00:00 2001 -From: Tom Anderson -Date: Mon, 3 Feb 2020 23:18:46 +0000 -Subject: [PATCH] Rename Relayout() in DesktopWindowTreeHostPlatform to - ScheduleRelayout() - -R=sky - -Bug: None -Change-Id: I680cafd25935e59a280e3b2baac754d3d5f13a35 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2036553 -Auto-Submit: Thomas Anderson -Reviewed-by: Scott Violet -Commit-Queue: Thomas Anderson -Cr-Commit-Position: refs/heads/master@{#737974} ---- - .../desktop_aura/desktop_window_tree_host_platform.cc | 6 +++--- - .../widget/desktop_aura/desktop_window_tree_host_platform.h | 2 +- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc -index 6c00d49eb3f..9c695d8e5b1 100644 ---- a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc -+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc -@@ -556,7 +556,7 @@ void DesktopWindowTreeHostPlatform::SetFullscreen(bool fullscreen) { - DCHECK_EQ(fullscreen, IsFullscreen()); - - if (IsFullscreen() == fullscreen) -- Relayout(); -+ ScheduleRelayout(); - // Else: the widget will be relaid out either when the window bounds change - // or when |platform_window|'s fullscreen state changes. - } -@@ -669,7 +669,7 @@ void DesktopWindowTreeHostPlatform::OnWindowStateChanged( - // Now that we have different window properties, we may need to relayout the - // window. (The windows code doesn't need this because their window change is - // synchronous.) -- Relayout(); -+ ScheduleRelayout(); - } - - void DesktopWindowTreeHostPlatform::OnCloseRequest() { -@@ -712,7 +712,7 @@ gfx::Rect DesktopWindowTreeHostPlatform::ToPixelRect( - return gfx::ToEnclosingRect(rect_in_pixels); - } - --void DesktopWindowTreeHostPlatform::Relayout() { -+void DesktopWindowTreeHostPlatform::ScheduleRelayout() { - Widget* widget = native_widget_delegate_->AsWidget(); - NonClientView* non_client_view = widget->non_client_view(); - // non_client_view may be NULL, especially during creation. -diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h -index 89beb8d2245..75a401e02a7 100644 ---- a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h -+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h -@@ -129,7 +129,7 @@ class VIEWS_EXPORT DesktopWindowTreeHostPlatform - gfx::Rect ToPixelRect(const gfx::Rect& rect_in_dip) const; - - private: -- void Relayout(); -+ void ScheduleRelayout(); - - Widget* GetWidget(); - const Widget* GetWidget() const; diff --git a/network/web/chromium-browser/files/subpixel-anti-aliasing-in-FreeType-2.8.1.patch b/network/web/chromium-browser/files/subpixel-anti-aliasing-in-FreeType-2.8.1.patch deleted file mode 100644 index d7109f9932..0000000000 --- a/network/web/chromium-browser/files/subpixel-anti-aliasing-in-FreeType-2.8.1.patch +++ /dev/null @@ -1,100 +0,0 @@ -From f25787b72c20e97cdeb74e037dc1ff56a88b45c6 Mon Sep 17 00:00:00 2001 -From: Ben Wagner -Date: Tue, 1 Dec 2020 20:22:00 -0500 -Subject: [PATCH] Subpixel anti-aliasing in FreeType 2.8.1+ - -FreeType 2.8.1 and later always provide some form of subpixel -anti-aliasing. - -Bug: skia:10950,skia:6663 -Change-Id: I666cc942e73b73073cdabf900c25faa10d9aaf0f -Reviewed-on: https://skia-review.googlesource.com/c/skia/+/339861 -Reviewed-by: Herb Derby -Commit-Queue: Ben Wagner ---- - src/ports/SkFontHost_FreeType.cpp | 33 ++++++++++++++++++++----------- - 1 file changed, 22 insertions(+), 11 deletions(-) - -diff --git a/src/ports/SkFontHost_FreeType.cpp b/src/ports/SkFontHost_FreeType.cpp -index 990eff4f5e..c0aeb792da 100644 ---- a/third_party/skia/src/ports/SkFontHost_FreeType.cpp -+++ b/third_party/skia/src/ports/SkFontHost_FreeType.cpp -@@ -32,6 +32,7 @@ - #include "src/utils/SkMatrix22.h" - - #include -+#include - - #include - #include FT_ADVANCES_H -@@ -147,13 +148,16 @@ public: - // *reinterpret_cast(&procPtr) = dlsym(self, "proc"); - // because clang has not implemented DR573. See http://clang.llvm.org/cxx_dr_status.html . - -- FT_Int major, minor, patch; -- FT_Library_Version(fLibrary, &major, &minor, &patch); -+ using Version = std::tuple; -+ Version version; -+ FT_Library_Version(fLibrary, &std::get<0>(version), -+ &std::get<1>(version), -+ &std::get<2>(version)); - - #if SK_FREETYPE_MINIMUM_RUNTIME_VERSION >= 0x02070100 - fGetVarDesignCoordinates = FT_Get_Var_Design_Coordinates; - #elif SK_FREETYPE_MINIMUM_RUNTIME_VERSION & SK_FREETYPE_DLOPEN -- if (major > 2 || ((major == 2 && minor > 7) || (major == 2 && minor == 7 && patch >= 0))) { -+ if (Version(2,7,0) <= version) { - //The FreeType library is already loaded, so symbols are available in process. - void* self = dlopen(nullptr, RTLD_LAZY); - if (self) { -@@ -166,7 +170,7 @@ public: - #if SK_FREETYPE_MINIMUM_RUNTIME_VERSION >= 0x02070200 - FT_Set_Default_Properties(fLibrary); - #elif SK_FREETYPE_MINIMUM_RUNTIME_VERSION & SK_FREETYPE_DLOPEN -- if (major > 2 || ((major == 2 && minor > 7) || (major == 2 && minor == 7 && patch >= 1))) { -+ if (Version(2,7,1) <= version) { - //The FreeType library is already loaded, so symbols are available in process. - void* self = dlopen(nullptr, RTLD_LAZY); - if (self) { -@@ -185,7 +189,7 @@ public: - #if SK_FREETYPE_MINIMUM_RUNTIME_VERSION >= 0x02080000 - fLightHintingIsYOnly = true; - #else -- if (major > 2 || ((major == 2 && minor > 8) || (major == 2 && minor == 8 && patch >= 0))) { -+ if (Version(2,8,0) <= version) { - fLightHintingIsYOnly = true; - } - #endif -@@ -194,7 +198,7 @@ public: - #if SK_FREETYPE_MINIMUM_RUNTIME_VERSION >= 0x02080100 - fGetVarAxisFlags = FT_Get_Var_Axis_Flags; - #elif SK_FREETYPE_MINIMUM_RUNTIME_VERSION & SK_FREETYPE_DLOPEN -- if (major > 2 || ((major == 2 && minor > 7) || (major == 2 && minor == 7 && patch >= 0))) { -+ if (Version(2,7,0) <= version) { - //The FreeType library is already loaded, so symbols are available in process. - void* self = dlopen(nullptr, RTLD_LAZY); - if (self) { -@@ -204,11 +208,18 @@ public: - } - #endif - -- // Setup LCD filtering. This reduces color fringes for LCD smoothed glyphs. -- // The default has changed over time, so this doesn't mean the same thing to all users. -- if (FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT) == 0) { -- fIsLCDSupported = true; -- fLCDExtra = 2; //Using a filter adds one full pixel to each side. -+ fIsLCDSupported = -+ // Subpixel anti-aliasing may be unfiltered until the LCD filter is set. -+ // Newer versions may still need this, so this test with side effects must come first. -+ // The default has changed over time, so this doesn't mean the same thing to all users. -+ (FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT) == 0) || -+ -+ // In 2.8.1 and later FreeType always provides some form of subpixel anti-aliasing. -+ ((SK_FREETYPE_MINIMUM_RUNTIME_VERSION) >= 0x02080100) || -+ (Version(2,8,1) <= version); -+ -+ if (fIsLCDSupported) { -+ fLCDExtra = 2; // Using a filter may require up to one full pixel to each side. - } - } - ~FreeTypeLibrary() { diff --git a/network/web/chromium-browser/files/sync-enable-USSPasswords-by-default.patch b/network/web/chromium-browser/files/sync-enable-USSPasswords-by-default.patch deleted file mode 100644 index 7f3a7005a6..0000000000 --- a/network/web/chromium-browser/files/sync-enable-USSPasswords-by-default.patch +++ /dev/null @@ -1,28 +0,0 @@ -From eb997db5527c01fd12c321a6abc52b7cff882e50 Mon Sep 17 00:00:00 2001 -From: Mohamed Amir Yosef -Date: Thu, 9 Jan 2020 21:22:19 +0000 -Subject: [PATCH] [Sync] Enable USSPasswords by default - -Change-Id: I021cd952d7a2917a8fb7203cabdac612251193df -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1963804 -Auto-Submit: Mohamed Amir Yosef -Reviewed-by: Mikel Astiz -Commit-Queue: Mohamed Amir Yosef -Cr-Commit-Position: refs/heads/master@{#729902} ---- - components/sync/driver/sync_driver_switches.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/components/sync/driver/sync_driver_switches.cc b/components/sync/driver/sync_driver_switches.cc -index ddff8b91419..999384aa68a 100644 ---- a/components/sync/driver/sync_driver_switches.cc -+++ b/components/sync/driver/sync_driver_switches.cc -@@ -55,7 +55,7 @@ const base::Feature kStopSyncInPausedState{"StopSyncInPausedState", - - // Enable USS implementation of Passwords datatype. - const base::Feature kSyncUSSPasswords{"SyncUSSPasswords", -- base::FEATURE_DISABLED_BY_DEFAULT}; -+ base::FEATURE_ENABLED_BY_DEFAULT}; - - // Enable USS implementation of Nigori datatype. - const base::Feature kSyncUSSNigori{"SyncUSSNigori", diff --git a/network/web/chromium-browser/files/use-oauth2-client-switches-as-default.patch b/network/web/chromium-browser/files/use-oauth2-client-switches-as-default.patch new file mode 100644 index 0000000000..9d9c57bfb0 --- /dev/null +++ b/network/web/chromium-browser/files/use-oauth2-client-switches-as-default.patch @@ -0,0 +1,17 @@ +diff -upr chromium-89.0.4389.58.orig/google_apis/google_api_keys.cc chromium-89.0.4389.58/google_apis/google_api_keys.cc +--- chromium-89.0.4389.58.orig/google_apis/google_api_keys.cc 2021-02-24 22:37:18.494007649 +0000 ++++ chromium-89.0.4389.58/google_apis/google_api_keys.cc 2021-02-24 22:35:00.865777600 +0000 +@@ -154,11 +154,11 @@ class APIKeyCache { + + std::string default_client_id = CalculateKeyValue( + GOOGLE_DEFAULT_CLIENT_ID, +- STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_ID), nullptr, ++ STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_ID), ::switches::kOAuth2ClientID, + std::string(), environment.get(), command_line, gaia_config); + std::string default_client_secret = CalculateKeyValue( + GOOGLE_DEFAULT_CLIENT_SECRET, +- STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_SECRET), nullptr, ++ STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_SECRET), ::switches::kOAuth2ClientSecret, + std::string(), environment.get(), command_line, gaia_config); + + // We currently only allow overriding the baked-in values for the diff --git a/network/web/chromium-browser/files/vaapi-build-fix.patch b/network/web/chromium-browser/files/vaapi-build-fix.patch deleted file mode 100644 index 2b7851acec..0000000000 --- a/network/web/chromium-browser/files/vaapi-build-fix.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 5b2ff215473e0526b5b24aeff4ad90d369b21c75 Mon Sep 17 00:00:00 2001 -From: Julien Isorce -Date: Wed, 05 Feb 2020 17:59:59 +0000 -Subject: [PATCH] Fix vaapi with GLX - -The signature of ui's gl::GLImageGLX has changed a little bit -since "mplement GpuMemoryBuffers for EGL and GLX": - https://chromium-review.googlesource.com/c/chromium/src/+/1984712 - -Bug: 1031269 -Test: build with use_vaapi=true and run with --use-gl=desktop, see -Change-Id: I80b07294b9abdfa8233aaf79f7d9ec4c58117090 -https: //chromium.googlesource.com/chromium/src.git/+/refs/heads/master/docs/gpu/vaapi.md#vaapi-on-linux -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2036494 -Reviewed-by: Thomas Anderson -Reviewed-by: Miguel Casas -Commit-Queue: Julien Isorce -Cr-Commit-Position: refs/heads/master@{#738595} ---- - -diff --git a/media/gpu/vaapi/vaapi_picture_tfp.cc b/media/gpu/vaapi/vaapi_picture_tfp.cc -index 227c31b..b42620d 100644 ---- a/media/gpu/vaapi/vaapi_picture_tfp.cc -+++ b/media/gpu/vaapi/vaapi_picture_tfp.cc -@@ -57,7 +57,7 @@ - if (make_context_current_cb_ && !make_context_current_cb_.Run()) - return false; - -- glx_image_ = new gl::GLImageGLX(size_, GL_RGB); -+ glx_image_ = new gl::GLImageGLX(size_, gfx::BufferFormat::BGRX_8888); - if (!glx_image_->Initialize(x_pixmap_)) { - // x_pixmap_ will be freed in the destructor. - DLOG(ERROR) << "Failed creating a GLX Pixmap for TFP"; ---- a/media/mojo/services/gpu_mojo_media_client.cc 2020-04-02 21:11:34.000000000 -0700 -+++ b/media/mojo/services/gpu_mojo_media_client.cc 2020-04-09 00:44:58.871366432 -0700 -@@ -158,6 +158,7 @@ - *d3d11_supported_configs_; - - #elif BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION) -+#if defined(OS_CHROMEOS) - if (base::FeatureList::IsEnabled(kChromeosVideoDecoder)) { - if (!cros_supported_configs_) { - cros_supported_configs_ = -@@ -167,6 +168,7 @@ - *cros_supported_configs_; - return supported_config_map; - } -+#endif //defined(OS_CHROMEOS) - #endif - - auto& default_configs = diff --git a/network/web/chromium-browser/files/vaapi-fix-wayland-init.patch b/network/web/chromium-browser/files/vaapi-fix-wayland-init.patch deleted file mode 100644 index a07814969f..0000000000 --- a/network/web/chromium-browser/files/vaapi-fix-wayland-init.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 4a04af6bbd5b1a55e2e1a7c22f13f8571c2dd7ed Mon Sep 17 00:00:00 2001 -From: Julien Isorce -Date: Fri, 24 Jan 2020 00:30:33 +0000 -Subject: [PATCH] Reland "Call PreSandboxStartup after GL initialization in GpuInit" - -This is a reland of d17c53b341adcfc9e2626162536a08c9f3e24017 - -Original change's description: -> Call PreSandboxStartup after GL initialization in GpuInit -> -> Fixes "vaInitialize failed: unknown libva error" -> on Wayland with LIBVA_DRIVER_NAME=i965 -> -> VaapiWrapper relies on the GL implementation to decide -> which display to use. If the GL implementation is none, -> then VaapiWrapper is likely to do the wrong guess resulting -> in the above error. -> -> Bug: 1041229 -> Change-Id: I1255a032a5e14b3aaffe3026a886de7e6d9ff0d7 -> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2011640 -> Reviewed-by: Maggie Chen -> Reviewed-by: Kenneth Russell -> Commit-Queue: Julien Isorce -> Cr-Commit-Position: refs/heads/master@{#733847} - -Bug: 1041229 -Change-Id: I8e268596a1e2a1b3da7d7e75b8943accc85dd2d7 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2013806 -Reviewed-by: Alexandre Courbot -Reviewed-by: Maggie Chen -Reviewed-by: Kenneth Russell -Commit-Queue: Julien Isorce -Cr-Commit-Position: refs/heads/master@{#734746} ---- - -diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc -index 04883fc..4e63f7a 100644 ---- a/gpu/ipc/service/gpu_init.cc -+++ b/gpu/ipc/service/gpu_init.cc -@@ -221,10 +221,16 @@ - delayed_watchdog_enable = true; - #endif - -+#if defined(OS_LINUX) - // PreSandbox is mainly for resource handling and not related to the GPU - // driver, it doesn't need the GPU watchdog. The loadLibrary may take long - // time that killing and restarting the GPU process will not help. -- sandbox_helper_->PreSandboxStartup(); -+ if (gpu_preferences_.gpu_sandbox_start_early) { -+ // The sandbox will be started earlier than usual (i.e. before GL) so -+ // execute the pre-sandbox steps now. -+ sandbox_helper_->PreSandboxStartup(); -+ } -+#endif - - // Start the GPU watchdog only after anything that is expected to be time - // consuming has completed, otherwise the process is liable to be aborted. -@@ -320,6 +326,23 @@ - } - } - -+ // The ContentSandboxHelper is currently the only one implementation of -+ // gpu::GpuSandboxHelper and it has no dependency. Except on Linux where -+ // VaapiWrapper checks the GL implementation to determine which display -+ // to use. So call PreSandboxStartup after GL initialization. But make -+ // sure the watchdog is paused as loadLibrary may take a long time and -+ // restarting the GPU process will not help. -+ if (!attempted_startsandbox) { -+ if (watchdog_thread_) -+ watchdog_thread_->PauseWatchdog(); -+ -+ // The sandbox is not started yet. -+ sandbox_helper_->PreSandboxStartup(); -+ -+ if (watchdog_thread_) -+ watchdog_thread_->ResumeWatchdog(); -+ } -+ - bool gl_disabled = gl::GetGLImplementation() == gl::kGLImplementationDisabled; - - // Compute passthrough decoder status before ComputeGpuFeatureInfo below. diff --git a/network/web/chromium-browser/files/vaapi-fix.patch b/network/web/chromium-browser/files/vaapi-fix.patch deleted file mode 100644 index b5372d1a25..0000000000 --- a/network/web/chromium-browser/files/vaapi-fix.patch +++ /dev/null @@ -1,74 +0,0 @@ ---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc -+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc -@@ -641,6 +641,7 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers( - // |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's - // internal decoded frame. - 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::AssignPictureBuffers( - PictureBuffer buffer = buffers[i]; - buffer.set_size(requested_pic_size_); - std::unique_ptr picture = vaapi_picture_factory_->Create( -- (buffer_allocation_mode_ == BufferAllocationMode::kNone) -+ ((buffer_allocation_mode_ == BufferAllocationMode::kNone) || -+ (buffer_allocation_mode_ == BufferAllocationMode::kWrapVdpau)) - ? vaapi_wrapper_ - : vpp_vaapi_wrapper_, - make_context_current_cb_, bind_image_cb_, buffer); -@@ -1093,6 +1095,12 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() { - - VaapiVideoDecodeAccelerator::BufferAllocationMode - VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() { -+ // NVIDIA blobs use VDPAU -+ if (VaapiWrapper::GetImplementationType() == VAImplementation::kNVIDIAVDPAU) { -+ 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) -@@ -1105,7 +1113,7 @@ VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() { - // 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 VaapiVideoDecodeAccelerator - // 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 -@@ -131,6 +131,9 @@ media::VAImplementation VendorStringToImplementationType( - } else if (base::StartsWith(va_vendor_string, "Intel iHD driver", - base::CompareCase::SENSITIVE)) { - return media::VAImplementation::kIntelIHD; -+ } else if (base::StartsWith(va_vendor_string, "Splitted-Desktop Systems VDPAU", -+ base::CompareCase::SENSITIVE)) { -+ return media::VAImplementation::kNVIDIAVDPAU; - } - return media::VAImplementation::kOther; - } ---- a/media/gpu/vaapi/vaapi_wrapper.h -+++ b/media/gpu/vaapi/vaapi_wrapper.h -@@ -79,6 +79,7 @@ enum class VAImplementation { - kIntelIHD, - kOther, - kInvalid, -+ kNVIDIAVDPAU, - }; - - // This class handles VA-API calls and ensures proper locking of VA-API calls diff --git a/network/web/chromium-browser/files/vdpau-support.patch b/network/web/chromium-browser/files/vdpau-support.patch deleted file mode 100644 index b5372d1a25..0000000000 --- a/network/web/chromium-browser/files/vdpau-support.patch +++ /dev/null @@ -1,74 +0,0 @@ ---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc -+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc -@@ -641,6 +641,7 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers( - // |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's - // internal decoded frame. - 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::AssignPictureBuffers( - PictureBuffer buffer = buffers[i]; - buffer.set_size(requested_pic_size_); - std::unique_ptr picture = vaapi_picture_factory_->Create( -- (buffer_allocation_mode_ == BufferAllocationMode::kNone) -+ ((buffer_allocation_mode_ == BufferAllocationMode::kNone) || -+ (buffer_allocation_mode_ == BufferAllocationMode::kWrapVdpau)) - ? vaapi_wrapper_ - : vpp_vaapi_wrapper_, - make_context_current_cb_, bind_image_cb_, buffer); -@@ -1093,6 +1095,12 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() { - - VaapiVideoDecodeAccelerator::BufferAllocationMode - VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() { -+ // NVIDIA blobs use VDPAU -+ if (VaapiWrapper::GetImplementationType() == VAImplementation::kNVIDIAVDPAU) { -+ 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) -@@ -1105,7 +1113,7 @@ VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() { - // 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 VaapiVideoDecodeAccelerator - // 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 -@@ -131,6 +131,9 @@ media::VAImplementation VendorStringToImplementationType( - } else if (base::StartsWith(va_vendor_string, "Intel iHD driver", - base::CompareCase::SENSITIVE)) { - return media::VAImplementation::kIntelIHD; -+ } else if (base::StartsWith(va_vendor_string, "Splitted-Desktop Systems VDPAU", -+ base::CompareCase::SENSITIVE)) { -+ return media::VAImplementation::kNVIDIAVDPAU; - } - return media::VAImplementation::kOther; - } ---- a/media/gpu/vaapi/vaapi_wrapper.h -+++ b/media/gpu/vaapi/vaapi_wrapper.h -@@ -79,6 +79,7 @@ enum class VAImplementation { - kIntelIHD, - kOther, - kInvalid, -+ kNVIDIAVDPAU, - }; - - // This class handles VA-API calls and ensures proper locking of VA-API calls diff --git a/network/web/chromium-browser/files/wayland-egl.patch b/network/web/chromium-browser/files/wayland-egl.patch index 34e274e6c3..58a079862f 100644 --- a/network/web/chromium-browser/files/wayland-egl.patch +++ b/network/web/chromium-browser/files/wayland-egl.patch @@ -1,39 +1,3 @@ ---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc 2020-10-07 09:38:47.000000000 -0700 -+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc 2020-10-08 14:09:34.550174093 -0700 -@@ -698,7 +698,6 @@ - // The X11/ANGLE implementation can use |vaapi_wrapper_| to copy from an - // internal libva buffer into an X Pixmap without having to use a processing - // wrapper. --#if !defined(USE_X11) - // If we aren't in BufferAllocationMode::kNone, we have to allocate a - // |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's - // internal decoded frame. -@@ -708,6 +707,7 @@ - VaapiWrapper::kVideoProcess, VAProfileNone, - base::Bind(&ReportVaapiErrorToUMA, - "Media.VaapiVideoDecodeAccelerator.Vpp.VAAPIError")); -+#if !defined(USE_X11) - RETURN_AND_NOTIFY_ON_FAILURE(vpp_vaapi_wrapper_, - "Failed to initialize VppVaapiWrapper", - PLATFORM_FAILURE, ); -@@ -715,11 +715,15 @@ - RETURN_AND_NOTIFY_ON_FAILURE( - vpp_vaapi_wrapper_->CreateContext(gfx::Size()), - "Failed to create Context", PLATFORM_FAILURE, ); -+#else -+ if (vpp_vaapi_wrapper_) -+ vpp_vaapi_wrapper_->CreateContext(gfx::Size()); -+#endif // !defined(USE_X11) - } -- vaapi_wrapper_for_picture = vpp_vaapi_wrapper_; -+ vaapi_wrapper_for_picture = (vpp_vaapi_wrapper_)? -+ vpp_vaapi_wrapper_:vaapi_wrapper_for_picture; - } - --#endif // !defined(USE_X11) - - for (size_t i = 0; i < buffers.size(); ++i) { - // TODO(b/139460315): Create with buffers[i] once the AMD driver issue is --- a/ui/gl/gl_image_native_pixmap.cc 2020-05-18 11:40:06.000000000 -0700 +++ b/ui/gl/gl_image_native_pixmap.cc 2020-05-22 02:07:16.007770442 -0700 @@ -288,6 +288,8 @@ diff --git a/network/web/chromium-browser/files/x11-ozone-fix-two-edge-cases.patch b/network/web/chromium-browser/files/x11-ozone-fix-two-edge-cases.patch new file mode 100644 index 0000000000..9c4c4755ae --- /dev/null +++ b/network/web/chromium-browser/files/x11-ozone-fix-two-edge-cases.patch @@ -0,0 +1,135 @@ +From 5e3a738b1204941aab9f15c0eb3d06e20fefd96e Mon Sep 17 00:00:00 2001 +From: Scott Violet +Date: Mon, 8 Mar 2021 21:07:39 +0000 +Subject: [PATCH] x11/ozone: fix two edge cases + +WindowTreeHost::OnHostMovedInPixels() may trigger a nested message +loop (tab dragging), which when the stack unravels means this may +be deleted. This adds an early out if this happens. + +X11WholeScreenMoveLoop has a similar issue, in so far as notifying +the delegate may delete this. + +BUG=1185482 +TEST=WindowTreeHostPlatform.DeleteHostFromOnHostMovedInPixels + +Change-Id: Ieca1c90b3e4358da50b332abe2941fdbb50c5c25 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2743555 +Reviewed-by: Thomas Anderson +Commit-Queue: Scott Violet +Cr-Commit-Position: refs/heads/master@{#860852} +--- + ui/aura/window_tree_host_platform.cc | 10 ++++- + ui/aura/window_tree_host_platform_unittest.cc | 40 ++++++++++++++++++- + ui/base/x/x11_whole_screen_move_loop.cc | 4 ++ + 3 files changed, 51 insertions(+), 3 deletions(-) + +diff --git a/ui/aura/window_tree_host_platform.cc b/ui/aura/window_tree_host_platform.cc +index ce8395fe07..7589542026 100644 +--- a/ui/aura/window_tree_host_platform.cc ++++ b/ui/aura/window_tree_host_platform.cc +@@ -214,13 +214,21 @@ void WindowTreeHostPlatform::OnBoundsChanged(const gfx::Rect& new_bounds) { + float current_scale = compositor()->device_scale_factor(); + float new_scale = ui::GetScaleFactorForNativeView(window()); + gfx::Rect old_bounds = bounds_in_pixels_; ++ auto weak_ref = GetWeakPtr(); + bounds_in_pixels_ = new_bounds; +- if (bounds_in_pixels_.origin() != old_bounds.origin()) ++ if (bounds_in_pixels_.origin() != old_bounds.origin()) { + OnHostMovedInPixels(bounds_in_pixels_.origin()); ++ // Changing the bounds may destroy this. ++ if (!weak_ref) ++ return; ++ } + if (bounds_in_pixels_.size() != old_bounds.size() || + current_scale != new_scale) { + pending_size_ = gfx::Size(); + OnHostResizedInPixels(bounds_in_pixels_.size()); ++ // Changing the size may destroy this. ++ if (!weak_ref) ++ return; + } + DCHECK_GT(on_bounds_changed_recursion_depth_, 0); + if (--on_bounds_changed_recursion_depth_ == 0) { +diff --git a/ui/aura/window_tree_host_platform_unittest.cc b/ui/aura/window_tree_host_platform_unittest.cc +index eda14e2f0c..4de039c88a 100644 +--- a/ui/aura/window_tree_host_platform_unittest.cc ++++ b/ui/aura/window_tree_host_platform_unittest.cc +@@ -34,7 +34,7 @@ class TestWindowTreeHost : public WindowTreeHostPlatform { + // OnHostWill/DidProcessBoundsChange. Additionally, this triggers a bounds + // change from within OnHostResized(). Such a scenario happens in production + // code. +-class TestWindowTreeHostObserver : public aura::WindowTreeHostObserver { ++class TestWindowTreeHostObserver : public WindowTreeHostObserver { + public: + TestWindowTreeHostObserver(WindowTreeHostPlatform* host, + ui::PlatformWindow* platform_window) +@@ -51,7 +51,7 @@ class TestWindowTreeHostObserver : public aura::WindowTreeHostObserver { + return on_host_will_process_bounds_change_count_; + } + +- // aura::WindowTreeHostObserver: ++ // WindowTreeHostObserver: + void OnHostResized(WindowTreeHost* host) override { + if (!should_change_bounds_in_on_resized_) + return; +@@ -92,5 +92,41 @@ TEST_F(WindowTreeHostPlatformTest, HostWillProcessBoundsChangeRecursion) { + EXPECT_EQ(1, observer.on_host_will_process_bounds_change_count()); + } + ++// Deletes WindowTreeHostPlatform from OnHostMovedInPixels(). ++class DeleteHostWindowTreeHostObserver : public WindowTreeHostObserver { ++ public: ++ explicit DeleteHostWindowTreeHostObserver( ++ std::unique_ptr host) ++ : host_(std::move(host)) { ++ host_->AddObserver(this); ++ } ++ ~DeleteHostWindowTreeHostObserver() override = default; ++ ++ TestWindowTreeHost* host() { return host_.get(); } ++ ++ // WindowTreeHostObserver: ++ void OnHostMovedInPixels(WindowTreeHost* host, ++ const gfx::Point& new_origin_in_pixels) override { ++ host_->RemoveObserver(this); ++ host_.reset(); ++ } ++ ++ private: ++ std::unique_ptr host_; ++ ++ DISALLOW_COPY_AND_ASSIGN(DeleteHostWindowTreeHostObserver); ++}; ++ ++// Verifies WindowTreeHostPlatform can be safely deleted when calling ++// OnHostMovedInPixels(). ++// Regression test for https://crbug.com/1185482 ++TEST_F(WindowTreeHostPlatformTest, DeleteHostFromOnHostMovedInPixels) { ++ std::unique_ptr host = ++ std::make_unique(); ++ DeleteHostWindowTreeHostObserver observer(std::move(host)); ++ observer.host()->SetBoundsInPixels(gfx::Rect(1, 2, 3, 4)); ++ EXPECT_EQ(nullptr, observer.host()); ++} ++ + } // namespace + } // namespace aura +diff --git a/ui/base/x/x11_whole_screen_move_loop.cc b/ui/base/x/x11_whole_screen_move_loop.cc +index 5ed215db66..db678799db 100644 +--- a/ui/base/x/x11_whole_screen_move_loop.cc ++++ b/ui/base/x/x11_whole_screen_move_loop.cc +@@ -78,9 +78,13 @@ X11WholeScreenMoveLoop::~X11WholeScreenMoveLoop() { + void X11WholeScreenMoveLoop::DispatchMouseMovement() { + if (!last_motion_in_screen_) + return; ++ auto weak_ref = weak_factory_.GetWeakPtr(); + delegate_->OnMouseMovement(last_motion_in_screen_->root_location(), + last_motion_in_screen_->flags(), + last_motion_in_screen_->time_stamp()); ++ // The delegate may delete this during dispatch. ++ if (!weak_ref) ++ return; + last_motion_in_screen_.reset(); + } + diff --git a/network/web/chromium-browser/pspec.xml b/network/web/chromium-browser/pspec.xml index 56590818b2..3fa396d6dd 100644 --- a/network/web/chromium-browser/pspec.xml +++ b/network/web/chromium-browser/pspec.xml @@ -13,7 +13,7 @@ app:gui A WebKit powered web browser Chromium-browser is an open-source web browser, powered by WebKit. - http://gsdview.appspot.com/chromium-browser-official/chromium-87.0.4280.142.tar.xz + http://gsdview.appspot.com/chromium-browser-official/chromium-89.0.4389.90.tar.xz alsa-lib-devel at-spi2-atk-devel @@ -99,19 +99,20 @@ pipewire-0.2-devel - subpixel-anti-aliasing-in-FreeType-2.8.1.patch + add-dependency-on-opus-in-webcodecs.patch + use-oauth2-client-switches-as-default.patch + x11-ozone-fix-two-edge-cases.patch + chromium-89-EnumTable-crash.patch wayland-egl.patch patches/chromium-78-protobuf-RepeatedPtrField-export.patch - patches/chromium-79-gcc-protobuf-alignas.patch - patches/chromium-84-blink-disable-clang-format.patch - patches/chromium-87-CursorFactory-include.patch - patches/chromium-87-ServiceWorkerContainerHost-crash.patch - patches/chromium-87-compiler.patch - patches/chromium-87-openscreen-include.patch - patches/chromium-88-vaapi-attribute.patch - patches/chromium-fix-char_traits.patch + patches/chromium-88-compiler.patch + patches/chromium-89-AXTreeSerializer-include.patch + patches/chromium-89-dawn-include.patch + patches/chromium-89-quiche-dcheck.patch + patches/chromium-89-quiche-private.patch + patches/chromium-89-skia-CropRect.patch @@ -191,6 +192,13 @@ + + 2021-03-18 + 89.0.4389.90 + Version Bump + İdris Kalp + idriskalp@gmail.com + 2021-01-19 87.0.4280.142