[arch-commits] Commit in electron9/repos/community-x86_64 (31 files)

Nicola Squartini tensor5 at archlinux.org
Sun Nov 22 02:52:27 UTC 2020


    Date: Sunday, November 22, 2020 @ 02:52:26
  Author: tensor5
Revision: 758810

archrelease: copy trunk to community-x86_64

Added:
  electron9/repos/community-x86_64/1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch
    (from rev 758807, electron9/trunk/1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch)
  electron9/repos/community-x86_64/PKGBUILD
    (from rev 758807, electron9/trunk/PKGBUILD)
  electron9/repos/community-x86_64/add-missing-algorithm-header-in-crx_install_error.cc.patch
    (from rev 758807, electron9/trunk/add-missing-algorithm-header-in-crx_install_error.cc.patch)
  electron9/repos/community-x86_64/avoid-double-destruction-of-ServiceWorkerObjectHost.patch
    (from rev 758807, electron9/trunk/avoid-double-destruction-of-ServiceWorkerObjectHost.patch)
  electron9/repos/community-x86_64/chromium-83-gcc-10.patch
    (from rev 758807, electron9/trunk/chromium-83-gcc-10.patch)
  electron9/repos/community-x86_64/chromium-ffmpeg-4.3.patch
    (from rev 758807, electron9/trunk/chromium-ffmpeg-4.3.patch)
  electron9/repos/community-x86_64/chromium-skia-harmony.patch
    (from rev 758807, electron9/trunk/chromium-skia-harmony.patch)
  electron9/repos/community-x86_64/clean-up-a-call-to-set_utf8.patch
    (from rev 758807, electron9/trunk/clean-up-a-call-to-set_utf8.patch)
  electron9/repos/community-x86_64/default_app-icon.patch
    (from rev 758808, electron9/trunk/default_app-icon.patch)
  electron9/repos/community-x86_64/electron9.desktop
    (from rev 758808, electron9/trunk/electron9.desktop)
  electron9/repos/community-x86_64/include-memory-header-to-get-the-definition-of-std-u.patch
    (from rev 758808, electron9/trunk/include-memory-header-to-get-the-definition-of-std-u.patch)
  electron9/repos/community-x86_64/iwyu-std-numeric_limits-is-defined-in-limits.patch
    (from rev 758808, electron9/trunk/iwyu-std-numeric_limits-is-defined-in-limits.patch)
  electron9/repos/community-x86_64/libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch
    (from rev 758809, electron9/trunk/libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch)
  electron9/repos/community-x86_64/make-some-of-blink-custom-iterators-STL-compatible.patch
    (from rev 758809, electron9/trunk/make-some-of-blink-custom-iterators-STL-compatible.patch)
  electron9/repos/community-x86_64/use-system-libraries-in-node.patch
    (from rev 758809, electron9/trunk/use-system-libraries-in-node.patch)
  electron9/repos/community-x86_64/v8-remove-soon-to-be-removed-getAllFieldPositions.patch
    (from rev 758809, electron9/trunk/v8-remove-soon-to-be-removed-getAllFieldPositions.patch)
Deleted:
  electron9/repos/community-x86_64/PKGBUILD
  electron9/repos/community-x86_64/add-missing-algorithm-header-in-crx_install_error.cc.patch
  electron9/repos/community-x86_64/avoid-double-destruction-of-ServiceWorkerObjectHost.patch
  electron9/repos/community-x86_64/chromium-83-gcc-10.patch
  electron9/repos/community-x86_64/chromium-ffmpeg-4.3.patch
  electron9/repos/community-x86_64/chromium-skia-harmony.patch
  electron9/repos/community-x86_64/clean-up-a-call-to-set_utf8.patch
  electron9/repos/community-x86_64/default_app-icon.patch
  electron9/repos/community-x86_64/electron9.desktop
  electron9/repos/community-x86_64/include-memory-header-to-get-the-definition-of-std-u.patch
  electron9/repos/community-x86_64/iwyu-std-numeric_limits-is-defined-in-limits.patch
  electron9/repos/community-x86_64/libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch
  electron9/repos/community-x86_64/make-some-of-blink-custom-iterators-STL-compatible.patch
  electron9/repos/community-x86_64/use-system-libraries-in-node.patch
  electron9/repos/community-x86_64/v8-remove-soon-to-be-removed-getAllFieldPositions.patch

------------------------------------------------------------+
 1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch             |  128 +++
 PKGBUILD                                                   |  458 +++++------
 add-missing-algorithm-header-in-crx_install_error.cc.patch |   58 -
 avoid-double-destruction-of-ServiceWorkerObjectHost.patch  |  276 +++---
 chromium-83-gcc-10.patch                                   |  128 +--
 chromium-ffmpeg-4.3.patch                                  |   42 -
 chromium-skia-harmony.patch                                |   28 
 clean-up-a-call-to-set_utf8.patch                          |   68 -
 default_app-icon.patch                                     |   42 -
 electron9.desktop                                          |   14 
 include-memory-header-to-get-the-definition-of-std-u.patch |   64 -
 iwyu-std-numeric_limits-is-defined-in-limits.patch         |   58 -
 libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch |  124 +-
 make-some-of-blink-custom-iterators-STL-compatible.patch   |  190 ++--
 use-system-libraries-in-node.patch                         |  112 +-
 v8-remove-soon-to-be-removed-getAllFieldPositions.patch    |  344 ++++----
 16 files changed, 1135 insertions(+), 999 deletions(-)

Copied: electron9/repos/community-x86_64/1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch (from rev 758807, electron9/trunk/1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch)
===================================================================
--- 1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch	                        (rev 0)
+++ 1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,128 @@
+From 1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c Mon Sep 17 00:00:00 2001
+From: Cheng Zhao <zcbenz at gmail.com>
+Date: Mon, 16 Nov 2020 11:20:42 +0900
+Subject: [PATCH] fix: LC_ALL env should not be changed
+
+---
+ shell/browser/electron_browser_main_parts.cc | 25 ++++++++++-----
+ spec-main/chromium-spec.ts                   | 32 +++++++++++++-------
+ spec/fixtures/api/locale-check/main.js       | 10 ++++--
+ 3 files changed, 47 insertions(+), 20 deletions(-)
+
+diff --git a/shell/browser/electron_browser_main_parts.cc b/shell/browser/electron_browser_main_parts.cc
+index cd3cd1a65760..e53b22e31052 100644
+--- a/shell/browser/electron_browser_main_parts.cc
++++ b/shell/browser/electron_browser_main_parts.cc
+@@ -375,23 +375,34 @@ int ElectronBrowserMainParts::PreCreateThreads() {
+   // which keys off of getenv("LC_ALL").
+   // We must set this env first to make ui::ResourceBundle accept the custom
+   // locale.
+-  g_setenv("LC_ALL", locale.c_str(), TRUE);
++  std::unique_ptr<base::Environment> env(base::Environment::Create());
++  base::Optional<std::string> lc_all;
++  if (!locale.empty()) {
++    std::string str;
++    if (env->GetVar("LC_ALL", &str))
++      lc_all.emplace(std::move(str));
++    env->SetVar("LC_ALL", locale.c_str());
++  }
+ #endif
+ 
+   // Load resources bundle according to locale.
+   std::string loaded_locale = LoadResourceBundle(locale);
+ 
+-#if defined(OS_LINUX)
+-  // Reset to the loaded locale if the custom locale is invalid.
+-  if (loaded_locale != locale)
+-    g_setenv("LC_ALL", loaded_locale.c_str(), TRUE);
+-#endif
+-
+   // Initialize the app locale.
+   std::string app_locale = l10n_util::GetApplicationLocale(loaded_locale);
+   ElectronBrowserClient::SetApplicationLocale(app_locale);
+   fake_browser_process_->SetApplicationLocale(app_locale);
+ 
++#if defined(OS_LINUX)
++  // Reset to the original LC_ALL since we should not be changing it.
++  if (!locale.empty()) {
++    if (lc_all)
++      env->SetVar("LC_ALL", *lc_all);
++    else
++      env->UnSetVar("LC_ALL");
++  }
++#endif
++
+   // Force MediaCaptureDevicesDispatcher to be created on UI thread.
+   MediaCaptureDevicesDispatcher::GetInstance();
+ 
+diff --git a/spec-main/chromium-spec.ts b/spec-main/chromium-spec.ts
+index cfd64deabb65..510f62a0056c 100644
+--- a/spec-main/chromium-spec.ts
++++ b/spec-main/chromium-spec.ts
+@@ -291,22 +291,32 @@ describe('web security', () => {
+ describe('command line switches', () => {
+   describe('--lang switch', () => {
+     const currentLocale = app.getLocale();
+-    const testLocale = (locale: string, result: string, done: () => void) => {
++    const testLocale = async (locale: string, result: string, printEnv: boolean = false) => {
+       const appPath = path.join(fixturesPath, 'api', 'locale-check');
+-      const electronPath = process.execPath;
+-      let output = '';
+-      const appProcess = ChildProcess.spawn(electronPath, [appPath, `--set-lang=${locale}`]);
++      const args = [appPath, `--set-lang=${locale}`];
++      if (printEnv) {
++        args.push('--print-env');
++      }
++      const appProcess = ChildProcess.spawn(process.execPath, args);
+ 
++      let output = '';
+       appProcess.stdout.on('data', (data) => { output += data; });
+-      appProcess.stdout.on('end', () => {
+-        output = output.replace(/(\r\n|\n|\r)/gm, '');
+-        expect(output).to.equal(result);
+-        done();
+-      });
++      await emittedOnce(appProcess.stdout, 'end');
++      output = output.replace(/(\r\n|\n|\r)/gm, '');
++      expect(output).to.equal(result);
+     };
+ 
+-    it('should set the locale', (done) => testLocale('fr', 'fr', done));
+-    it('should not set an invalid locale', (done) => testLocale('asdfkl', currentLocale, done));
++    it('should set the locale', async () => testLocale('fr', 'fr'));
++    it('should not set an invalid locale', async () => testLocale('asdfkl', currentLocale));
++
++    const lcAll = String(process.env.LC_ALL);
++    ifit(process.platform === 'linux')('current process has a valid LC_ALL env', async () => {
++      // The LC_ALL env should not be set to DOM locale string.
++      expect(lcAll).to.not.equal(app.getLocale());
++    });
++    ifit(process.platform === 'linux')('should not change LC_ALL', async () => testLocale('fr', lcAll, true));
++    ifit(process.platform === 'linux')('should not change LC_ALL when setting invalid locale', async () => testLocale('asdfkl', lcAll, true));
++    ifit(process.platform === 'linux')('should not change LC_ALL when --lang is not set', async () => testLocale('', lcAll, true));
+   });
+ 
+   describe('--remote-debugging-port switch', () => {
+diff --git a/spec/fixtures/api/locale-check/main.js b/spec/fixtures/api/locale-check/main.js
+index d42b9ab1a110..929a9e0e9519 100644
+--- a/spec/fixtures/api/locale-check/main.js
++++ b/spec/fixtures/api/locale-check/main.js
+@@ -1,10 +1,16 @@
+ const { app } = require('electron');
+ 
+ const locale = process.argv[2].substr(11);
+-app.commandLine.appendSwitch('lang', locale);
++if (locale.length !== 0) {
++  app.commandLine.appendSwitch('lang', locale);
++}
+ 
+ app.whenReady().then(() => {
+-  process.stdout.write(app.getLocale());
++  if (process.argv[3] === '--print-env') {
++    process.stdout.write(String(process.env.LC_ALL));
++  } else {
++    process.stdout.write(app.getLocale());
++  }
+   process.stdout.end();
+ 
+   app.quit();

Deleted: PKGBUILD
===================================================================
--- PKGBUILD	2020-11-22 02:51:52 UTC (rev 758809)
+++ PKGBUILD	2020-11-22 02:52:26 UTC (rev 758810)
@@ -1,225 +0,0 @@
-# Maintainer: Nicola Squartini <tensor5 at gmail.com>
-
-pkgname=electron9
-pkgver=9.3.4
-_commit=979e59e871d6489b9574e849923bd2dc99ec6c58
-_chromiumver=83.0.4103.122
-pkgrel=1
-pkgdesc='Build cross platform desktop apps with web technologies'
-arch=('x86_64')
-url='https://electronjs.org/'
-license=('MIT' 'custom')
-depends=('c-ares' 'ffmpeg' 'gtk3' 'http-parser' 'libevent' 'libxslt' 'libxss'
-         'minizip' 'nss' 're2' 'snappy')
-makedepends=('clang' 'git' 'gn-m85' 'gperf' 'harfbuzz-icu' 'java-runtime-headless'
-             'jsoncpp' 'libnotify' 'lld' 'llvm' 'ninja' 'npm' 'pciutils' 'yarn'
-             'python2' 'wget' 'yasm')
-optdepends=('kde-cli-tools: file deletion support (kioclient5)'
-            'libappindicator-gtk3: StatusNotifierItem support'
-            'trash-cli: file deletion support (trash-put)'
-            "xdg-utils: open URLs with desktop's default (xdg-email, xdg-open)")
-source=('git+https://github.com/electron/electron.git'
-        'git+https://chromium.googlesource.com/chromium/tools/depot_tools.git'
-        'electron9.desktop'
-        'default_app-icon.patch'
-        'use-system-libraries-in-node.patch'
-        'add-missing-algorithm-header-in-crx_install_error.cc.patch'
-        'avoid-double-destruction-of-ServiceWorkerObjectHost.patch'
-        'chromium-83-gcc-10.patch'
-        'chromium-ffmpeg-4.3.patch'
-        'chromium-skia-harmony.patch'
-        'clean-up-a-call-to-set_utf8.patch'
-        'include-memory-header-to-get-the-definition-of-std-u.patch'
-        'iwyu-std-numeric_limits-is-defined-in-limits.patch'
-        'libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch'
-        'make-some-of-blink-custom-iterators-STL-compatible.patch'
-        'v8-remove-soon-to-be-removed-getAllFieldPositions.patch'
-       )
-sha256sums=('SKIP'
-            'SKIP'
-            '93236bbc903c6b990e6562f0aed33ebe67c1ee365b7ffd094a2febcd3a5cad76'
-            'dd2d248831dd4944d385ebf008426e66efe61d6fdf66f8932c963a12167947b4'
-            'c7eadac877179e586d0cce7f898aa1462b4c207733e68ecc17de9754b691713a'
-            '0e2a78e4aa7272ab0ff4a4c467750e01bad692a026ad9828aaf06d2a9418b9d8'
-            'd793842e9584bf75e3779918297ba0ffa6dd05394ef5b2bf5fb73aa9c86a7e2f'
-            '3e5ba8c0a70a4bc673deec0c61eb2b58f05a4c784cbdb7c8118be1eb6580db6d'
-            '5390304b5f544868985ce00a3ec082d4ece2dacb1c73cdb35dd4facfea12449a'
-            '771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1'
-            '58c41713eb6fb33b6eef120f4324fa1fb8123b1fbc4ecbe5662f1f9779b9b6af'
-            '071326135bc25226aa165639dff80a03670a17548f2d2ff5cc4f40982b39c52a'
-            '675fb3d6276cce569a641436465f58d5709d1d4a5f62b7052989479fd4aaea24'
-            '50687079426094f2056d1f4806dc30fc8d6bad16190520e57ba087ec5db1d778'
-            '3d7f20e1d2ee7d73ed25e708c0d59a0cb215fcce10a379e3d48a856533c4b0b7'
-            'e042024423027ad3ef729a7e4709bdf9714aea49d64cfbbf46a645a05703abc2')
-
-_system_libs=('ffmpeg'
-              'flac'
-              'fontconfig'
-              'freetype'
-              'harfbuzz-ng'
-              'icu'
-              'libdrm'
-              'libevent'
-              'libjpeg'
-#              'libpng'
-              'libvpx'
-              'libwebp'
-              'libxml'
-              'libxslt'
-#              'openh264'
-              'opus'
-              're2'
-              'snappy'
-              'yasm'
-              'zlib'
-             )
-
-prepare() {
-  mkdir -p "${srcdir}"/python2-path
-  ln -sf /usr/bin/python2 "${srcdir}/python2-path/python"
-  export PATH="${srcdir}/python2-path:${PATH}:${srcdir}/depot_tools"
-
-  echo "Fetching chromium..."
-  git clone --branch=${_chromiumver} --depth=1 \
-      https://chromium.googlesource.com/chromium/src.git
-
-  echo "solutions = [
-  {
-    \"name\": \"src/electron\",
-    \"url\": \"file://${srcdir}/electron@${_commit}\",
-    \"deps_file\": \"DEPS\",
-    \"managed\": False,
-    \"custom_deps\": {
-      \"src\": None,
-    },
-    \"custom_vars\": {},
-  },
-]" > .gclient
-
-  python2 "${srcdir}/depot_tools/gclient.py" sync \
-      --with_branch_heads \
-      --with_tags \
-      --nohooks
-
-  sed -e "s/'am'/'apply'/" -i src/electron/script/lib/git.py
-
-  echo "Running hooks..."
-  # python2 "${srcdir}/depot_tools/gclient.py" runhooks
-  python2 src/build/landmines.py
-  python2 src/build/util/lastchange.py -o src/build/util/LASTCHANGE
-  python2 src/build/util/lastchange.py -m GPU_LISTS_VERSION \
-    --revision-id-only --header src/gpu/config/gpu_lists_version.h
-  python2 src/build/util/lastchange.py -m SKIA_COMMIT_HASH \
-    -s src/third_party/skia --header src/skia/ext/skia_commit_hash.h
-  # Create sysmlink to system clang-format
-  ln -s /usr/bin/clang-format src/buildtools/linux64
-  # Create sysmlink to system Node.js
-  mkdir -p src/third_party/node/linux/node-linux-x64/bin
-  ln -sf /usr/bin/node src/third_party/node/linux/node-linux-x64/bin
-  python2 src/third_party/depot_tools/download_from_google_storage.py \
-    --no_resume --extract --no_auth --bucket chromium-nodejs \
-    -s src/third_party/node/node_modules.tar.gz.sha1
-  vpython src/tools/download_cros_provided_profile.py \
-    --newest_state=src/chrome/android/profiles/newest.txt \
-    --local_state=src/chrome/android/profiles/local.txt \
-    --output_name=src/chrome/android/profiles/afdo.prof \
-    --gs_url_base=chromeos-prebuilt/afdo-job/llvm
-  python2 src/electron/script/apply_all_patches.py \
-      src/electron/patches/config.json
-  cd src/electron
-  yarn install --frozen-lockfile
-  cd ..
-
-  echo "Applying local patches..."
-  patch -Np1 -i ../add-missing-algorithm-header-in-crx_install_error.cc.patch
-  patch -Np1 -i ../avoid-double-destruction-of-ServiceWorkerObjectHost.patch
-  patch -Np1 -i ../chromium-83-gcc-10.patch
-  patch -Np1 -i ../chromium-ffmpeg-4.3.patch
-  patch -Np0 -i ../chromium-skia-harmony.patch
-  patch -Np1 -i ../clean-up-a-call-to-set_utf8.patch
-  patch -Np1 -i ../include-memory-header-to-get-the-definition-of-std-u.patch
-  patch -Np1 -F3 -i ../iwyu-std-numeric_limits-is-defined-in-limits.patch
-  patch -Np1 -i ../libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch
-  patch -Np1 -i ../make-some-of-blink-custom-iterators-STL-compatible.patch
-  patch -Np1 -d v8 <../v8-remove-soon-to-be-removed-getAllFieldPositions.patch
-  patch -Np1 -i ../use-system-libraries-in-node.patch
-  patch -Np1 -i ../default_app-icon.patch  # Icon from .desktop file
-
-  echo "Patching Chromium for using system libraries..."
-  sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
-      tools/generate_shim_headers/generate_shim_headers.py
-  for lib in $(printf "%s\n" "${_system_libs[@]}" | sed 's/^libjpeg$/&_turbo/'); do
-      third_party_dir="third_party/${lib}"
-      if [ ! -d ${third_party_dir} ]; then
-        third_party_dir="base/${third_party_dir}"
-      fi
-      find ${third_party_dir} -type f \
-          \! -path "${third_party_dir}/chromium/*" \
-          \! -path "${third_party_dir}/google/*" \
-          \! -path 'third_party/harfbuzz-ng/utils/hb_scoped.h' \
-          \! -path 'third_party/yasm/run_yasm.py' \
-          \! -regex '.*\.\(gn\|gni\|isolate\)' \
-          -delete
-  done
-  python2 build/linux/unbundle/replace_gn_files.py \
-      --system-libraries \
-      "${_system_libs[@]}"
-}
-
-build() {
-  export CC=clang
-  export CXX=clang++
-  export AR=ar
-  export NM=nm
-
-  # Do not warn about unknown warning options
-  CFLAGS+='   -Wno-unknown-warning-option'
-  CXXFLAGS+=' -Wno-unknown-warning-option'
-
-  cd src
-  export CHROMIUM_BUILDTOOLS_PATH="${PWD}/buildtools"
-  GN_EXTRA_ARGS='
-    blink_symbol_level = 0
-    clang_use_chrome_plugins = false
-    custom_toolchain = "//build/toolchain/linux/unbundle:default"
-    host_toolchain = "//build/toolchain/linux/unbundle:default"
-    icu_use_data_file = false
-    is_component_ffmpeg = false
-    link_pulseaudio = true
-    linux_use_bundled_binutils = false
-    treat_warnings_as_errors = false
-    use_custom_libcxx = false
-    use_gnome_keyring = false
-    use_sysroot = false
-  '
-  gn-m85 gen out/Release \
-      --args="import(\"//electron/build/args/release.gn\") ${GN_EXTRA_ARGS}"
-  ninja -C out/Release electron
-  # Strip before zip to avoid
-  # zipfile.LargeZipFile: Filesize would require ZIP64 extensions
-  strip -s out/Release/electron
-  ninja -C out/Release electron_dist_zip
-  # ninja -C out/Release third_party/electron_node:headers
-}
-
-package() {
-  install -dm755 "${pkgdir}/usr/lib/${pkgname}"
-  bsdtar -xf src/out/Release/dist.zip -C "${pkgdir}/usr/lib/${pkgname}"
-
-  chmod u+s "${pkgdir}/usr/lib/${pkgname}/chrome-sandbox"
-
-  install -dm755 "${pkgdir}/usr/share/licenses/${pkgname}"
-  for l in "${pkgdir}/usr/lib/${pkgname}"/{LICENSE,LICENSES.chromium.html}; do
-    ln -s  \
-      $(realpath --relative-to="${pkgdir}/usr/share/licenses/${pkgname}" ${l}) \
-      "${pkgdir}/usr/share/licenses/${pkgname}"
-  done
-
-  install -dm755 "${pkgdir}"/usr/bin
-  ln -s ../lib/${pkgname}/electron "${pkgdir}"/usr/bin/${pkgname}
-
-  # Install .desktop and icon file (see default_app-icon.patch)
-  install -Dm644 -t "${pkgdir}/usr/share/applications" ${pkgname}.desktop
-  install -Dm644 src/electron/default_app/icon.png \
-          "${pkgdir}/usr/share/pixmaps/${pkgname}.png"  # hicolor has no 1024x1024
-}

Copied: electron9/repos/community-x86_64/PKGBUILD (from rev 758807, electron9/trunk/PKGBUILD)
===================================================================
--- PKGBUILD	                        (rev 0)
+++ PKGBUILD	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,233 @@
+# Maintainer: Nicola Squartini <tensor5 at gmail.com>
+
+pkgname=electron9
+pkgver=9.3.4
+_commit=979e59e871d6489b9574e849923bd2dc99ec6c58
+_chromiumver=83.0.4103.122
+pkgrel=2
+pkgdesc='Build cross platform desktop apps with web technologies'
+arch=('x86_64')
+url='https://electronjs.org/'
+license=('MIT' 'custom')
+depends=('c-ares' 'ffmpeg' 'gtk3' 'http-parser' 'libevent' 'libxslt' 'libxss'
+         'minizip' 'nss' 're2' 'snappy')
+makedepends=('clang' 'git' 'gn-m85' 'gperf' 'harfbuzz-icu' 'java-runtime-headless'
+             'jsoncpp' 'libnotify' 'lld' 'llvm' 'ninja' 'npm' 'pciutils' 'yarn'
+             'python2' 'wget' 'yasm')
+optdepends=('kde-cli-tools: file deletion support (kioclient5)'
+            'libappindicator-gtk3: StatusNotifierItem support'
+            'trash-cli: file deletion support (trash-put)'
+            "xdg-utils: open URLs with desktop's default (xdg-email, xdg-open)")
+source=('git+https://github.com/electron/electron.git'
+        'git+https://chromium.googlesource.com/chromium/tools/depot_tools.git'
+        'electron9.desktop'
+        'default_app-icon.patch'
+        'use-system-libraries-in-node.patch'
+        'add-missing-algorithm-header-in-crx_install_error.cc.patch'
+        'avoid-double-destruction-of-ServiceWorkerObjectHost.patch'
+        'chromium-83-gcc-10.patch'
+        'chromium-ffmpeg-4.3.patch'
+        'chromium-skia-harmony.patch'
+        'clean-up-a-call-to-set_utf8.patch'
+        'include-memory-header-to-get-the-definition-of-std-u.patch'
+        'iwyu-std-numeric_limits-is-defined-in-limits.patch'
+        'libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch'
+        'make-some-of-blink-custom-iterators-STL-compatible.patch'
+        'v8-remove-soon-to-be-removed-getAllFieldPositions.patch'
+        '1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch'
+       )
+sha256sums=('SKIP'
+            'SKIP'
+            '93236bbc903c6b990e6562f0aed33ebe67c1ee365b7ffd094a2febcd3a5cad76'
+            'dd2d248831dd4944d385ebf008426e66efe61d6fdf66f8932c963a12167947b4'
+            'c7eadac877179e586d0cce7f898aa1462b4c207733e68ecc17de9754b691713a'
+            '0e2a78e4aa7272ab0ff4a4c467750e01bad692a026ad9828aaf06d2a9418b9d8'
+            'd793842e9584bf75e3779918297ba0ffa6dd05394ef5b2bf5fb73aa9c86a7e2f'
+            '3e5ba8c0a70a4bc673deec0c61eb2b58f05a4c784cbdb7c8118be1eb6580db6d'
+            '5390304b5f544868985ce00a3ec082d4ece2dacb1c73cdb35dd4facfea12449a'
+            '771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1'
+            '58c41713eb6fb33b6eef120f4324fa1fb8123b1fbc4ecbe5662f1f9779b9b6af'
+            '071326135bc25226aa165639dff80a03670a17548f2d2ff5cc4f40982b39c52a'
+            '675fb3d6276cce569a641436465f58d5709d1d4a5f62b7052989479fd4aaea24'
+            '50687079426094f2056d1f4806dc30fc8d6bad16190520e57ba087ec5db1d778'
+            '3d7f20e1d2ee7d73ed25e708c0d59a0cb215fcce10a379e3d48a856533c4b0b7'
+            'e042024423027ad3ef729a7e4709bdf9714aea49d64cfbbf46a645a05703abc2'
+            '18bec85fa60b28ed517f3c8be272f6dcecae2819648b9b85cb396b9af25e7270'
+           )
+
+_system_libs=('ffmpeg'
+              'flac'
+              'fontconfig'
+              'freetype'
+              'harfbuzz-ng'
+              'icu'
+              'libdrm'
+              'libevent'
+              'libjpeg'
+#              'libpng'
+              'libvpx'
+              'libwebp'
+              'libxml'
+              'libxslt'
+#              'openh264'
+              'opus'
+              're2'
+              'snappy'
+              'yasm'
+              'zlib'
+             )
+
+prepare() {
+  mkdir -p "${srcdir}"/python2-path
+  ln -sf /usr/bin/python2 "${srcdir}/python2-path/python"
+  export PATH="${srcdir}/python2-path:${PATH}:${srcdir}/depot_tools"
+
+  echo "Fetching chromium..."
+  git clone --branch=${_chromiumver} --depth=1 \
+      https://chromium.googlesource.com/chromium/src.git
+
+  echo "solutions = [
+  {
+    \"name\": \"src/electron\",
+    \"url\": \"file://${srcdir}/electron@${_commit}\",
+    \"deps_file\": \"DEPS\",
+    \"managed\": False,
+    \"custom_deps\": {
+      \"src\": None,
+    },
+    \"custom_vars\": {},
+  },
+]" > .gclient
+
+  python2 "${srcdir}/depot_tools/gclient.py" sync \
+      --with_branch_heads \
+      --with_tags \
+      --nohooks
+
+  sed -e "s/'am'/'apply'/" -i src/electron/script/lib/git.py
+
+  echo "Running hooks..."
+  # python2 "${srcdir}/depot_tools/gclient.py" runhooks
+  python2 src/build/landmines.py
+  python2 src/build/util/lastchange.py -o src/build/util/LASTCHANGE
+  python2 src/build/util/lastchange.py -m GPU_LISTS_VERSION \
+    --revision-id-only --header src/gpu/config/gpu_lists_version.h
+  python2 src/build/util/lastchange.py -m SKIA_COMMIT_HASH \
+    -s src/third_party/skia --header src/skia/ext/skia_commit_hash.h
+  # Create sysmlink to system clang-format
+  ln -s /usr/bin/clang-format src/buildtools/linux64
+  # Create sysmlink to system Node.js
+  mkdir -p src/third_party/node/linux/node-linux-x64/bin
+  ln -sf /usr/bin/node src/third_party/node/linux/node-linux-x64/bin
+  python2 src/third_party/depot_tools/download_from_google_storage.py \
+    --no_resume --extract --no_auth --bucket chromium-nodejs \
+    -s src/third_party/node/node_modules.tar.gz.sha1
+  vpython src/tools/download_cros_provided_profile.py \
+    --newest_state=src/chrome/android/profiles/newest.txt \
+    --local_state=src/chrome/android/profiles/local.txt \
+    --output_name=src/chrome/android/profiles/afdo.prof \
+    --gs_url_base=chromeos-prebuilt/afdo-job/llvm
+  python2 src/electron/script/apply_all_patches.py \
+      src/electron/patches/config.json
+  cd src/electron
+  yarn install --frozen-lockfile
+  cd ..
+
+  echo "Applying local patches..."
+  patch -Np1 -i ../add-missing-algorithm-header-in-crx_install_error.cc.patch
+  patch -Np1 -i ../avoid-double-destruction-of-ServiceWorkerObjectHost.patch
+  patch -Np1 -i ../chromium-83-gcc-10.patch
+  patch -Np1 -i ../chromium-ffmpeg-4.3.patch
+  patch -Np0 -i ../chromium-skia-harmony.patch
+  patch -Np1 -i ../clean-up-a-call-to-set_utf8.patch
+  patch -Np1 -i ../include-memory-header-to-get-the-definition-of-std-u.patch
+  patch -Np1 -F3 -i ../iwyu-std-numeric_limits-is-defined-in-limits.patch
+  patch -Np1 -i ../libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch
+  patch -Np1 -i ../make-some-of-blink-custom-iterators-STL-compatible.patch
+  patch -Np1 -d v8 <../v8-remove-soon-to-be-removed-getAllFieldPositions.patch
+  patch -Np1 -i ../use-system-libraries-in-node.patch
+  patch -Np1 -i ../default_app-icon.patch  # Icon from .desktop file
+
+  # Backport https://github.com/electron/electron/pull/26508 (FS#68629)
+  cd electron
+  patch -Np1 -i ../../1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch
+  cd ..
+
+  echo "Patching Chromium for using system libraries..."
+  sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
+      tools/generate_shim_headers/generate_shim_headers.py
+  for lib in $(printf "%s\n" "${_system_libs[@]}" | sed 's/^libjpeg$/&_turbo/'); do
+      third_party_dir="third_party/${lib}"
+      if [ ! -d ${third_party_dir} ]; then
+        third_party_dir="base/${third_party_dir}"
+      fi
+      find ${third_party_dir} -type f \
+          \! -path "${third_party_dir}/chromium/*" \
+          \! -path "${third_party_dir}/google/*" \
+          \! -path 'third_party/harfbuzz-ng/utils/hb_scoped.h' \
+          \! -path 'third_party/yasm/run_yasm.py' \
+          \! -regex '.*\.\(gn\|gni\|isolate\)' \
+          -delete
+  done
+  python2 build/linux/unbundle/replace_gn_files.py \
+      --system-libraries \
+      "${_system_libs[@]}"
+}
+
+build() {
+  export CC=clang
+  export CXX=clang++
+  export AR=ar
+  export NM=nm
+
+  # Do not warn about unknown warning options
+  CFLAGS+='   -Wno-unknown-warning-option'
+  CXXFLAGS+=' -Wno-unknown-warning-option'
+
+  cd src
+  export CHROMIUM_BUILDTOOLS_PATH="${PWD}/buildtools"
+  GN_EXTRA_ARGS='
+    blink_symbol_level = 0
+    clang_use_chrome_plugins = false
+    custom_toolchain = "//build/toolchain/linux/unbundle:default"
+    host_toolchain = "//build/toolchain/linux/unbundle:default"
+    icu_use_data_file = false
+    is_component_ffmpeg = false
+    link_pulseaudio = true
+    linux_use_bundled_binutils = false
+    treat_warnings_as_errors = false
+    use_custom_libcxx = false
+    use_gnome_keyring = false
+    use_sysroot = false
+  '
+  gn-m85 gen out/Release \
+      --args="import(\"//electron/build/args/release.gn\") ${GN_EXTRA_ARGS}"
+  ninja -C out/Release electron
+  # Strip before zip to avoid
+  # zipfile.LargeZipFile: Filesize would require ZIP64 extensions
+  strip -s out/Release/electron
+  ninja -C out/Release electron_dist_zip
+  # ninja -C out/Release third_party/electron_node:headers
+}
+
+package() {
+  install -dm755 "${pkgdir}/usr/lib/${pkgname}"
+  bsdtar -xf src/out/Release/dist.zip -C "${pkgdir}/usr/lib/${pkgname}"
+
+  chmod u+s "${pkgdir}/usr/lib/${pkgname}/chrome-sandbox"
+
+  install -dm755 "${pkgdir}/usr/share/licenses/${pkgname}"
+  for l in "${pkgdir}/usr/lib/${pkgname}"/{LICENSE,LICENSES.chromium.html}; do
+    ln -s  \
+      $(realpath --relative-to="${pkgdir}/usr/share/licenses/${pkgname}" ${l}) \
+      "${pkgdir}/usr/share/licenses/${pkgname}"
+  done
+
+  install -dm755 "${pkgdir}"/usr/bin
+  ln -s ../lib/${pkgname}/electron "${pkgdir}"/usr/bin/${pkgname}
+
+  # Install .desktop and icon file (see default_app-icon.patch)
+  install -Dm644 -t "${pkgdir}/usr/share/applications" ${pkgname}.desktop
+  install -Dm644 src/electron/default_app/icon.png \
+          "${pkgdir}/usr/share/pixmaps/${pkgname}.png"  # hicolor has no 1024x1024
+}

Deleted: add-missing-algorithm-header-in-crx_install_error.cc.patch
===================================================================
--- add-missing-algorithm-header-in-crx_install_error.cc.patch	2020-11-22 02:51:52 UTC (rev 758809)
+++ add-missing-algorithm-header-in-crx_install_error.cc.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -1,29 +0,0 @@
-From 2b9d6daa0ab5ce45ec5555466d5a5a583a020ea8 Mon Sep 17 00:00:00 2001
-From: Daniel Playfair Cal <daniel.playfair.cal at gmail.com>
-Date: Sat, 18 Apr 2020 00:27:38 +0000
-Subject: [PATCH] Add missing algorithm header in crx_install_error.cc
-
-This is needed for the use of std::find.
-
-Change-Id: I2dc43b3887c467986c5346be5a9e27a987e1e5b3
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2152333
-Reviewed-by: Ken Rockot <rockot at google.com>
-Commit-Queue: Ken Rockot <rockot at google.com>
-Cr-Commit-Position: refs/heads/master@{#760272}
----
- extensions/browser/install/crx_install_error.cc | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/extensions/browser/install/crx_install_error.cc b/extensions/browser/install/crx_install_error.cc
-index a9765bb0a5a..bd0d3e35a16 100644
---- a/extensions/browser/install/crx_install_error.cc
-+++ b/extensions/browser/install/crx_install_error.cc
-@@ -4,6 +4,8 @@
- 
- #include "extensions/browser/install/crx_install_error.h"
- 
-+#include <algorithm>
-+
- #include "base/logging.h"
- #include "extensions/browser/install/sandboxed_unpacker_failure_reason.h"
- 

Copied: electron9/repos/community-x86_64/add-missing-algorithm-header-in-crx_install_error.cc.patch (from rev 758807, electron9/trunk/add-missing-algorithm-header-in-crx_install_error.cc.patch)
===================================================================
--- add-missing-algorithm-header-in-crx_install_error.cc.patch	                        (rev 0)
+++ add-missing-algorithm-header-in-crx_install_error.cc.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,29 @@
+From 2b9d6daa0ab5ce45ec5555466d5a5a583a020ea8 Mon Sep 17 00:00:00 2001
+From: Daniel Playfair Cal <daniel.playfair.cal at gmail.com>
+Date: Sat, 18 Apr 2020 00:27:38 +0000
+Subject: [PATCH] Add missing algorithm header in crx_install_error.cc
+
+This is needed for the use of std::find.
+
+Change-Id: I2dc43b3887c467986c5346be5a9e27a987e1e5b3
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2152333
+Reviewed-by: Ken Rockot <rockot at google.com>
+Commit-Queue: Ken Rockot <rockot at google.com>
+Cr-Commit-Position: refs/heads/master@{#760272}
+---
+ extensions/browser/install/crx_install_error.cc | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/extensions/browser/install/crx_install_error.cc b/extensions/browser/install/crx_install_error.cc
+index a9765bb0a5a..bd0d3e35a16 100644
+--- a/extensions/browser/install/crx_install_error.cc
++++ b/extensions/browser/install/crx_install_error.cc
+@@ -4,6 +4,8 @@
+ 
+ #include "extensions/browser/install/crx_install_error.h"
+ 
++#include <algorithm>
++
+ #include "base/logging.h"
+ #include "extensions/browser/install/sandboxed_unpacker_failure_reason.h"
+ 

Deleted: avoid-double-destruction-of-ServiceWorkerObjectHost.patch
===================================================================
--- avoid-double-destruction-of-ServiceWorkerObjectHost.patch	2020-11-22 02:51:52 UTC (rev 758809)
+++ avoid-double-destruction-of-ServiceWorkerObjectHost.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -1,138 +0,0 @@
-From bd59ce32629ef684624821419c43967b73d2989e Mon Sep 17 00:00:00 2001
-From: Hiroki Nakagawa <nhiroki at chromium.org>
-Date: Fri, 8 May 2020 08:25:31 +0000
-Subject: [PATCH] ServiceWorker: Avoid double destruction of
- ServiceWorkerObjectHost on connection error
-
-This CL avoids the case where ServiceWorkerObjectHost is destroyed twice
-on ServiceWorkerObjectHost::OnConnectionError() when Chromium is built
-with the GCC build toolchain.
-
-> How does the issue happen?
-
-ServiceWorkerObjectHost has a cyclic reference like this:
-
-ServiceWorkerObjectHost
-  --([1] scoped_refptr)--> ServiceWorkerVersion
-    --([2] std::unique_ptr)--> ServiceWorkerProviderHost
-      --([3] std::unique_ptr)--> ServiceWorkerContainerHost
-        --([4] std::unique_ptr)--> ServiceWorkerObjectHost
-
-Note that ServiceWorkerContainerHost manages ServiceWorkerObjectHost in
-map<int64_t version_id, std::unique_ptr<ServiceWorkerObjectHost>>.
-
-When ServiceWorkerObjectHost::OnConnectionError() is called, the
-function removes the reference [4] from the map, and destroys
-ServiceWorkerObjectHost. If the object host has the last reference [1]
-to ServiceWorkerVersion, the destruction also cuts off the references
-[2] and [3], and destroys ServiceWorkerProviderHost and
-ServiceWorkerContainerHost.
-
-This seems to work well on the Chromium's default toolchain, but not
-work on the GCC toolchain. According to the report, destruction of
-ServiceWorkerContainerHost happens while the map owned by the container
-host is erasing the ServiceWorkerObjectHost, and this results in crash
-due to double destruction of the object host.
-
-I don't know the reason why this happens only on the GCC toolchain, but
-I suspect the order of object destruction on std::map::erase() could be
-different depending on the toolchains.
-
-> How does this CL fix this?
-
-The ideal fix is to redesign the ownership model of
-ServiceWorkerVersion, but it's not feasible in the short term.
-
-Instead, this CL avoids destruction of ServiceWorkerObjectHost on
-std::map::erase(). The new code takes the ownership of the object host
-from the map first, and then erases the entry from the map. This
-separates timings to erase the map entry and to destroy the object host,
-so the crash should no longer happen.
-
-Bug: 1056598
-Change-Id: Id30654cb575bc557c42044d6f0c6f1f9bfaed613
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2094496
-Reviewed-by: Makoto Shimazu <shimazu at chromium.org>
-Commit-Queue: Hiroki Nakagawa <nhiroki at chromium.org>
-Cr-Commit-Position: refs/heads/master@{#766770}
----
- .../service_worker_container_host.cc          | 10 +++++
- .../service_worker_object_host_unittest.cc    | 38 +++++++++++++++++++
- 2 files changed, 48 insertions(+)
-
-diff --git a/content/browser/service_worker/service_worker_container_host.cc b/content/browser/service_worker/service_worker_container_host.cc
-index ec7fb1449af..98c62093b0e 100644
---- a/content/browser/service_worker/service_worker_container_host.cc
-+++ b/content/browser/service_worker/service_worker_container_host.cc
-@@ -669,6 +669,16 @@ void ServiceWorkerContainerHost::RemoveServiceWorkerObjectHost(
-     int64_t version_id) {
-   DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
-   DCHECK(base::Contains(service_worker_object_hosts_, version_id));
-+
-+  // ServiceWorkerObjectHost to be deleted may have the last reference to
-+  // ServiceWorkerVersion that indirectly owns this ServiceWorkerContainerHost.
-+  // If we erase the object host directly from the map, |this| could be deleted
-+  // during the map operation and may crash. To avoid the case, we take the
-+  // ownership of the object host from the map first, and then erase the entry
-+  // from the map. See https://crbug.com/1056598 for details.
-+  std::unique_ptr<ServiceWorkerObjectHost> to_be_deleted =
-+      std::move(service_worker_object_hosts_[version_id]);
-+  DCHECK(to_be_deleted);
-   service_worker_object_hosts_.erase(version_id);
- }
- 
-diff --git a/content/browser/service_worker/service_worker_object_host_unittest.cc b/content/browser/service_worker/service_worker_object_host_unittest.cc
-index 408d7c1f9d1..6eab59040ab 100644
---- a/content/browser/service_worker/service_worker_object_host_unittest.cc
-+++ b/content/browser/service_worker/service_worker_object_host_unittest.cc
-@@ -200,6 +200,19 @@ class ServiceWorkerObjectHostTest : public testing::Test {
-     return registration_info;
-   }
- 
-+  void CallOnConnectionError(ServiceWorkerContainerHost* container_host,
-+                             int64_t version_id) {
-+    // ServiceWorkerObjectHost has the last reference to the version.
-+    ServiceWorkerObjectHost* object_host =
-+        GetServiceWorkerObjectHost(container_host, version_id);
-+    EXPECT_TRUE(object_host->version_->HasOneRef());
-+
-+    // Make sure that OnConnectionError induces destruction of the version and
-+    // the object host.
-+    object_host->receivers_.Clear();
-+    object_host->OnConnectionError();
-+  }
-+
-   BrowserTaskEnvironment task_environment_;
-   std::unique_ptr<EmbeddedWorkerTestHelper> helper_;
-   scoped_refptr<ServiceWorkerRegistration> registration_;
-@@ -409,5 +422,30 @@ TEST_F(ServiceWorkerObjectHostTest, DispatchExtendableMessageEvent_FromClient) {
-             events[0]->source_info_for_client->client_type);
- }
- 
-+// This is a regression test for https://crbug.com/1056598.
-+TEST_F(ServiceWorkerObjectHostTest, OnConnectionError) {
-+  const GURL scope("https://www.example.com/");
-+  const GURL script_url("https://www.example.com/service_worker.js");
-+  Initialize(std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath()));
-+  SetUpRegistration(scope, script_url);
-+
-+  // Create the provider host.
-+  ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk,
-+            StartServiceWorker(version_.get()));
-+
-+  // Set up the case where the last reference to the version is owned by the
-+  // service worker object host.
-+  ServiceWorkerContainerHost* container_host =
-+      version_->provider_host()->container_host();
-+  ServiceWorkerVersion* version_rawptr = version_.get();
-+  version_ = nullptr;
-+  ASSERT_TRUE(version_rawptr->HasOneRef());
-+
-+  // Simulate the connection error that induces the object host destruction.
-+  // This shouldn't crash.
-+  CallOnConnectionError(container_host, version_rawptr->version_id());
-+  base::RunLoop().RunUntilIdle();
-+}
-+
- }  // namespace service_worker_object_host_unittest
- }  // namespace content

Copied: electron9/repos/community-x86_64/avoid-double-destruction-of-ServiceWorkerObjectHost.patch (from rev 758807, electron9/trunk/avoid-double-destruction-of-ServiceWorkerObjectHost.patch)
===================================================================
--- avoid-double-destruction-of-ServiceWorkerObjectHost.patch	                        (rev 0)
+++ avoid-double-destruction-of-ServiceWorkerObjectHost.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,138 @@
+From bd59ce32629ef684624821419c43967b73d2989e Mon Sep 17 00:00:00 2001
+From: Hiroki Nakagawa <nhiroki at chromium.org>
+Date: Fri, 8 May 2020 08:25:31 +0000
+Subject: [PATCH] ServiceWorker: Avoid double destruction of
+ ServiceWorkerObjectHost on connection error
+
+This CL avoids the case where ServiceWorkerObjectHost is destroyed twice
+on ServiceWorkerObjectHost::OnConnectionError() when Chromium is built
+with the GCC build toolchain.
+
+> How does the issue happen?
+
+ServiceWorkerObjectHost has a cyclic reference like this:
+
+ServiceWorkerObjectHost
+  --([1] scoped_refptr)--> ServiceWorkerVersion
+    --([2] std::unique_ptr)--> ServiceWorkerProviderHost
+      --([3] std::unique_ptr)--> ServiceWorkerContainerHost
+        --([4] std::unique_ptr)--> ServiceWorkerObjectHost
+
+Note that ServiceWorkerContainerHost manages ServiceWorkerObjectHost in
+map<int64_t version_id, std::unique_ptr<ServiceWorkerObjectHost>>.
+
+When ServiceWorkerObjectHost::OnConnectionError() is called, the
+function removes the reference [4] from the map, and destroys
+ServiceWorkerObjectHost. If the object host has the last reference [1]
+to ServiceWorkerVersion, the destruction also cuts off the references
+[2] and [3], and destroys ServiceWorkerProviderHost and
+ServiceWorkerContainerHost.
+
+This seems to work well on the Chromium's default toolchain, but not
+work on the GCC toolchain. According to the report, destruction of
+ServiceWorkerContainerHost happens while the map owned by the container
+host is erasing the ServiceWorkerObjectHost, and this results in crash
+due to double destruction of the object host.
+
+I don't know the reason why this happens only on the GCC toolchain, but
+I suspect the order of object destruction on std::map::erase() could be
+different depending on the toolchains.
+
+> How does this CL fix this?
+
+The ideal fix is to redesign the ownership model of
+ServiceWorkerVersion, but it's not feasible in the short term.
+
+Instead, this CL avoids destruction of ServiceWorkerObjectHost on
+std::map::erase(). The new code takes the ownership of the object host
+from the map first, and then erases the entry from the map. This
+separates timings to erase the map entry and to destroy the object host,
+so the crash should no longer happen.
+
+Bug: 1056598
+Change-Id: Id30654cb575bc557c42044d6f0c6f1f9bfaed613
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2094496
+Reviewed-by: Makoto Shimazu <shimazu at chromium.org>
+Commit-Queue: Hiroki Nakagawa <nhiroki at chromium.org>
+Cr-Commit-Position: refs/heads/master@{#766770}
+---
+ .../service_worker_container_host.cc          | 10 +++++
+ .../service_worker_object_host_unittest.cc    | 38 +++++++++++++++++++
+ 2 files changed, 48 insertions(+)
+
+diff --git a/content/browser/service_worker/service_worker_container_host.cc b/content/browser/service_worker/service_worker_container_host.cc
+index ec7fb1449af..98c62093b0e 100644
+--- a/content/browser/service_worker/service_worker_container_host.cc
++++ b/content/browser/service_worker/service_worker_container_host.cc
+@@ -669,6 +669,16 @@ void ServiceWorkerContainerHost::RemoveServiceWorkerObjectHost(
+     int64_t version_id) {
+   DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
+   DCHECK(base::Contains(service_worker_object_hosts_, version_id));
++
++  // ServiceWorkerObjectHost to be deleted may have the last reference to
++  // ServiceWorkerVersion that indirectly owns this ServiceWorkerContainerHost.
++  // If we erase the object host directly from the map, |this| could be deleted
++  // during the map operation and may crash. To avoid the case, we take the
++  // ownership of the object host from the map first, and then erase the entry
++  // from the map. See https://crbug.com/1056598 for details.
++  std::unique_ptr<ServiceWorkerObjectHost> to_be_deleted =
++      std::move(service_worker_object_hosts_[version_id]);
++  DCHECK(to_be_deleted);
+   service_worker_object_hosts_.erase(version_id);
+ }
+ 
+diff --git a/content/browser/service_worker/service_worker_object_host_unittest.cc b/content/browser/service_worker/service_worker_object_host_unittest.cc
+index 408d7c1f9d1..6eab59040ab 100644
+--- a/content/browser/service_worker/service_worker_object_host_unittest.cc
++++ b/content/browser/service_worker/service_worker_object_host_unittest.cc
+@@ -200,6 +200,19 @@ class ServiceWorkerObjectHostTest : public testing::Test {
+     return registration_info;
+   }
+ 
++  void CallOnConnectionError(ServiceWorkerContainerHost* container_host,
++                             int64_t version_id) {
++    // ServiceWorkerObjectHost has the last reference to the version.
++    ServiceWorkerObjectHost* object_host =
++        GetServiceWorkerObjectHost(container_host, version_id);
++    EXPECT_TRUE(object_host->version_->HasOneRef());
++
++    // Make sure that OnConnectionError induces destruction of the version and
++    // the object host.
++    object_host->receivers_.Clear();
++    object_host->OnConnectionError();
++  }
++
+   BrowserTaskEnvironment task_environment_;
+   std::unique_ptr<EmbeddedWorkerTestHelper> helper_;
+   scoped_refptr<ServiceWorkerRegistration> registration_;
+@@ -409,5 +422,30 @@ TEST_F(ServiceWorkerObjectHostTest, DispatchExtendableMessageEvent_FromClient) {
+             events[0]->source_info_for_client->client_type);
+ }
+ 
++// This is a regression test for https://crbug.com/1056598.
++TEST_F(ServiceWorkerObjectHostTest, OnConnectionError) {
++  const GURL scope("https://www.example.com/");
++  const GURL script_url("https://www.example.com/service_worker.js");
++  Initialize(std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath()));
++  SetUpRegistration(scope, script_url);
++
++  // Create the provider host.
++  ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk,
++            StartServiceWorker(version_.get()));
++
++  // Set up the case where the last reference to the version is owned by the
++  // service worker object host.
++  ServiceWorkerContainerHost* container_host =
++      version_->provider_host()->container_host();
++  ServiceWorkerVersion* version_rawptr = version_.get();
++  version_ = nullptr;
++  ASSERT_TRUE(version_rawptr->HasOneRef());
++
++  // Simulate the connection error that induces the object host destruction.
++  // This shouldn't crash.
++  CallOnConnectionError(container_host, version_rawptr->version_id());
++  base::RunLoop().RunUntilIdle();
++}
++
+ }  // namespace service_worker_object_host_unittest
+ }  // namespace content

Deleted: chromium-83-gcc-10.patch
===================================================================
--- chromium-83-gcc-10.patch	2020-11-22 02:51:52 UTC (rev 758809)
+++ chromium-83-gcc-10.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -1,64 +0,0 @@
-From e473f41284ccc8fa4bc4622d087194b18a1ec23a Mon Sep 17 00:00:00 2001
-From: Stephan Hartmann <stha09 at googlemail.com>
-Date: Tue, 7 Apr 2020 16:37:10 +0000
-Subject: [PATCH] GCC: fix includes for gcc-10
-
----
- chrome/browser/search/background/ntp_backgrounds.h              | 1 +
- third_party/webrtc/call/rtx_receive_stream.h                    | 1 +
- .../webrtc/modules/audio_processing/aec3/clockdrift_detector.h  | 1 +
- ui/gfx/linux/drm_util_linux.h                                   | 2 ++
- 5 files changed, 6 insertions(+)
-
-diff --git a/chrome/browser/search/background/ntp_backgrounds.h b/chrome/browser/search/background/ntp_backgrounds.h
-index 7afc0a2..ea5818e 100644
---- a/chrome/browser/search/background/ntp_backgrounds.h
-+++ b/chrome/browser/search/background/ntp_backgrounds.h
-@@ -6,6 +6,7 @@
- #define CHROME_BROWSER_SEARCH_BACKGROUND_NTP_BACKGROUNDS_H_
- 
- #include <array>
-+#include <cstddef>
- 
- class GURL;
- 
-diff --git a/third_party/webrtc/call/rtx_receive_stream.h b/third_party/webrtc/call/rtx_receive_stream.h
-index 8ffa440..113a816 100644
---- a/third_party/webrtc/call/rtx_receive_stream.h
-+++ b/third_party/webrtc/call/rtx_receive_stream.h
-@@ -12,6 +12,7 @@
- #define CALL_RTX_RECEIVE_STREAM_H_
- 
- #include <map>
-+#include <cstdint>
- 
- #include "call/rtp_packet_sink_interface.h"
- 
-diff --git a/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h b/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
-index 22528c9..69e624e 100644
---- a/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
-+++ b/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
-@@ -12,6 +12,7 @@
- #define MODULES_AUDIO_PROCESSING_AEC3_CLOCKDRIFT_DETECTOR_H_
- 
- #include <array>
-+#include <cstddef>
- 
- namespace webrtc {
- 
-diff --git a/ui/gfx/linux/drm_util_linux.h b/ui/gfx/linux/drm_util_linux.h
-index 86ff2eb..990f12c 100644
---- a/ui/gfx/linux/drm_util_linux.h
-+++ b/ui/gfx/linux/drm_util_linux.h
-@@ -7,6 +7,8 @@
- 
- #include "ui/gfx/buffer_types.h"
- 
-+#include <cstdint>
-+
- namespace ui {
- 
- int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format);
--- 
-2.24.1
-

Copied: electron9/repos/community-x86_64/chromium-83-gcc-10.patch (from rev 758807, electron9/trunk/chromium-83-gcc-10.patch)
===================================================================
--- chromium-83-gcc-10.patch	                        (rev 0)
+++ chromium-83-gcc-10.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,64 @@
+From e473f41284ccc8fa4bc4622d087194b18a1ec23a Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09 at googlemail.com>
+Date: Tue, 7 Apr 2020 16:37:10 +0000
+Subject: [PATCH] GCC: fix includes for gcc-10
+
+---
+ chrome/browser/search/background/ntp_backgrounds.h              | 1 +
+ third_party/webrtc/call/rtx_receive_stream.h                    | 1 +
+ .../webrtc/modules/audio_processing/aec3/clockdrift_detector.h  | 1 +
+ ui/gfx/linux/drm_util_linux.h                                   | 2 ++
+ 5 files changed, 6 insertions(+)
+
+diff --git a/chrome/browser/search/background/ntp_backgrounds.h b/chrome/browser/search/background/ntp_backgrounds.h
+index 7afc0a2..ea5818e 100644
+--- a/chrome/browser/search/background/ntp_backgrounds.h
++++ b/chrome/browser/search/background/ntp_backgrounds.h
+@@ -6,6 +6,7 @@
+ #define CHROME_BROWSER_SEARCH_BACKGROUND_NTP_BACKGROUNDS_H_
+ 
+ #include <array>
++#include <cstddef>
+ 
+ class GURL;
+ 
+diff --git a/third_party/webrtc/call/rtx_receive_stream.h b/third_party/webrtc/call/rtx_receive_stream.h
+index 8ffa440..113a816 100644
+--- a/third_party/webrtc/call/rtx_receive_stream.h
++++ b/third_party/webrtc/call/rtx_receive_stream.h
+@@ -12,6 +12,7 @@
+ #define CALL_RTX_RECEIVE_STREAM_H_
+ 
+ #include <map>
++#include <cstdint>
+ 
+ #include "call/rtp_packet_sink_interface.h"
+ 
+diff --git a/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h b/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
+index 22528c9..69e624e 100644
+--- a/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
++++ b/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
+@@ -12,6 +12,7 @@
+ #define MODULES_AUDIO_PROCESSING_AEC3_CLOCKDRIFT_DETECTOR_H_
+ 
+ #include <array>
++#include <cstddef>
+ 
+ namespace webrtc {
+ 
+diff --git a/ui/gfx/linux/drm_util_linux.h b/ui/gfx/linux/drm_util_linux.h
+index 86ff2eb..990f12c 100644
+--- a/ui/gfx/linux/drm_util_linux.h
++++ b/ui/gfx/linux/drm_util_linux.h
+@@ -7,6 +7,8 @@
+ 
+ #include "ui/gfx/buffer_types.h"
+ 
++#include <cstdint>
++
+ namespace ui {
+ 
+ int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format);
+-- 
+2.24.1
+

Deleted: chromium-ffmpeg-4.3.patch
===================================================================
--- chromium-ffmpeg-4.3.patch	2020-11-22 02:51:52 UTC (rev 758809)
+++ chromium-ffmpeg-4.3.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -1,21 +0,0 @@
-diff --git a/media/base/media.cc b/media/base/media.cc
-index c282ee49a03..a298b40c79b 100644
---- a/media/base/media.cc
-+++ b/media/base/media.cc
-@@ -14,6 +14,7 @@
- #include "third_party/libyuv/include/libyuv.h"
- 
- #if BUILDFLAG(ENABLE_FFMPEG)
-+#include <limits>
- #include "third_party/ffmpeg/ffmpeg_features.h"  // nogncheck
- extern "C" {
- #include <libavutil/cpu.h>
-@@ -41,7 +42,7 @@ class MediaInitializer {
- 
- #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)

Copied: electron9/repos/community-x86_64/chromium-ffmpeg-4.3.patch (from rev 758807, electron9/trunk/chromium-ffmpeg-4.3.patch)
===================================================================
--- chromium-ffmpeg-4.3.patch	                        (rev 0)
+++ chromium-ffmpeg-4.3.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,21 @@
+diff --git a/media/base/media.cc b/media/base/media.cc
+index c282ee49a03..a298b40c79b 100644
+--- a/media/base/media.cc
++++ b/media/base/media.cc
+@@ -14,6 +14,7 @@
+ #include "third_party/libyuv/include/libyuv.h"
+ 
+ #if BUILDFLAG(ENABLE_FFMPEG)
++#include <limits>
+ #include "third_party/ffmpeg/ffmpeg_features.h"  // nogncheck
+ extern "C" {
+ #include <libavutil/cpu.h>
+@@ -41,7 +42,7 @@ class MediaInitializer {
+ 
+ #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)

Deleted: chromium-skia-harmony.patch
===================================================================
--- chromium-skia-harmony.patch	2020-11-22 02:51:52 UTC (rev 758809)
+++ chromium-skia-harmony.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -1,14 +0,0 @@
---- third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig	2019-07-19 11:08:34.770972665 +0000
-+++ third_party/skia/src/ports/SkFontHost_FreeType.cpp	2019-07-19 11:08:44.274442065 +0000
-@@ -128,9 +128,9 @@ public:
-         : fGetVarDesignCoordinates(nullptr)
-         , fGetVarAxisFlags(nullptr)
-         , fLibrary(nullptr)
--        , fIsLCDSupported(false)
-+        , fIsLCDSupported(true)
-         , fLightHintingIsYOnly(false)
--        , fLCDExtra(0)
-+        , fLCDExtra(2)
-     {
-         if (FT_New_Library(&gFTMemory, &fLibrary)) {
-             return;

Copied: electron9/repos/community-x86_64/chromium-skia-harmony.patch (from rev 758807, electron9/trunk/chromium-skia-harmony.patch)
===================================================================
--- chromium-skia-harmony.patch	                        (rev 0)
+++ chromium-skia-harmony.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,14 @@
+--- third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig	2019-07-19 11:08:34.770972665 +0000
++++ third_party/skia/src/ports/SkFontHost_FreeType.cpp	2019-07-19 11:08:44.274442065 +0000
+@@ -128,9 +128,9 @@ public:
+         : fGetVarDesignCoordinates(nullptr)
+         , fGetVarAxisFlags(nullptr)
+         , fLibrary(nullptr)
+-        , fIsLCDSupported(false)
++        , fIsLCDSupported(true)
+         , fLightHintingIsYOnly(false)
+-        , fLCDExtra(0)
++        , fLCDExtra(2)
+     {
+         if (FT_New_Library(&gFTMemory, &fLibrary)) {
+             return;

Deleted: clean-up-a-call-to-set_utf8.patch
===================================================================
--- clean-up-a-call-to-set_utf8.patch	2020-11-22 02:51:52 UTC (rev 758809)
+++ clean-up-a-call-to-set_utf8.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -1,34 +0,0 @@
-From ede390a0b18e4565abf8ac1e1ff717e1d43fc320 Mon Sep 17 00:00:00 2001
-From: Paul Wankadia <junyer at chromium.org>
-Date: Tue, 14 Apr 2020 16:54:51 +0000
-Subject: [PATCH] Clean up a call to set_utf8().
-
-This is part of an effort to rewrite calls to utf8() and set_utf8()
-(in RE2::Options) as calls to encoding() and set_encoding(),
-respectively. utf8() and set_utf8() have been marked as the "legacy"
-interface since 2008, so it is long past time that we get rid of them.
-
-R=parastoog at google.com
-
-Change-Id: I62c48cd575a55b519d5264ed857f927c163068b2
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2145261
-Reviewed-by: Parastoo Geranmayeh <parastoog at google.com>
-Commit-Queue: Paul Wankadia <junyer at chromium.org>
-Cr-Commit-Position: refs/heads/master@{#758886}
----
- components/autofill/core/browser/address_rewriter.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/components/autofill/core/browser/address_rewriter.cc b/components/autofill/core/browser/address_rewriter.cc
-index 1b85a50974c..030a5aba146 100644
---- a/components/autofill/core/browser/address_rewriter.cc
-+++ b/components/autofill/core/browser/address_rewriter.cc
-@@ -57,7 +57,7 @@ void CompileRulesFromData(const std::string& data_string,
-                           CompiledRuleVector* compiled_rules) {
-   base::StringPiece data = data_string;
-   re2::RE2::Options options;
--  options.set_utf8(true);
-+  options.set_encoding(RE2::Options::EncodingUTF8);
-   options.set_word_boundary(true);
- 
-   size_t token_end = 0;

Copied: electron9/repos/community-x86_64/clean-up-a-call-to-set_utf8.patch (from rev 758807, electron9/trunk/clean-up-a-call-to-set_utf8.patch)
===================================================================
--- clean-up-a-call-to-set_utf8.patch	                        (rev 0)
+++ clean-up-a-call-to-set_utf8.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,34 @@
+From ede390a0b18e4565abf8ac1e1ff717e1d43fc320 Mon Sep 17 00:00:00 2001
+From: Paul Wankadia <junyer at chromium.org>
+Date: Tue, 14 Apr 2020 16:54:51 +0000
+Subject: [PATCH] Clean up a call to set_utf8().
+
+This is part of an effort to rewrite calls to utf8() and set_utf8()
+(in RE2::Options) as calls to encoding() and set_encoding(),
+respectively. utf8() and set_utf8() have been marked as the "legacy"
+interface since 2008, so it is long past time that we get rid of them.
+
+R=parastoog at google.com
+
+Change-Id: I62c48cd575a55b519d5264ed857f927c163068b2
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2145261
+Reviewed-by: Parastoo Geranmayeh <parastoog at google.com>
+Commit-Queue: Paul Wankadia <junyer at chromium.org>
+Cr-Commit-Position: refs/heads/master@{#758886}
+---
+ components/autofill/core/browser/address_rewriter.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/components/autofill/core/browser/address_rewriter.cc b/components/autofill/core/browser/address_rewriter.cc
+index 1b85a50974c..030a5aba146 100644
+--- a/components/autofill/core/browser/address_rewriter.cc
++++ b/components/autofill/core/browser/address_rewriter.cc
+@@ -57,7 +57,7 @@ void CompileRulesFromData(const std::string& data_string,
+                           CompiledRuleVector* compiled_rules) {
+   base::StringPiece data = data_string;
+   re2::RE2::Options options;
+-  options.set_utf8(true);
++  options.set_encoding(RE2::Options::EncodingUTF8);
+   options.set_word_boundary(true);
+ 
+   size_t token_end = 0;

Deleted: default_app-icon.patch
===================================================================
--- default_app-icon.patch	2020-11-22 02:51:52 UTC (rev 758809)
+++ default_app-icon.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -1,21 +0,0 @@
---- a/electron/default_app/default_app.ts
-+++ b/electron/default_app/default_app.ts
-@@ -60,7 +60,7 @@
-   };
- 
-   if (process.platform === 'linux') {
--    options.icon = path.join(__dirname, 'icon.png');
-+    options.icon = '/usr/share/pixmaps/electron.png';
-   }
- 
-   mainWindow = new BrowserWindow(options);
---- a/electron/filenames.gni
-+++ b/electron/filenames.gni
-@@ -6,7 +6,6 @@
-   ]
- 
-   default_app_static_sources = [
--    "default_app/icon.png",
-     "default_app/index.html",
-     "default_app/package.json",
-     "default_app/styles.css",

Copied: electron9/repos/community-x86_64/default_app-icon.patch (from rev 758808, electron9/trunk/default_app-icon.patch)
===================================================================
--- default_app-icon.patch	                        (rev 0)
+++ default_app-icon.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,21 @@
+--- a/electron/default_app/default_app.ts
++++ b/electron/default_app/default_app.ts
+@@ -60,7 +60,7 @@
+   };
+ 
+   if (process.platform === 'linux') {
+-    options.icon = path.join(__dirname, 'icon.png');
++    options.icon = '/usr/share/pixmaps/electron.png';
+   }
+ 
+   mainWindow = new BrowserWindow(options);
+--- a/electron/filenames.gni
++++ b/electron/filenames.gni
+@@ -6,7 +6,6 @@
+   ]
+ 
+   default_app_static_sources = [
+-    "default_app/icon.png",
+     "default_app/index.html",
+     "default_app/package.json",
+     "default_app/styles.css",

Deleted: electron9.desktop
===================================================================
--- electron9.desktop	2020-11-22 02:51:52 UTC (rev 758809)
+++ electron9.desktop	2020-11-22 02:52:26 UTC (rev 758810)
@@ -1,7 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=Electron 9
-Icon=electron9
-Exec=electron9 %u
-Categories=Development;GTK;
-StartupNotify=true

Copied: electron9/repos/community-x86_64/electron9.desktop (from rev 758808, electron9/trunk/electron9.desktop)
===================================================================
--- electron9.desktop	                        (rev 0)
+++ electron9.desktop	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Type=Application
+Name=Electron 9
+Icon=electron9
+Exec=electron9 %u
+Categories=Development;GTK;
+StartupNotify=true

Deleted: include-memory-header-to-get-the-definition-of-std-u.patch
===================================================================
--- include-memory-header-to-get-the-definition-of-std-u.patch	2020-11-22 02:51:52 UTC (rev 758809)
+++ include-memory-header-to-get-the-definition-of-std-u.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -1,32 +0,0 @@
-From 40d994e4aa2e4d5077c1810e4623549618a19c05 Mon Sep 17 00:00:00 2001
-From: Piotr Tworek <ptworek at vewd.com>
-Date: Mon, 27 Apr 2020 16:31:46 +0000
-Subject: [PATCH] Include "memory" header to get the definition of
- std::unique_ptr.
-
-Right now the code im the affected fails to build when using libstdc++
-instead of bundled libcxx. Apparently libcxx pulls the necessary header
-indirectly.
-
-Change-Id: Ie5e86f228434ab16d622ae7a912d9ce607258931
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2164645
-Reviewed-by: Jochen Eisinger <jochen at chromium.org>
-Commit-Queue: Jochen Eisinger <jochen at chromium.org>
-Cr-Commit-Position: refs/heads/master@{#762881}
----
- .../blink/renderer/core/html/trust_token_attribute_parsing.h    | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h b/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h
-index f5a7ab03892..ef19cfaf680 100644
---- a/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h
-+++ b/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h
-@@ -5,6 +5,8 @@
- #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRUST_TOKEN_ATTRIBUTE_PARSING_H_
- #define THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRUST_TOKEN_ATTRIBUTE_PARSING_H_
- 
-+#include <memory>
-+
- #include "base/optional.h"
- #include "services/network/public/mojom/trust_tokens.mojom-blink-forward.h"
- #include "third_party/blink/renderer/core/core_export.h"

Copied: electron9/repos/community-x86_64/include-memory-header-to-get-the-definition-of-std-u.patch (from rev 758808, electron9/trunk/include-memory-header-to-get-the-definition-of-std-u.patch)
===================================================================
--- include-memory-header-to-get-the-definition-of-std-u.patch	                        (rev 0)
+++ include-memory-header-to-get-the-definition-of-std-u.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,32 @@
+From 40d994e4aa2e4d5077c1810e4623549618a19c05 Mon Sep 17 00:00:00 2001
+From: Piotr Tworek <ptworek at vewd.com>
+Date: Mon, 27 Apr 2020 16:31:46 +0000
+Subject: [PATCH] Include "memory" header to get the definition of
+ std::unique_ptr.
+
+Right now the code im the affected fails to build when using libstdc++
+instead of bundled libcxx. Apparently libcxx pulls the necessary header
+indirectly.
+
+Change-Id: Ie5e86f228434ab16d622ae7a912d9ce607258931
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2164645
+Reviewed-by: Jochen Eisinger <jochen at chromium.org>
+Commit-Queue: Jochen Eisinger <jochen at chromium.org>
+Cr-Commit-Position: refs/heads/master@{#762881}
+---
+ .../blink/renderer/core/html/trust_token_attribute_parsing.h    | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h b/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h
+index f5a7ab03892..ef19cfaf680 100644
+--- a/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h
++++ b/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h
+@@ -5,6 +5,8 @@
+ #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRUST_TOKEN_ATTRIBUTE_PARSING_H_
+ #define THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRUST_TOKEN_ATTRIBUTE_PARSING_H_
+ 
++#include <memory>
++
+ #include "base/optional.h"
+ #include "services/network/public/mojom/trust_tokens.mojom-blink-forward.h"
+ #include "third_party/blink/renderer/core/core_export.h"

Deleted: iwyu-std-numeric_limits-is-defined-in-limits.patch
===================================================================
--- iwyu-std-numeric_limits-is-defined-in-limits.patch	2020-11-22 02:51:52 UTC (rev 758809)
+++ iwyu-std-numeric_limits-is-defined-in-limits.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -1,29 +0,0 @@
-From 74f76a6be385ef056b0be2362c32c728141cca16 Mon Sep 17 00:00:00 2001
-From: Stephan Hartmann <stha09 at googlemail.com>
-Date: Fri, 17 Apr 2020 16:04:12 +0000
-Subject: [PATCH] IWYU: std::numeric_limits is defined in limits
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Change-Id: Ifbc379adc5bb7242c21e7da0bcfc28f49e4dd06f
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2153111
-Reviewed-by: François Doray <fdoray at chromium.org>
-Commit-Queue: François Doray <fdoray at chromium.org>
-Cr-Commit-Position: refs/heads/master@{#760075}
----
- .../graph/policies/background_tab_loading_policy_helpers.cc      | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc
-index 4881c010bb9..593501d16a7 100644
---- a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc
-+++ b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc
-@@ -5,6 +5,7 @@
- #include "chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.h"
- 
- #include <math.h>
-+#include <limits>
- 
- #include "base/logging.h"
- 

Copied: electron9/repos/community-x86_64/iwyu-std-numeric_limits-is-defined-in-limits.patch (from rev 758808, electron9/trunk/iwyu-std-numeric_limits-is-defined-in-limits.patch)
===================================================================
--- iwyu-std-numeric_limits-is-defined-in-limits.patch	                        (rev 0)
+++ iwyu-std-numeric_limits-is-defined-in-limits.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,29 @@
+From 74f76a6be385ef056b0be2362c32c728141cca16 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09 at googlemail.com>
+Date: Fri, 17 Apr 2020 16:04:12 +0000
+Subject: [PATCH] IWYU: std::numeric_limits is defined in limits
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Change-Id: Ifbc379adc5bb7242c21e7da0bcfc28f49e4dd06f
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2153111
+Reviewed-by: François Doray <fdoray at chromium.org>
+Commit-Queue: François Doray <fdoray at chromium.org>
+Cr-Commit-Position: refs/heads/master@{#760075}
+---
+ .../graph/policies/background_tab_loading_policy_helpers.cc      | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc
+index 4881c010bb9..593501d16a7 100644
+--- a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc
++++ b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc
+@@ -5,6 +5,7 @@
+ #include "chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.h"
+ 
+ #include <math.h>
++#include <limits>
+ 
+ #include "base/logging.h"
+ 

Deleted: libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch
===================================================================
--- libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch	2020-11-22 02:51:52 UTC (rev 758809)
+++ libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -1,62 +0,0 @@
-From aeef68888d4c00b69facead2b934095a8cd17329 Mon Sep 17 00:00:00 2001
-From: Stephan Hartmann <stha09 at googlemail.com>
-Date: Mon, 20 Apr 2020 18:21:43 +0000
-Subject: [PATCH] libstdc++: fix incomplete-type in AXTree for
- NodeSetSizePosInSetInfo
-
-has only forward declaration of NodeSetSizePosInSetInfo. Therefore,
-move declaration from ax_tree.cc.
-
-std: :unordered_map<T, U> requires U to be fully declared. ax_tree.h
-Bug: 957519
-Change-Id: Ic1f4bf3ebfea229ece84251e46d4461b31873868
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2132403
-Reviewed-by: David Tseng <dtseng at chromium.org>
-Commit-Queue: David Tseng <dtseng at chromium.org>
-Cr-Commit-Position: refs/heads/master@{#760588}
----
- ui/accessibility/ax_tree.cc | 10 ++--------
- ui/accessibility/ax_tree.h  |  9 ++++++++-
- 2 files changed, 10 insertions(+), 9 deletions(-)
-
-diff --git a/ui/accessibility/ax_tree.cc b/ui/accessibility/ax_tree.cc
-index 7b8d9b1b161..e9154028d66 100644
---- a/ui/accessibility/ax_tree.cc
-+++ b/ui/accessibility/ax_tree.cc
-@@ -567,14 +567,8 @@ struct AXTreeUpdateState {
-   const AXTree& tree;
- };
- 
--struct AXTree::NodeSetSizePosInSetInfo {
--  NodeSetSizePosInSetInfo() = default;
--  ~NodeSetSizePosInSetInfo() = default;
--
--  int32_t pos_in_set = 0;
--  int32_t set_size = 0;
--  base::Optional<int> lowest_hierarchical_level;
--};
-+AXTree::NodeSetSizePosInSetInfo::NodeSetSizePosInSetInfo() = default;
-+AXTree::NodeSetSizePosInSetInfo::~NodeSetSizePosInSetInfo() = default;
- 
- struct AXTree::OrderedSetContent {
-   explicit OrderedSetContent(const AXNode* ordered_set = nullptr)
-diff --git a/ui/accessibility/ax_tree.h b/ui/accessibility/ax_tree.h
-index a51ca8de4c8..8c1c57517ac 100644
---- a/ui/accessibility/ax_tree.h
-+++ b/ui/accessibility/ax_tree.h
-@@ -328,7 +328,14 @@ class AX_EXPORT AXTree : public AXNode::OwnerTree {
-   bool enable_extra_mac_nodes_ = false;
- 
-   // Contains pos_in_set and set_size data for an AXNode.
--  struct NodeSetSizePosInSetInfo;
-+  struct NodeSetSizePosInSetInfo {
-+    NodeSetSizePosInSetInfo();
-+    ~NodeSetSizePosInSetInfo();
-+
-+    int32_t pos_in_set = 0;
-+    int32_t set_size = 0;
-+    base::Optional<int> lowest_hierarchical_level;
-+  };
- 
-   // Represents the content of an ordered set which includes the ordered set
-   // items and the ordered set container if it exists.

Copied: electron9/repos/community-x86_64/libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch (from rev 758809, electron9/trunk/libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch)
===================================================================
--- libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch	                        (rev 0)
+++ libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,62 @@
+From aeef68888d4c00b69facead2b934095a8cd17329 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09 at googlemail.com>
+Date: Mon, 20 Apr 2020 18:21:43 +0000
+Subject: [PATCH] libstdc++: fix incomplete-type in AXTree for
+ NodeSetSizePosInSetInfo
+
+has only forward declaration of NodeSetSizePosInSetInfo. Therefore,
+move declaration from ax_tree.cc.
+
+std: :unordered_map<T, U> requires U to be fully declared. ax_tree.h
+Bug: 957519
+Change-Id: Ic1f4bf3ebfea229ece84251e46d4461b31873868
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2132403
+Reviewed-by: David Tseng <dtseng at chromium.org>
+Commit-Queue: David Tseng <dtseng at chromium.org>
+Cr-Commit-Position: refs/heads/master@{#760588}
+---
+ ui/accessibility/ax_tree.cc | 10 ++--------
+ ui/accessibility/ax_tree.h  |  9 ++++++++-
+ 2 files changed, 10 insertions(+), 9 deletions(-)
+
+diff --git a/ui/accessibility/ax_tree.cc b/ui/accessibility/ax_tree.cc
+index 7b8d9b1b161..e9154028d66 100644
+--- a/ui/accessibility/ax_tree.cc
++++ b/ui/accessibility/ax_tree.cc
+@@ -567,14 +567,8 @@ struct AXTreeUpdateState {
+   const AXTree& tree;
+ };
+ 
+-struct AXTree::NodeSetSizePosInSetInfo {
+-  NodeSetSizePosInSetInfo() = default;
+-  ~NodeSetSizePosInSetInfo() = default;
+-
+-  int32_t pos_in_set = 0;
+-  int32_t set_size = 0;
+-  base::Optional<int> lowest_hierarchical_level;
+-};
++AXTree::NodeSetSizePosInSetInfo::NodeSetSizePosInSetInfo() = default;
++AXTree::NodeSetSizePosInSetInfo::~NodeSetSizePosInSetInfo() = default;
+ 
+ struct AXTree::OrderedSetContent {
+   explicit OrderedSetContent(const AXNode* ordered_set = nullptr)
+diff --git a/ui/accessibility/ax_tree.h b/ui/accessibility/ax_tree.h
+index a51ca8de4c8..8c1c57517ac 100644
+--- a/ui/accessibility/ax_tree.h
++++ b/ui/accessibility/ax_tree.h
+@@ -328,7 +328,14 @@ class AX_EXPORT AXTree : public AXNode::OwnerTree {
+   bool enable_extra_mac_nodes_ = false;
+ 
+   // Contains pos_in_set and set_size data for an AXNode.
+-  struct NodeSetSizePosInSetInfo;
++  struct NodeSetSizePosInSetInfo {
++    NodeSetSizePosInSetInfo();
++    ~NodeSetSizePosInSetInfo();
++
++    int32_t pos_in_set = 0;
++    int32_t set_size = 0;
++    base::Optional<int> lowest_hierarchical_level;
++  };
+ 
+   // Represents the content of an ordered set which includes the ordered set
+   // items and the ordered set container if it exists.

Deleted: make-some-of-blink-custom-iterators-STL-compatible.patch
===================================================================
--- make-some-of-blink-custom-iterators-STL-compatible.patch	2020-11-22 02:51:52 UTC (rev 758809)
+++ make-some-of-blink-custom-iterators-STL-compatible.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -1,95 +0,0 @@
-From d3cabbc7321d349a9bffda482df5afc0d4df1ac2 Mon Sep 17 00:00:00 2001
-From: Piotr Tworek <ptworek at vewd.com>
-Date: Thu, 30 Apr 2020 21:33:47 +0000
-Subject: [PATCH] Make some of blink custom iterators STL compatible.
-
-Blink has recently started using functions like std::any_of with some of
-the custom iterators it provides. On Linux this works in the default
-setup using libcxx, but fails with even the most recent versions of
-libstdc++. In all cases the error message (text in bug report) complains
-about lack of matching std::__iterator_category definition.
-
-From what I understand the error message is basically saying those
-iterators are not STL compatible due to missing traits as described
-in https://en.cppreference.com/w/cpp/iterator/iterator_traits. Such
-traits are provided by custom iterators defined in //base, or //cc.
-
-This patch adds the necessary traits to iterators that are currently
-affected by this problem.
-
-Bug: 1076869
-Change-Id: I9950a7100c32499ba96647317fa70b87dc22eaf9
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2174199
-Reviewed-by: Kentaro Hara <haraken at chromium.org>
-Commit-Queue: Piotr Tworek <ptworek at vewd.com>
-Cr-Commit-Position: refs/heads/master@{#764426}
----
- .../core/layout/ng/ng_physical_container_fragment.h  |  6 ++++++
- .../blink/renderer/platform/wtf/hash_iterators.h     | 12 ++++++++++++
- third_party/blink/renderer/platform/wtf/hash_table.h |  6 ++++++
- 3 files changed, 24 insertions(+)
-
-diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h
-index 1256e77c146..8b93107f2fc 100644
---- a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h
-+++ b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h
-@@ -38,6 +38,12 @@ class CORE_EXPORT NGPhysicalContainerFragment : public NGPhysicalFragment {
-       STACK_ALLOCATED();
- 
-      public:
-+      using iterator_category = std::bidirectional_iterator_tag;
-+      using value_type = NGLink;
-+      using difference_type = ptrdiff_t;
-+      using pointer = value_type*;
-+      using reference = value_type&;
-+
-       ConstIterator(const NGLink* current) : current_(current) {}
- 
-       const NGLink& operator*() const { return *PostLayoutOrCurrent(); }
-diff --git a/third_party/blink/renderer/platform/wtf/hash_iterators.h b/third_party/blink/renderer/platform/wtf/hash_iterators.h
-index f8e66e6be85..6003d02c509 100644
---- a/third_party/blink/renderer/platform/wtf/hash_iterators.h
-+++ b/third_party/blink/renderer/platform/wtf/hash_iterators.h
-@@ -53,6 +53,12 @@ struct HashTableConstIteratorAdapter<HashTableType,
-   typedef HashTableConstValuesIterator<HashTableType, KeyType, MappedType>
-       ValuesIterator;
- 
-+  using iterator_category = std::bidirectional_iterator_tag;
-+  using value_type = HashTableType;
-+  using difference_type = ptrdiff_t;
-+  using pointer = value_type*;
-+  using reference = value_type&;
-+
-   HashTableConstIteratorAdapter() = default;
-   HashTableConstIteratorAdapter(
-       const typename HashTableType::const_iterator& impl)
-@@ -94,6 +100,12 @@ struct HashTableIteratorAdapter<HashTableType,
-   typedef HashTableValuesIterator<HashTableType, KeyType, MappedType>
-       ValuesIterator;
- 
-+  using iterator_category = std::bidirectional_iterator_tag;
-+  using value_type = HashTableType;
-+  using difference_type = ptrdiff_t;
-+  using pointer = value_type*;
-+  using reference = value_type&;
-+
-   HashTableIteratorAdapter() = default;
-   HashTableIteratorAdapter(const typename HashTableType::iterator& impl)
-       : impl_(impl) {}
-diff --git a/third_party/blink/renderer/platform/wtf/hash_table.h b/third_party/blink/renderer/platform/wtf/hash_table.h
-index f596fb5d41e..5a4468d6bd1 100644
---- a/third_party/blink/renderer/platform/wtf/hash_table.h
-+++ b/third_party/blink/renderer/platform/wtf/hash_table.h
-@@ -2204,6 +2204,12 @@ struct HashTableConstIteratorAdapter {
-   STACK_ALLOCATED();
- 
-  public:
-+  using iterator_category = std::bidirectional_iterator_tag;
-+  using value_type = HashTableType;
-+  using difference_type = ptrdiff_t;
-+  using pointer = value_type*;
-+  using reference = value_type&;
-+
-   HashTableConstIteratorAdapter() = default;
-   HashTableConstIteratorAdapter(
-       const typename HashTableType::const_iterator& impl)

Copied: electron9/repos/community-x86_64/make-some-of-blink-custom-iterators-STL-compatible.patch (from rev 758809, electron9/trunk/make-some-of-blink-custom-iterators-STL-compatible.patch)
===================================================================
--- make-some-of-blink-custom-iterators-STL-compatible.patch	                        (rev 0)
+++ make-some-of-blink-custom-iterators-STL-compatible.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,95 @@
+From d3cabbc7321d349a9bffda482df5afc0d4df1ac2 Mon Sep 17 00:00:00 2001
+From: Piotr Tworek <ptworek at vewd.com>
+Date: Thu, 30 Apr 2020 21:33:47 +0000
+Subject: [PATCH] Make some of blink custom iterators STL compatible.
+
+Blink has recently started using functions like std::any_of with some of
+the custom iterators it provides. On Linux this works in the default
+setup using libcxx, but fails with even the most recent versions of
+libstdc++. In all cases the error message (text in bug report) complains
+about lack of matching std::__iterator_category definition.
+
+From what I understand the error message is basically saying those
+iterators are not STL compatible due to missing traits as described
+in https://en.cppreference.com/w/cpp/iterator/iterator_traits. Such
+traits are provided by custom iterators defined in //base, or //cc.
+
+This patch adds the necessary traits to iterators that are currently
+affected by this problem.
+
+Bug: 1076869
+Change-Id: I9950a7100c32499ba96647317fa70b87dc22eaf9
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2174199
+Reviewed-by: Kentaro Hara <haraken at chromium.org>
+Commit-Queue: Piotr Tworek <ptworek at vewd.com>
+Cr-Commit-Position: refs/heads/master@{#764426}
+---
+ .../core/layout/ng/ng_physical_container_fragment.h  |  6 ++++++
+ .../blink/renderer/platform/wtf/hash_iterators.h     | 12 ++++++++++++
+ third_party/blink/renderer/platform/wtf/hash_table.h |  6 ++++++
+ 3 files changed, 24 insertions(+)
+
+diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h
+index 1256e77c146..8b93107f2fc 100644
+--- a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h
++++ b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h
+@@ -38,6 +38,12 @@ class CORE_EXPORT NGPhysicalContainerFragment : public NGPhysicalFragment {
+       STACK_ALLOCATED();
+ 
+      public:
++      using iterator_category = std::bidirectional_iterator_tag;
++      using value_type = NGLink;
++      using difference_type = ptrdiff_t;
++      using pointer = value_type*;
++      using reference = value_type&;
++
+       ConstIterator(const NGLink* current) : current_(current) {}
+ 
+       const NGLink& operator*() const { return *PostLayoutOrCurrent(); }
+diff --git a/third_party/blink/renderer/platform/wtf/hash_iterators.h b/third_party/blink/renderer/platform/wtf/hash_iterators.h
+index f8e66e6be85..6003d02c509 100644
+--- a/third_party/blink/renderer/platform/wtf/hash_iterators.h
++++ b/third_party/blink/renderer/platform/wtf/hash_iterators.h
+@@ -53,6 +53,12 @@ struct HashTableConstIteratorAdapter<HashTableType,
+   typedef HashTableConstValuesIterator<HashTableType, KeyType, MappedType>
+       ValuesIterator;
+ 
++  using iterator_category = std::bidirectional_iterator_tag;
++  using value_type = HashTableType;
++  using difference_type = ptrdiff_t;
++  using pointer = value_type*;
++  using reference = value_type&;
++
+   HashTableConstIteratorAdapter() = default;
+   HashTableConstIteratorAdapter(
+       const typename HashTableType::const_iterator& impl)
+@@ -94,6 +100,12 @@ struct HashTableIteratorAdapter<HashTableType,
+   typedef HashTableValuesIterator<HashTableType, KeyType, MappedType>
+       ValuesIterator;
+ 
++  using iterator_category = std::bidirectional_iterator_tag;
++  using value_type = HashTableType;
++  using difference_type = ptrdiff_t;
++  using pointer = value_type*;
++  using reference = value_type&;
++
+   HashTableIteratorAdapter() = default;
+   HashTableIteratorAdapter(const typename HashTableType::iterator& impl)
+       : impl_(impl) {}
+diff --git a/third_party/blink/renderer/platform/wtf/hash_table.h b/third_party/blink/renderer/platform/wtf/hash_table.h
+index f596fb5d41e..5a4468d6bd1 100644
+--- a/third_party/blink/renderer/platform/wtf/hash_table.h
++++ b/third_party/blink/renderer/platform/wtf/hash_table.h
+@@ -2204,6 +2204,12 @@ struct HashTableConstIteratorAdapter {
+   STACK_ALLOCATED();
+ 
+  public:
++  using iterator_category = std::bidirectional_iterator_tag;
++  using value_type = HashTableType;
++  using difference_type = ptrdiff_t;
++  using pointer = value_type*;
++  using reference = value_type&;
++
+   HashTableConstIteratorAdapter() = default;
+   HashTableConstIteratorAdapter(
+       const typename HashTableType::const_iterator& impl)

Deleted: use-system-libraries-in-node.patch
===================================================================
--- use-system-libraries-in-node.patch	2020-11-22 02:51:52 UTC (rev 758809)
+++ use-system-libraries-in-node.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -1,56 +0,0 @@
---- a/third_party/electron_node/BUILD.gn
-+++ b/third_party/electron_node/BUILD.gn
-@@ -42,6 +42,18 @@
-   node_module_version = ""
- }
- 
-+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")
- 
-@@ -203,12 +215,8 @@
- component("node_lib") {
-   deps = [
-     ":node_js2c",
--    "deps/cares",
-     "deps/histogram",
--    "deps/http_parser",
-     "deps/llhttp",
--    "deps/nghttp2",
--    "deps/zlib",
-     "//third_party/brotli:dec",
-     "//third_party/brotli:enc",
-     "//v8:v8_libplatform",
-@@ -222,6 +230,21 @@
-   public_configs = [ ":node_lib_config" ]
-   include_dirs = [ "src" ]
-   libs = []
-+  if (is_linux) {
-+    configs += [
-+      ":cares",
-+      ":nghttp2",
-+    ]
-+    deps += [ "//third_party/zlib" ]
-+    libs += [ "http_parser" ]
-+  } else {
-+    deps += [
-+      "deps/cares",
-+      "deps/http_parser",
-+      "deps/nghttp2",
-+      "deps/zlib",
-+    ]
-+  }
-   cflags_cc = [
-     "-Wno-deprecated-declarations",
-     "-Wno-implicit-fallthrough",

Copied: electron9/repos/community-x86_64/use-system-libraries-in-node.patch (from rev 758809, electron9/trunk/use-system-libraries-in-node.patch)
===================================================================
--- use-system-libraries-in-node.patch	                        (rev 0)
+++ use-system-libraries-in-node.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,56 @@
+--- a/third_party/electron_node/BUILD.gn
++++ b/third_party/electron_node/BUILD.gn
+@@ -42,6 +42,18 @@
+   node_module_version = ""
+ }
+ 
++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")
+ 
+@@ -203,12 +215,8 @@
+ component("node_lib") {
+   deps = [
+     ":node_js2c",
+-    "deps/cares",
+     "deps/histogram",
+-    "deps/http_parser",
+     "deps/llhttp",
+-    "deps/nghttp2",
+-    "deps/zlib",
+     "//third_party/brotli:dec",
+     "//third_party/brotli:enc",
+     "//v8:v8_libplatform",
+@@ -222,6 +230,21 @@
+   public_configs = [ ":node_lib_config" ]
+   include_dirs = [ "src" ]
+   libs = []
++  if (is_linux) {
++    configs += [
++      ":cares",
++      ":nghttp2",
++    ]
++    deps += [ "//third_party/zlib" ]
++    libs += [ "http_parser" ]
++  } else {
++    deps += [
++      "deps/cares",
++      "deps/http_parser",
++      "deps/nghttp2",
++      "deps/zlib",
++    ]
++  }
+   cflags_cc = [
+     "-Wno-deprecated-declarations",
+     "-Wno-implicit-fallthrough",

Deleted: v8-remove-soon-to-be-removed-getAllFieldPositions.patch
===================================================================
--- v8-remove-soon-to-be-removed-getAllFieldPositions.patch	2020-11-22 02:51:52 UTC (rev 758809)
+++ v8-remove-soon-to-be-removed-getAllFieldPositions.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -1,172 +0,0 @@
-From 3f8dc4b2e5baf77b463334c769af85b79d8c1463 Mon Sep 17 00:00:00 2001
-From: Frank Tang <ftang at chromium.org>
-Date: Fri, 3 Apr 2020 23:13:54 -0700
-Subject: [PATCH] [intl] Remove soon-to-be removed getAllFieldPositions
-
-Needed to land ICU67.1 soon.
-
-Bug: v8:10393
-Change-Id: I3c7737ca600d6ccfdc46ffaddfb318ce60bc7618
-Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2136489
-Reviewed-by: Jakob Kummerow <jkummerow at chromium.org>
-Commit-Queue: Frank Tang <ftang at chromium.org>
-Cr-Commit-Position: refs/heads/master@{#67027}
----
- src/objects/js-number-format.cc | 77 +++++++++++++++++----------------
- 1 file changed, 39 insertions(+), 38 deletions(-)
-
-diff --git a/src/objects/js-number-format.cc b/src/objects/js-number-format.cc
-index ad831c5c36..bcd44031d5 100644
---- a/src/objects/js-number-format.cc
-+++ b/src/objects/js-number-format.cc
-@@ -1241,44 +1241,33 @@ MaybeHandle<JSNumberFormat> JSNumberFormat::New(Isolate* isolate,
- }
- 
- namespace {
--Maybe<icu::UnicodeString> IcuFormatNumber(
-+Maybe<bool> IcuFormatNumber(
-     Isolate* isolate,
-     const icu::number::LocalizedNumberFormatter& number_format,
--    Handle<Object> numeric_obj, icu::FieldPositionIterator* fp_iter) {
-+    Handle<Object> numeric_obj, icu::number::FormattedNumber* formatted) {
-   // If it is BigInt, handle it differently.
-   UErrorCode status = U_ZERO_ERROR;
--  icu::number::FormattedNumber formatted;
-   if (numeric_obj->IsBigInt()) {
-     Handle<BigInt> big_int = Handle<BigInt>::cast(numeric_obj);
-     Handle<String> big_int_string;
-     ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, big_int_string,
-                                      BigInt::ToString(isolate, big_int),
--                                     Nothing<icu::UnicodeString>());
--    formatted = number_format.formatDecimal(
-+                                     Nothing<bool>());
-+    *formatted = number_format.formatDecimal(
-         {big_int_string->ToCString().get(), big_int_string->length()}, status);
-   } else {
-     double number = numeric_obj->IsNaN()
-                         ? std::numeric_limits<double>::quiet_NaN()
-                         : numeric_obj->Number();
--    formatted = number_format.formatDouble(number, status);
-+    *formatted = number_format.formatDouble(number, status);
-   }
-   if (U_FAILURE(status)) {
-     // This happen because of icu data trimming trim out "unit".
-     // See https://bugs.chromium.org/p/v8/issues/detail?id=8641
--    THROW_NEW_ERROR_RETURN_VALUE(isolate,
--                                 NewTypeError(MessageTemplate::kIcuError),
--                                 Nothing<icu::UnicodeString>());
--  }
--  if (fp_iter) {
--    formatted.getAllFieldPositions(*fp_iter, status);
--  }
--  icu::UnicodeString result = formatted.toString(status);
--  if (U_FAILURE(status)) {
--    THROW_NEW_ERROR_RETURN_VALUE(isolate,
--                                 NewTypeError(MessageTemplate::kIcuError),
--                                 Nothing<icu::UnicodeString>());
-+    THROW_NEW_ERROR_RETURN_VALUE(
-+        isolate, NewTypeError(MessageTemplate::kIcuError), Nothing<bool>());
-   }
--  return Just(result);
-+  return Just(true);
- }
- 
- }  // namespace
-@@ -1289,10 +1278,16 @@ MaybeHandle<String> JSNumberFormat::FormatNumeric(
-     Handle<Object> numeric_obj) {
-   DCHECK(numeric_obj->IsNumeric());
- 
--  Maybe<icu::UnicodeString> maybe_format =
--      IcuFormatNumber(isolate, number_format, numeric_obj, nullptr);
-+  icu::number::FormattedNumber formatted;
-+  Maybe<bool> maybe_format =
-+      IcuFormatNumber(isolate, number_format, numeric_obj, &formatted);
-   MAYBE_RETURN(maybe_format, Handle<String>());
--  return Intl::ToString(isolate, maybe_format.FromJust());
-+  UErrorCode status = U_ZERO_ERROR;
-+  icu::UnicodeString result = formatted.toString(status);
-+  if (U_FAILURE(status)) {
-+    THROW_NEW_ERROR(isolate, NewTypeError(MessageTemplate::kIcuError), String);
-+  }
-+  return Intl::ToString(isolate, result);
- }
- 
- namespace {
-@@ -1405,12 +1400,18 @@ std::vector<NumberFormatSpan> FlattenRegionsToParts(
- }
- 
- namespace {
--Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted,
--                          icu::FieldPositionIterator* fp_iter,
-+Maybe<int> ConstructParts(Isolate* isolate,
-+                          icu::number::FormattedNumber* formatted,
-                           Handle<JSArray> result, int start_index,
-                           Handle<Object> numeric_obj, bool style_is_unit) {
-+  UErrorCode status = U_ZERO_ERROR;
-+  icu::UnicodeString formatted_text = formatted->toString(status);
-+  if (U_FAILURE(status)) {
-+    THROW_NEW_ERROR_RETURN_VALUE(
-+        isolate, NewTypeError(MessageTemplate::kIcuError), Nothing<int>());
-+  }
-   DCHECK(numeric_obj->IsNumeric());
--  int32_t length = formatted.length();
-+  int32_t length = formatted_text.length();
-   int index = start_index;
-   if (length == 0) return Just(index);
- 
-@@ -1419,13 +1420,14 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted,
-   // other region covers some part of the formatted string. It's possible
-   // there's another field with exactly the same begin and end as this backdrop,
-   // in which case the backdrop's field_id of -1 will give it lower priority.
--  regions.push_back(NumberFormatSpan(-1, 0, formatted.length()));
-+  regions.push_back(NumberFormatSpan(-1, 0, formatted_text.length()));
- 
-   {
--    icu::FieldPosition fp;
--    while (fp_iter->next(fp)) {
--      regions.push_back(NumberFormatSpan(fp.getField(), fp.getBeginIndex(),
--                                         fp.getEndIndex()));
-+    icu::ConstrainedFieldPosition cfp;
-+    cfp.constrainCategory(UFIELD_CATEGORY_NUMBER);
-+    while (formatted->nextPosition(cfp, status)) {
-+      regions.push_back(
-+          NumberFormatSpan(cfp.getField(), cfp.getStart(), cfp.getLimit()));
-     }
-   }
- 
-@@ -1447,7 +1449,7 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted,
-     Handle<String> substring;
-     ASSIGN_RETURN_ON_EXCEPTION_VALUE(
-         isolate, substring,
--        Intl::ToString(isolate, formatted, part.begin_pos, part.end_pos),
-+        Intl::ToString(isolate, formatted_text, part.begin_pos, part.end_pos),
-         Nothing<int>());
-     Intl::AddElement(isolate, result, index, field_type_string, substring);
-     ++index;
-@@ -1467,20 +1469,19 @@ MaybeHandle<JSArray> JSNumberFormat::FormatToParts(
-       number_format->icu_number_formatter().raw();
-   CHECK_NOT_NULL(fmt);
- 
--  icu::FieldPositionIterator fp_iter;
--  Maybe<icu::UnicodeString> maybe_format =
--      IcuFormatNumber(isolate, *fmt, numeric_obj, &fp_iter);
-+  icu::number::FormattedNumber formatted;
-+  Maybe<bool> maybe_format =
-+      IcuFormatNumber(isolate, *fmt, numeric_obj, &formatted);
-   MAYBE_RETURN(maybe_format, Handle<JSArray>());
--
-   UErrorCode status = U_ZERO_ERROR;
-+
-   bool style_is_unit =
-       Style::UNIT == StyleFromSkeleton(fmt->toSkeleton(status));
-   CHECK(U_SUCCESS(status));
- 
-   Handle<JSArray> result = factory->NewJSArray(0);
--  Maybe<int> maybe_format_to_parts =
--      ConstructParts(isolate, maybe_format.FromJust(), &fp_iter, result, 0,
--                     numeric_obj, style_is_unit);
-+  Maybe<int> maybe_format_to_parts = ConstructParts(
-+      isolate, &formatted, result, 0, numeric_obj, style_is_unit);
-   MAYBE_RETURN(maybe_format_to_parts, Handle<JSArray>());
- 
-   return result;

Copied: electron9/repos/community-x86_64/v8-remove-soon-to-be-removed-getAllFieldPositions.patch (from rev 758809, electron9/trunk/v8-remove-soon-to-be-removed-getAllFieldPositions.patch)
===================================================================
--- v8-remove-soon-to-be-removed-getAllFieldPositions.patch	                        (rev 0)
+++ v8-remove-soon-to-be-removed-getAllFieldPositions.patch	2020-11-22 02:52:26 UTC (rev 758810)
@@ -0,0 +1,172 @@
+From 3f8dc4b2e5baf77b463334c769af85b79d8c1463 Mon Sep 17 00:00:00 2001
+From: Frank Tang <ftang at chromium.org>
+Date: Fri, 3 Apr 2020 23:13:54 -0700
+Subject: [PATCH] [intl] Remove soon-to-be removed getAllFieldPositions
+
+Needed to land ICU67.1 soon.
+
+Bug: v8:10393
+Change-Id: I3c7737ca600d6ccfdc46ffaddfb318ce60bc7618
+Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2136489
+Reviewed-by: Jakob Kummerow <jkummerow at chromium.org>
+Commit-Queue: Frank Tang <ftang at chromium.org>
+Cr-Commit-Position: refs/heads/master@{#67027}
+---
+ src/objects/js-number-format.cc | 77 +++++++++++++++++----------------
+ 1 file changed, 39 insertions(+), 38 deletions(-)
+
+diff --git a/src/objects/js-number-format.cc b/src/objects/js-number-format.cc
+index ad831c5c36..bcd44031d5 100644
+--- a/src/objects/js-number-format.cc
++++ b/src/objects/js-number-format.cc
+@@ -1241,44 +1241,33 @@ MaybeHandle<JSNumberFormat> JSNumberFormat::New(Isolate* isolate,
+ }
+ 
+ namespace {
+-Maybe<icu::UnicodeString> IcuFormatNumber(
++Maybe<bool> IcuFormatNumber(
+     Isolate* isolate,
+     const icu::number::LocalizedNumberFormatter& number_format,
+-    Handle<Object> numeric_obj, icu::FieldPositionIterator* fp_iter) {
++    Handle<Object> numeric_obj, icu::number::FormattedNumber* formatted) {
+   // If it is BigInt, handle it differently.
+   UErrorCode status = U_ZERO_ERROR;
+-  icu::number::FormattedNumber formatted;
+   if (numeric_obj->IsBigInt()) {
+     Handle<BigInt> big_int = Handle<BigInt>::cast(numeric_obj);
+     Handle<String> big_int_string;
+     ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, big_int_string,
+                                      BigInt::ToString(isolate, big_int),
+-                                     Nothing<icu::UnicodeString>());
+-    formatted = number_format.formatDecimal(
++                                     Nothing<bool>());
++    *formatted = number_format.formatDecimal(
+         {big_int_string->ToCString().get(), big_int_string->length()}, status);
+   } else {
+     double number = numeric_obj->IsNaN()
+                         ? std::numeric_limits<double>::quiet_NaN()
+                         : numeric_obj->Number();
+-    formatted = number_format.formatDouble(number, status);
++    *formatted = number_format.formatDouble(number, status);
+   }
+   if (U_FAILURE(status)) {
+     // This happen because of icu data trimming trim out "unit".
+     // See https://bugs.chromium.org/p/v8/issues/detail?id=8641
+-    THROW_NEW_ERROR_RETURN_VALUE(isolate,
+-                                 NewTypeError(MessageTemplate::kIcuError),
+-                                 Nothing<icu::UnicodeString>());
+-  }
+-  if (fp_iter) {
+-    formatted.getAllFieldPositions(*fp_iter, status);
+-  }
+-  icu::UnicodeString result = formatted.toString(status);
+-  if (U_FAILURE(status)) {
+-    THROW_NEW_ERROR_RETURN_VALUE(isolate,
+-                                 NewTypeError(MessageTemplate::kIcuError),
+-                                 Nothing<icu::UnicodeString>());
++    THROW_NEW_ERROR_RETURN_VALUE(
++        isolate, NewTypeError(MessageTemplate::kIcuError), Nothing<bool>());
+   }
+-  return Just(result);
++  return Just(true);
+ }
+ 
+ }  // namespace
+@@ -1289,10 +1278,16 @@ MaybeHandle<String> JSNumberFormat::FormatNumeric(
+     Handle<Object> numeric_obj) {
+   DCHECK(numeric_obj->IsNumeric());
+ 
+-  Maybe<icu::UnicodeString> maybe_format =
+-      IcuFormatNumber(isolate, number_format, numeric_obj, nullptr);
++  icu::number::FormattedNumber formatted;
++  Maybe<bool> maybe_format =
++      IcuFormatNumber(isolate, number_format, numeric_obj, &formatted);
+   MAYBE_RETURN(maybe_format, Handle<String>());
+-  return Intl::ToString(isolate, maybe_format.FromJust());
++  UErrorCode status = U_ZERO_ERROR;
++  icu::UnicodeString result = formatted.toString(status);
++  if (U_FAILURE(status)) {
++    THROW_NEW_ERROR(isolate, NewTypeError(MessageTemplate::kIcuError), String);
++  }
++  return Intl::ToString(isolate, result);
+ }
+ 
+ namespace {
+@@ -1405,12 +1400,18 @@ std::vector<NumberFormatSpan> FlattenRegionsToParts(
+ }
+ 
+ namespace {
+-Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted,
+-                          icu::FieldPositionIterator* fp_iter,
++Maybe<int> ConstructParts(Isolate* isolate,
++                          icu::number::FormattedNumber* formatted,
+                           Handle<JSArray> result, int start_index,
+                           Handle<Object> numeric_obj, bool style_is_unit) {
++  UErrorCode status = U_ZERO_ERROR;
++  icu::UnicodeString formatted_text = formatted->toString(status);
++  if (U_FAILURE(status)) {
++    THROW_NEW_ERROR_RETURN_VALUE(
++        isolate, NewTypeError(MessageTemplate::kIcuError), Nothing<int>());
++  }
+   DCHECK(numeric_obj->IsNumeric());
+-  int32_t length = formatted.length();
++  int32_t length = formatted_text.length();
+   int index = start_index;
+   if (length == 0) return Just(index);
+ 
+@@ -1419,13 +1420,14 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted,
+   // other region covers some part of the formatted string. It's possible
+   // there's another field with exactly the same begin and end as this backdrop,
+   // in which case the backdrop's field_id of -1 will give it lower priority.
+-  regions.push_back(NumberFormatSpan(-1, 0, formatted.length()));
++  regions.push_back(NumberFormatSpan(-1, 0, formatted_text.length()));
+ 
+   {
+-    icu::FieldPosition fp;
+-    while (fp_iter->next(fp)) {
+-      regions.push_back(NumberFormatSpan(fp.getField(), fp.getBeginIndex(),
+-                                         fp.getEndIndex()));
++    icu::ConstrainedFieldPosition cfp;
++    cfp.constrainCategory(UFIELD_CATEGORY_NUMBER);
++    while (formatted->nextPosition(cfp, status)) {
++      regions.push_back(
++          NumberFormatSpan(cfp.getField(), cfp.getStart(), cfp.getLimit()));
+     }
+   }
+ 
+@@ -1447,7 +1449,7 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted,
+     Handle<String> substring;
+     ASSIGN_RETURN_ON_EXCEPTION_VALUE(
+         isolate, substring,
+-        Intl::ToString(isolate, formatted, part.begin_pos, part.end_pos),
++        Intl::ToString(isolate, formatted_text, part.begin_pos, part.end_pos),
+         Nothing<int>());
+     Intl::AddElement(isolate, result, index, field_type_string, substring);
+     ++index;
+@@ -1467,20 +1469,19 @@ MaybeHandle<JSArray> JSNumberFormat::FormatToParts(
+       number_format->icu_number_formatter().raw();
+   CHECK_NOT_NULL(fmt);
+ 
+-  icu::FieldPositionIterator fp_iter;
+-  Maybe<icu::UnicodeString> maybe_format =
+-      IcuFormatNumber(isolate, *fmt, numeric_obj, &fp_iter);
++  icu::number::FormattedNumber formatted;
++  Maybe<bool> maybe_format =
++      IcuFormatNumber(isolate, *fmt, numeric_obj, &formatted);
+   MAYBE_RETURN(maybe_format, Handle<JSArray>());
+-
+   UErrorCode status = U_ZERO_ERROR;
++
+   bool style_is_unit =
+       Style::UNIT == StyleFromSkeleton(fmt->toSkeleton(status));
+   CHECK(U_SUCCESS(status));
+ 
+   Handle<JSArray> result = factory->NewJSArray(0);
+-  Maybe<int> maybe_format_to_parts =
+-      ConstructParts(isolate, maybe_format.FromJust(), &fp_iter, result, 0,
+-                     numeric_obj, style_is_unit);
++  Maybe<int> maybe_format_to_parts = ConstructParts(
++      isolate, &formatted, result, 0, numeric_obj, style_is_unit);
+   MAYBE_RETURN(maybe_format_to_parts, Handle<JSArray>());
+ 
+   return result;



More information about the arch-commits mailing list