chromium-browser 89.0.4389.90
This commit is contained in:
@@ -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",
|
||||
]
|
||||
}
|
||||
-35
@@ -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) {}
|
||||
|
||||
-50
@@ -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
|
||||
|
||||
-33
@@ -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
|
||||
|
||||
-22
@@ -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
|
||||
|
||||
+16
-35
@@ -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;
|
||||
-62
@@ -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>
|
||||
-33
@@ -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;
|
||||
}
|
||||
|
||||
-64
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user