Merge pull request #9187 from IdrisKalp/master

chromium-browser 89.0.4389.90
This commit is contained in:
Idris Kalp
2021-03-18 01:24:17 +03:00
committed by GitHub
35 changed files with 448 additions and 1376 deletions
+2 -1
View File
@@ -30,11 +30,12 @@ def setup():
shelltools.system("sed -i -e 's/\<xmlMalloc\>/malloc/' -e 's/\<xmlFree\>/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 \
@@ -0,0 +1,43 @@
From b5b80df7dafba8cafa4c6c0ba2153dfda467dfc9 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
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 <dalecurtis@chromium.org>
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
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",
@@ -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 <typename E>
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<int32_t>(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<std::size_t>(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<const GenericEnumTableEntry*>(data_.begin()),
- data_.size(), static_cast<int32_t>(value));
+ &data_[0], data_.size(), static_cast<int32_t>(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<E> GetEnum(base::StringPiece str) const {
auto* entry = GenericEnumTableEntry::FindByString(
- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()),
- data_.size(), str);
+ &data_[0], data_.size(), str);
return entry ? static_cast<E>(entry->value) : base::Optional<E>();
}
@@ -358,7 +355,7 @@ class EnumTable {
// Align the data on a cache line boundary.
alignas(64)
#endif
- std::initializer_list<Entry> data_;
+ const std::vector<Entry> data_;
bool is_sorted_;
constexpr EnumTable(std::initializer_list<Entry> 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()))
@@ -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;
@@ -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",
]
}
@@ -1,35 +0,0 @@
From 8273f4d3130e06fd8b6bef87b07c936304b971d9 Mon Sep 17 00:00:00 2001
From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
Date: Tue, 10 Dec 2019 20:59:57 +0000
Subject: [PATCH] [cros search service]: Include <cmath> for std::pow()
IWYU. Follow up to commit 2b2ea3c09b ("[cros search service] Move shared
string matching functions to //chrome"), which broke the libstdc++ build:
../../chrome/common/string_matching/fuzzy_tokenized_string_match.cc:199:14: error: no member named 'pow' in namespace 'std'
std::pow(partial_match_penalty_rate, long_start - current - 1);
~~~~~^
Bug: 957519
Change-Id: I66f61cb4f93cfa0bfa3d1b00ba391ddd8f31a7fb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1960310
Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
Reviewed-by: Jia Meng <jiameng@chromium.org>
Commit-Queue: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
Cr-Commit-Position: refs/heads/master@{#723499}
---
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 <algorithm>
+#include <cmath>
#include <iterator>
#include "base/i18n/case_conversion.h"
@@ -1,127 +0,0 @@
From d3afade220ddb307e16a6dd4f2b0ec88b2af91e7 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
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 <rsesek@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Commit-Queue: Robert Sesek <rsesek@chromium.org>
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 <string>
+#include <libxml/xmlreader.h>
-#include "third_party/libxml/src/include/libxml/xmlreader.h"
+#include <string>
// 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 <libxml/xmlreader.h>
+
#include <vector>
#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 <libxml/xmlwriter.h>
+
#include "third_party/libxml/chromium/libxml_utils.h"
-#include "third_party/libxml/src/include/libxml/xmlwriter.h"
XmlWriter::XmlWriter() : writer_(nullptr), buffer_(nullptr) {}
@@ -1,50 +0,0 @@
From dcad5af090528018599277dc5d7e160fb6b2d68e Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
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 <thestig@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
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 <dreijerbit@gmail.com>
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Srirama Chandra Sekhar Mogali <srirama.m@samsung.com>
Staphany Park <stapark008@gmail.com>
+Stephan Hartmann <stha09@googlemail.com>
Stephen Searles <stephen.searles@gmail.com>
Steve Sanders <steve@zanderz.com>
Steven Pennington <spenn@engr.uvic.ca>
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",
@@ -1,237 +0,0 @@
From cdf3e81ff49b200213d67d65558f2919222b60ab Mon Sep 17 00:00:00 2001
From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
Date: Mon, 16 Dec 2019 11:39:11 +0000
Subject: [PATCH] BookmarkModelMerger: Move RemoteTreeNode declaration to
header.
This fixes the build with libstdc++ after commit 8f5dad93e58 ("Fix CHECK
failure due to untracked local nodes"):
/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/stl_pair.h:215:11: error: field has incomplete type 'sync_bookmarks::BookmarkModelMerger::RemoteTreeNode'
_T2 second; /// @c second is a copy of the second object
^
/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/ext/aligned_buffer.h:91:28: note: in instantiation of template class 'std::pair<const std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>' requested here
: std::aligned_storage<sizeof(_Tp), __alignof__(_Tp)>
^
/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable_policy.h:233:43: note: in instantiation of template class '__gnu_cxx::__aligned_buffer<std::pair<const std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> >' requested here
__gnu_cxx::__aligned_buffer<_Value> _M_storage;
^
/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable_policy.h:264:39: note: in instantiation of template class 'std::__detail::_Hash_node_value_base<std::pair<const std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> >' requested here
struct _Hash_node<_Value, true> : _Hash_node_value_base<_Value>
^
/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable_policy.h:2028:25: note: in instantiation of template class 'std::__detail::_Hash_node<std::pair<const std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>, true>' requested here
rebind_traits<typename __node_type::value_type>;
^
/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/hashtable.h:184:15: note: in instantiation of template class 'std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<const std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>, true> > >
' requested here
private __detail::_Hashtable_alloc<
^
/usr/lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/unordered_map.h:105:18: note: in instantiation of template class 'std::_Hashtable<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode>, std::allocator<std::pair<con
st std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> >, std::__detail::_Select1st, std::equal_to<std::__cxx11::basic_string<char> >, std::hash<std::string>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__deta
il::_Hashtable_traits<true, false, true> >' requested here
_Hashtable _M_h;
^
../../components/sync_bookmarks/bookmark_model_merger.h:146:22: note: in instantiation of template class 'std::unordered_map<std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode, std::hash<std::string>, std::equal_to<std::__cxx11::basic_string<char> >, std::allocator<std::pair<con
st std::__cxx11::basic_string<char>, sync_bookmarks::BookmarkModelMerger::RemoteTreeNode> > >' requested here
const RemoteForest remote_forest_;
^
../../components/sync_bookmarks/bookmark_model_merger.h:53:9: note: forward declaration of 'sync_bookmarks::BookmarkModelMerger::RemoteTreeNode'
class RemoteTreeNode;
^
Essentially, the problem is that libstdc++'s std::unordered_map<T, U>
implementation requires both T and U to be fully declared. I raised the
problem in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92770, and GCC's
position is that we are relying on undefined behavior according to the C++
standard (https://eel.is/c++draft/requirements#res.on.functions-2.5).
Bug: 957519
Change-Id: Ife7e435e516932a795bfbe05b2c910c3272878f0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1960156
Commit-Queue: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
Reviewed-by: Mikel Astiz <mastiz@chromium.org>
Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
Cr-Commit-Position: refs/heads/master@{#725070}
---
.../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 <algorithm>
-#include <memory>
#include <set>
#include <string>
#include <utility>
@@ -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<syncer::UpdateResponseData> 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<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 {
- 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<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));
- 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<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 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 <memory>
#include <string>
#include <unordered_map>
#include <vector>
@@ -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<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.
@@ -1,81 +0,0 @@
From 5d66d5907ac3e76d1e382b8a8e8afe653bd00f4c Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
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
@@ -1,33 +0,0 @@
From 08ac7188f414218ac9d764e29e7aa64a6bfc2f96 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
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
@@ -1,36 +0,0 @@
From c4f6e8cd34a245c3640b86a91c9694d69594d80b Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
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
@@ -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<ServiceWorkerRegistrationObjectHost> to_be_deleted =
+ std::move(registration_object_hosts_[registration_id]);
+ DCHECK(to_be_deleted);
registration_object_hosts_.erase(registration_id);
}
@@ -1,25 +0,0 @@
From 0c0af4cabb7490db473cd2c28f069956974a4d98 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
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 <array>
+#include <stdint.h>
+
namespace openscreen {
std::array<uint8_t, 16> GenerateRandomBytes16();
--
2.26.2
@@ -1,14 +1,14 @@
From f4d0b0eb899005b4b8b6388e1d8bb82cc0018fc8 Mon Sep 17 00:00:00 2001
From: Mike Gilbert <floppym@gentoo.org>
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.
@@ -1,39 +0,0 @@
From 4f4604877f3b666ac7a373ae443e3c3795424569 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
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 <typename T>
- 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
@@ -0,0 +1,25 @@
From c06ddc4935bf1394812c011ce5d93898ccc8a53a Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
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 <katie@chromium.org>
Commit-Queue: Katie Dektar <katie@chromium.org>
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 <stddef.h>
#include <stdint.h>
+#include <ctime>
#include <ostream>
#include <unordered_map>
#include <unordered_set>
@@ -0,0 +1,28 @@
From 5a56bfe8d281250a1deee0d116a9fcde65b9c29a Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
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 <cstdint>
#include <map>
+#include <memory>
namespace dawn_wire { namespace client {
--
2.26.2
@@ -0,0 +1,29 @@
From 7cd4eab0bfca6192f14d6143410e1ae774eb1c29 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
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<QuicPathValidationContext> context,
std::unique_ptr<ResultDelegate> 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
@@ -0,0 +1,26 @@
From 1ee06c3678a85d158eb82d4af438d1e43a4c814e Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
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 <class A, class B, class C>
struct overloader : A, B, C {
overloader(A a, B b, C c) : A(a), B(b), C(c) {}
--
2.26.2
@@ -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();
@@ -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;
@@ -1,62 +0,0 @@
From d10f885b9327399be9348b780967ebd6b7f2c4bc Mon Sep 17 00:00:00 2001
From: Tom Anderson <thomasanderson@chromium.org>
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 <thomasanderson@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
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<gfx::Size>
@@ -1,33 +0,0 @@
From 8500a125e9fba8bb84d185542155747ee7157ff8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dominik=20R=C3=B6ttsches?= <drott@chromium.org>
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 <drott@chromium.org>
Commit-Queue: Kentaro Hara <haraken@chromium.org>
Auto-Submit: Dominik Röttsches <drott@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
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;
}
@@ -1,64 +0,0 @@
From 5a2cd2409c7d65c019ad9f4595a4e85315857ac4 Mon Sep 17 00:00:00 2001
From: Tom Anderson <thomasanderson@chromium.org>
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 <thomasanderson@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
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;
@@ -1,100 +0,0 @@
From f25787b72c20e97cdeb74e037dc1ff56a88b45c6 Mon Sep 17 00:00:00 2001
From: Ben Wagner <bungeman@google.com>
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 <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
---
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 <memory>
+#include <tuple>
#include <ft2build.h>
#include FT_ADVANCES_H
@@ -147,13 +148,16 @@ public:
// *reinterpret_cast<void**>(&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<FT_Int, FT_Int, FT_Int>;
+ 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() {
@@ -1,28 +0,0 @@
From eb997db5527c01fd12c321a6abc52b7cff882e50 Mon Sep 17 00:00:00 2001
From: Mohamed Amir Yosef <mamir@chromium.org>
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 <mamir@chromium.org>
Reviewed-by: Mikel Astiz <mastiz@chromium.org>
Commit-Queue: Mohamed Amir Yosef <mamir@chromium.org>
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",
@@ -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
@@ -1,51 +0,0 @@
From 5b2ff215473e0526b5b24aeff4ad90d369b21c75 Mon Sep 17 00:00:00 2001
From: Julien Isorce <julien.isorce@chromium.org>
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 <thomasanderson@chromium.org>
Reviewed-by: Miguel Casas <mcasas@chromium.org>
Commit-Queue: Julien Isorce <julien.isorce@chromium.org>
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 =
@@ -1,82 +0,0 @@
From 4a04af6bbd5b1a55e2e1a7c22f13f8571c2dd7ed Mon Sep 17 00:00:00 2001
From: Julien Isorce <julien.isorce@chromium.org>
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 <magchen@chromium.org>
> Reviewed-by: Kenneth Russell <kbr@chromium.org>
> Commit-Queue: Julien Isorce <julien.isorce@chromium.org>
> 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 <acourbot@chromium.org>
Reviewed-by: Maggie Chen <magchen@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Julien Isorce <julien.isorce@chromium.org>
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.
@@ -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<VaapiPicture> 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
@@ -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<VaapiPicture> 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
@@ -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 @@
@@ -0,0 +1,135 @@
From 5e3a738b1204941aab9f15c0eb3d06e20fefd96e Mon Sep 17 00:00:00 2001
From: Scott Violet <sky@chromium.org>
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 <thomasanderson@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
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<TestWindowTreeHost> 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<TestWindowTreeHost> 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<TestWindowTreeHost> host =
+ std::make_unique<TestWindowTreeHost>();
+ 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();
}
+18 -10
View File
@@ -13,7 +13,7 @@
<IsA>app:gui</IsA>
<Summary>A WebKit powered web browser</Summary>
<Description>Chromium-browser is an open-source web browser, powered by WebKit.</Description>
<Archive type="tarxz" sha1sum="1af51ac3807da61665e943a5958090000c587e20">http://gsdview.appspot.com/chromium-browser-official/chromium-87.0.4280.142.tar.xz</Archive>
<Archive type="tarxz" sha1sum="d0826ac53536e82ec517468bd8f299340125bfe3">http://gsdview.appspot.com/chromium-browser-official/chromium-89.0.4389.90.tar.xz</Archive>
<BuildDependencies>
<Dependency>alsa-lib-devel</Dependency>
<Dependency>at-spi2-atk-devel</Dependency>
@@ -99,19 +99,20 @@
<Dependency>pipewire-0.2-devel</Dependency>
</BuildDependencies>
<Patches>
<Patch level="1">subpixel-anti-aliasing-in-FreeType-2.8.1.patch</Patch>
<Patch level="1">add-dependency-on-opus-in-webcodecs.patch</Patch>
<Patch level="1">use-oauth2-client-switches-as-default.patch</Patch>
<Patch level="1">x11-ozone-fix-two-edge-cases.patch</Patch>
<Patch level="1">chromium-89-EnumTable-crash.patch</Patch>
<Patch level="1">wayland-egl.patch</Patch>
<!-- Chromium Patchset -->
<!-- Source: https://github.com/stha09/chromium-patches -->
<Patch level="1">patches/chromium-78-protobuf-RepeatedPtrField-export.patch</Patch>
<Patch level="1">patches/chromium-79-gcc-protobuf-alignas.patch</Patch>
<Patch level="1">patches/chromium-84-blink-disable-clang-format.patch</Patch>
<Patch level="1">patches/chromium-87-CursorFactory-include.patch</Patch>
<Patch level="1">patches/chromium-87-ServiceWorkerContainerHost-crash.patch</Patch>
<Patch level="1">patches/chromium-87-compiler.patch</Patch>
<Patch level="1">patches/chromium-87-openscreen-include.patch</Patch>
<Patch level="1">patches/chromium-88-vaapi-attribute.patch</Patch>
<Patch level="1">patches/chromium-fix-char_traits.patch</Patch>
<Patch level="1">patches/chromium-88-compiler.patch</Patch>
<Patch level="1">patches/chromium-89-AXTreeSerializer-include.patch</Patch>
<Patch level="1">patches/chromium-89-dawn-include.patch</Patch>
<Patch level="1">patches/chromium-89-quiche-dcheck.patch</Patch>
<Patch level="1">patches/chromium-89-quiche-private.patch</Patch>
<Patch level="1">patches/chromium-89-skia-CropRect.patch</Patch>
</Patches>
</Source>
@@ -191,6 +192,13 @@
</Package>
<History>
<Update release="22">
<Date>2021-03-18</Date>
<Version>89.0.4389.90</Version>
<Comment>Version Bump</Comment>
<Name>İdris Kalp</Name>
<Email>idriskalp@gmail.com</Email>
</Update>
<Update release="21">
<Date>2021-01-19</Date>
<Version>87.0.4280.142</Version>