Date: Saturday, January 7, 2023 @ 13:39:30 Author: archange Revision: 1381671
upgpkg: electron 22.0.0-1 Added: electron/trunk/chromium-icu72.patch electron/trunk/re-fix-TFLite-build-error-on-linux-with-system-zlib.patch electron/trunk/v8-enhance-Date-parser-to-take-Unicode-SPACE.patch Modified: electron/trunk/PKGBUILD electron/trunk/std-vector-non-const.patch electron/trunk/use-system-libraries-in-node.patch Deleted: electron/trunk/unbundle-jsoncpp-avoid-CFI-faults-with-is_cfi-true.patch -----------------------------------------------------------+ PKGBUILD | 42 ++-- chromium-icu72.patch | 114 ++++++++++++ re-fix-TFLite-build-error-on-linux-with-system-zlib.patch | 41 ++++ std-vector-non-const.patch | 4 unbundle-jsoncpp-avoid-CFI-faults-with-is_cfi-true.patch | 38 ---- use-system-libraries-in-node.patch | 58 ------ v8-enhance-Date-parser-to-take-Unicode-SPACE.patch | 58 ++++++ 7 files changed, 251 insertions(+), 104 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2023-01-07 12:55:28 UTC (rev 1381670) +++ PKGBUILD 2023-01-07 13:39:30 UTC (rev 1381671) @@ -2,12 +2,12 @@ # Remember to handle https://bugs.archlinux.org/task/74324 on major upgrades _use_suffix=0 -pkgver=21.3.3 -_commit=ba93dc3c83963826b9210fe82ebcfaca2459557a -_chromiumver=106.0.5249.199 +pkgver=22.0.0 +_commit=71941e720eb75bf2397eec112d2622e641faf89c +_chromiumver=108.0.5359.62 _gcc_patchset=2 # shellcheck disable=SC2034 -pkgrel=3 +pkgrel=1 _major_ver=${pkgver%%.*} if [[ ${_use_suffix} != 0 ]]; then @@ -24,16 +24,17 @@ # shellcheck disable=SC2034 license=('MIT' 'custom') # shellcheck disable=SC2034 -depends=('c-ares' 'gtk3' 'libevent' 'nss') +depends=('c-ares' 'gtk3' 'libevent' 'nss' 'wayland') # shellcheck disable=SC2034 makedepends=('clang' 'git' 'gn' 'gperf' 'harfbuzz-icu' 'http-parser' - 'java-runtime-headless' 'libnotify' 'lld' 'llvm' 'ninja' - 'npm' 'pciutils' 'pipewire' 'python' 'python-httplib2' + 'qt5-base' 'java-runtime-headless' 'libnotify' 'lld' 'llvm' + 'ninja' 'npm' 'pciutils' 'pipewire' 'python' 'python-httplib2' 'python-pyparsing' 'python-six' 'wget' 'yarn') # shellcheck disable=SC2034 optdepends=('kde-cli-tools: file deletion support (kioclient5)' 'libappindicator-gtk3: StatusNotifierItem support' 'pipewire: WebRTC desktop sharing under Wayland' + 'qt5-base: enable Qt5 with --enable-features=AllowQt' 'trash-cli: file deletion support (trash-put)' 'xdg-utils: open URLs with desktop’s default (xdg-email, xdg-open)') if [[ ${_use_suffix} == 0 ]]; then @@ -54,7 +55,9 @@ 'jinja-python-3.10.patch' 'use-system-libraries-in-node.patch' 'std-vector-non-const.patch' - 'unbundle-jsoncpp-avoid-CFI-faults-with-is_cfi-true.patch' + 're-fix-TFLite-build-error-on-linux-with-system-zlib.patch' + 'chromium-icu72.patch' + 'v8-enhance-Date-parser-to-take-Unicode-SPACE.patch' 'REVERT-roll-src-third_party-ffmpeg-m102.patch' 'REVERT-roll-src-third_party-ffmpeg-m106.patch' 'angle-wayland-include-protocol.patch' @@ -62,14 +65,16 @@ # shellcheck disable=SC2034 sha256sums=('SKIP' 'SKIP' - '2ad419439379d17385b7fd99039aca875ba36ca31b591b9cd4ccef84273be121' + '40ef8af65e78901bb8554eddbbb5ebc55c0b8e7927f6ca51b2a353d1c7c50652' '77817939c9833f8dda74a8c75620c15747170551ffa6f14f7c5b4071599e8831' '4484200d90b76830b69eea3a471c103999a3ce86bb2c29e6c14c945bf4102bae' 'dd2d248831dd4944d385ebf008426e66efe61d6fdf66f8932c963a12167947b4' '55dbe71dbc1f3ab60bf1fa79f7aea7ef1fe76436b1d7df48728a1f8227d2134e' - 'c70652a8b24c237bcfd27469de32797a2cb46d9f0d63d897bb6418314a25644c' - '1c5521fdfbfe26f19f5dcbf96dc36e96c9ef060c8e24baa5f949478cb4220bb3' - 'b908f37c5a886e855953f69e4dd6b90baa35e79f5c74673f7425f2cdb642eb00' + 'ff588a8a4fd2f79eb8a4f11cf1aa151298ffb895be566c57cc355d47f161f53f' + '893bc04c7fceba2f0a7195ed48551d55f066bbc530ec934c89c55768e6f3949c' + '9015b9d6d5b4c1e7248d6477a4b4b6bd6a3ebdc57225d2d8efcd79fc61790716' + 'dabb5ab204b63be73d3c5c8b7c1fa74053105a285852ba3bbc4fb77646608572' + 'b83406a881d66627757d9cbc05e345cbb2bd395a48b6d4c970e5e1cb3f6ed454' '30df59a9e2d95dcb720357ec4a83d9be51e59cc5551365da4c0073e68ccdec44' '4c12d31d020799d31355faa7d1fe2a5a807f7458e7f0c374adf55edb37032152' 'cd0d9d2a1d6a522d47c3c0891dabe4ad72eabbebc0fe5642b9e22efa3d5ee572') @@ -174,7 +179,9 @@ echo "Applying local patches..." # Upstream fixes - patch -Np1 -i ../unbundle-jsoncpp-avoid-CFI-faults-with-is_cfi-true.patch + patch -Np1 -i ../re-fix-TFLite-build-error-on-linux-with-system-zlib.patch + patch -Np1 -i ../chromium-icu72.patch + patch -Np1 -d v8 <../v8-enhance-Date-parser-to-take-Unicode-SPACE.patch # Revert ffmpeg roll requiring new channel layout API support # https://crbug.com/1325301 @@ -187,7 +194,6 @@ # Fixes for building with libstdc++ instead of libc++ patch -Np1 -i ../patches/chromium-103-VirtualCursor-std-layout.patch - patch -Np1 -i ../patches/chromium-106-AutofillPopupControllerImpl-namespace.patch # Electron specific fixes patch -d third_party/electron_node/tools/inspector_protocol/jinja2 \ @@ -265,15 +271,21 @@ GN_EXTRA_ARGS=' custom_toolchain = "//build/toolchain/linux/unbundle:default" host_toolchain = "//build/toolchain/linux/unbundle:default" + clang_base_path = "/usr" clang_use_chrome_plugins = false symbol_level = 0 chrome_pgo_phase = 2 treat_warnings_as_errors = false + disable_fieldtrial_testing_config = true + blink_enable_generated_code_formatting = false + ffmpeg_branding = "Chrome" rtc_use_pipewire = true link_pulseaudio = true + use_custom_libcxx = false use_gnome_keyring = false use_sysroot = false - use_custom_libcxx = false + use_system_libwayland = true + use_system_wayland_scanner = true icu_use_data_file = false is_component_ffmpeg = false ' Added: chromium-icu72.patch =================================================================== --- chromium-icu72.patch (rev 0) +++ chromium-icu72.patch 2023-01-07 13:39:30 UTC (rev 1381671) @@ -0,0 +1,114 @@ +From 2c4d3c61aa33f3169e7923ea3433c71e3df0952f Mon Sep 17 00:00:00 2001 +From: Frank Tang <[email protected]> +Date: Mon, 7 Nov 2022 22:08:05 +0000 +Subject: [PATCH 1/2] Prepare for ICU72 landing + +The date format may output U+202F Narrow SPACE between time +and AM/PM. So switch to use UTF8 and not restrict to ASCII which +will break when the output is not only ASCII. + +Bug: 1371208 +Change-Id: I05f9daadfba5c45d618f15ae23340da373f2f36a +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4007076 +Reviewed-by: Daniel Rubery <[email protected]> +Commit-Queue: Frank Tang <[email protected]> +Cr-Commit-Position: refs/heads/main@{#1068343} + +(cherry picked from commit ce2ffed84b95e2b7c068d6f066d86cd034212425) +--- + .../safe_browsing/content/browser/web_ui/safe_browsing_ui.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/components/safe_browsing/content/browser/web_ui/safe_browsing_ui.cc b/components/safe_browsing/content/browser/web_ui/safe_browsing_ui.cc +index 92597a9d3a4..e6e7514a082 100644 +--- a/components/safe_browsing/content/browser/web_ui/safe_browsing_ui.cc ++++ b/components/safe_browsing/content/browser/web_ui/safe_browsing_ui.cc +@@ -457,7 +457,7 @@ namespace { + std::string UserReadableTimeFromMillisSinceEpoch(int64_t time_in_milliseconds) { + base::Time time = + base::Time::UnixEpoch() + base::Milliseconds(time_in_milliseconds); +- return base::UTF16ToASCII(base::TimeFormatShortDateAndTime(time)); ++ return base::UTF16ToUTF8(base::TimeFormatShortDateAndTime(time)); + } + + void AddStoreInfo(const DatabaseManagerInfo::DatabaseInfo::StoreInfo store_info, + +From 8ba9d96da703978655cddf07d58b0a15f0a43a10 Mon Sep 17 00:00:00 2001 +From: Frank Tang <[email protected]> +Date: Tue, 8 Nov 2022 00:13:16 +0000 +Subject: [PATCH 2/2] Prepare the landing of ICU72/Unicode 15 + +See +https://www.unicode.org/emoji/charts-15.0/emoji-released.html +https://www.unicode.org/charts/PDF/U1F680.pdf +https://www.unicode.org/charts/PDF/U1FA70.pdf +for the newly added emoji to +Transport and Map Symbols +Symbols and Pictographs Extended-A blocks. + +Update the kIsCJKIdeographOrSymbolRanges to Unicode 15 +Needed to avoid test breakage of +CharacterTest.HammerEmojiVsCJKIdeographOrSymbol + +Bug: 1371208 +Change-Id: Ic7b319ba18f3aded46b252d8b484e3b1bc43eff4 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4007098 +Reviewed-by: Stephen Chenney <[email protected]> +Commit-Queue: Frank Tang <[email protected]> +Cr-Commit-Position: refs/heads/main@{#1068422} + +(cherry picked from commit d93a774bf6fac8ddaaa1041ea6ad2dd8e5ff4539) +--- + .../platform/text/character_property_data.h | 24 +++++++++---------- + 1 file changed, 12 insertions(+), 12 deletions(-) + +diff --git a/third_party/blink/renderer/platform/text/character_property_data.h b/third_party/blink/renderer/platform/text/character_property_data.h +index 9005c20a379..ee690563c28 100644 +--- a/third_party/blink/renderer/platform/text/character_property_data.h ++++ b/third_party/blink/renderer/platform/text/character_property_data.h +@@ -107,7 +107,7 @@ static const UChar32 kIsCJKIdeographOrSymbolRanges[] = { + 0x1F3FB, 0x1F3FF, + + // Transport +- 0x1F6DD, 0x1F6DF, ++ 0x1F6DC, 0x1F6DF, + + // Colored circles and squares for use with emoji. + 0x1F7E0, 0x1F7EB, +@@ -118,25 +118,25 @@ static const UChar32 kIsCJKIdeographOrSymbolRanges[] = { + 0x1F900, 0x1F90F, + // ZIPPER-MOUTH FACE...SIGN OF THE HORNS + 0x1F910, 0x1F918, 0x1F919, 0x1F97F, 0x1F980, 0x1F9BF, 0x1F9C0, 0x1F9FF, +- // Clothing +- 0x1FA70, 0x1FA74, +- // Medical symbols +- 0x1FA78, 0x1FA7C, ++ // Clothing, heart and Medical symbols ++ 0x1FA70, 0x1FA7C, + // Toys and sport symbols +- 0x1FA80, 0x1FA86, ++ 0x1FA80, 0x1FA88, + // Miscellaneous objects +- 0x1FA90, 0x1FAAC, + // Animals and nature +- 0x1FAB0, 0x1FABA, ++ 0x1FA90, 0x1FABD, ++ // Animal + // Body parts + // People +- 0x1FAC0, 0x1FAC5, ++ 0x1FABF, 0x1FAC5, ++ // animal-mammal ++ 0x1FACE, 0x1FACF, + // Food and drink +- 0x1FAD0, 0x1FAD9, ++ 0x1FAD0, 0x1FADB, + // Face +- 0x1FAE0, 0x1FAE7, ++ 0x1FAE0, 0x1FAE8, + // Hand +- 0x1FAF0, 0x1FAF6, ++ 0x1FAF0, 0x1FAF8, + }; + + // https://html.spec.whatwg.org/C/#prod-potentialcustomelementname Added: re-fix-TFLite-build-error-on-linux-with-system-zlib.patch =================================================================== --- re-fix-TFLite-build-error-on-linux-with-system-zlib.patch (rev 0) +++ re-fix-TFLite-build-error-on-linux-with-system-zlib.patch 2023-01-07 13:39:30 UTC (rev 1381671) @@ -0,0 +1,41 @@ +From dda01a706453ded8c01c41775707cb5ef4e316f8 Mon Sep 17 00:00:00 2001 +From: Andres Salomon <[email protected]> +Date: Tue, 25 Oct 2022 21:11:46 +0000 +Subject: [PATCH] Re-fix TFLite build error on linux when using the system zlib + +In commit ae0f9adb7e14c0d19ca695ef6ad40b321a8cb64c, I fixed some build +errors related to minizip patch inclusion in TFLite. However, after that +when TFLite Support was rolled to HEAD, a small part of that patch got +dropped. The result is the following build error with 107.0.5304.62: + +../../third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc:22:10: fatal error: 'contrib/minizip/ioapi.h' file not found + ^~~~~~~~~~~~~~~~~~~~~~~~~ +1 error generated. + +This commit re-adds the lost fix. + [email protected] + +Change-Id: Ie96c3571894b5100a1e2a2771da29699eff0beb3 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3972087 +Reviewed-by: Robert Ogden <[email protected]> +Commit-Queue: Robert Ogden <[email protected]> +Auto-Submit: Andres Salomon <[email protected]> +Cr-Commit-Position: refs/heads/main@{#1063478} +--- + .../metadata/cc/utils/zip_readonly_mem_file.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc +index 392b6b411fe..525ae4a2b45 100644 +--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc ++++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc +@@ -19,7 +19,7 @@ limitations under the License. + #include <cstdio> + + #include "absl/strings/string_view.h" // from @com_google_absl +-#include "contrib/minizip/ioapi.h" ++#include "third_party/zlib/contrib/minizip/ioapi.h" + + namespace tflite { + namespace metadata { Modified: std-vector-non-const.patch =================================================================== --- std-vector-non-const.patch 2023-01-07 12:55:28 UTC (rev 1381670) +++ std-vector-non-const.patch 2023-01-07 13:39:30 UTC (rev 1381671) @@ -74,7 +74,7 @@ return true; --- a/shell/browser/api/electron_api_app.cc +++ b/shell/browser/api/electron_api_app.cc -@@ -522,10 +522,10 @@ bool NotificationCallbackWrapper( +@@ -523,10 +523,10 @@ bool NotificationCallbackWrapper( const base::RepeatingCallback< void(const base::CommandLine& command_line, const base::FilePath& current_directory, @@ -87,7 +87,7 @@ // Make sure the callback is called after app gets ready. if (Browser::Get()->is_ready()) { callback.Run(cmd, cwd, std::move(additional_data)); -@@ -1094,7 +1094,7 @@ std::string App::GetLocaleCountryCode() { +@@ -1102,7 +1102,7 @@ std::string App::GetLocaleCountryCode() { void App::OnSecondInstance(const base::CommandLine& cmd, const base::FilePath& cwd, Deleted: unbundle-jsoncpp-avoid-CFI-faults-with-is_cfi-true.patch =================================================================== --- unbundle-jsoncpp-avoid-CFI-faults-with-is_cfi-true.patch 2023-01-07 12:55:28 UTC (rev 1381670) +++ unbundle-jsoncpp-avoid-CFI-faults-with-is_cfi-true.patch 2023-01-07 13:39:30 UTC (rev 1381671) @@ -1,38 +0,0 @@ -From ed8d931e35f81d8566835a579caf7d61368f85b7 Mon Sep 17 00:00:00 2001 -From: Evangelos Foutras <[email protected]> -Date: Tue, 27 Sep 2022 22:20:41 +0000 -Subject: [PATCH] unbundle/jsoncpp: avoid CFI faults with is_cfi=true - -Ensure jsoncpp symbols have public visibility and are thus excluded from -CFI checks and whole-program optimization. This is achieved by defining -JSON_DLL_BUILD which in turn causes json/config.h to define JSON_API as -__attribute__((visibility("default"))). The latter macro is used to tag -jsoncpp classes and namespace functions throughout jsoncpp's headers. - -BUG=1365218 - -Change-Id: I56277737b7d9ecaeb5e17c8d21a2e55f3d5d5bc9 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3919652 -Reviewed-by: Thomas Anderson <[email protected]> -Commit-Queue: Thomas Anderson <[email protected]> -Cr-Commit-Position: refs/heads/main@{#1052077} ---- - build/linux/unbundle/jsoncpp.gn | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/build/linux/unbundle/jsoncpp.gn b/build/linux/unbundle/jsoncpp.gn -index 544f9d13c9..e84a0ef27a 100644 ---- a/build/linux/unbundle/jsoncpp.gn -+++ b/build/linux/unbundle/jsoncpp.gn -@@ -3,6 +3,11 @@ import("//build/shim_headers.gni") - - pkg_config("jsoncpp_config") { - packages = [ "jsoncpp" ] -+ -+ # Defining JSON_DLL_BUILD applies public visibility to jsoncpp classes -+ # thus deactivating CFI checks for them. This avoids CFI violations in -+ # virtual calls to system jsoncpp library (https://crbug.com/1365218). -+ defines = [ "JSON_DLL_BUILD" ] - } - - shim_headers("jsoncpp_shim") { Modified: use-system-libraries-in-node.patch =================================================================== --- use-system-libraries-in-node.patch 2023-01-07 12:55:28 UTC (rev 1381670) +++ use-system-libraries-in-node.patch 2023-01-07 13:39:30 UTC (rev 1381671) @@ -1,53 +1,13 @@ --- a/third_party/electron_node/BUILD.gn +++ b/third_party/electron_node/BUILD.gn -@@ -42,6 +42,18 @@ +@@ -42,8 +42,8 @@ declare_args() { node_module_version = "" + + # Allows downstream packagers (eg. Linux distributions) to build Electron against system shared libraries. +- use_system_cares = false +- use_system_nghttp2 = false ++ use_system_cares = true ++ use_system_nghttp2 = true + use_system_llhttp = false + use_system_histogram = false } - -+if (is_linux) { -+ import("//build/config/linux/pkg_config.gni") -+ -+ pkg_config("cares") { -+ packages = [ "libcares" ] -+ } -+ -+ pkg_config("nghttp2") { -+ packages = [ "libnghttp2" ] -+ } -+} -+ - assert(!node_use_dtrace, "node_use_dtrace not supported in GN") - assert(!node_use_etw, "node_use_etw not supported in GN") - -@@ -182,11 +194,9 @@ - component("node_lib") { - deps = [ - ":node_js2c", -- "deps/cares", - "deps/histogram", - "deps/googletest:gtest", - "deps/llhttp", -- "deps/nghttp2", - "deps/uvwasi", - "//third_party/zlib", - "//third_party/brotli:dec", -@@ -202,6 +212,19 @@ - public_configs = [ ":node_lib_config" ] - include_dirs = [ "src" ] - libs = [] -+ if (is_linux) { -+ configs += [ -+ ":cares", -+ ":nghttp2", -+ ] -+ libs += [ "http_parser" ] -+ } else { -+ deps += [ -+ "deps/cares", -+ "deps/http_parser", -+ "deps/nghttp2", -+ ] -+ } - frameworks = [] - cflags_cc = [ - "-Wno-deprecated-declarations", Added: v8-enhance-Date-parser-to-take-Unicode-SPACE.patch =================================================================== --- v8-enhance-Date-parser-to-take-Unicode-SPACE.patch (rev 0) +++ v8-enhance-Date-parser-to-take-Unicode-SPACE.patch 2023-01-07 13:39:30 UTC (rev 1381671) @@ -0,0 +1,58 @@ +From 81dd64c3705f89653859a5d0001dd0ca983a92e2 Mon Sep 17 00:00:00 2001 +From: Frank Tang <[email protected]> +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 <[email protected]> +Reviewed-by: Jungshik Shin <[email protected]> +Commit-Queue: Frank Tang <[email protected]> +Cr-Commit-Position: refs/heads/main@{#84308} + +(cherry picked from commit 2ada52cffbff11074abfaac18938bf02d85454f5) +--- + src/date/dateparser-inl.h | 2 +- + src/date/dateparser.h | 4 +++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/date/dateparser-inl.h b/src/date/dateparser-inl.h +index 623986d2b1..b45479dc51 100644 +--- a/src/date/dateparser-inl.h ++++ b/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 1a0a0b15ab..59b2f3c9fd 100644 +--- a/src/date/dateparser.h ++++ b/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 '-'.
