automatic version update by autodist [release 92.0.4515.131-1mamba;Mon Aug 09 2021]

This commit is contained in:
Automatic Build System 2024-01-05 21:13:37 +01:00
parent ada9ed57cd
commit c3c01255da
21 changed files with 2281 additions and 1042 deletions

View File

@ -1,41 +0,0 @@
https://bugs.chromium.org/p/chromium/issues/detail?id=1095962
--- /media/base/media.cc
+++ /media/base/media.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <limits>
+
#include "media/base/media.h"
#include "base/allocator/buildflags.h"
@@ -41,7 +43,7 @@
#if BUILDFLAG(USE_ALLOCATOR_SHIM)
// Remove allocation limit from ffmpeg, so calls go down to shim layer.
- av_max_alloc(0);
+ av_max_alloc(std::numeric_limits<size_t>::max());
#endif // BUILDFLAG(USE_ALLOCATOR_SHIM)
#endif // BUILDFLAG(ENABLE_FFMPEG)
--- /third_party/ffmpeg/chromium/dllmain.cc
+++ /third_party/ffmpeg/chromium/dllmain.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include <intrin.h>
+#include <limits>
#include <new.h>
#include <stdlib.h>
#include <windows.h>
@@ -28,7 +29,7 @@
if (reason == DLL_PROCESS_ATTACH) {
DisableThreadLibraryCalls(instance);
// Remove allocation limit from ffmpeg, so calls go down to shim layer.
- av_max_alloc(0);
+ av_max_alloc(std::numeric_limits<size_t>::max());
// Enable OOM crashes in the shim for all malloc calls that fail.
_set_new_mode(1);
_set_new_handler(&OnNoMemory);

View File

@ -1,71 +0,0 @@
From 128869693a2519578896b41765df029d7adc4ae0 Mon Sep 17 00:00:00 2001
From: Yuzu Saijo <yuzus@chromium.org>
Date: Tue, 2 Jun 2020 04:51:11 +0000
Subject: [PATCH] [content] Avoid calling DeleteForCurrentDocument from
destructor
This CL removes the call to DeleteForCurrentDocument from the destructor
of ManifestManagerHost.
This intends to fix a crash which happens from time to time using
RenderDocumentHostUserData.
Change-Id: I1336fb62328dcb0cf9991499f399bf3665d29b75
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2224737
Reviewed-by: Rakina Zata Amni <rakina@chromium.org>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Reviewed-by: Sreeja Kamishetty <sreejakshetty@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Commit-Queue: Yuzu Saijo <yuzus@chromium.org>
Cr-Commit-Position: refs/heads/master@{#774006}
---
content/browser/manifest/manifest_manager_host.cc | 7 +++++--
content/browser/manifest/manifest_manager_host.h | 2 ++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/content/browser/manifest/manifest_manager_host.cc b/content/browser/manifest/manifest_manager_host.cc
index 3a2efba889a..1bd88d91edc 100644
--- a/content/browser/manifest/manifest_manager_host.cc
+++ b/content/browser/manifest/manifest_manager_host.cc
@@ -22,7 +22,7 @@ ManifestManagerHost::ManifestManagerHost(RenderFrameHost* render_frame_host)
}
ManifestManagerHost::~ManifestManagerHost() {
- OnConnectionError();
+ DispatchPendingCallbacks();
}
void ManifestManagerHost::BindObserver(
@@ -55,7 +55,7 @@ blink::mojom::ManifestManager& ManifestManagerHost::GetManifestManager() {
return *manifest_manager_;
}
-void ManifestManagerHost::OnConnectionError() {
+void ManifestManagerHost::DispatchPendingCallbacks() {
std::vector<GetManifestCallback> callbacks;
for (CallbackMap::iterator it(&callbacks_); !it.IsAtEnd(); it.Advance()) {
callbacks.push_back(std::move(*it.GetCurrentValue()));
@@ -63,7 +63,10 @@ void ManifestManagerHost::OnConnectionError() {
callbacks_.Clear();
for (auto& callback : callbacks)
std::move(callback).Run(GURL(), blink::Manifest());
+}
+void ManifestManagerHost::OnConnectionError() {
+ DispatchPendingCallbacks();
if (GetForCurrentDocument(manifest_manager_frame_)) {
DeleteForCurrentDocument(manifest_manager_frame_);
}
diff --git a/content/browser/manifest/manifest_manager_host.h b/content/browser/manifest/manifest_manager_host.h
index 96951ae30bc..f706c20bdb8 100644
--- a/content/browser/manifest/manifest_manager_host.h
+++ b/content/browser/manifest/manifest_manager_host.h
@@ -55,6 +55,8 @@ class ManifestManagerHost
using CallbackMap = base::IDMap<std::unique_ptr<GetManifestCallback>>;
blink::mojom::ManifestManager& GetManifestManager();
+
+ void DispatchPendingCallbacks();
void OnConnectionError();
void OnRequestManifestResponse(int request_id,

View File

@ -1,38 +0,0 @@
From 192fc3899f76e9487d77895f31df8d2d13bf9619 Mon Sep 17 00:00:00 2001
From: Dale Curtis <dalecurtis@chromium.org>
Date: Fri, 26 Jun 2020 01:10:55 +0000
Subject: [PATCH] Force mp3 files to have a start time of zero.
This will allow us to remove our custom patch which breaks upstream
ffmpeg functionality for unknown reasons.
R=sandersd
Fixed: 1062037
Change-Id: I253011843dee4dd6a8c958b14990ad836a9f1dca
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2268221
Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#782792}
---
media/filters/ffmpeg_demuxer.cc | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
index 01266e1a072..a7ed542b5fc 100644
--- a/media/filters/ffmpeg_demuxer.cc
+++ b/media/filters/ffmpeg_demuxer.cc
@@ -1522,6 +1522,12 @@ void FFmpegDemuxer::OnFindStreamInfoDone(int result) {
if (glue_->container() == container_names::CONTAINER_AVI)
format_context->flags |= AVFMT_FLAG_GENPTS;
+ // FFmpeg will incorrectly adjust the start time of MP3 files into the future
+ // based on discard samples. We were unable to fix this upstream without
+ // breaking ffmpeg functionality. https://crbug.com/1062037
+ if (glue_->container() == container_names::CONTAINER_MP3)
+ start_time_ = base::TimeDelta();
+
// For testing purposes, don't overwrite the timeline offset if set already.
if (timeline_offset_.is_null()) {
timeline_offset_ =

View File

@ -1,42 +0,0 @@
From 3bfec15358b788a2b7e1beefaa177ba84a6da328 Mon Sep 17 00:00:00 2001
From: Ted Meyer <tmathmeyer@chromium.org>
Date: Mon, 1 Jun 2020 19:31:18 +0000
Subject: [PATCH] Remove NotifyError calls and just send a normal message
instead
rewrote the TODO as well.
Bug: 1088055
Change-Id: If83ceeb3a786a1813e41bd3ac6c7309791e92400
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2223010
Auto-Submit: Ted Meyer <tmathmeyer@chromium.org>
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#773776}
---
media/filters/decoder_selector.cc | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/media/filters/decoder_selector.cc b/media/filters/decoder_selector.cc
index bb06378b92d..9f510bb578c 100644
--- a/media/filters/decoder_selector.cc
+++ b/media/filters/decoder_selector.cc
@@ -165,13 +165,11 @@ void DecoderSelector<StreamType>::OnDecoderInitializeDone(Status status) {
DCHECK(task_runner_->BelongsToCurrentThread());
if (!status.is_ok()) {
- // TODO(tmathmeyer) this might be noisy in media log. Consider batching
- // all failures as causes to a single Status object and only surfacing it if
- // decoder selection fails entirely.
- media_log_->NotifyError(
- Status(StatusCode::kDecoderFailedInitialization)
- .WithData("Decoder name", decoder_->GetDisplayName())
- .AddCause(std::move(status)));
+ // TODO(tmathmeyer) this was too noisy in media log. Batch all the logs
+ // together and then send them as an informational notice instead of
+ // using NotifyError.
+ MEDIA_LOG(INFO, media_log_)
+ << "Failed to initialize " << decoder_->GetDisplayName();
// Try the next decoder on the list.
decoder_.reset();

View File

@ -1,421 +0,0 @@
From 4d16e52a5e6771c4aa5f892e14486bf0e87027d1 Mon Sep 17 00:00:00 2001
From: Frank Tang <ftang@chromium.org>
Date: Tue, 20 Oct 2020 00:11:50 +0000
Subject: [PATCH] Prepare for landing ICU68
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
In the landing process of ICU68 we found these need to be changed
since ICU68 no longer define TRUE and FALSE for UBool to
avoid C++20 problem.
Bug: 1138555
Change-Id: I64fd98c99864aa86b07280537a780105cb0eabbe
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2473522
Reviewed-by: Frank Tang <ftang@chromium.org>
Reviewed-by: Colin Blundell <blundell@chromium.org>
Reviewed-by: Dominic Battré <battre@chromium.org>
Reviewed-by: Guillaume Jenkins <gujen@google.com>
Reviewed-by: Jungshik Shin <jshin@chromium.org>
Reviewed-by: Mihai Sardarescu <msarda@chromium.org>
Reviewed-by: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: Mustafa Emre Acer <meacer@chromium.org>
Reviewed-by: Marian Fechete <marianfe@google.com>
Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#818713}
---
base/i18n/icu_util.cc | 2 +-
base/i18n/string_compare.cc | 4 ++--
base/i18n/time_formatting.cc | 2 +-
.../autofill/core/common/autofill_regexes.cc | 8 ++++----
.../browser/string_conversions_util.cc | 6 +++---
.../public/identity_manager/identity_utils.cc | 2 +-
.../renderer/spellcheck_worditerator.cc | 2 +-
.../spoof_checks/idn_spoof_checker.cc | 4 ++--
.../spoof_checks/skeleton_generator.cc | 2 +-
content/zygote/zygote_linux.cc | 2 +-
.../time_zone_monitor_android.cc | 2 +-
.../renderer/core/exported/web_view_test.cc | 12 ++++++------
.../blink/renderer/platform/text/locale_icu.cc | 4 ++--
.../platform/text/text_break_iterator_icu.cc | 16 ++++++++--------
.../renderer/platform/text/unicode_utilities.cc | 2 +-
.../renderer/platform/wtf/text/text_codec_icu.cc | 2 +-
ui/base/l10n/formatter.cc | 6 +++---
17 files changed, 39 insertions(+), 39 deletions(-)
diff --git a/base/i18n/icu_util.cc b/base/i18n/icu_util.cc
index b225f1d46c0b7..20debbe655c46 100644
--- a/base/i18n/icu_util.cc
+++ b/base/i18n/icu_util.cc
@@ -327,7 +327,7 @@ void InitializeIcuTimeZone() {
// https://ssl.icu-project.org/trac/ticket/13208 .
string16 zone_id = android::GetDefaultTimeZoneId();
icu::TimeZone::adoptDefault(icu::TimeZone::createTimeZone(
- icu::UnicodeString(FALSE, zone_id.data(), zone_id.length())));
+ icu::UnicodeString(false, zone_id.data(), zone_id.length())));
#elif defined(OS_FUCHSIA)
// The platform-specific mechanisms used by ICU's detectHostTimeZone() to
// determine the default time zone will not work on Fuchsia. Therefore,
diff --git a/base/i18n/string_compare.cc b/base/i18n/string_compare.cc
index c0e83c6f7306f..e4fb687c14884 100644
--- a/base/i18n/string_compare.cc
+++ b/base/i18n/string_compare.cc
@@ -18,8 +18,8 @@ UCollationResult CompareString16WithCollator(const icu::Collator& collator,
StringPiece16 rhs) {
UErrorCode error = U_ZERO_ERROR;
UCollationResult result = collator.compare(
- icu::UnicodeString(FALSE, lhs.data(), static_cast<int>(lhs.length())),
- icu::UnicodeString(FALSE, rhs.data(), static_cast<int>(rhs.length())),
+ icu::UnicodeString(false, lhs.data(), static_cast<int>(lhs.length())),
+ icu::UnicodeString(false, rhs.data(), static_cast<int>(rhs.length())),
error);
DCHECK(U_SUCCESS(error));
return result;
diff --git a/base/i18n/time_formatting.cc b/base/i18n/time_formatting.cc
index c769b57d7162a..c085f5ef2448a 100644
--- a/base/i18n/time_formatting.cc
+++ b/base/i18n/time_formatting.cc
@@ -240,7 +240,7 @@ bool TimeDurationFormatWithSeconds(const TimeDelta time,
icu::FieldPosition ignore(icu::FieldPosition::DONT_CARE);
measure_format.formatMeasures(measures, 3, formatted, ignore, status);
*out = i18n::UnicodeStringToString16(formatted);
- return U_SUCCESS(status) == TRUE;
+ return U_SUCCESS(status);
}
string16 DateIntervalFormat(const Time& begin_time,
diff --git a/components/autofill/core/common/autofill_regexes.cc b/components/autofill/core/common/autofill_regexes.cc
index 02254fa266ac5..1cf12f310d077 100644
--- a/components/autofill/core/common/autofill_regexes.cc
+++ b/components/autofill/core/common/autofill_regexes.cc
@@ -43,7 +43,7 @@ class AutofillRegexes {
icu::RegexMatcher* AutofillRegexes::GetMatcher(const base::string16& pattern) {
auto it = matchers_.find(pattern);
if (it == matchers_.end()) {
- const icu::UnicodeString icu_pattern(FALSE, pattern.data(),
+ const icu::UnicodeString icu_pattern(false, pattern.data(),
pattern.length());
UErrorCode status = U_ZERO_ERROR;
@@ -71,21 +71,21 @@ bool MatchesPattern(const base::string16& input,
base::AutoLock lock(*g_lock);
icu::RegexMatcher* matcher = g_autofill_regexes->GetMatcher(pattern);
- icu::UnicodeString icu_input(FALSE, input.data(), input.length());
+ icu::UnicodeString icu_input(false, input.data(), input.length());
matcher->reset(icu_input);
UErrorCode status = U_ZERO_ERROR;
UBool matched = matcher->find(0, status);
DCHECK(U_SUCCESS(status));
- if (matched == TRUE && match) {
+ if (matched && match) {
icu::UnicodeString match_unicode =
matcher->group(group_to_be_captured, status);
DCHECK(U_SUCCESS(status));
*match = base::i18n::UnicodeStringToString16(match_unicode);
}
- return matched == TRUE;
+ return matched;
}
} // namespace autofill
diff --git a/components/autofill_assistant/browser/string_conversions_util.cc b/components/autofill_assistant/browser/string_conversions_util.cc
index 212bafa637288..1d00d68019fa3 100644
--- a/components/autofill_assistant/browser/string_conversions_util.cc
+++ b/components/autofill_assistant/browser/string_conversions_util.cc
@@ -39,13 +39,13 @@ bool UnicodeToUTF8(const std::vector<UChar32>& source, std::string* target) {
// |target|.
bool AppendUnicodeToUTF8(const UChar32 source, std::string* target) {
char bytes[4];
- UBool error = FALSE;
+ UBool error = false;
size_t offset = 0;
U8_APPEND(bytes, offset, base::size(bytes), source, error);
- if (error == FALSE) {
+ if (error == false) {
target->append(bytes, offset);
}
- return error == FALSE;
+ return !error;
}
} // namespace autofill_assistant
diff --git a/components/signin/public/identity_manager/identity_utils.cc b/components/signin/public/identity_manager/identity_utils.cc
index 1c414e20e5de4..014d6746d95f2 100644
--- a/components/signin/public/identity_manager/identity_utils.cc
+++ b/components/signin/public/identity_manager/identity_utils.cc
@@ -33,7 +33,7 @@ bool IsUsernameAllowedByPattern(base::StringPiece username,
// See if the username matches the policy-provided pattern.
UErrorCode status = U_ZERO_ERROR;
- const icu::UnicodeString icu_pattern(FALSE, utf16_pattern.data(),
+ const icu::UnicodeString icu_pattern(false, utf16_pattern.data(),
utf16_pattern.length());
icu::RegexMatcher matcher(icu_pattern, UREGEX_CASE_INSENSITIVE, status);
if (!U_SUCCESS(status)) {
diff --git a/components/spellcheck/renderer/spellcheck_worditerator.cc b/components/spellcheck/renderer/spellcheck_worditerator.cc
index ec16fefbebc91..3b1f060866021 100644
--- a/components/spellcheck/renderer/spellcheck_worditerator.cc
+++ b/components/spellcheck/renderer/spellcheck_worditerator.cc
@@ -442,7 +442,7 @@ bool SpellcheckWordIterator::Normalize(size_t input_start,
// spellchecker and we need manual normalization as well. The normalized
// text does not have to be NUL-terminated since its characters are copied to
// string16, which adds a NUL character when we need.
- icu::UnicodeString input(FALSE, &text_[input_start],
+ icu::UnicodeString input(false, &text_[input_start],
base::checked_cast<int32_t>(input_length));
UErrorCode status = U_ZERO_ERROR;
icu::UnicodeString output;
diff --git a/components/url_formatter/spoof_checks/idn_spoof_checker.cc b/components/url_formatter/spoof_checks/idn_spoof_checker.cc
index 6d66a7c4db885..d73192b1426a4 100644
--- a/components/url_formatter/spoof_checks/idn_spoof_checker.cc
+++ b/components/url_formatter/spoof_checks/idn_spoof_checker.cc
@@ -368,7 +368,7 @@ IDNSpoofChecker::Result IDNSpoofChecker::SafeToDisplayAsUnicode(
return Result::kICUSpoofChecks;
}
- icu::UnicodeString label_string(FALSE /* isTerminated */, label.data(),
+ icu::UnicodeString label_string(false /* isTerminated */, label.data(),
base::checked_cast<int32_t>(label.size()));
// A punycode label with 'xn--' prefix is not subject to the URL
@@ -711,7 +711,7 @@ bool IDNSpoofChecker::IsWholeScriptConfusableAllowedForTLD(
base::StringPiece tld,
base::StringPiece16 tld_unicode) {
icu::UnicodeString tld_string(
- FALSE /* isTerminated */, tld_unicode.data(),
+ false /* isTerminated */, tld_unicode.data(),
base::checked_cast<int32_t>(tld_unicode.size()));
// Allow if the TLD contains any letter from the script, in which case it's
// likely to be a TLD in that script.
diff --git a/components/url_formatter/spoof_checks/skeleton_generator.cc b/components/url_formatter/spoof_checks/skeleton_generator.cc
index 9628626600df5..9a779018ebfae 100644
--- a/components/url_formatter/spoof_checks/skeleton_generator.cc
+++ b/components/url_formatter/spoof_checks/skeleton_generator.cc
@@ -116,7 +116,7 @@ SkeletonGenerator::~SkeletonGenerator() = default;
Skeletons SkeletonGenerator::GetSkeletons(base::StringPiece16 hostname) {
Skeletons skeletons;
size_t hostname_length = hostname.length() - (hostname.back() == '.' ? 1 : 0);
- icu::UnicodeString host(FALSE, hostname.data(), hostname_length);
+ icu::UnicodeString host(false, hostname.data(), hostname_length);
// If input has any characters outside Latin-Greek-Cyrillic and [0-9._-],
// there is no point in getting rid of diacritics because combining marks
// attached to non-LGC characters are already blocked.
diff --git a/content/zygote/zygote_linux.cc b/content/zygote/zygote_linux.cc
index 95d5a82c25082..b6d8e5a29c55e 100644
--- a/content/zygote/zygote_linux.cc
+++ b/content/zygote/zygote_linux.cc
@@ -557,7 +557,7 @@ base::ProcessId Zygote::ReadArgsAndFork(base::PickleIterator iter,
if (!iter.ReadString16(&timezone_id))
return -1;
icu::TimeZone::adoptDefault(icu::TimeZone::createTimeZone(
- icu::UnicodeString(FALSE, timezone_id.data(), timezone_id.length())));
+ icu::UnicodeString(false, timezone_id.data(), timezone_id.length())));
if (!iter.ReadInt(&numfds))
return -1;
diff --git a/services/device/time_zone_monitor/time_zone_monitor_android.cc b/services/device/time_zone_monitor/time_zone_monitor_android.cc
index 818670a821e41..f57f9724e5d48 100644
--- a/services/device/time_zone_monitor/time_zone_monitor_android.cc
+++ b/services/device/time_zone_monitor/time_zone_monitor_android.cc
@@ -34,7 +34,7 @@ void TimeZoneMonitorAndroid::TimeZoneChangedFromJava(
// See base/i18n/icu_util.cc:InitializeIcuTimeZone() for more information.
base::string16 zone_id = base::android::GetDefaultTimeZoneId();
std::unique_ptr<icu::TimeZone> new_zone(icu::TimeZone::createTimeZone(
- icu::UnicodeString(FALSE, zone_id.data(), zone_id.length())));
+ icu::UnicodeString(false, zone_id.data(), zone_id.length())));
UpdateIcuAndNotifyClients(std::move(new_zone));
}
diff --git a/third_party/blink/renderer/core/exported/web_view_test.cc b/third_party/blink/renderer/core/exported/web_view_test.cc
index a6b9552bb18d9..36809d914d1af 100644
--- a/third_party/blink/renderer/core/exported/web_view_test.cc
+++ b/third_party/blink/renderer/core/exported/web_view_test.cc
@@ -4868,18 +4868,18 @@ TEST_F(ShowUnhandledTapTest, ShowUnhandledTapUIIfNeeded) {
TEST_F(ShowUnhandledTapTest, ShowUnhandledTapUIIfNeededWithMutateDom) {
// Test dom mutation.
- TestEachMouseEvent("mutateDom", FALSE);
+ TestEachMouseEvent("mutateDom", false);
// Test without any DOM mutation.
- TestEachMouseEvent("none", TRUE);
+ TestEachMouseEvent("none", true);
}
TEST_F(ShowUnhandledTapTest, ShowUnhandledTapUIIfNeededWithMutateStyle) {
// Test style mutation.
- TestEachMouseEvent("mutateStyle", FALSE);
+ TestEachMouseEvent("mutateStyle", false);
// Test checkbox:indeterminate style mutation.
- TestEachMouseEvent("mutateIndeterminate", FALSE);
+ TestEachMouseEvent("mutateIndeterminate", false);
// Test click div with :active style.
Tap("style_active");
@@ -4888,10 +4888,10 @@ TEST_F(ShowUnhandledTapTest, ShowUnhandledTapUIIfNeededWithMutateStyle) {
TEST_F(ShowUnhandledTapTest, ShowUnhandledTapUIIfNeededWithPreventDefault) {
// Test swallowing.
- TestEachMouseEvent("preventDefault", FALSE);
+ TestEachMouseEvent("preventDefault", false);
// Test without any preventDefault.
- TestEachMouseEvent("none", TRUE);
+ TestEachMouseEvent("none", true);
}
TEST_F(ShowUnhandledTapTest, ShowUnhandledTapUIIfNeededWithNonTriggeringNodes) {
diff --git a/third_party/blink/renderer/platform/text/locale_icu.cc b/third_party/blink/renderer/platform/text/locale_icu.cc
index 92fb99e0cc027..f991b5137728c 100644
--- a/third_party/blink/renderer/platform/text/locale_icu.cc
+++ b/third_party/blink/renderer/platform/text/locale_icu.cc
@@ -169,12 +169,12 @@ static String GetDateFormatPattern(const UDateFormat* date_format) {
return g_empty_string;
UErrorCode status = U_ZERO_ERROR;
- int32_t length = udat_toPattern(date_format, TRUE, nullptr, 0, &status);
+ int32_t length = udat_toPattern(date_format, true, nullptr, 0, &status);
if (status != U_BUFFER_OVERFLOW_ERROR || !length)
return g_empty_string;
StringBuffer<UChar> buffer(length);
status = U_ZERO_ERROR;
- udat_toPattern(date_format, TRUE, buffer.Characters(), length, &status);
+ udat_toPattern(date_format, true, buffer.Characters(), length, &status);
if (U_FAILURE(status))
return g_empty_string;
return String::Adopt(buffer);
diff --git a/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc b/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc
index 5bea0079dd343..0e8c60a31599e 100644
--- a/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc
+++ b/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc
@@ -312,13 +312,13 @@ static inline bool TextInChunkOrOutOfRange(UText* text,
text->chunkOffset = offset <= std::numeric_limits<int32_t>::max()
? static_cast<int32_t>(offset)
: 0;
- is_accessible = TRUE;
+ is_accessible = true;
return true;
}
if (native_index >= native_length &&
text->chunkNativeLimit == native_length) {
text->chunkOffset = text->chunkLength;
- is_accessible = FALSE;
+ is_accessible = false;
return true;
}
} else {
@@ -331,12 +331,12 @@ static inline bool TextInChunkOrOutOfRange(UText* text,
text->chunkOffset = offset <= std::numeric_limits<int32_t>::max()
? static_cast<int32_t>(offset)
: 0;
- is_accessible = TRUE;
+ is_accessible = true;
return true;
}
if (native_index <= 0 && !text->chunkNativeStart) {
text->chunkOffset = 0;
- is_accessible = FALSE;
+ is_accessible = false;
return true;
}
}
@@ -347,7 +347,7 @@ static UBool TextLatin1Access(UText* text,
int64_t native_index,
UBool forward) {
if (!text->context)
- return FALSE;
+ return false;
int64_t native_length = TextNativeLength(text);
UBool is_accessible;
if (TextInChunkOrOutOfRange(text, native_index, native_length, forward,
@@ -371,7 +371,7 @@ static UBool TextLatin1Access(UText* text,
DCHECK_EQ(new_context, kPriorContext);
TextLatin1SwitchToPriorContext(text, native_index, native_length, forward);
}
- return TRUE;
+ return true;
}
static const struct UTextFuncs kTextLatin1Funcs = {
@@ -511,7 +511,7 @@ static void TextUTF16SwitchToPriorContext(UText* text,
static UBool TextUTF16Access(UText* text, int64_t native_index, UBool forward) {
if (!text->context)
- return FALSE;
+ return false;
int64_t native_length = TextNativeLength(text);
UBool is_accessible;
if (TextInChunkOrOutOfRange(text, native_index, native_length, forward,
@@ -533,7 +533,7 @@ static UBool TextUTF16Access(UText* text, int64_t native_index, UBool forward) {
DCHECK_EQ(new_context, kPriorContext);
TextUTF16SwitchToPriorContext(text, native_index, native_length, forward);
}
- return TRUE;
+ return true;
}
static const struct UTextFuncs kTextUTF16Funcs = {
diff --git a/third_party/blink/renderer/platform/text/unicode_utilities.cc b/third_party/blink/renderer/platform/text/unicode_utilities.cc
index 2cefd5390b6b0..b8c4515dc13ca 100644
--- a/third_party/blink/renderer/platform/text/unicode_utilities.cc
+++ b/third_party/blink/renderer/platform/text/unicode_utilities.cc
@@ -300,7 +300,7 @@ void NormalizeCharactersIntoNFCForm(const UChar* characters,
DCHECK(U_SUCCESS(status));
int32_t input_length = static_cast<int32_t>(length);
// copy-on-write.
- icu::UnicodeString normalized(FALSE, characters, input_length);
+ icu::UnicodeString normalized(false, characters, input_length);
// In the vast majority of cases, input is already NFC. Run a quick check
// to avoid normalizing the entire input unnecessarily.
int32_t normalized_prefix_length =
diff --git a/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc b/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc
index b62573550a1cb..fb8ab0530c51e 100644
--- a/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc
+++ b/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc
@@ -327,7 +327,7 @@ void TextCodecICU::CreateICUConverter() const {
DLOG_IF(ERROR, err == U_AMBIGUOUS_ALIAS_WARNING)
<< "ICU ambiguous alias warning for encoding: " << encoding_.GetName();
if (converter_icu_)
- ucnv_setFallback(converter_icu_, TRUE);
+ ucnv_setFallback(converter_icu_, true);
}
int TextCodecICU::DecodeToBuffer(UChar* target,
diff --git a/ui/base/l10n/formatter.cc b/ui/base/l10n/formatter.cc
index e4446d4786f49..684ead8c0a0df 100644
--- a/ui/base/l10n/formatter.cc
+++ b/ui/base/l10n/formatter.cc
@@ -234,7 +234,7 @@ void Formatter::Format(Unit unit,
int value,
icu::UnicodeString* formatted_string) const {
DCHECK(simple_format_[unit]);
- DCHECK(formatted_string->isEmpty() == TRUE);
+ DCHECK(formatted_string->isEmpty());
UErrorCode error = U_ZERO_ERROR;
FormatNumberInPlural(*simple_format_[unit],
value, formatted_string, &error);
@@ -250,7 +250,7 @@ void Formatter::Format(TwoUnits units,
<< "Detailed() not implemented for your (format, length) combination!";
DCHECK(detailed_format_[units][1])
<< "Detailed() not implemented for your (format, length) combination!";
- DCHECK(formatted_string->isEmpty() == TRUE);
+ DCHECK(formatted_string->isEmpty());
UErrorCode error = U_ZERO_ERROR;
FormatNumberInPlural(*detailed_format_[units][0], value_1,
formatted_string, &error);
@@ -283,7 +283,7 @@ std::unique_ptr<icu::MessageFormat> Formatter::InitFormat(
base::string16 pattern = l10n_util::GetStringUTF16(pluralities.id);
UErrorCode error = U_ZERO_ERROR;
std::unique_ptr<icu::MessageFormat> format(new icu::MessageFormat(
- icu::UnicodeString(FALSE, pattern.data(), pattern.length()), error));
+ icu::UnicodeString(false, pattern.data(), pattern.length()), error));
DCHECK(U_SUCCESS(error));
if (format.get())
return format;

View File

@ -1,10 +0,0 @@
--- chromium-87.0.4280.88/components/autofill/core/browser/pattern_provider/pattern_provider.h.orig 2021-01-02 13:49:47.136200998 +0100
+++ chromium-87.0.4280.88/components/autofill/core/browser/pattern_provider/pattern_provider.h 2021-01-02 13:49:52.827306114 +0100
@@ -6,6 +6,7 @@
#define COMPONENTS_AUTOFILL_CORE_BROWSER_PATTERN_PROVIDER_PATTERN_PROVIDER_H_
#include <string>
+#include <vector>
#include "base/macros.h"
#include "base/no_destructor.h"

View File

@ -1,192 +0,0 @@
From b0a7f5691113534c2cf771f2dd3cece5e93bc7d4 Mon Sep 17 00:00:00 2001
From: Frank Tang <ftang@chromium.org>
Date: Tue, 03 Nov 2020 23:20:37 -0800
Subject: [PATCH] Update to ICU68-1
ICU68-1 change the output skeleton format. So we need to change
resolvedOptions code for 68 migration.
Chromium roll
https://chromium-review.googlesource.com/c/chromium/src/+/2474093
Bug: v8:10945
Change-Id: I3b2c7fbe8abb22df8fa51287c498ca3245b8c55b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2477431
Commit-Queue: Frank Tang <ftang@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#70972}
(ported to work with <ICU-68.1 -- https://bugs.gentoo.org/757606)
---
diff --git a/src/objects/js-number-format.cc b/src/objects/js-number-format.cc
index 45b0eab..d18b133 100644
--- a/src/objects/js-number-format.cc
+++ b/src/objects/js-number-format.cc
@@ -389,17 +389,20 @@ Handle<String> CurrencySignString(Isolate* isolate,
Handle<String> UnitDisplayString(Isolate* isolate,
const icu::UnicodeString& skeleton) {
// Ex: skeleton as
- // "measure-unit/length-meter .### rounding-mode-half-up unit-width-full-name"
+ // <ICU-68.1: "measure-unit/length-meter .### rounding-mode-half-up unit-width-full-name".
+ // >=ICU-68.1: "unit/length-meter .### rounding-mode-half-up unit-width-full-name"
if (skeleton.indexOf("unit-width-full-name") >= 0) {
return ReadOnlyRoots(isolate).long_string_handle();
}
// Ex: skeleton as
- // "measure-unit/length-meter .### rounding-mode-half-up unit-width-narrow".
+ // <ICU-68.1: "measure-unit/length-meter .### rounding-mode-half-up unit-width-narrow".
+ // >=ICU-68.1: "unit/length-meter .### rounding-mode-half-up unit-width-narrow".
if (skeleton.indexOf("unit-width-narrow") >= 0) {
return ReadOnlyRoots(isolate).narrow_string_handle();
}
// Ex: skeleton as
- // "measure-unit/length-foot .### rounding-mode-half-up"
+ // <ICU-68.1: "measure-unit/length-foot .### rounding-mode-half-up"
+ // >=ICU-68.1: "unit/length-foot .### rounding-mode-half-up"
return ReadOnlyRoots(isolate).short_string_handle();
}
@@ -422,7 +425,8 @@ Notation NotationFromSkeleton(const icu::UnicodeString& skeleton) {
return Notation::COMPACT;
}
// Ex: skeleton as
- // "measure-unit/length-foot .### rounding-mode-half-up"
+ // <ICU-68.1: "measure-unit/length-foot .### rounding-mode-half-up"
+ // >=ICU-68.1: "unit/length-foot .### rounding-mode-half-up"
return Notation::STANDARD;
}
@@ -562,14 +566,23 @@ namespace {
// Ex: percent .### rounding-mode-half-up
// Special case for "percent"
-// Ex: "measure-unit/length-kilometer per-measure-unit/duration-hour .###
-// rounding-mode-half-up" should return "kilometer-per-unit".
-// Ex: "measure-unit/duration-year .### rounding-mode-half-up" should return
-// "year".
+// <ICU-68.1:
+// Ex: "measure-unit/length-kilometer per-measure-unit/duration-hour .###
+// rounding-mode-half-up" should return "kilometer-per-unit".
+// Ex: "measure-unit/duration-year .### rounding-mode-half-up" should return
+// >=ICU-68.1:
+// Ex: "unit/milliliter-per-acre .### rounding-mode-half-up"
+// should return "milliliter-per-acre".
+// Ex: "unit/year .### rounding-mode-half-up" should return
+// "year".
std::string UnitFromSkeleton(const icu::UnicodeString& skeleton) {
std::string str;
str = skeleton.toUTF8String<std::string>(str);
+#if U_ICU_VERSION_MAJOR_NUM < 68
std::string search("measure-unit/");
+#else
+ std::string search("unit/");
+#endif
size_t begin = str.find(search);
if (begin == str.npos) {
// Special case for "percent".
@@ -578,20 +591,41 @@ std::string UnitFromSkeleton(const icu::UnicodeString& skeleton) {
}
return "";
}
+#if U_ICU_VERSION_MAJOR_NUM < 68
// Skip the type (ex: "length").
// "measure-unit/length-kilometer per-measure-unit/duration-hour"
// b
begin = str.find("-", begin + search.size());
+#else
+ // Ex:
+ // "unit/acre .### rounding-mode-half-up"
+ // b
+ // Ex:
+ // "unit/milliliter-per-acre .### rounding-mode-half-up"
+ // b
+ begin += search.size();
+#endif
if (begin == str.npos) {
return "";
}
+#if U_ICU_VERSION_MAJOR_NUM < 68
begin++; // Skip the '-'.
+#endif
// Find the end of the subtype.
size_t end = str.find(" ", begin);
- // "measure-unit/length-kilometer per-measure-unit/duration-hour"
- // b e
+ // <ICU-68.1:
+ // "measure-unit/length-kilometer per-measure-unit/duration-hour"
+ // b e
+ // >=ICU-68.1:
+ // Ex:
+ // "unit/acre .### rounding-mode-half-up"
+ // b e
+ // Ex:
+ // "unit/milliliter-per-acre .### rounding-mode-half-up"
+ // b e
if (end == str.npos) {
end = str.size();
+#if U_ICU_VERSION_MAJOR_NUM < 68
return str.substr(begin, end - begin);
}
// "measure-unit/length-kilometer per-measure-unit/duration-hour"
@@ -625,17 +659,36 @@ std::string UnitFromSkeleton(const icu::UnicodeString& skeleton) {
// "measure-unit/length-kilometer per-measure-unit/duration-hour"
// [result ] b e
return result + "-per-" + str.substr(begin, end - begin);
+#else
+ }
+ return str.substr(begin, end - begin);
+#endif
}
Style StyleFromSkeleton(const icu::UnicodeString& skeleton) {
if (skeleton.indexOf("currency/") >= 0) {
return Style::CURRENCY;
}
+#if U_ICU_VERSION_MAJOR_NUM < 68
if (skeleton.indexOf("measure-unit/") >= 0) {
if (skeleton.indexOf("scale/100") >= 0 &&
skeleton.indexOf("measure-unit/concentr-percent") >= 0) {
+#else
+ if (skeleton.indexOf("percent") >= 0) {
+ // percent precision-integer rounding-mode-half-up scale/100
+ if (skeleton.indexOf("scale/100") >= 0) {
+#endif
return Style::PERCENT;
+#if U_ICU_VERSION_MAJOR_NUM >= 68
+ } else {
+ return Style::UNIT;
+#endif
}
+#if U_ICU_VERSION_MAJOR_NUM >= 68
+ }
+ // Before ICU68: "measure-unit/", since ICU68 "unit/"
+ if (skeleton.indexOf("unit/") >= 0) {
+#endif
return Style::UNIT;
}
return Style::DECIMAL;
diff --git a/src/objects/js-relative-time-format.cc b/src/objects/js-relative-time-format.cc
index 267343aaae..64d56a1c12 100644
--- a/src/objects/js-relative-time-format.cc
+++ b/src/objects/js-relative-time-format.cc
@@ -195,9 +195,18 @@ MaybeHandle<JSRelativeTimeFormat> JSRelativeTimeFormat::New(
}
}
+#if U_ICU_VERSION_MAJOR_NUM < 68
icu::DecimalFormat* decimal_format =
static_cast<icu::DecimalFormat*>(number_format);
decimal_format->setMinimumGroupingDigits(-2);
+#else
+ if (number_format->getDynamicClassID() ==
+ icu::DecimalFormat::getStaticClassID()) {
+ icu::DecimalFormat* decimal_format =
+ static_cast<icu::DecimalFormat*>(number_format);
+ decimal_format->setMinimumGroupingDigits(-2);
+ }
+#endif
// Change UDISPCTX_CAPITALIZATION_NONE to other values if
// ECMA402 later include option to change capitalization.

View File

@ -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/src/ports/SkFontHost_FreeType.cpp
+++ b/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() {

View File

@ -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

View File

@ -0,0 +1,11 @@
--- chromium-92.0.4515.107/base/compiler_specific.h.orig 2021-07-25 22:15:52.001031942 +0200
+++ chromium-92.0.4515.107/base/compiler_specific.h 2021-07-25 22:16:50.264104515 +0200
@@ -340,7 +340,7 @@
#endif // defined(__clang_analyzer__)
// Use nomerge attribute to disable optimization of merging multiple same calls.
-#if defined(__clang__) && __has_attribute(nomerge)
+#if defined(__clang__) && (__clang_major__ >= 12) && __has_attribute(nomerge)
#define NOMERGE [[clang::nomerge]]
#else
#define NOMERGE

View File

@ -0,0 +1,35 @@
From e48f18eba0eae199ba7bc8a6a09ebf39799447c1 Mon Sep 17 00:00:00 2001
From: Ted Meyer <tmathmeyer@chromium.org>
Date: Wed, 2 Jun 2021 05:35:22 +0000
Subject: [PATCH] Extend enable-accelerated-video-decode flag for linux to m93
It appears that there is insistence that the flag be totally removed or
have its end-milestone increased, I can't just let it wait until the
feature is working again and then re-enable it. So i've moved it to 93.
R=dalecurtis
Fixed: 1207478
Change-Id: I26a5e790cd390825516b4a4b6af88e89b2d4f4eb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2918478
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Ted Meyer <tmathmeyer@chromium.org>
Commit-Queue: Ted Meyer <tmathmeyer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#888312}
---
chrome/browser/flag-metadata.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 67e0330436..34542671f2 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -1193,7 +1193,7 @@
{
"name": "enable-accelerated-video-decode",
"owners": [ "media-dev@chromium.org" ],
- "expiry_milestone": 90
+ "expiry_milestone": 93
},
{
"name": "enable-accessibility-live-caption",

View File

@ -0,0 +1,348 @@
From 60d5e803ef2a4874d29799b638754152285e0ed9 Mon Sep 17 00:00:00 2001
From: Matthew Denton <mpdenton@chromium.org>
Date: Wed, 21 Jul 2021 12:55:11 +0000
Subject: [PATCH] Linux sandbox: fix fstatat() crash
This is a reland of https://crrev.com/c/2801873.
Glibc has started rewriting fstat(fd, stat_buf) to
fstatat(fd, "", stat_buf, AT_EMPTY_PATH). This works because when
AT_EMPTY_PATH is specified, and the second argument is an empty string,
then fstatat just performs an fstat on fd like normal.
Unfortunately, fstatat() also allows stat-ing arbitrary pathnames like
with fstatat(AT_FDCWD, "/i/am/a/file", stat_buf, 0);
The baseline policy needs to prevent this usage of fstatat() since it
doesn't allow access to arbitrary pathnames.
Sadly, if the second argument is not an empty string, AT_EMPTY_PATH is
simply ignored by current kernels.
This means fstatat() is completely unsandboxable with seccomp, since
we *need* to verify that the second argument is the empty string, but
we can't dereference pointers in seccomp (due to limitations of BPF,
and the difficulty of addressing these limitations due to TOCTOU
issues).
So, this CL Traps (raises a SIGSYS via seccomp) on any fstatat syscall.
The signal handler, which runs in the sandboxed process, checks for
AT_EMPTY_PATH and the empty string, and then rewrites any applicable
fstatat() back into the old-style fstat().
Bug: 1164975
Change-Id: I3df6c04c0d781eb1f181d707ccaaead779337291
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3042179
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#903873}
---
.../seccomp-bpf-helpers/baseline_policy.cc | 8 ++++++
.../baseline_policy_unittest.cc | 17 ++++++++++++-
.../seccomp-bpf-helpers/sigsys_handlers.cc | 25 +++++++++++++++++++
.../seccomp-bpf-helpers/sigsys_handlers.h | 14 +++++++++++
.../linux/syscall_broker/broker_process.cc | 21 ++++++++++------
.../syscall_broker/broker_process_unittest.cc | 18 ++++++-------
sandbox/linux/system_headers/linux_stat.h | 4 +++
7 files changed, 89 insertions(+), 18 deletions(-)
diff --git a/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc b/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
index f2a60bb4d7..9df0d2dbd3 100644
--- a/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
+++ b/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
@@ -20,6 +20,7 @@
#include "sandbox/linux/seccomp-bpf-helpers/syscall_sets.h"
#include "sandbox/linux/seccomp-bpf/sandbox_bpf.h"
#include "sandbox/linux/services/syscall_wrappers.h"
+#include "sandbox/linux/system_headers/linux_stat.h"
#include "sandbox/linux/system_headers/linux_syscalls.h"
#if !defined(SO_PEEK_OFF)
@@ -304,6 +305,13 @@ ResultExpr EvaluateSyscallImpl(int fs_denied_errno,
return Allow();
}
+ // The fstatat syscalls are file system syscalls, which will be denied below
+ // with fs_denied_errno. However some allowed fstat syscalls are rewritten by
+ // libc implementations to fstatat syscalls, and we need to rewrite them back.
+ if (sysno == __NR_fstatat_default) {
+ return RewriteFstatatSIGSYS(fs_denied_errno);
+ }
+
if (SyscallSets::IsFileSystem(sysno) ||
SyscallSets::IsCurrentDirectory(sysno)) {
return Error(fs_denied_errno);
diff --git a/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc b/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc
index 68c29b564b..57d307e09d 100644
--- a/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc
+++ b/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc
@@ -51,7 +51,8 @@ namespace sandbox {
namespace {
-// This also tests that read(), write() and fstat() are allowed.
+// This also tests that read(), write(), fstat(), and fstatat(.., "", ..,
+// AT_EMPTY_PATH) are allowed.
void TestPipeOrSocketPair(base::ScopedFD read_end, base::ScopedFD write_end) {
BPF_ASSERT_LE(0, read_end.get());
BPF_ASSERT_LE(0, write_end.get());
@@ -60,6 +61,20 @@ void TestPipeOrSocketPair(base::ScopedFD read_end, base::ScopedFD write_end) {
BPF_ASSERT_EQ(0, sys_ret);
BPF_ASSERT(S_ISFIFO(stat_buf.st_mode) || S_ISSOCK(stat_buf.st_mode));
+ sys_ret = fstatat(read_end.get(), "", &stat_buf, AT_EMPTY_PATH);
+ BPF_ASSERT_EQ(0, sys_ret);
+ BPF_ASSERT(S_ISFIFO(stat_buf.st_mode) || S_ISSOCK(stat_buf.st_mode));
+
+ // Make sure fstatat with anything other than an empty string is denied.
+ sys_ret = fstatat(read_end.get(), "/", &stat_buf, AT_EMPTY_PATH);
+ BPF_ASSERT_EQ(sys_ret, -1);
+ BPF_ASSERT_EQ(EPERM, errno);
+
+ // Make sure fstatat without AT_EMPTY_PATH is denied.
+ sys_ret = fstatat(read_end.get(), "", &stat_buf, 0);
+ BPF_ASSERT_EQ(sys_ret, -1);
+ BPF_ASSERT_EQ(EPERM, errno);
+
const ssize_t kTestTransferSize = 4;
static const char kTestString[kTestTransferSize] = {'T', 'E', 'S', 'T'};
ssize_t transfered = 0;
diff --git a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
index 64edbd68bd..71068a0452 100644
--- a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
+++ b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
@@ -6,6 +6,7 @@
#include "sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h"
+#include <fcntl.h>
#include <stddef.h>
#include <stdint.h>
#include <string.h>
@@ -22,6 +23,7 @@
#include "sandbox/linux/seccomp-bpf/syscall.h"
#include "sandbox/linux/services/syscall_wrappers.h"
#include "sandbox/linux/system_headers/linux_seccomp.h"
+#include "sandbox/linux/system_headers/linux_stat.h"
#include "sandbox/linux/system_headers/linux_syscalls.h"
#if defined(__mips__)
@@ -355,6 +357,24 @@ intptr_t SIGSYSSchedHandler(const struct arch_seccomp_data& args,
return -ENOSYS;
}
+intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args,
+ void* fs_denied_errno) {
+ if (args.nr == __NR_fstatat_default) {
+ if (*reinterpret_cast<const char*>(args.args[1]) == '\0' &&
+ args.args[3] == static_cast<uint64_t>(AT_EMPTY_PATH)) {
+ return syscall(__NR_fstat_default, static_cast<int>(args.args[0]),
+ reinterpret_cast<default_stat_struct*>(args.args[2]));
+ }
+ return -reinterpret_cast<intptr_t>(fs_denied_errno);
+ }
+
+ CrashSIGSYS_Handler(args, fs_denied_errno);
+
+ // Should never be reached.
+ RAW_CHECK(false);
+ return -ENOSYS;
+}
+
bpf_dsl::ResultExpr CrashSIGSYS() {
return bpf_dsl::Trap(CrashSIGSYS_Handler, NULL);
}
@@ -387,6 +407,11 @@ bpf_dsl::ResultExpr RewriteSchedSIGSYS() {
return bpf_dsl::Trap(SIGSYSSchedHandler, NULL);
}
+bpf_dsl::ResultExpr RewriteFstatatSIGSYS(int fs_denied_errno) {
+ return bpf_dsl::Trap(SIGSYSFstatatHandler,
+ reinterpret_cast<void*>(fs_denied_errno));
+}
+
void AllocateCrashKeys() {
#if !defined(OS_NACL_NONSFI)
if (seccomp_crash_key)
diff --git a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h
index 7a958b93b2..8cd735ce15 100644
--- a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h
+++ b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h
@@ -62,6 +62,19 @@ SANDBOX_EXPORT intptr_t SIGSYSPtraceFailure(const arch_seccomp_data& args,
// sched_setparam(), sched_setscheduler()
SANDBOX_EXPORT intptr_t SIGSYSSchedHandler(const arch_seccomp_data& args,
void* aux);
+// If the fstatat() syscall is functionally equivalent to an fstat() syscall,
+// then rewrite the syscall to the equivalent fstat() syscall which can be
+// adequately sandboxed.
+// If the fstatat() is not functionally equivalent to an fstat() syscall, we
+// fail with -fs_denied_errno.
+// If the syscall is not an fstatat() at all, crash in the same way as
+// CrashSIGSYS_Handler.
+// This is necessary because glibc and musl have started rewriting fstat(fd,
+// stat_buf) as fstatat(fd, "", stat_buf, AT_EMPTY_PATH). We rewrite the latter
+// back to the former, which is actually sandboxable.
+SANDBOX_EXPORT intptr_t
+SIGSYSFstatatHandler(const struct arch_seccomp_data& args,
+ void* fs_denied_errno);
// Variants of the above functions for use with bpf_dsl.
SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYS();
@@ -72,6 +85,7 @@ SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSKill();
SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSFutex();
SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSPtrace();
SANDBOX_EXPORT bpf_dsl::ResultExpr RewriteSchedSIGSYS();
+SANDBOX_EXPORT bpf_dsl::ResultExpr RewriteFstatatSIGSYS(int fs_denied_errno);
// Allocates a crash key so that Seccomp information can be recorded.
void AllocateCrashKeys();
diff --git a/sandbox/linux/syscall_broker/broker_process.cc b/sandbox/linux/syscall_broker/broker_process.cc
index c2176eb785..e9dad37485 100644
--- a/sandbox/linux/syscall_broker/broker_process.cc
+++ b/sandbox/linux/syscall_broker/broker_process.cc
@@ -113,44 +113,49 @@ bool BrokerProcess::IsSyscallAllowed(int sysno) const {
}
bool BrokerProcess::IsSyscallBrokerable(int sysno, bool fast_check) const {
+ // The syscalls unavailable on aarch64 are all blocked by Android's default
+ // seccomp policy, even on non-aarch64 architectures. I.e., the syscalls XX()
+ // with a corresponding XXat() versions are typically unavailable in aarch64
+ // and are default disabled in Android. So, we should refuse to broker them
+ // to be consistent with the platform's restrictions.
switch (sysno) {
-#if !defined(__aarch64__)
+#if !defined(__aarch64__) && !defined(OS_ANDROID)
case __NR_access:
#endif
case __NR_faccessat:
return !fast_check || allowed_command_set_.test(COMMAND_ACCESS);
-#if !defined(__aarch64__)
+#if !defined(__aarch64__) && !defined(OS_ANDROID)
case __NR_mkdir:
#endif
case __NR_mkdirat:
return !fast_check || allowed_command_set_.test(COMMAND_MKDIR);
-#if !defined(__aarch64__)
+#if !defined(__aarch64__) && !defined(OS_ANDROID)
case __NR_open:
#endif
case __NR_openat:
return !fast_check || allowed_command_set_.test(COMMAND_OPEN);
-#if !defined(__aarch64__)
+#if !defined(__aarch64__) && !defined(OS_ANDROID)
case __NR_readlink:
#endif
case __NR_readlinkat:
return !fast_check || allowed_command_set_.test(COMMAND_READLINK);
-#if !defined(__aarch64__)
+#if !defined(__aarch64__) && !defined(OS_ANDROID)
case __NR_rename:
#endif
case __NR_renameat:
case __NR_renameat2:
return !fast_check || allowed_command_set_.test(COMMAND_RENAME);
-#if !defined(__aarch64__)
+#if !defined(__aarch64__) && !defined(OS_ANDROID)
case __NR_rmdir:
return !fast_check || allowed_command_set_.test(COMMAND_RMDIR);
#endif
-#if !defined(__aarch64__)
+#if !defined(__aarch64__) && !defined(OS_ANDROID)
case __NR_stat:
case __NR_lstat:
#endif
@@ -175,7 +180,7 @@ bool BrokerProcess::IsSyscallBrokerable(int sysno, bool fast_check) const {
return !fast_check || allowed_command_set_.test(COMMAND_STAT);
#endif
-#if !defined(__aarch64__)
+#if !defined(__aarch64__) && !defined(OS_ANDROID)
case __NR_unlink:
return !fast_check || allowed_command_set_.test(COMMAND_UNLINK);
#endif
diff --git a/sandbox/linux/syscall_broker/broker_process_unittest.cc b/sandbox/linux/syscall_broker/broker_process_unittest.cc
index c65f25a78a..f0db08d84e 100644
--- a/sandbox/linux/syscall_broker/broker_process_unittest.cc
+++ b/sandbox/linux/syscall_broker/broker_process_unittest.cc
@@ -1596,52 +1596,52 @@ TEST(BrokerProcess, IsSyscallAllowed) {
const base::flat_map<BrokerCommand, base::flat_set<int>> kSysnosForCommand = {
{COMMAND_ACCESS,
{__NR_faccessat,
-#if defined(__NR_access)
+#if defined(__NR_access) && !defined(OS_ANDROID)
__NR_access
#endif
}},
{COMMAND_MKDIR,
{__NR_mkdirat,
-#if defined(__NR_mkdir)
+#if defined(__NR_mkdir) && !defined(OS_ANDROID)
__NR_mkdir
#endif
}},
{COMMAND_OPEN,
{__NR_openat,
-#if defined(__NR_open)
+#if defined(__NR_open) && !defined(OS_ANDROID)
__NR_open
#endif
}},
{COMMAND_READLINK,
{__NR_readlinkat,
-#if defined(__NR_readlink)
+#if defined(__NR_readlink) && !defined(OS_ANDROID)
__NR_readlink
#endif
}},
{COMMAND_RENAME,
{__NR_renameat,
-#if defined(__NR_rename)
+#if defined(__NR_rename) && !defined(OS_ANDROID)
__NR_rename
#endif
}},
{COMMAND_UNLINK,
{__NR_unlinkat,
-#if defined(__NR_unlink)
+#if defined(__NR_unlink) && !defined(OS_ANDROID)
__NR_unlink
#endif
}},
{COMMAND_RMDIR,
{__NR_unlinkat,
-#if defined(__NR_rmdir)
+#if defined(__NR_rmdir) && !defined(OS_ANDROID)
__NR_rmdir
#endif
}},
{COMMAND_STAT,
{
-#if defined(__NR_stat)
+#if defined(__NR_stat) && !defined(OS_ANDROID)
__NR_stat,
#endif
-#if defined(__NR_lstat)
+#if defined(__NR_lstat) && !defined(OS_ANDROID)
__NR_lstat,
#endif
#if defined(__NR_fstatat)
diff --git a/sandbox/linux/system_headers/linux_stat.h b/sandbox/linux/system_headers/linux_stat.h
index 35788eb22a..83b89efc75 100644
--- a/sandbox/linux/system_headers/linux_stat.h
+++ b/sandbox/linux/system_headers/linux_stat.h
@@ -157,6 +157,10 @@ struct kernel_stat {
};
#endif
+#if !defined(AT_EMPTY_PATH)
+#define AT_EMPTY_PATH 0x1000
+#endif
+
// On 32-bit systems, we default to the 64-bit stat struct like libc
// implementations do. Otherwise we default to the normal stat struct which is
// already 64-bit.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,49 @@
From 61e16c92ff24bb71b9b7309a9d6d470ee91738bc Mon Sep 17 00:00:00 2001
From: Bartek Nowierski <bartekn@chromium.org>
Date: Wed, 21 Jul 2021 15:01:38 +0000
Subject: [PATCH] [PA] Make GetUsableSize() handle nullptr gracefully
malloc_usable_size() is expected to not crush on NULL and return 0.
Bug: 1221442
Change-Id: I6a3b90dcf3a8ad18114c206d87b98f60d5f50eb1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3042177
Commit-Queue: Bartek Nowierski <bartekn@chromium.org>
Commit-Queue: Kentaro Hara <haraken@chromium.org>
Auto-Submit: Bartek Nowierski <bartekn@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#903900}
---
.../allocator/partition_allocator/partition_alloc_unittest.cc | 4 ++++
base/allocator/partition_allocator/partition_root.h | 3 +++
2 files changed, 7 insertions(+)
diff --git a/base/allocator/partition_allocator/partition_alloc_unittest.cc b/base/allocator/partition_allocator/partition_alloc_unittest.cc
index c12120114aa7..8863984cd805 100644
--- a/base/allocator/partition_allocator/partition_alloc_unittest.cc
+++ b/base/allocator/partition_allocator/partition_alloc_unittest.cc
@@ -2838,6 +2838,10 @@ TEST_F(PartitionAllocTest, OptimizedGetSlotNumber) {
}
}
+TEST_F(PartitionAllocTest, GetUsableSizeNull) {
+ EXPECT_EQ(0ULL, PartitionRoot<ThreadSafe>::GetUsableSize(nullptr));
+}
+
TEST_F(PartitionAllocTest, GetUsableSize) {
size_t delta = SystemPageSize() + 1;
for (size_t size = 1; size <= kMinDirectMappedDownsize; size += delta) {
diff --git a/base/allocator/partition_allocator/partition_root.h b/base/allocator/partition_allocator/partition_root.h
index b72a1d94a4e4..baac952597d1 100644
--- a/base/allocator/partition_allocator/partition_root.h
+++ b/base/allocator/partition_allocator/partition_root.h
@@ -1220,6 +1220,9 @@ ALWAYS_INLINE bool PartitionRoot<thread_safe>::TryRecommitSystemPagesForData(
// PartitionAlloc's internal data. Used as malloc_usable_size.
template <bool thread_safe>
ALWAYS_INLINE size_t PartitionRoot<thread_safe>::GetUsableSize(void* ptr) {
+ // malloc_usable_size() is expected to handle NULL gracefully and return 0.
+ if (!ptr)
+ return 0;
auto* slot_span = SlotSpan::FromSlotInnerPtr(ptr);
auto* root = FromSlotSpan(slot_span);
return slot_span->GetUsableSize(root);

View File

@ -0,0 +1,238 @@
From 80368f8ba7a8bab13440463a254888311efe3986 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
Date: Tue, 4 May 2021 15:00:19 +0000
Subject: [PATCH] sql: make VirtualCursor standard layout type
sql::recover::VirtualCursor needs to be a standard layout type, but
has members of type std::unique_ptr. However, std::unique_ptr is not
guaranteed to be standard layout. Compiling with clang combined with
gcc-11 libstdc++ fails because of this. Replace std::unique_ptr with
raw pointers.
Bug: 1189788
Change-Id: Ia6dc388cc5ef1c0f2afc75f8ca45b9f12687ca9c
---
sql/recover_module/btree.cc | 21 +++++++++++++++------
sql/recover_module/btree.h | 17 +++++++++++++----
sql/recover_module/cursor.cc | 24 ++++++++++++------------
sql/recover_module/cursor.h | 2 +-
sql/recover_module/pager.cc | 7 +++----
sql/recover_module/pager.h | 5 +++--
6 files changed, 47 insertions(+), 29 deletions(-)
diff --git a/sql/recover_module/btree.cc b/sql/recover_module/btree.cc
index 9ecaafe8a3..839318abf9 100644
--- a/sql/recover_module/btree.cc
+++ b/sql/recover_module/btree.cc
@@ -135,16 +135,25 @@ static_assert(std::is_trivially_destructible<LeafPageDecoder>::value,
"Move the destructor to the .cc file if it's non-trival");
#endif // !DCHECK_IS_ON()
-LeafPageDecoder::LeafPageDecoder(DatabasePageReader* db_reader) noexcept
- : page_id_(db_reader->page_id()),
- db_reader_(db_reader),
- cell_count_(ComputeCellCount(db_reader)),
- next_read_index_(0),
- last_record_size_(0) {
+void LeafPageDecoder::Initialize(DatabasePageReader* db_reader) {
+ DCHECK(db_reader);
DCHECK(IsOnValidPage(db_reader));
+ page_id_ = db_reader->page_id();
+ db_reader_ = db_reader;
+ cell_count_ = ComputeCellCount(db_reader);
+ next_read_index_ = 0;
+ last_record_size_ = 0;
DCHECK(DatabasePageReader::IsValidPageId(page_id_));
}
+void LeafPageDecoder::Reset() {
+ db_reader_ = nullptr;
+ page_id_ = 0;
+ cell_count_ = 0;
+ next_read_index_ = 0;
+ last_record_size_ = 0;
+}
+
bool LeafPageDecoder::TryAdvance() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(CanAdvance());
diff --git a/sql/recover_module/btree.h b/sql/recover_module/btree.h
index d76d076bf6..33114b01fa 100644
--- a/sql/recover_module/btree.h
+++ b/sql/recover_module/btree.h
@@ -102,7 +102,7 @@ class LeafPageDecoder {
//
// |db_reader| must have been used to read an inner page of a table B-tree.
// |db_reader| must outlive this instance.
- explicit LeafPageDecoder(DatabasePageReader* db_reader) noexcept;
+ explicit LeafPageDecoder() noexcept = default;
~LeafPageDecoder() noexcept = default;
LeafPageDecoder(const LeafPageDecoder&) = delete;
@@ -150,6 +150,15 @@ class LeafPageDecoder {
// read as long as CanAdvance() returns true.
bool TryAdvance();
+ // Initialize with DatabasePageReader
+ void Initialize(DatabasePageReader* db_reader);
+
+ // Reset internal DatabasePageReader
+ void Reset();
+
+ // True if DatabasePageReader is valid
+ bool IsValid() { return (db_reader_ != nullptr); }
+
// True if the given reader may point to an inner page in a table B-tree.
//
// The last ReadPage() call on |db_reader| must have succeeded.
@@ -163,14 +172,14 @@ class LeafPageDecoder {
static int ComputeCellCount(DatabasePageReader* db_reader);
// The number of the B-tree page this reader is reading.
- const int64_t page_id_;
+ int64_t page_id_;
// Used to read the tree page.
//
// Raw pointer usage is acceptable because this instance's owner is expected
// to ensure that the DatabasePageReader outlives this.
- DatabasePageReader* const db_reader_;
+ DatabasePageReader* db_reader_;
// Caches the ComputeCellCount() value for this reader's page.
- const int cell_count_ = ComputeCellCount(db_reader_);
+ int cell_count_;
// The reader's cursor state.
//
diff --git a/sql/recover_module/cursor.cc b/sql/recover_module/cursor.cc
index 0029ff9295..42548bc4b5 100644
--- a/sql/recover_module/cursor.cc
+++ b/sql/recover_module/cursor.cc
@@ -26,7 +26,7 @@ VirtualCursor::~VirtualCursor() {
int VirtualCursor::First() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
inner_decoders_.clear();
- leaf_decoder_ = nullptr;
+ leaf_decoder_.Reset();
AppendPageDecoder(table_->root_page_id());
return Next();
@@ -36,18 +36,18 @@ int VirtualCursor::Next() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
record_reader_.Reset();
- while (!inner_decoders_.empty() || leaf_decoder_.get()) {
- if (leaf_decoder_.get()) {
- if (!leaf_decoder_->CanAdvance()) {
+ while (!inner_decoders_.empty() || leaf_decoder_.IsValid()) {
+ if (leaf_decoder_.IsValid()) {
+ if (!leaf_decoder_.CanAdvance()) {
// The leaf has been exhausted. Remove it from the DFS stack.
- leaf_decoder_ = nullptr;
+ leaf_decoder_.Reset();
continue;
}
- if (!leaf_decoder_->TryAdvance())
+ if (!leaf_decoder_.TryAdvance())
continue;
- if (!payload_reader_.Initialize(leaf_decoder_->last_record_size(),
- leaf_decoder_->last_record_offset())) {
+ if (!payload_reader_.Initialize(leaf_decoder_.last_record_size(),
+ leaf_decoder_.last_record_offset())) {
continue;
}
if (!record_reader_.Initialize())
@@ -99,13 +99,13 @@ int VirtualCursor::ReadColumn(int column_index,
int64_t VirtualCursor::RowId() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(record_reader_.IsInitialized());
- DCHECK(leaf_decoder_.get());
- return leaf_decoder_->last_record_rowid();
+ DCHECK(leaf_decoder_.IsValid());
+ return leaf_decoder_.last_record_rowid();
}
void VirtualCursor::AppendPageDecoder(int page_id) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- DCHECK(leaf_decoder_.get() == nullptr)
+ DCHECK(!leaf_decoder_.IsValid())
<< __func__
<< " must only be called when the current path has no leaf decoder";
@@ -113,7 +113,7 @@ void VirtualCursor::AppendPageDecoder(int page_id) {
return;
if (LeafPageDecoder::IsOnValidPage(&db_reader_)) {
- leaf_decoder_ = std::make_unique<LeafPageDecoder>(&db_reader_);
+ leaf_decoder_.Initialize(&db_reader_);
return;
}
diff --git a/sql/recover_module/cursor.h b/sql/recover_module/cursor.h
index afcd6900e1..b15c31d425 100644
--- a/sql/recover_module/cursor.h
+++ b/sql/recover_module/cursor.h
@@ -129,7 +129,7 @@ class VirtualCursor {
std::vector<std::unique_ptr<InnerPageDecoder>> inner_decoders_;
// Decodes the leaf page containing records.
- std::unique_ptr<LeafPageDecoder> leaf_decoder_;
+ LeafPageDecoder leaf_decoder_;
SEQUENCE_CHECKER(sequence_checker_);
};
diff --git a/sql/recover_module/pager.cc b/sql/recover_module/pager.cc
index 58e75de270..5fe96204e5 100644
--- a/sql/recover_module/pager.cc
+++ b/sql/recover_module/pager.cc
@@ -23,8 +23,7 @@ static_assert(DatabasePageReader::kMaxPageId <= std::numeric_limits<int>::max(),
"ints are not appropriate for representing page IDs");
DatabasePageReader::DatabasePageReader(VirtualTable* table)
- : page_data_(std::make_unique<uint8_t[]>(table->page_size())),
- table_(table) {
+ : page_data_(), table_(table) {
DCHECK(table != nullptr);
DCHECK(IsValidPageSize(table->page_size()));
}
@@ -57,8 +56,8 @@ int DatabasePageReader::ReadPage(int page_id) {
std::numeric_limits<int64_t>::max(),
"The |read_offset| computation above may overflow");
- int sqlite_status =
- RawRead(sqlite_file, read_size, read_offset, page_data_.get());
+ int sqlite_status = RawRead(sqlite_file, read_size, read_offset,
+ const_cast<uint8_t*>(page_data_.data()));
// |page_id_| needs to be set to kInvalidPageId if the read failed.
// Otherwise, future ReadPage() calls with the previous |page_id_| value
diff --git a/sql/recover_module/pager.h b/sql/recover_module/pager.h
index 0e388ddc3b..99314e30ff 100644
--- a/sql/recover_module/pager.h
+++ b/sql/recover_module/pager.h
@@ -5,6 +5,7 @@
#ifndef SQL_RECOVER_MODULE_PAGER_H_
#define SQL_RECOVER_MODULE_PAGER_H_
+#include <array>
#include <cstdint>
#include <memory>
@@ -70,7 +71,7 @@ class DatabasePageReader {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK_NE(page_id_, kInvalidPageId)
<< "Successful ReadPage() required before accessing pager state";
- return page_data_.get();
+ return page_data_.data();
}
// The number of bytes in the page read by the last ReadPage() call.
@@ -137,7 +138,7 @@ class DatabasePageReader {
int page_id_ = kInvalidPageId;
// Stores the bytes of the last page successfully read by ReadPage().
// The content is undefined if the last call to ReadPage() did not succeed.
- const std::unique_ptr<uint8_t[]> page_data_;
+ const std::array<uint8_t, kMaxPageSize> page_data_;
// Raw pointer usage is acceptable because this instance's owner is expected
// to ensure that the VirtualTable outlives this.
VirtualTable* const table_;

View File

@ -0,0 +1,11 @@
--- chromium-92.0.4515.131/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc.orig 2021-08-16 19:38:33.386147431 +0200
+++ chromium-92.0.4515.131/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc 2021-08-16 19:39:12.914789827 +0200
@@ -138,7 +138,7 @@
// SIGSTKSZ may be too small to prevent the signal handlers from overrunning
// the alternative stack. Ensure that the size of the alternative stack is
// large enough.
- static const unsigned kSigStackSize = std::max(16384, SIGSTKSZ);
+ static const unsigned kSigStackSize = std::max((long int)16384, SIGSTKSZ);
// Only set an alternative stack if there isn't already one, or if the current
// one is too small.

View File

@ -0,0 +1,50 @@
--- a/third_party/skia/src/ports/SkFontHost_FreeType_common.cpp
+++ b/third_party/skia/src/ports/SkFontHost_FreeType_common.cpp
@@ -712,7 +712,11 @@ void colrv1_draw_paint(SkCanvas* canvas,
canvas->drawPaint(colrPaint);
break;
}
+#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR >= 11
+ case FT_COLR_PAINTFORMAT_TRANSFORM:
+#else
case FT_COLR_PAINTFORMAT_TRANSFORMED:
+#endif
case FT_COLR_PAINTFORMAT_TRANSLATE:
case FT_COLR_PAINTFORMAT_ROTATE:
case FT_COLR_PAINTFORMAT_SKEW:
@@ -759,10 +763,17 @@ void colrv1_transform(SkCanvas* canvas, FT_Face face, FT_COLR_Paint colrv1_paint
SkMatrix transform;
switch (colrv1_paint.format) {
+#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR >= 11
+ case FT_COLR_PAINTFORMAT_TRANSFORM: {
+ transform = ToSkMatrix(colrv1_paint.u.transform.affine);
+ break;
+ }
+#else
case FT_COLR_PAINTFORMAT_TRANSFORMED: {
transform = ToSkMatrix(colrv1_paint.u.transformed.affine);
break;
}
+#endif
case FT_COLR_PAINTFORMAT_TRANSLATE: {
transform = SkMatrix::Translate(
SkFixedToScalar(colrv1_paint.u.translate.dx),
@@ -880,10 +891,17 @@ bool colrv1_traverse_paint(SkCanvas* canvas,
traverse_result = colrv1_start_glyph(canvas, palette, face, paint.u.colr_glyph.glyphID,
FT_COLOR_NO_ROOT_TRANSFORM);
break;
+#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR >= 11
+ case FT_COLR_PAINTFORMAT_TRANSFORM:
+ colrv1_transform(canvas, face, paint);
+ traverse_result = colrv1_traverse_paint(canvas, palette, face,
+ paint.u.transform.paint, visited_set);
+#else
case FT_COLR_PAINTFORMAT_TRANSFORMED:
colrv1_transform(canvas, face, paint);
traverse_result = colrv1_traverse_paint(canvas, palette, face,
paint.u.transformed.paint, visited_set);
+#endif
break;
case FT_COLR_PAINTFORMAT_TRANSLATE:
colrv1_transform(canvas, face, paint);

View File

@ -0,0 +1,26 @@
diff -up chromium-88.0.4324.182/third_party/swiftshader/src/OpenGL/libEGL/BUILD.gn.gcc-swiftshader-visibility chromium-88.0.4324.182/third_party/swiftshader/src/OpenGL/libEGL/BUILD.gn
--- chromium-88.0.4324.182/third_party/swiftshader/src/OpenGL/libEGL/BUILD.gn.gcc-swiftshader-visibility 2021-02-25 16:31:51.929335783 +0000
+++ chromium-88.0.4324.182/third_party/swiftshader/src/OpenGL/libEGL/BUILD.gn 2021-02-25 16:31:51.929335783 +0000
@@ -42,7 +42,8 @@ config("swiftshader_libEGL_private_confi
} else if (is_clang) {
defines += [ "EGLAPI=__attribute__((visibility(\"protected\"))) __attribute__((no_sanitize(\"function\")))" ]
} else {
- defines += [ "EGLAPI= " ]
+ cflags += [ "-fvisibility=protected" ]
+ defines += [ "EGLAPI=__attribute__((visibility(\"protected\")))" ]
}
}
}
diff -up chromium-88.0.4324.182/third_party/swiftshader/src/OpenGL/libGLESv2/BUILD.gn.gcc-swiftshader-visibility chromium-88.0.4324.182/third_party/swiftshader/src/OpenGL/libGLESv2/BUILD.gn
--- chromium-88.0.4324.182/third_party/swiftshader/src/OpenGL/libGLESv2/BUILD.gn.gcc-swiftshader-visibility 2021-02-25 18:16:28.576901417 +0000
+++ chromium-88.0.4324.182/third_party/swiftshader/src/OpenGL/libGLESv2/BUILD.gn 2021-02-25 18:17:50.356567690 +0000
@@ -57,7 +57,8 @@ config("swiftshader_libGLESv2_private_co
} else if (is_clang) {
defines += [ "GL_APICALL=__attribute__((visibility(\"protected\"))) __attribute__((no_sanitize(\"function\")))" ]
} else {
- defines += [ "GL_APICALL= " ]
+ cflags += [ "-fvisibility=protected" ]
+ defines += [ "GL_APICALL=__attribute__((visibility(\"protected\")))" ]
}
}
}

View File

@ -0,0 +1,11 @@
--- chromium-92.0.4515.131/sandbox/linux/services/credentials.cc.orig 2021-08-16 22:20:24.580175771 +0200
+++ chromium-92.0.4515.131/sandbox/linux/services/credentials.cc 2021-08-16 22:20:32.025287245 +0200
@@ -98,7 +98,7 @@
// attempt this optimization.
clone_flags |= CLONE_VM | CLONE_VFORK | CLONE_SETTLS;
- char tls_buf[PTHREAD_STACK_MIN] = {0};
+ char tls_buf[PTHREAD_STACK_MIN];
tls = tls_buf;
#endif

View File

@ -1,8 +1,8 @@
%define MAJver %(echo %version | cut -d. -f1) %define MAJver %(echo %version | cut -d. -f1)
%define gcc_patchset 3 %define gcc_patchset 7
Name: chromium Name: chromium
Epoch: 3 Epoch: 3
Version: 88.0.4324.150 Version: 92.0.4515.131
Release: 1mamba Release: 1mamba
Summary: An open-source browser project that aims to build a safer, faster, and more stable way to experience the web Summary: An open-source browser project that aims to build a safer, faster, and more stable way to experience the web
Group: Graphical Desktop/Applications/Internet Group: Graphical Desktop/Applications/Internet
@ -18,19 +18,22 @@ URL: https://www.chromium.org
Source: http://gsdview.appspot.com/chromium-browser-official/chromium-%{version}.tar.xz Source: http://gsdview.appspot.com/chromium-browser-official/chromium-%{version}.tar.xz
Source1: %{name}-master_preferences Source1: %{name}-master_preferences
Source2: https://github.com/stha09/chromium-patches/releases/download/chromium-%{MAJver}-patchset-%{gcc_patchset}/chromium-%{MAJver}-patchset-%{gcc_patchset}.tar.xz Source2: https://github.com/stha09/chromium-patches/releases/download/chromium-%{MAJver}-patchset-%{gcc_patchset}/chromium-%{MAJver}-patchset-%{gcc_patchset}.tar.xz
Patch19: chromium-37.0.2062.120-chrome-wrapper-pepper-flash.patch Patch1: chromium-37.0.2062.120-chrome-wrapper-pepper-flash.patch
Patch28: chromium-79.0.3945.79-widevine.patch Patch2: chromium-79.0.3945.79-widevine.patch
Patch38: chromium-76.0.3809.100-x86-openh264-add-fPIC.patch Patch3: chromium-76.0.3809.100-x86-openh264-add-fPIC.patch
Patch56: chromium-80.0.3987.122-x86-v8_context_snapsht-pic-error.patch Patch4: chromium-80.0.3987.122-x86-v8_context_snapsht-pic-error.patch
Patch66: chromium-83.0.4103.116-ffmpeg-4.3.patch Patch5: chromium-90.0.4430.212-glibc-2.33.patch
Patch67: chromium-84.0.4147.89-avoid-calling-DeleteForCurrentDocument-from-destructor.patch Patch6: chromium-92.0.4515.107-clang-11-nomerge.patch
Patch68: chromium-84.0.4147.89-force-mp3-files-to-have-a-start-time-of-zero.patch Patch7: chromium-90.0.4430.212-use-oauth2-client-switches-as-default.patch
Patch69: chromium-84.0.4147.89-remove-NotifyError-calls-and-just-send-a-normal-message.patch Patch8: chromium-92.0.4515.107-extend-enable-accelerated-video-decode-flag.patch
Patch70: chromium-87.0.4280.88-icu-68.patch Patch9: chromium-92.0.4515.107-linux-sandbox-syscall-broker-use-struct-kernel_stat.patch
Patch71: chromium-87.0.4280.88-v8-icu-68.patch Patch10: chromium-92.0.4515.107-linux-sandbox-fix-fstatat-crash.patch
Patch72: chromium-87.0.4280.88-missing-include-vector.patch Patch11: chromium-92.0.4515.107-make-GetUsableSize-handle-nullptr-gracefully.patch
Patch73: chromium-88.0.4324.150-glibc-2.33.patch Patch12: chromium-92.0.4515.107-sql-make-VirtualCursor-standard-layout-type.patch
Patch74: chromium-88.0.4324.150-subpixel-anti-aliasing-in-FreeType-2.8.1.patch Patch13: chromium-92.0.4515.131-breakpad-gcc-11.2.0.patch
Patch14: chromium-92.0.4515.131-sandbox-gcc-11.2.0.patch
Patch15: chromium-92.0.4515.131-freetype-2.11.patch
Patch16: chromium-92.0.4515.131-gcc-fix-swiftshader-libEGL-visibility.patch
License: BSD License: BSD
## AUTOBUILDREQ-BEGIN ## AUTOBUILDREQ-BEGIN
BuildRequires: glibc-devel BuildRequires: glibc-devel
@ -56,14 +59,12 @@ BuildRequires: libexpat-devel
BuildRequires: libflac-devel BuildRequires: libflac-devel
BuildRequires: libfontconfig-devel BuildRequires: libfontconfig-devel
BuildRequires: libfreetype-devel BuildRequires: libfreetype-devel
BuildRequires: libgbm-devel
BuildRequires: libgcc BuildRequires: libgcc
BuildRequires: libgdk-pixbuf-devel
BuildRequires: libglib-devel BuildRequires: libglib-devel
BuildRequires: libgtk-devel
BuildRequires: libharfbuzz-devel BuildRequires: libharfbuzz-devel
BuildRequires: libicu-devel BuildRequires: libicu-devel
BuildRequires: libjpeg-devel BuildRequires: libjpeg-devel
BuildRequires: libmesa-devel
BuildRequires: libminizip1-devel BuildRequires: libminizip1-devel
BuildRequires: libnspr-devel BuildRequires: libnspr-devel
BuildRequires: libnss-devel BuildRequires: libnss-devel
@ -78,6 +79,7 @@ BuildRequires: libwebp-devel
BuildRequires: libxcb-devel BuildRequires: libxcb-devel
BuildRequires: libxkbcommon-devel BuildRequires: libxkbcommon-devel
BuildRequires: libxml2-devel BuildRequires: libxml2-devel
BuildRequires: libxshmfence-devel
BuildRequires: libxslt-devel BuildRequires: libxslt-devel
BuildRequires: libz-devel BuildRequires: libz-devel
## AUTOBUILDREQ-END ## AUTOBUILDREQ-END
@ -94,7 +96,7 @@ BuildRequires: libXxf86vm-devel
BuildRequires: libkrb5-devel BuildRequires: libkrb5-devel
BuildRequires: libe2fs-devel BuildRequires: libe2fs-devel
BuildRequires: speech-dispatcher-devel >= 0.8-2mamba BuildRequires: speech-dispatcher-devel >= 0.8-2mamba
BuildRequires: python-markupsafe BuildRequires: python-markupsafe-py3
BuildRequires: libxshmfence-devel BuildRequires: libxshmfence-devel
BuildRequires: libkeyutils-devel BuildRequires: libkeyutils-devel
BuildRequires: libgnutls-devel BuildRequires: libgnutls-devel
@ -111,7 +113,6 @@ BuildRequires: compiler-rt
Requires(post): %{__install_info} Requires(post): %{__install_info}
Requires: xdg-utils Requires: xdg-utils
Requires: libvdpau-Mesa Requires: libvdpau-Mesa
BuildRoot: %{_tmppath}/%{name}-%{version}-root
# latest releases code version visible here: http://src.chromium.org/viewvc/chrome/releases/ # latest releases code version visible here: http://src.chromium.org/viewvc/chrome/releases/
# create release tarball with: (requires gclient from depot_tools) # create release tarball with: (requires gclient from depot_tools)
@ -125,66 +126,47 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-root
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all Internet users to experience the web. Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all Internet users to experience the web.
%prep %prep
%setup -q -a2 -D -T #% setup -q -a2
%setup -q -D -T
:<< ___EOF :<< ___EOF
%define _use_internal_dependency_generator 0 %global __provides_exclude_from ^%{_libdir}/chromium/.*$
%define __find_provides %{_builddir}/%{name}-%{version}/find_provides.sh
cat > %{_builddir}/%{name}-%{version}/find_provides.sh <<_EOF
#! /bin/sh
grep -v %{buildroot}%{_libdir}/chromium | \
%{_prefix}/lib/rpm/find-provides %{buildroot} %{_target_cpu}
_EOF
chmod +x %{_builddir}/%{name}-%{version}/find_provides.sh
%define __find_requires %{_builddir}/%{name}-%{version}/find_requires.sh
cat > %{_builddir}/%{name}-%{version}/find_requires.sh <<_EOF
#! /bin/sh
%{_prefix}/lib/rpm/find-requires %{buildroot} %{_target_cpu} 2>/dev/null |
while read line; do
echo "\$line"
done
_EOF
chmod +x %{_builddir}/%{name}-%{version}/find_requires.sh
# Allow building against system libraries in official builds # Allow building against system libraries in official builds
sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
tools/generate_shim_headers/generate_shim_headers.py tools/generate_shim_headers/generate_shim_headers.py
%patch19 -p1 #%patch1 -p1
%patch28 -p1 #%patch2 -p1
%ifarch %{ix86} %ifarch %{ix86}
%patch38 -p1 %patch3 -p1
%patch56 -p1 #%patch4 -p1
%endif %endif
#%patch70 -p1 #%patch5 -p1
#cd v8 %patch6 -p1
#%patch71 -p1 %patch7 -p1
#cd .. %patch8 -p1
#%patch72 -p1 %patch9 -p1
%patch73 -p1 %patch10 -p1
%patch74 -p1 -d third_party/skia #%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
# Fixes for building with libstdc++ instead of libc++ # Fixes for building with libstdc++ instead of libc++
#for f in patches/chromium-%{MAJver}-*.patch; do patch -Np1 -i patches/chromium-90-ruy-include.patch
#patch -p1 < $f
#done
patch -Np1 -i patches/chromium-87-openscreen-include.patch
patch -Np1 -i patches/chromium-88-CompositorFrameReporter-dcheck.patch
patch -Np1 -i patches/chromium-88-ideographicSpaceCharacter.patch
patch -Np1 -i patches/chromium-88-AXTreeFormatter-include.patch
# Allow building against system libraries in official builds # Force script incompatible with Python 3 to use /usr/bin/python2
sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ sed -i '1s|python$|&2|' third_party/dom_distiller_js/protoc_plugins/*.py
tools/generate_shim_headers/generate_shim_headers.py
# Remove compiler flags not supported by our system clang # Remove compiler flags not supported by our system clang
sed -i \ sed -i \
-e '/"-Wno-defaulted-function-deleted"/d' \ -e '/"-Wno-defaulted-function-deleted"/d' \
build/config/compiler/BUILD.gn build/config/compiler/BUILD.gn
# Use Python 2 ## Use Python 2
find . -name '*.py' -exec sed -i -r 's|/usr/bin/python$|&2|g' {} + #find . -name '*.py' -exec sed -i -r 's|/usr/bin/python$|&2|g' {} +
# https://crbug.com/893950 # https://crbug.com/893950
sed -i -e 's/\<xmlMalloc\>/malloc/' -e 's/\<xmlFree\>/free/' \ sed -i -e 's/\<xmlMalloc\>/malloc/' -e 's/\<xmlFree\>/free/' \
@ -192,9 +174,9 @@ sed -i -e 's/\<xmlMalloc\>/malloc/' -e 's/\<xmlFree\>/free/' \
third_party/blink/renderer/core/xml/parser/xml_document_parser.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
# There are still a lot of relative calls which need a workaround ## There are still a lot of relative calls which need a workaround
mkdir -p python2-path #mkdir -p python2-path
ln -sf %{_bindir}/python2 python2-path/python #ln -sf %{_bindir}/python2 python2-path/python
# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py # Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
# Keys are the names in the above script; values are the dependencies in Arch # Keys are the names in the above script; values are the dependencies in Arch
@ -240,6 +222,11 @@ python2 build/linux/unbundle/replace_gn_files.py \
mkdir -p third_party/node/linux/node-linux-x64/bin mkdir -p third_party/node/linux/node-linux-x64/bin
ln -s %{_bindir}/node third_party/node/linux/node-linux-x64/bin/ ln -s %{_bindir}/node third_party/node/linux/node-linux-x64/bin/
ln -s /usr/bin/java third_party/jdk/current/bin/
# Local eu-strip built has problem seen on x86 as of 92.0.4515.131
rm buildtools/third_party/eu-strip/bin/eu-strip
ln -s %{_bindir}/eu-strip buildtools/third_party/eu-strip/bin/eu-strip
# Remove compiler flags not supported by our system clang # Remove compiler flags not supported by our system clang
sed -i \ sed -i \
@ -247,6 +234,12 @@ sed -i \
-e '/"-Wno-defaulted-function-deleted"/d' \ -e '/"-Wno-defaulted-function-deleted"/d' \
build/config/compiler/BUILD.gn build/config/compiler/BUILD.gn
%ifarch aarch64
sed -i "s|aarch64-linux-gnu|aarch64-openmamba-linux-gnu|" \
build/config/compiler/BUILD.gn \
build/toolchain/linux/BUILD.gn
%endif
%build %build
#:<< _EOF #:<< _EOF
export CC=clang export CC=clang
@ -256,7 +249,7 @@ export NM=llvm-nm
# Facilitate deterministic builds (taken from build/config/compiler/BUILD.gn) # Facilitate deterministic builds (taken from build/config/compiler/BUILD.gn)
CFLAGS+=' -Wno-builtin-macro-redefined -Wno-unknown-warning-option' CFLAGS+=' -Wno-builtin-macro-redefined -Wno-unknown-warning-option'
CXXFLAGS+=' -Wno-builtin-macro-redefined -Wno-unknown-warning-option' CXXFLAGS+=' -Wno-builtin-macro-redefined -Wno-unknown-warning-option -stdlib=libstdc++'
CPPFLAGS+=' -D__DATE__= -D__TIME__= -D__TIMESTAMP__=' CPPFLAGS+=' -D__DATE__= -D__TIME__= -D__TIMESTAMP__='
%ifarch arm %ifarch arm
@ -275,6 +268,7 @@ chromium_conf=(
'host_toolchain="//build/toolchain/linux/unbundle:default"' 'host_toolchain="//build/toolchain/linux/unbundle:default"'
'clang_use_chrome_plugins=false' 'clang_use_chrome_plugins=false'
'is_official_build=true' # implies is_cfi=true on x86_64 'is_official_build=true' # implies is_cfi=true on x86_64
'chrome_pgo_phase=0' # pgo incompatible with llvm 11
'treat_warnings_as_errors=false' 'treat_warnings_as_errors=false'
'fieldtrial_testing_like_official_build=true' 'fieldtrial_testing_like_official_build=true'
'ffmpeg_branding="Chrome"' 'ffmpeg_branding="Chrome"'
@ -286,34 +280,26 @@ chromium_conf=(
'use_custom_libcxx=false' 'use_custom_libcxx=false'
'enable_hangout_services_extension=true' 'enable_hangout_services_extension=true'
'enable_widevine=true' 'enable_widevine=true'
'use_vaapi=true'
'enable_nacl=false' 'enable_nacl=false'
'enable_swiftshader=false' 'use_vaapi=true'
'google_api_key="AIzaSyBT3wXwxmFuUQcyeMyp0MbHHhhFwNfWKTc"' 'google_api_key="AIzaSyBT3wXwxmFuUQcyeMyp0MbHHhhFwNfWKTc"'
'google_default_client_id="72870267994-r1bkll5bq0v275nnsa66d21h3t6ne10s.apps.googleusercontent.com"'
'google_default_client_secret="Pcdh5bzXx3nsECO_AlMlPXXk"'
'symbol_level=0' 'symbol_level=0'
'is_debug=false' 'is_debug=false'
'icu_use_data_file=false' 'icu_use_data_file=false'
'toolprefix="%{_target_platform}-"'
) )
# 'google_default_client_id="72870267994-r1bkll5bq0v275nnsa66d21h3t6ne10s.apps.googleusercontent.com"'
# 'google_default_client_secret="Pcdh5bzXx3nsECO_AlMlPXXk"'
#%ifarch %{ix86} #%ifarch %{ix86}
# 'use_lld=false' # 'use_lld=false'
#%endif #%endif
# 'linux_use_bundled_binutils=false'
# 'rtc_link_pipewire=true'
# 'is_clang=true'
# 'is_cfi=false'
# 'use_lld=false'
# 'remove_webcore_debug_symbols=true'
gn gen out/Release --args="${chromium_conf[*]}" \ gn gen out/Release --args="${chromium_conf[*]}" \
--script-executable=/usr/bin/python2 --script-executable=%{__python3}
# --fail-on-unused-args # --fail-on-unused-args
#_EOF #_EOF
@ -326,13 +312,14 @@ install -d -m0755 %{buildroot}%{_libdir}/chromium/ %{buildroot}%{_bindir}
install -m0755 out/Release/chrome %{buildroot}%{_libdir}/chromium/chromium install -m0755 out/Release/chrome %{buildroot}%{_libdir}/chromium/chromium
install -m0755 out/Release/chrome_sandbox %{buildroot}%{_libdir}/chromium/chrome-sandbox install -m0755 out/Release/chrome_sandbox %{buildroot}%{_libdir}/chromium/chrome-sandbox
install -m0755 out/Release/chromedriver %{buildroot}%{_libdir}/chromium/chromedriver install -m0755 out/Release/chromedriver %{buildroot}%{_libdir}/chromium/chromedriver
install -m0755 out/Release/crashpad_handler %{buildroot}%{_libdir}/chromium/crashpad_handler
install -m0755 out/Release/libEGL.so %{buildroot}%{_libdir}/chromium/libEGL.so install -m0755 out/Release/libEGL.so %{buildroot}%{_libdir}/chromium/libEGL.so
install -m0755 out/Release/libGLESv2.so %{buildroot}%{_libdir}/chromium/libGLESv2.so install -m0755 out/Release/libGLESv2.so %{buildroot}%{_libdir}/chromium/libGLESv2.so
#install -m0755 out/Release/libwidevinecdm.so %{buildroot}%{_libdir}/chromium/libwidevinecdm.so #install -m0755 out/Release/libwidevinecdm.so %{buildroot}%{_libdir}/chromium/libwidevinecdm.so
#install -m0755 out/Release/libwidevinecdmadapter.so %{buildroot}%{_libdir}/chromium/libwidevinecdmadapter.so #install -m0755 out/Release/libwidevinecdmadapter.so %{buildroot}%{_libdir}/chromium/libwidevinecdmadapter.so
cp out/Release/*.bin %{buildroot}%{_libdir}/chromium/ cp out/Release/*.bin %{buildroot}%{_libdir}/chromium/
install -m0755 chrome/tools/build/linux/chrome-wrapper %{buildroot}%{_libdir}/chromium/ #install -m0755 chrome/tools/build/linux/chrome-wrapper %{buildroot}%{_libdir}/chromium/
#install -m0755 third_party/xdg-utils/scripts/xdg-settings %{buildroot}/opt/chromium/xdg-settings #install -m0755 third_party/xdg-utils/scripts/xdg-settings %{buildroot}/opt/chromium/xdg-settings
%if "%cross_target_cpu" != "i586" %if "%cross_target_cpu" != "i586"
@ -343,13 +330,12 @@ cp -a out/Release/*.pak %{buildroot}%{_libdir}/chromium/
#install -D -m0644 out/Release/chrome.1 %{buildroot}%{_mandir}/man1/chromium.1 #install -D -m0644 out/Release/chrome.1 %{buildroot}%{_mandir}/man1/chromium.1
install -D -m0644 chrome/app/theme/chromium/product_logo_48.png %{buildroot}%{_datadir}/pixmaps/chromium.png install -D -m0644 chrome/app/theme/chromium/product_logo_48.png %{buildroot}%{_datadir}/pixmaps/chromium.png
cp -a out/Release/locales %{buildroot}%{_libdir}/chromium/ cp -a out/Release/locales %{buildroot}%{_libdir}/chromium/
install -d -m0755 %{buildroot}%{_libdir}/chromium/swiftshader
cp -a out/Release/swiftshader/*.so %{buildroot}%{_libdir}/chromium/swiftshader/
#ln -s %{_libdir}/chromium/chrome-wrapper %{buildroot}%{_bindir}/chromium # Install deskktop file and man
install -Dm644 chrome/installer/linux/common/desktop.template %{buildroot}%{_datadir}/applications/chromium.desktop install -Dm644 chrome/installer/linux/common/desktop.template %{buildroot}%{_datadir}/applications/chromium.desktop
install -Dm644 chrome/app/resources/manpage.1.in %{buildroot}%{_mandir}/man1/chromium.1 install -Dm644 chrome/app/resources/manpage.1.in %{buildroot}%{_mandir}/man1/chromium.1
sed -i \ sed -i \
-e "s/@@MENUNAME@@/Chromium/g" \ -e "s/@@MENUNAME@@/Chromium/g" \
-e "s/@@PACKAGE@@/chromium/g" \ -e "s/@@PACKAGE@@/chromium/g" \
@ -357,23 +343,15 @@ sed -i \
%{buildroot}%{_datadir}/applications/chromium.desktop \ %{buildroot}%{_datadir}/applications/chromium.desktop \
%{buildroot}%{_mandir}/man1/chromium.1 %{buildroot}%{_mandir}/man1/chromium.1
#mkdir -p %{buildroot}%{_datadir}/applications # Install metainfo file
#cat > %{buildroot}%{_datadir}/applications/chromium.desktop << EOF install -Dm644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml \
#[Desktop Entry] %{buildroot}%{_datadir}/metainfo/chromium.appdata.xml
#Name=Chromium Browser sed -ni \
#Name[it]=Browser Chromium -e 's/chromium-browser\.desktop/chromium.desktop/' \
#GenericName=Web Browser -e '/<update_contact>/d' \
#GenericName[it]=Browser Web -e '/<p>/N;/<p>\n.*\(We invite\|Chromium supports Vorbis\)/,/<\/p>/d' \
#Comment=An open-source browser to help move the web forward -e '/^<?xml/,$p' \
#Comment[it]=Un browser open source pensato per un web più moderno %{buildroot}%{_datadir}/metainfo/chromium.appdata.xml
#Exec=chromium --password-store=detect --ignore-gpu-blacklist %u
#Type=Application
#Terminal=0
#Icon=%{_datadir}/pixmaps/chromium.png
#Categories=Network;
#MimeType=text/html;
#X-KDE-StartupNotify=true
#EOF
# install master_preferences file for first run and homepage customization # install master_preferences file for first run and homepage customization
install -m0644 %{SOURCE1} %{buildroot}%{_libdir}/chromium/master_preferences install -m0644 %{SOURCE1} %{buildroot}%{_libdir}/chromium/master_preferences
@ -384,14 +362,16 @@ cat > %{buildroot}%{_bindir}/chromium << _EOF
#!/bin/bash #!/bin/bash
set -- "\${ARGS[@]}" "\$@" set -- "\${ARGS[@]}" "\$@"
# FIXME: --no-sandbox: added as of 92.0.4515.131 as a temporary workaround
if [ -r /opt/chromium/PepperFlash/manifest.json ]; then if [ -r /opt/chromium/PepperFlash/manifest.json ]; then
PEPPER_FLASH_VERSION="\$(grep '"version":' /opt/chromium/PepperFlash/manifest.json | grep -Po '(?<=version": ")(?:\d|\.)*')" PEPPER_FLASH_VERSION="\$(grep '"version":' /opt/chromium/PepperFlash/manifest.json | grep -Po '(?<=version": ")(?:\d|\.)*')"
exec %{_libdir}/chromium/chromium \\ exec %{_libdir}/chromium/chromium \\
--ignore-gpu-blacklist \\ --ignore-gpu-blacklist --no-sandbox \\
--ppapi-flash-path=/opt/chromium/PepperFlash/libpepflashplayer.so \\ --ppapi-flash-path=/opt/chromium/PepperFlash/libpepflashplayer.so \\
--ppapi-flash-version=\${PEPPER_FLASH_VERSION} "\$@" --ppapi-flash-version=\${PEPPER_FLASH_VERSION} "\$@"
else else
exec %{_libdir}/chromium/chromium --ignore-gpu-blacklist "\$@" exec %{_libdir}/chromium/chromium --ignore-gpu-blacklist --no-sandbox "\$@"
fi fi
_EOF _EOF
chmod 755 %{buildroot}%{_bindir}/chromium chmod 755 %{buildroot}%{_bindir}/chromium
@ -401,21 +381,8 @@ ln -s %{_libdir}/chromium/chromedriver %{buildroot}%{_bindir}/chromedriver
## legacy favorites symlink ## legacy favorites symlink
#ln -s chromium.desktop %{buildroot}%{_datadir}/applications/chromium-devel.desktop #ln -s chromium.desktop %{buildroot}%{_datadir}/applications/chromium-devel.desktop
%post %post -p /sbin/ldconfig
/sbin/ldconfig %postun -p /sbin/ldconfig
#if [ $1 -ge 1 ]; then
# [ -e %{_kde4_bindir}/kickoffcfg ] && \
# %{_kde4_bindir}/kickoffcfg --add-favorite %{_datadir}/applications/chromium.desktop
#fi
:
%postun
/sbin/ldconfig
#if [ $1 -eq 0 ]; then
# [ -e %{_kde4_bindir}/kickoffcfg ] && \
# %{_kde4_bindir}/kickoffcfg --del-favorite %{_datadir}/applications/chromium.desktop
#fi
:
%posttrans %posttrans
/usr/bin/update-desktop-database -q /usr/bin/update-desktop-database -q
@ -429,30 +396,37 @@ ln -s %{_libdir}/chromium/chromedriver %{buildroot}%{_bindir}/chromedriver
%{_bindir}/chromium %{_bindir}/chromium
%{_bindir}/chromedriver %{_bindir}/chromedriver
%{_datadir}/applications/chromium.desktop %{_datadir}/applications/chromium.desktop
#%{_datadir}/applications/chromium-devel.desktop %{_datadir}/metainfo/chromium.appdata.xml
%{_datadir}/pixmaps/chromium.png %{_datadir}/pixmaps/chromium.png
%dir %{_libdir}/chromium %dir %{_libdir}/chromium
%{_libdir}/chromium/chromium %{_libdir}/chromium/chromium
%{_libdir}/chromium/chromedriver %{_libdir}/chromium/chromedriver
%{_libdir}/chromium/crashpad_handler
%{_libdir}/chromium/*.bin %{_libdir}/chromium/*.bin
%{_libdir}/chromium/*.pak %{_libdir}/chromium/*.pak
%{_libdir}/chromium/chrome-wrapper #%{_libdir}/chromium/chrome-wrapper
%attr(4755,root,root) %{_libdir}/chromium/chrome-sandbox %attr(4755,root,root) %{_libdir}/chromium/chrome-sandbox
#%{_libdir}/chromium/icudtl.dat #%{_libdir}/chromium/icudtl.dat
%{_libdir}/chromium/libEGL.so %{_libdir}/chromium/libEGL.so
%{_libdir}/chromium/libGLESv2.so %{_libdir}/chromium/libGLESv2.so
#%{_libdir}/chromium/libwidevinecdm.so
#%{_libdir}/chromium/libwidevinecdmadapter.so
%{_libdir}/chromium/master_preferences %{_libdir}/chromium/master_preferences
%if "%cross_target_cpu" != "i586" %if "%cross_target_cpu" != "i586"
%{_libdir}/chromium/protoc %{_libdir}/chromium/protoc
%endif %endif
%dir %{_libdir}/chromium/swiftshader
%{_libdir}/chromium/swiftshader/*.so
%dir %{_libdir}/chromium/locales %dir %{_libdir}/chromium/locales
%{_libdir}/chromium/locales/*.pak %{_libdir}/chromium/locales/*.pak
%{_libdir}/chromium/locales/*.pak.info %{_libdir}/chromium/locales/*.pak.info
%{_mandir}/man1/chromium.1* %{_mandir}/man1/chromium.1*
%changelog %changelog
* Mon Aug 09 2021 Automatic Build System <autodist@mambasoft.it> 92.0.4515.131-1mamba
- automatic version update by autodist
* Sat Mar 27 2021 Automatic Build System <autodist@mambasoft.it> 89.0.4389.90-1mamba
- automatic version update by autodist
* Wed Feb 10 2021 Silvan Calarco <silvan.calarco@mambasoft.it> 88.0.4324.150-1mamba * Wed Feb 10 2021 Silvan Calarco <silvan.calarco@mambasoft.it> 88.0.4324.150-1mamba
- update to 88.0.4324.150 - update to 88.0.4324.150