Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package chromium for openSUSE:Factory checked in at 2023-01-18 13:11:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/chromium (Old) and /work/SRC/openSUSE:Factory/.chromium.new.32243 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "chromium" Wed Jan 18 13:11:29 2023 rev:366 rq:1059161 version:109.0.5414.74 Changes: -------- --- /work/SRC/openSUSE:Factory/chromium/chromium.changes 2023-01-11 14:37:04.229914684 +0100 +++ /work/SRC/openSUSE:Factory/.chromium.new.32243/chromium.changes 2023-01-18 13:11:52.449096019 +0100 @@ -1,0 +2,11 @@ +Tue Jan 17 21:03:29 UTC 2023 - Callum Farmer <gm...@opensuse.org> + +- Added patches: + * chromium-icu72-1.patch: ensure TextCodecCJK doesn't conflict + with system icu (bsc#1207147) + * chromium-icu72-2.patch: align default characters for old icu + with that of ICU 72 + * chromium-icu72-3.patch: make V8 aware of space in ICU 72 time + format + +------------------------------------------------------------------- New: ---- chromium-icu72-1.patch chromium-icu72-2.patch chromium-icu72-3.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ chromium.spec ++++++ --- /var/tmp/diff_new_pack.HOeCR7/_old 2023-01-18 13:12:03.145147528 +0100 +++ /var/tmp/diff_new_pack.HOeCR7/_new 2023-01-18 13:12:03.149147552 +0100 @@ -1,7 +1,7 @@ # # spec file for package chromium # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # Copyright (c) 2022 Callum Farmer <gm...@opensuse.org> # Copyright (c) 2023 Andreas Stieger <andreas.stie...@gmx.de> # @@ -22,10 +22,6 @@ %define outputdir out # bsc#1108175 %define __provides_exclude ^lib.*\\.so.*$ -# Compiler -%bcond_without clang -# Chromium built with GCC 11 and LTO enabled crashes (boo#1194055) -%bcond_without lto %if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150400 %bcond_without gtk4 %bcond_without qt @@ -53,18 +49,6 @@ %bcond_with ffmpeg_51 %bcond_with system_avif %endif -%bcond_without pipewire -%bcond_without system_ffmpeg -%bcond_without system_zlib -%bcond_with system_vpx - -# FFmpeg version -%if %{with ffmpeg_51} -%define ffmpeg_version 59 -%else -%define ffmpeg_version 58 -%endif - # LLVM version %if 0%{?suse_version} < 1550 && 0%{?sle_version} < 150400 %define llvm_version 12 @@ -75,7 +59,20 @@ %define llvm_version 15 %endif %endif - +# Compiler +%bcond_without clang +# Chromium built with GCC 11 and LTO enabled crashes (boo#1194055) +%bcond_without lto +%bcond_without pipewire +%bcond_without system_ffmpeg +%bcond_without system_zlib +%bcond_with system_vpx +# FFmpeg version +%if %{with ffmpeg_51} +%define ffmpeg_version 59 +%else +%define ffmpeg_version 58 +%endif Name: chromium Version: 109.0.5414.74 Release: 0 @@ -130,6 +127,9 @@ Patch203: chromium-106-ffmpeg-duration.patch Patch205: chromium-disable-GlobalMediaControlsCastStartStop.patch Patch206: chromium-109-clang-lp154.patch +Patch207: chromium-icu72-1.patch +Patch208: chromium-icu72-2.patch +Patch209: chromium-icu72-3.patch BuildRequires: SDL-devel BuildRequires: bison BuildRequires: cups-devel @@ -141,10 +141,11 @@ BuildRequires: gn >= 0.1807 BuildRequires: gperf BuildRequires: hicolor-icon-theme +BuildRequires: (python3 >= 3.7 or python3-dataclasses) +BuildRequires: (python3-importlib-metadata if python3-base < 3.8) BuildRequires: golang(API) # Java used during build BuildRequires: java-openjdk-headless -BuildRequires: libcap-devel BuildRequires: libdc1394 BuildRequires: libgcrypt-devel BuildRequires: libgsm-devel @@ -152,7 +153,6 @@ BuildRequires: libpng-devel BuildRequires: memory-constraints BuildRequires: nasm -BuildRequires: ncurses-devel BuildRequires: ninja >= 1.7.2 BuildRequires: nodejs >= 8.0 BuildRequires: pam-devel @@ -160,12 +160,10 @@ BuildRequires: python3 BuildRequires: python3-setuptools BuildRequires: python3-six -BuildRequires: (python3 >= 3.7 or python3-dataclasses) BuildRequires: snappy-devel BuildRequires: update-desktop-files BuildRequires: util-linux BuildRequires: wdiff -BuildRequires: (python3-importlib-metadata if python3-base < 3.8) BuildRequires: perl(Switch) BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(bzip2) @@ -175,6 +173,8 @@ BuildRequires: pkgconfig(dri) BuildRequires: pkgconfig(expat) BuildRequires: pkgconfig(flac++) +BuildRequires: pkgconfig(form) +BuildRequires: pkgconfig(formw) BuildRequires: pkgconfig(gbm) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(hunspell) @@ -183,6 +183,7 @@ BuildRequires: pkgconfig(kadm-client) BuildRequires: pkgconfig(kdb) BuildRequires: pkgconfig(krb5) +BuildRequires: pkgconfig(libcap) BuildRequires: pkgconfig(libcrypto) BuildRequires: pkgconfig(libcurl) BuildRequires: pkgconfig(libdc1394-2) @@ -200,18 +201,28 @@ BuildRequires: pkgconfig(libwebp) >= 0.4.0 BuildRequires: pkgconfig(libxml-2.0) >= 2.9.5 BuildRequires: pkgconfig(libxslt) +BuildRequires: pkgconfig(menu) +BuildRequires: pkgconfig(menuw) BuildRequires: pkgconfig(minizip) +BuildRequires: pkgconfig(ncurses) +BuildRequires: pkgconfig(ncurses++) +BuildRequires: pkgconfig(ncurses++w) +BuildRequires: pkgconfig(ncursesw) BuildRequires: pkgconfig(nspr) >= 4.9.5 BuildRequires: pkgconfig(nss) >= 3.26 BuildRequires: pkgconfig(ogg) BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(opus) >= 1.3.1 +BuildRequires: pkgconfig(panel) +BuildRequires: pkgconfig(panelw) BuildRequires: pkgconfig(python3) BuildRequires: pkgconfig(re2) BuildRequires: pkgconfig(schroedinger-1.0) BuildRequires: pkgconfig(slang) BuildRequires: pkgconfig(sqlite3) BuildRequires: pkgconfig(theora) >= 1.1 +BuildRequires: pkgconfig(tic) +BuildRequires: pkgconfig(tinfo) BuildRequires: pkgconfig(vdpau) BuildRequires: pkgconfig(vorbis) BuildRequires: pkgconfig(wayland-client) @@ -298,12 +309,12 @@ %endif %if %{with clang} %if 0%{?suse_version} < 1550 -#!BuildIgnore: gcc BuildRequires: clang%{llvm_version} BuildRequires: gcc11 BuildRequires: libstdc++6-devel-gcc11 BuildRequires: lld%{llvm_version} BuildRequires: llvm%{llvm_version} +#!BuildIgnore: gcc %else BuildRequires: clang BuildRequires: libstdc++-devel ++++++ chromium-icu72-1.patch ++++++ >From 4885090741554be61cb2ed10194cefb29bf8be64 Mon Sep 17 00:00:00 2001 From: Yoshisato Yanagisawa <yyanagis...@chromium.org> Date: Wed, 11 Jan 2023 23:51:39 +0000 Subject: [PATCH] Fix the way to handle codecs in the system icu. The previous code does not register codecs whose standard name is different from the bundled ICU. As a result, looking up such codecs seems to fail unexpectedly. Bug: 1382032 Change-Id: I8a61f77d0f70104415d24dd954b3b7061ffca556 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4154277 Reviewed-by: Kent Tamura <tk...@chromium.org> Commit-Queue: Yoshisato Yanagisawa <yyanagis...@chromium.org> Cr-Commit-Position: refs/heads/main@{#1091571} --- .../renderer/platform/wtf/text/text_codec_icu.cc | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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 a70b359984f97..33ce43f3563df 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 @@ -116,6 +116,10 @@ void TextCodecICU::RegisterEncodingNames(EncodingNameRegistrar registrar) { continue; } #endif + // Avoid codecs supported by `TextCodecCJK`. + if (is_text_codec_cjk_enabled && TextCodecCJK::IsSupported(standard_name)) { + continue; + } // A number of these aliases are handled in Chrome's copy of ICU, but // Chromium can be compiled with the system ICU. @@ -144,12 +148,13 @@ void TextCodecICU::RegisterEncodingNames(EncodingNameRegistrar registrar) { } #endif - if (is_text_codec_cjk_enabled && TextCodecCJK::IsSupported(standard_name)) { - continue; + // Avoid registering codecs registered by + // `TextCodecCJK::RegisterEncodingNames`. + if (!is_text_codec_cjk_enabled || + !TextCodecCJK::IsSupported(standard_name)) { + registrar(standard_name, standard_name); } - registrar(standard_name, standard_name); - uint16_t num_aliases = ucnv_countAliases(name, &error); DCHECK(U_SUCCESS(error)); if (U_SUCCESS(error)) @@ -289,6 +294,7 @@ void TextCodecICU::RegisterCodecs(TextCodecRegistrar registrar) { continue; } #endif + // Avoid codecs supported by `TextCodecCJK`. if (is_text_codec_cjk_enabled && TextCodecCJK::IsSupported(standard_name)) { continue; } ++++++ chromium-icu72-2.patch ++++++ >From 103e1ff08c00590be56c98aa5647e92c7fa78631 Mon Sep 17 00:00:00 2001 From: Mustafa Emre Acer <mea...@chromium.org> Date: Fri, 18 Nov 2022 22:52:00 +0000 Subject: [PATCH] IDN Spoof Checks: Disallow ZWJ and ZWNJ in ICU versions below 72 ICU 72 updates to Unicode 15 which changes the zero width joiner (ZWJ) and zero width non-joiner (ZWNJ) characters from Identifier_Status=Allowed to Identifier_Status=Restricted. These characters are therefore no longer allowed by default in ICU 72. crbug/694157 recently implemented Non-Transitional IDNA 2008 behind a flag. ZWJ and ZWNJ are disallowed in Transitional Mode but allowed in Non-Transitional Mode, so the test cases with the Non-Transitional Mode enabled fail in ICU 72. This CL removes ZWJ and ZWNJ from the allowed identifiers set for ICU versions below 72. This effectively disables these characters even in Non-Transitional Mode. This is a temporary fix. Once ICU 72 is rolled out, we should check if we can use UIDNA_CHECK_CONTEXTJ and explicitly add ZWJ and ZWNJ to the allowed sets again. Bug: 1386204, 694157 Change-Id: I606c43b9d94fea0f2331e5aed530f633bb94517c Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4038542 Reviewed-by: Frank Tang <ft...@chromium.org> Commit-Queue: Mustafa Emre Acer <mea...@chromium.org> Cr-Commit-Position: refs/heads/main@{#1073605} --- .../spoof_checks/idn_spoof_checker.cc | 9 ++++++ .../idn_spoof_checker_unittest.cc | 28 +++++++++++-------- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/components/url_formatter/spoof_checks/idn_spoof_checker.cc b/components/url_formatter/spoof_checks/idn_spoof_checker.cc index aaff7c60bb918..87f62e49f487f 100644 --- a/components/url_formatter/spoof_checks/idn_spoof_checker.cc +++ b/components/url_formatter/spoof_checks/idn_spoof_checker.cc @@ -713,6 +713,15 @@ void IDNSpoofChecker::SetAllowedUnicodeSet(UErrorCode* status) { allowed_set.remove(0xA640u, 0xA69Fu); // Cyrillic Extended-B allowed_set.remove(0xA720u, 0xA7FFu); // Latin Extended-D +#if U_ICU_VERSION_MAJOR_NUM < 72 + // Unicode 15 changes ZWJ and ZWNJ from allowed to restricted. Restrict them + // in lower versions too. This only relevant in Non-Transitional Mode as + // Transitional Mode maps these characters out. + // TODO(crbug.com/1386204): Remove these after ICU 72 is rolled out. + allowed_set.remove(0x200Cu); // Zero Width Non-Joiner + allowed_set.remove(0x200Du); // Zero Width Joiner +#endif + uspoof_setAllowedUnicodeSet(checker_, &allowed_set, status); } ++++++ chromium-icu72-3.patch ++++++ >From 2ada52cffbff11074abfaac18938bf02d85454f5 Mon Sep 17 00:00:00 2001 From: Frank Tang <ft...@chromium.org> Date: Wed, 16 Nov 2022 09:18:45 -0800 Subject: [PATCH] [intl] Enhance Date parser to take Unicode SPACE This is needed to prepare for the landing of ICU72. Allow U+202F in the Date String, which the toLocaleString("en-US") will generate w/ ICU72. Bug: v8:13494 Change-Id: I41b83c4094ce3d0737a72dcd6310b52c68fdcdca Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4027341 Reviewed-by: Yang Guo <yang...@chromium.org> Reviewed-by: Jungshik Shin <js...@chromium.org> Commit-Queue: Frank Tang <ft...@chromium.org> Cr-Commit-Position: refs/heads/main@{#84308} --- src/date/dateparser-inl.h | 2 +- src/date/dateparser.h | 4 +++- test/intl/regress-13494.js | 47 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 test/intl/regress-13494.js diff --git a/src/date/dateparser-inl.h b/src/date/dateparser-inl.h index 623986d2b10..b45479dc516 100644 --- a/v8/src/date/dateparser-inl.h +++ b/v8/src/date/dateparser-inl.h @@ -192,7 +192,7 @@ DateParser::DateToken DateParser::DateStringTokenizer<CharType>::Scan() { if (in_->Skip('+')) return DateToken::Symbol('+'); if (in_->Skip('.')) return DateToken::Symbol('.'); if (in_->Skip(')')) return DateToken::Symbol(')'); - if (in_->IsAsciiAlphaOrAbove()) { + if (in_->IsAsciiAlphaOrAbove() && !in_->IsWhiteSpaceChar()) { DCHECK_EQ(KeywordTable::kPrefixLength, 3); uint32_t buffer[3] = {0, 0, 0}; int length = in_->ReadWord(buffer, 3); diff --git a/src/date/dateparser.h b/src/date/dateparser.h index 1a0a0b15ab7..59b2f3c9fd2 100644 --- a/v8/src/date/dateparser.h +++ b/v8/src/date/dateparser.h @@ -91,7 +91,8 @@ class DateParser : public AllStatic { // Return word length. int ReadWord(uint32_t* prefix, int prefix_size) { int len; - for (len = 0; IsAsciiAlphaOrAbove(); Next(), len++) { + for (len = 0; IsAsciiAlphaOrAbove() && !IsWhiteSpaceChar(); + Next(), len++) { if (len < prefix_size) prefix[len] = AsciiAlphaToLower(ch_); } for (int i = len; i < prefix_size; i++) prefix[i] = 0; @@ -115,6 +116,7 @@ class DateParser : public AllStatic { bool IsEnd() const { return ch_ == 0; } bool IsAsciiDigit() const { return IsDecimalDigit(ch_); } bool IsAsciiAlphaOrAbove() const { return ch_ >= 'A'; } + bool IsWhiteSpaceChar() const { return IsWhiteSpace(ch_); } bool IsAsciiSign() const { return ch_ == '+' || ch_ == '-'; } // Return 1 for '+' and -1 for '-'. diff --git a/test/intl/regress-13494.js b/test/intl/regress-13494.js new file mode 100644 index 00000000000..d1446aff073 --- /dev/null +++ b/v8/test/intl/regress-13494.js @@ -0,0 +1,47 @@ +// Copyright 2022 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Test the new Date( date.toLocaleString("en-US")) is not invalid. +// This is not guaranteed by the standard but many code use that to set the +// timezone as suggested in +// https://stackoverflow.com/questions/15141762/how-to-initialize-a-javascript-date-to-a-particular-time-zone + +let d = new Date(); + +// https://tc39.es/ecma262/#sec-todatestring +// 21.4.4.41.4 ToDateString ( tv ) +// 1. If tv is NaN, return "Invalid Date". +let invalid = "Invalid Date"; +let largestDiff = 25*60*60*1000; + +let garbage = new Date("garbage"); +assertTrue(invalid == garbage); +assertEquals(NaN, garbage.getTime()); + +let d1 = new Date(d.toLocaleString("en-US")); +assertTrue(d1 != invalid); +assertTrue(d1.getTime() != NaN); +// The milliseconds are different between d1 and d. +assertTrue(Math.abs(d1-d) < 1000); + +// Force a version of date string which have U+202f before AM +let nnbsp_am = new Date("11/16/2022, 9:04:55\u202fAM"); +assertTrue(nnbsp_am != invalid); +assertTrue(nnbsp_am.getTime() != NaN); +// Force a version of date string which have U+202f before PM +let nnbsp_pm = new Date("11/16/2022, 9:04:55\u202fPM"); +assertTrue(nnbsp_pm != invalid); +assertTrue(nnbsp_pm.getTime() != NaN); + +let d2 = new Date(d.toLocaleString("en-US", {timeZone: "Asia/Taipei"})); +assertTrue(d2 != invalid); +assertTrue(d2.getTime() != NaN); +// The differences should be within 25 hours. +assertTrue(Math.abs(d2-d) < largestDiff); + +let d3 = new Date(d.toLocaleString("en-US", {timeZone: "Africa/Lusaka"})); +assertTrue(d3 != invalid); +assertTrue(d3.getTime() != NaN); +// The differences should be within 25 hours. +assertTrue(Math.abs(d3-d) < largestDiff);