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);

Reply via email to