Browse Source

Merge remote-tracking branch 'origin/main' into windows-runner

Samuel Attard 6 months ago
parent
commit
5e43a7e53a
100 changed files with 387 additions and 263 deletions
  1. 34 1
      .eslintrc.json
  2. 0 32
      .github/dependabot.yml
  3. 2 0
      BUILD.gn
  4. 1 1
      DEPS
  5. 1 1
      appveyor-bake.yml
  6. 1 2
      appveyor-woa.yml
  7. 2 3
      appveyor.yml
  8. 4 3
      build/webpack/webpack.config.base.js
  9. 1 0
      default_app/default_app.ts
  10. 1 0
      default_app/main.ts
  11. 12 0
      docs/api/utility-process.md
  12. 0 2
      filenames.gni
  13. 2 2
      lib/browser/api/app.ts
  14. 3 1
      lib/browser/api/auto-updater/auto-updater-win.ts
  15. 1 1
      lib/browser/api/auto-updater/squirrel-update-win.ts
  16. 3 2
      lib/browser/api/base-window.ts
  17. 9 4
      lib/browser/api/browser-view.ts
  18. 1 0
      lib/browser/api/browser-window.ts
  19. 2 1
      lib/browser/api/crash-reporter.ts
  20. 1 0
      lib/browser/api/desktop-capturer.ts
  21. 1 0
      lib/browser/api/dialog.ts
  22. 2 2
      lib/browser/api/exports/electron.ts
  23. 1 0
      lib/browser/api/menu-item.ts
  24. 2 1
      lib/browser/api/menu.ts
  25. 2 0
      lib/browser/api/message-channel.ts
  26. 3 1
      lib/browser/api/net-fetch.ts
  27. 2 1
      lib/browser/api/net.ts
  28. 1 0
      lib/browser/api/protocol.ts
  29. 2 0
      lib/browser/api/session.ts
  30. 1 0
      lib/browser/api/share-menu.ts
  31. 1 0
      lib/browser/api/system-preferences.ts
  32. 4 2
      lib/browser/api/utility-process.ts
  33. 1 0
      lib/browser/api/view.ts
  34. 9 8
      lib/browser/api/web-contents.ts
  35. 1 1
      lib/browser/api/web-frame-main.ts
  36. 1 1
      lib/browser/default-menu.ts
  37. 5 4
      lib/browser/devtools.ts
  38. 3 2
      lib/browser/guest-view-manager.ts
  39. 2 1
      lib/browser/guest-window-manager.ts
  40. 2 1
      lib/browser/init.ts
  41. 2 1
      lib/browser/ipc-main-impl.ts
  42. 4 2
      lib/browser/rpc-server.ts
  43. 3 2
      lib/common/api/net-client-request.ts
  44. 2 2
      lib/common/init.ts
  45. 2 0
      lib/node/init.ts
  46. 1 1
      lib/renderer/api/exports/electron.ts
  47. 5 4
      lib/renderer/common-init.ts
  48. 3 3
      lib/renderer/init.ts
  49. 2 1
      lib/renderer/inspector.ts
  50. 1 1
      lib/renderer/security-warnings.ts
  51. 3 2
      lib/renderer/web-frame-init.ts
  52. 1 1
      lib/renderer/web-view/guest-view-internal.ts
  53. 1 1
      lib/renderer/web-view/web-view-attributes.ts
  54. 1 1
      lib/renderer/web-view/web-view-element.ts
  55. 2 2
      lib/renderer/web-view/web-view-impl.ts
  56. 2 3
      lib/renderer/web-view/web-view-init.ts
  57. 2 2
      lib/renderer/window-setup.ts
  58. 4 4
      lib/sandboxed_renderer/init.ts
  59. 3 2
      lib/utility/api/net.ts
  60. 2 2
      lib/utility/init.ts
  61. 3 1
      lib/utility/parent-port.ts
  62. 2 2
      npm/cli.js
  63. 5 3
      npm/install.js
  64. 1 2
      package.json
  65. 4 4
      patches/boringssl/expose_ripemd160.patch
  66. 3 3
      patches/boringssl/revert_track_ssl_error_zero_return_explicitly.patch
  67. 1 0
      patches/chromium/.patches
  68. 2 2
      patches/chromium/add_contentgpuclient_precreatemessageloop_callback.patch
  69. 6 6
      patches/chromium/add_didinstallconditionalfeatures.patch
  70. 4 4
      patches/chromium/add_maximized_parameter_to_linuxui_getwindowframeprovider.patch
  71. 4 4
      patches/chromium/allow_disabling_blink_scheduler_throttling_per_renderview.patch
  72. 3 3
      patches/chromium/blink_local_frame.patch
  73. 7 7
      patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch
  74. 1 1
      patches/chromium/build_run_reclient_cfg_generator_after_chrome.patch
  75. 16 16
      patches/chromium/can_create_window.patch
  76. 2 2
      patches/chromium/chore_allow_chromium_to_handle_synthetic_mouse_events_for_touch.patch
  77. 4 4
      patches/chromium/chore_introduce_blocking_api_for_electron.patch
  78. 29 0
      patches/chromium/chore_partial_revert_of.patch
  79. 1 1
      patches/chromium/chore_patch_out_partition_attribute_dcheck_for_webviews.patch
  80. 46 10
      patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch
  81. 3 3
      patches/chromium/create_browser_v8_snapshot_file_name_fuse.patch
  82. 1 1
      patches/chromium/disable_compositor_recycling.patch
  83. 3 3
      patches/chromium/disable_hidden.patch
  84. 1 1
      patches/chromium/enable_reset_aspect_ratio.patch
  85. 1 1
      patches/chromium/expose_setuseragent_on_networkcontext.patch
  86. 2 2
      patches/chromium/feat_add_set_theme_source_to_allow_apps_to.patch
  87. 6 6
      patches/chromium/feat_allow_usage_of_sccontentsharingpicker_on_supported_platforms.patch
  88. 16 16
      patches/chromium/feat_configure_launch_options_for_service_process.patch
  89. 2 2
      patches/chromium/feat_enable_offscreen_rendering_with_viz_compositor.patch
  90. 2 2
      patches/chromium/feat_enable_passing_exit_code_on_service_process_crash.patch
  91. 6 6
      patches/chromium/feat_expose_raw_response_headers_from_urlloader.patch
  92. 2 2
      patches/chromium/fix_activate_background_material_on_windows.patch
  93. 2 2
      patches/chromium/fix_aspect_ratio_with_max_size.patch
  94. 8 8
      patches/chromium/fix_crash_loading_non-standard_schemes_in_iframes.patch
  95. 5 5
      patches/chromium/fix_crash_when_saving_edited_pdf_files.patch
  96. 2 2
      patches/chromium/fix_media_key_usage_with_globalshortcuts.patch
  97. 2 2
      patches/chromium/fix_on-screen-keyboard_hides_on_input_blur_in_webview.patch
  98. 3 3
      patches/chromium/fix_properly_honor_printing_page_ranges.patch
  99. 2 2
      patches/chromium/fix_remove_caption-removing_style_call.patch
  100. 1 1
      patches/chromium/fix_restore_original_resize_performance_on_macos.patch

+ 34 - 1
.eslintrc.json

@@ -19,7 +19,40 @@
     "prefer-const": ["error", {
       "destructuring": "all"
     }],
-    "n/no-callback-literal": "off"
+    "n/no-callback-literal": "off",
+    "import/newline-after-import": "error",
+    "import/order": ["error", {
+      "alphabetize": {
+        "order": "asc"
+      },
+      "newlines-between": "always",
+      "pathGroups": [
+        {
+          "pattern": "@electron/internal/**",
+          "group": "external",
+          "position": "before"
+        },
+        {
+          "pattern": "@electron/**",
+          "group": "external",
+          "position": "before"
+        },
+        {
+          "pattern": "{electron,electron/**}",
+          "group": "external",
+          "position": "before"
+        }
+      ],
+      "pathGroupsExcludedImportTypes": [],
+      "distinctGroup": true,
+      "groups": [
+        "external",
+        "builtin",
+        ["sibling", "parent"],
+        "index",
+        "type"
+      ]
+    }]
   },
   "parserOptions": {
     "ecmaVersion": 6,

+ 0 - 32
.github/dependabot.yml

@@ -11,38 +11,6 @@ updates:
       - "no-backport"
       - "semver/none"
     target-branch: main
-  - package-ecosystem: github-actions
-    directory: /
-    schedule:
-      interval: weekly
-    labels:
-      - "backport-check-skip"
-      - "semver/none"
-    target-branch: 33-x-y
-  - package-ecosystem: github-actions
-    directory: /
-    schedule:
-      interval: weekly
-    labels:
-      - "backport-check-skip"
-      - "semver/none"
-    target-branch: 32-x-y
-  - package-ecosystem: github-actions
-    directory: /
-    schedule:
-      interval: weekly
-    labels:
-      - "backport-check-skip"
-      - "semver/none"
-    target-branch: 31-x-y
-  - package-ecosystem: github-actions
-    directory: /
-    schedule:
-      interval: weekly
-    labels:
-      - "backport-check-skip"
-      - "semver/none"
-    target-branch: 30-x-y
   - package-ecosystem: npm
     directories:
       - /

+ 2 - 0
BUILD.gn

@@ -674,6 +674,8 @@ source_set("electron_lib") {
 
   if (enable_plugins) {
     sources += [
+      "shell/browser/electron_plugin_info_host_impl.cc",
+      "shell/browser/electron_plugin_info_host_impl.h",
       "shell/common/plugin_info.cc",
       "shell/common/plugin_info.h",
     ]

+ 1 - 1
DEPS

@@ -2,7 +2,7 @@ gclient_gn_args_from = 'src'
 
 vars = {
   'chromium_version':
-    '131.0.6734.0',
+    '131.0.6752.0',
   'node_version':
     'v20.17.0',
   'nan_version':

+ 1 - 1
appveyor-bake.yml

@@ -68,7 +68,7 @@ build_script:
   - ps: $env:PATH="$pwd\depot_tools;$env:PATH"
   - update_depot_tools.bat
   # Uncomment the following line if windows deps change
-  # - src\electron\script\setup-win-for-dev.bat
+  - src\electron\script\setup-win-for-dev.bat
   - >-
       gclient config
       --name "src\electron"

+ 1 - 2
appveyor-woa.yml

@@ -29,7 +29,7 @@
 
 version: 1.0.{build}
 build_cloud: electronhq-16-core
-image: e-131.0.6734.0
+image: e-131.0.6734.0-node-20.17-0
 environment:
   GIT_CACHE_PATH: C:\Users\appveyor\libcc_cache
   ELECTRON_OUT_DIR: Default
@@ -328,4 +328,3 @@ for:
     on_finish:
       # Uncomment these lines to enable RDP
       # - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
-      - if exist electron\electron.log ( appveyor-retry appveyor PushArtifact electron\electron.log )

+ 2 - 3
appveyor.yml

@@ -29,7 +29,7 @@
 
 version: 1.0.{build}
 build_cloud: electronhq-16-core
-image: e-131.0.6734.0
+image: e-131.0.6734.0-node-20.17-0
 environment:
   GIT_CACHE_PATH: C:\Users\appveyor\libcc_cache
   ELECTRON_OUT_DIR: Default
@@ -308,7 +308,7 @@ for:
           if ($env:TARGET_ARCH -eq 'ia32') {
             $env:npm_config_arch = "ia32"
           }
-      - echo Running main test suite & node script/yarn test -- --trace-uncaught --runners=main --enable-logging=file --log-file=%cd%\electron.log
+      - echo Running main test suite & node script/yarn test -- --trace-uncaught --runners=main --enable-logging
       - cd ..
       - echo Verifying non proprietary ffmpeg & python electron\script\verify-ffmpeg.py --build-dir out\Default --source-root %cd% --ffmpeg-path out\ffmpeg
       - echo "About to verify mksnapshot"
@@ -320,4 +320,3 @@ for:
     on_finish:
       # Uncomment these lines to enable RDP
       # - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
-      - if exist electron\electron.log ( appveyor-retry appveyor PushArtifact electron\electron.log )

+ 4 - 3
build/webpack/webpack.config.base.js

@@ -1,9 +1,10 @@
-const fs = require('node:fs');
-const path = require('node:path');
-const webpack = require('webpack');
 const TerserPlugin = require('terser-webpack-plugin');
+const webpack = require('webpack');
 const WrapperPlugin = require('wrapper-webpack-plugin');
 
+const fs = require('node:fs');
+const path = require('node:path');
+
 const electronRoot = path.resolve(__dirname, '../..');
 
 class AccessDependenciesPlugin {

+ 1 - 0
default_app/default_app.ts

@@ -1,5 +1,6 @@
 import { shell } from 'electron/common';
 import { app, dialog, BrowserWindow, ipcMain } from 'electron/main';
+
 import * as path from 'node:path';
 import * as url from 'node:url';
 

+ 1 - 0
default_app/main.ts

@@ -4,6 +4,7 @@ import * as fs from 'node:fs';
 import { Module } from 'node:module';
 import * as path from 'node:path';
 import * as url from 'node:url';
+
 const { app, dialog } = electron;
 
 type DefaultAppOptions = {

+ 12 - 0
docs/api/utility-process.md

@@ -116,6 +116,17 @@ When the child process exits, then the value is `null` after the `exit` event is
 
 Emitted once the child process has spawned successfully.
 
+#### Event: 'error' _Experimental_
+
+Returns:
+
+* `type` string - Type of error. One of the following values:
+  * `FatalError`
+* `location` string - Source location from where the error originated.
+* `report` string - [`Node.js diagnostic report`][].
+
+Emitted when the child process needs to terminate due to non continuable error from V8.
+
 #### Event: 'exit'
 
 Returns:
@@ -138,3 +149,4 @@ Emitted when the child process sends a message using [`process.parentPort.postMe
 [stdio]: https://nodejs.org/dist/latest/docs/api/child_process.html#optionsstdio
 [event-emitter]: https://nodejs.org/api/events.html#events_class_eventemitter
 [`MessagePortMain`]: message-port-main.md
+[`Node.js diagnostic report`]: https://nodejs.org/docs/latest/api/report.html#diagnostic-report

+ 0 - 2
filenames.gni

@@ -379,8 +379,6 @@ filenames = {
     "shell/browser/electron_navigation_throttle.h",
     "shell/browser/electron_permission_manager.cc",
     "shell/browser/electron_permission_manager.h",
-    "shell/browser/electron_plugin_info_host_impl.cc",
-    "shell/browser/electron_plugin_info_host_impl.h",
     "shell/browser/electron_speech_recognition_manager_delegate.cc",
     "shell/browser/electron_speech_recognition_manager_delegate.h",
     "shell/browser/electron_web_contents_utility_handler_impl.cc",

+ 2 - 2
lib/browser/api/app.ts

@@ -1,7 +1,7 @@
-import * as fs from 'fs';
-
 import { Menu } from 'electron/main';
 
+import * as fs from 'fs';
+
 const bindings = process._linkedBinding('electron_browser_app');
 const commandLine = process._linkedBinding('electron_common_command_line');
 const { app } = bindings;

+ 3 - 1
lib/browser/api/auto-updater/auto-updater-win.ts

@@ -1,6 +1,8 @@
+import * as squirrelUpdate from '@electron/internal/browser/api/auto-updater/squirrel-update-win';
+
 import { app } from 'electron/main';
+
 import { EventEmitter } from 'events';
-import * as squirrelUpdate from '@electron/internal/browser/api/auto-updater/squirrel-update-win';
 
 class AutoUpdater extends EventEmitter implements Electron.AutoUpdater {
   updateAvailable: boolean = false;

+ 1 - 1
lib/browser/api/auto-updater/squirrel-update-win.ts

@@ -1,6 +1,6 @@
+import { spawn, ChildProcessWithoutNullStreams } from 'child_process';
 import * as fs from 'fs';
 import * as path from 'path';
-import { spawn, ChildProcessWithoutNullStreams } from 'child_process';
 
 // i.e. my-app/app-0.1.13/
 const appFolder = path.dirname(process.execPath);

+ 3 - 2
lib/browser/api/base-window.ts

@@ -1,6 +1,7 @@
-import { EventEmitter } from 'events';
-import type { BaseWindow as TLWT } from 'electron/main';
 import { TouchBar } from 'electron/main';
+import type { BaseWindow as TLWT } from 'electron/main';
+
+import { EventEmitter } from 'events';
 
 const { BaseWindow } = process._linkedBinding('electron_browser_base_window') as { BaseWindow: typeof TLWT };
 

+ 9 - 4
lib/browser/api/browser-view.ts

@@ -68,10 +68,7 @@ export default class BrowserView {
   // a webContents can be closed by the user while the BrowserView
   // remains alive and attached to a BrowserWindow.
   set ownerWindow (w: BrowserWindow | null) {
-    if (this.#ownerWindow && this.#resizeListener) {
-      this.#ownerWindow.off('resize', this.#resizeListener);
-      this.#resizeListener = null;
-    }
+    this.#removeResizeListener();
 
     if (this.webContents && !this.webContents.isDestroyed()) {
       this.webContents._setOwnerWindow(w);
@@ -82,6 +79,7 @@ export default class BrowserView {
       this.#lastWindowSize = w.getBounds();
       w.on('resize', this.#resizeListener = this.#autoResize.bind(this));
       w.on('closed', () => {
+        this.#removeResizeListener();
         this.#ownerWindow = null;
         this.#destroyListener = null;
       });
@@ -94,6 +92,13 @@ export default class BrowserView {
     this.#ownerWindow?.contentView.removeChildView(this.webContentsView);
   }
 
+  #removeResizeListener () {
+    if (this.#ownerWindow && this.#resizeListener) {
+      this.#ownerWindow.off('resize', this.#resizeListener);
+      this.#resizeListener = null;
+    }
+  }
+
   #autoHorizontalProportion: {width: number, left: number} | null = null;
   #autoVerticalProportion: {height: number, top: number} | null = null;
   #autoResize () {

+ 1 - 0
lib/browser/api/browser-window.ts

@@ -1,5 +1,6 @@
 import { BaseWindow, WebContents, BrowserView } from 'electron/main';
 import type { BrowserWindow as BWT } from 'electron/main';
+
 const { BrowserWindow } = process._linkedBinding('electron_browser_window') as { BrowserWindow: typeof BWT };
 
 Object.setPrototypeOf(BrowserWindow.prototype, BaseWindow.prototype);

+ 2 - 1
lib/browser/api/crash-reporter.ts

@@ -1,6 +1,7 @@
-import { app } from 'electron/main';
 import * as deprecate from '@electron/internal/common/deprecate';
 
+import { app } from 'electron/main';
+
 const binding = process._linkedBinding('electron_browser_crash_reporter');
 
 class CrashReporter implements Electron.CrashReporter {

+ 1 - 0
lib/browser/api/desktop-capturer.ts

@@ -1,4 +1,5 @@
 import { BrowserWindow } from 'electron/main';
+
 const { createDesktopCapturer, isDisplayMediaSystemPickerAvailable } = process._linkedBinding('electron_browser_desktop_capturer');
 
 const deepEqual = (a: ElectronInternal.GetSourcesOptions, b: ElectronInternal.GetSourcesOptions) => JSON.stringify(a) === JSON.stringify(b);

+ 1 - 0
lib/browser/api/dialog.ts

@@ -1,5 +1,6 @@
 import { app, BaseWindow } from 'electron/main';
 import type { OpenDialogOptions, OpenDialogReturnValue, MessageBoxOptions, SaveDialogOptions, SaveDialogReturnValue, MessageBoxReturnValue, CertificateTrustDialogOptions } from 'electron/main';
+
 const dialogBinding = process._linkedBinding('electron_browser_dialog');
 
 enum SaveFileDialogProperties {

+ 2 - 2
lib/browser/api/exports/electron.ts

@@ -1,6 +1,6 @@
-import { defineProperties } from '@electron/internal/common/define-properties';
-import { commonModuleList } from '@electron/internal/common/api/module-list';
 import { browserModuleList } from '@electron/internal/browser/api/module-list';
+import { commonModuleList } from '@electron/internal/common/api/module-list';
+import { defineProperties } from '@electron/internal/common/define-properties';
 
 module.exports = {};
 

+ 1 - 0
lib/browser/api/menu-item.ts

@@ -1,4 +1,5 @@
 import * as roles from '@electron/internal/browser/api/menu-item-roles';
+
 import { Menu, BaseWindow, WebContents, KeyboardEvent } from 'electron/main';
 
 let nextCommandId = 0;

+ 2 - 1
lib/browser/api/menu.ts

@@ -1,7 +1,8 @@
-import { BaseWindow, MenuItem, webContents, Menu as MenuType, MenuItemConstructorOptions } from 'electron/main';
 import { sortMenuItems } from '@electron/internal/browser/api/menu-utils';
 import { setApplicationMenuWasSet } from '@electron/internal/browser/default-menu';
 
+import { BaseWindow, MenuItem, webContents, Menu as MenuType, MenuItemConstructorOptions } from 'electron/main';
+
 const bindings = process._linkedBinding('electron_browser_menu');
 
 const { Menu } = bindings as { Menu: typeof MenuType };

+ 2 - 0
lib/browser/api/message-channel.ts

@@ -1,5 +1,7 @@
 import { MessagePortMain } from '@electron/internal/browser/message-port-main';
+
 import { EventEmitter } from 'events';
+
 const { createPair } = process._linkedBinding('electron_browser_message_port');
 
 export default class MessageChannelMain extends EventEmitter implements Electron.MessageChannelMain {

+ 3 - 1
lib/browser/api/net-fetch.ts

@@ -1,6 +1,8 @@
+import { allowAnyProtocol } from '@electron/internal/common/api/net-client-request';
+
 import { ClientRequestConstructorOptions, ClientRequest, IncomingMessage, Session as SessionT } from 'electron/main';
+
 import { Readable, Writable, isReadable } from 'stream';
-import { allowAnyProtocol } from '@electron/internal/common/api/net-client-request';
 
 function createDeferredPromise<T, E extends Error = Error> (): { promise: Promise<T>; resolve: (x: T) => void; reject: (e: E) => void; } {
   let res: (x: T) => void;

+ 2 - 1
lib/browser/api/net.ts

@@ -1,6 +1,7 @@
+import { ClientRequest } from '@electron/internal/common/api/net-client-request';
+
 import { app, IncomingMessage, session } from 'electron/main';
 import type { ClientRequestConstructorOptions } from 'electron/main';
-import { ClientRequest } from '@electron/internal/common/api/net-client-request';
 
 const { isOnline } = process._linkedBinding('electron_common_net');
 

+ 1 - 0
lib/browser/api/protocol.ts

@@ -1,4 +1,5 @@
 import { ProtocolRequest, session } from 'electron/main';
+
 import { createReadStream } from 'fs';
 import { Readable } from 'stream';
 import { ReadableStream } from 'stream/web';

+ 2 - 0
lib/browser/api/session.ts

@@ -1,5 +1,7 @@
 import { fetchWithSession } from '@electron/internal/browser/api/net-fetch';
+
 import { net } from 'electron/main';
+
 const { fromPartition, fromPath, Session } = process._linkedBinding('electron_browser_session');
 const { isDisplayMediaSystemPickerAvailable } = process._linkedBinding('electron_browser_desktop_capturer');
 

+ 1 - 0
lib/browser/api/share-menu.ts

@@ -1,4 +1,5 @@
 import { BrowserWindow, Menu, SharingItem, PopupOptions } from 'electron/main';
+
 import { EventEmitter } from 'events';
 
 class ShareMenu extends EventEmitter implements Electron.ShareMenu {

+ 1 - 0
lib/browser/api/system-preferences.ts

@@ -1,4 +1,5 @@
 import * as deprecate from '@electron/internal/common/deprecate';
+
 const { systemPreferences } = process._linkedBinding('electron_browser_system_preferences');
 
 if ('getEffectiveAppearance' in systemPreferences) {

+ 4 - 2
lib/browser/api/utility-process.ts

@@ -1,7 +1,9 @@
+import { MessagePortMain } from '@electron/internal/browser/message-port-main';
+
 import { EventEmitter } from 'events';
-import { Duplex, PassThrough } from 'stream';
 import { Socket } from 'net';
-import { MessagePortMain } from '@electron/internal/browser/message-port-main';
+import { Duplex, PassThrough } from 'stream';
+
 const { _fork } = process._linkedBinding('electron_browser_utility_process');
 
 class ForkUtilityProcess extends EventEmitter implements Electron.UtilityProcess {

+ 1 - 0
lib/browser/api/view.ts

@@ -1,4 +1,5 @@
 import { EventEmitter } from 'events';
+
 const { View } = process._linkedBinding('electron_browser_view');
 
 Object.setPrototypeOf((View as any).prototype, EventEmitter.prototype);

+ 9 - 8
lib/browser/api/web-contents.ts

@@ -1,16 +1,17 @@
-import { app, ipcMain, session, webFrameMain, dialog } from 'electron/main';
-import type { BrowserWindowConstructorOptions, MessageBoxOptions } from 'electron/main';
-
-import * as url from 'url';
-import * as path from 'path';
 import { openGuestWindow, makeWebPreferences, parseContentTypeFormat } from '@electron/internal/browser/guest-window-manager';
-import { parseFeatures } from '@electron/internal/browser/parse-features-string';
+import { IpcMainImpl } from '@electron/internal/browser/ipc-main-impl';
 import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal';
 import * as ipcMainUtils from '@electron/internal/browser/ipc-main-internal-utils';
 import { MessagePortMain } from '@electron/internal/browser/message-port-main';
-import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
-import { IpcMainImpl } from '@electron/internal/browser/ipc-main-impl';
+import { parseFeatures } from '@electron/internal/browser/parse-features-string';
 import * as deprecate from '@electron/internal/common/deprecate';
+import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
+
+import { app, ipcMain, session, webFrameMain, dialog } from 'electron/main';
+import type { BrowserWindowConstructorOptions, MessageBoxOptions } from 'electron/main';
+
+import * as path from 'path';
+import * as url from 'url';
 
 // session is not used here, the purpose is to make sure session is initialized
 // before the webContents module.

+ 1 - 1
lib/browser/api/web-frame-main.ts

@@ -1,5 +1,5 @@
-import { MessagePortMain } from '@electron/internal/browser/message-port-main';
 import { IpcMainImpl } from '@electron/internal/browser/ipc-main-impl';
+import { MessagePortMain } from '@electron/internal/browser/message-port-main';
 
 const { WebFrameMain, fromId } = process._linkedBinding('electron_browser_web_frame_main');
 

+ 1 - 1
lib/browser/default-menu.ts

@@ -1,5 +1,5 @@
-import { app, Menu } from 'electron/main';
 import { shell } from 'electron/common';
+import { app, Menu } from 'electron/main';
 
 const isMac = process.platform === 'darwin';
 

+ 5 - 4
lib/browser/devtools.ts

@@ -1,9 +1,10 @@
-import { dialog, Menu } from 'electron/main';
-import * as fs from 'fs';
-
+import { IPC_MESSAGES } from '@electron/internal//common/ipc-messages';
 import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal';
 import * as ipcMainUtils from '@electron/internal/browser/ipc-main-internal-utils';
-import { IPC_MESSAGES } from '@electron/internal//common/ipc-messages';
+
+import { dialog, Menu } from 'electron/main';
+
+import * as fs from 'fs';
 
 const convertToMenuTemplate = function (items: ContextMenuItem[], handler: (id: number) => void) {
   return items.map(function (item) {

+ 3 - 2
lib/browser/guest-view-manager.ts

@@ -1,10 +1,11 @@
-import { webContents } from 'electron/main';
 import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal';
 import * as ipcMainUtils from '@electron/internal/browser/ipc-main-internal-utils';
 import { parseWebViewWebPreferences } from '@electron/internal/browser/parse-features-string';
-import { syncMethods, asyncMethods, properties, navigationHistorySyncMethods } from '@electron/internal/common/web-view-methods';
 import { webViewEvents } from '@electron/internal/browser/web-view-events';
 import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
+import { syncMethods, asyncMethods, properties, navigationHistorySyncMethods } from '@electron/internal/common/web-view-methods';
+
+import { webContents } from 'electron/main';
 
 interface GuestInstance {
   elementInstanceId: number;

+ 2 - 1
lib/browser/guest-window-manager.ts

@@ -5,9 +5,10 @@
  * out-of-process (cross-origin) are created here. "Embedder" roughly means
  * "parent."
  */
+import { parseFeatures } from '@electron/internal/browser/parse-features-string';
+
 import { BrowserWindow } from 'electron/main';
 import type { BrowserWindowConstructorOptions, Referrer, WebContents, LoadURLOptions } from 'electron/main';
-import { parseFeatures } from '@electron/internal/browser/parse-features-string';
 
 type PostData = LoadURLOptions['postData']
 export type WindowOpenArgs = {

+ 2 - 1
lib/browser/init.ts

@@ -1,8 +1,9 @@
+import type * as defaultMenuModule from '@electron/internal/browser/default-menu';
+
 import { EventEmitter } from 'events';
 import * as fs from 'fs';
 import * as path from 'path';
 
-import type * as defaultMenuModule from '@electron/internal/browser/default-menu';
 import type * as url from 'url';
 import type * as v8 from 'v8';
 

+ 2 - 1
lib/browser/ipc-main-impl.ts

@@ -1,6 +1,7 @@
-import { EventEmitter } from 'events';
 import { IpcMainInvokeEvent } from 'electron/main';
 
+import { EventEmitter } from 'events';
+
 export class IpcMainImpl extends EventEmitter implements Electron.IpcMain {
   private _invokeHandlers: Map<string, (e: IpcMainInvokeEvent, ...args: any[]) => void> = new Map();
 

+ 4 - 2
lib/browser/rpc-server.ts

@@ -1,9 +1,11 @@
-import { clipboard } from 'electron/common';
-import * as fs from 'fs';
 import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal';
 import * as ipcMainUtils from '@electron/internal/browser/ipc-main-internal-utils';
 import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
 
+import { clipboard } from 'electron/common';
+
+import * as fs from 'fs';
+
 // Implements window.close()
 ipcMainInternal.on(IPC_MESSAGES.BROWSER_WINDOW_CLOSE, function (event) {
   const window = event.sender.getOwnerBrowserWindow();

+ 3 - 2
lib/common/api/net-client-request.ts

@@ -1,10 +1,11 @@
-import * as url from 'url';
-import { Readable, Writable } from 'stream';
 import type {
   ClientRequestConstructorOptions,
   UploadProgress
 } from 'electron/common';
 
+import { Readable, Writable } from 'stream';
+import * as url from 'url';
+
 const {
   isValidHeaderName,
   isValidHeaderValue,

+ 2 - 2
lib/common/init.ts

@@ -1,7 +1,7 @@
+import timers = require('timers');
 import * as util from 'util';
-import type * as stream from 'stream';
 
-import timers = require('timers');
+import type * as stream from 'stream';
 
 type AnyFn = (...args: any[]) => any
 

+ 2 - 0
lib/node/init.ts

@@ -1,3 +1,5 @@
+/* eslint-disable import/newline-after-import */
+/* eslint-disable import/order */
 // Initialize ASAR support in fs module.
 import { wrapFsWithAsar } from './asar-fs-wrapper';
 wrapFsWithAsar(require('fs'));

+ 1 - 1
lib/renderer/api/exports/electron.ts

@@ -1,5 +1,5 @@
-import { defineProperties } from '@electron/internal/common/define-properties';
 import { commonModuleList } from '@electron/internal/common/api/module-list';
+import { defineProperties } from '@electron/internal/common/define-properties';
 import { rendererModuleList } from '@electron/internal/renderer/api/module-list';
 
 module.exports = {};

+ 5 - 4
lib/renderer/common-init.ts

@@ -1,10 +1,10 @@
-import { ipcRenderer } from 'electron/renderer';
 import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal';
-
+import type * as securityWarningsModule from '@electron/internal/renderer/security-warnings';
+import type * as webFrameInitModule from '@electron/internal/renderer/web-frame-init';
 import type * as webViewInitModule from '@electron/internal/renderer/web-view/web-view-init';
 import type * as windowSetupModule from '@electron/internal/renderer/window-setup';
-import type * as webFrameInitModule from '@electron/internal/renderer/web-frame-init';
-import type * as securityWarningsModule from '@electron/internal/renderer/security-warnings';
+
+import { ipcRenderer } from 'electron/renderer';
 
 const { mainFrame } = process._linkedBinding('electron_renderer_web_frame');
 const v8Util = process._linkedBinding('electron_common_v8_util');
@@ -49,6 +49,7 @@ if (process.isMainFrame) {
 }
 
 const { webFrameInit } = require('@electron/internal/renderer/web-frame-init') as typeof webFrameInitModule;
+
 webFrameInit();
 
 // Warn about security issues

+ 3 - 3
lib/renderer/init.ts

@@ -1,10 +1,10 @@
-import * as path from 'path';
-import { pathToFileURL } from 'url';
 import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
-
 import type * as ipcRendererInternalModule from '@electron/internal/renderer/ipc-renderer-internal';
 import type * as ipcRendererUtilsModule from '@electron/internal/renderer/ipc-renderer-internal-utils';
 
+import * as path from 'path';
+import { pathToFileURL } from 'url';
+
 const Module = require('module') as NodeJS.ModuleInternal;
 
 // We do not want to allow use of the VM module in the renderer process as

+ 2 - 1
lib/renderer/inspector.ts

@@ -1,8 +1,9 @@
+import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
 import { internalContextBridge } from '@electron/internal/renderer/api/context-bridge';
 import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal';
 import * as ipcRendererUtils from '@electron/internal/renderer/ipc-renderer-internal-utils';
+
 import { webFrame } from 'electron/renderer';
-import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
 
 const { contextIsolationEnabled } = internalContextBridge;
 

+ 1 - 1
lib/renderer/security-warnings.ts

@@ -1,5 +1,5 @@
-import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal';
 import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
+import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal';
 
 const { mainFrame: webFrame } = process._linkedBinding('electron_renderer_web_frame');
 

+ 3 - 2
lib/renderer/web-frame-init.ts

@@ -1,6 +1,7 @@
-import { webFrame, WebFrame } from 'electron/renderer';
-import * as ipcRendererUtils from '@electron/internal/renderer/ipc-renderer-internal-utils';
 import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
+import * as ipcRendererUtils from '@electron/internal/renderer/ipc-renderer-internal-utils';
+
+import { webFrame, WebFrame } from 'electron/renderer';
 
 // All keys of WebFrame that extend Function
 type WebFrameMethod = {

+ 1 - 1
lib/renderer/web-view/guest-view-internal.ts

@@ -1,6 +1,6 @@
+import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
 import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal';
 import * as ipcRendererUtils from '@electron/internal/renderer/ipc-renderer-internal-utils';
-import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
 
 const { mainFrame: webFrame } = process._linkedBinding('electron_renderer_web_frame');
 

+ 1 - 1
lib/renderer/web-view/web-view-attributes.ts

@@ -1,5 +1,5 @@
-import type { WebViewImpl } from '@electron/internal/renderer/web-view/web-view-impl';
 import { WEB_VIEW_ATTRIBUTES, WEB_VIEW_ERROR_MESSAGES } from '@electron/internal/renderer/web-view/web-view-constants';
+import type { WebViewImpl } from '@electron/internal/renderer/web-view/web-view-impl';
 
 const resolveURL = function (url?: string | null) {
   return url ? new URL(url, location.href).href : '';

+ 1 - 1
lib/renderer/web-view/web-view-element.ts

@@ -8,9 +8,9 @@
 // which runs in browserify environment instead of Node environment, all native
 // modules must be passed from outside, all included files must be plain JS.
 
+import type { SrcAttribute } from '@electron/internal/renderer/web-view/web-view-attributes';
 import { WEB_VIEW_ATTRIBUTES, WEB_VIEW_ERROR_MESSAGES } from '@electron/internal/renderer/web-view/web-view-constants';
 import { WebViewImpl, WebViewImplHooks, setupMethods } from '@electron/internal/renderer/web-view/web-view-impl';
-import type { SrcAttribute } from '@electron/internal/renderer/web-view/web-view-attributes';
 
 const internals = new WeakMap<HTMLElement, WebViewImpl>();
 

+ 2 - 2
lib/renderer/web-view/web-view-impl.ts

@@ -1,8 +1,8 @@
-import type * as guestViewInternalModule from '@electron/internal/renderer/web-view/guest-view-internal';
-import { WEB_VIEW_ATTRIBUTES } from '@electron/internal/renderer/web-view/web-view-constants';
 import { syncMethods, asyncMethods, properties } from '@electron/internal/common/web-view-methods';
+import type * as guestViewInternalModule from '@electron/internal/renderer/web-view/guest-view-internal';
 import type { WebViewAttribute, PartitionAttribute } from '@electron/internal/renderer/web-view/web-view-attributes';
 import { setupWebViewAttributes } from '@electron/internal/renderer/web-view/web-view-attributes';
+import { WEB_VIEW_ATTRIBUTES } from '@electron/internal/renderer/web-view/web-view-constants';
 
 // ID generator.
 let nextId = 0;

+ 2 - 3
lib/renderer/web-view/web-view-init.ts

@@ -1,8 +1,7 @@
-import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal';
 import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
-
-import type * as webViewElementModule from '@electron/internal/renderer/web-view/web-view-element';
+import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal';
 import type * as guestViewInternalModule from '@electron/internal/renderer/web-view/guest-view-internal';
+import type * as webViewElementModule from '@electron/internal/renderer/web-view/web-view-element';
 
 const v8Util = process._linkedBinding('electron_common_v8_util');
 const { mainFrame: webFrame } = process._linkedBinding('electron_renderer_web_frame');

+ 2 - 2
lib/renderer/window-setup.ts

@@ -1,6 +1,6 @@
-import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal';
-import { internalContextBridge } from '@electron/internal/renderer/api/context-bridge';
 import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
+import { internalContextBridge } from '@electron/internal/renderer/api/context-bridge';
+import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal';
 
 const { contextIsolationEnabled } = internalContextBridge;
 

+ 4 - 4
lib/sandboxed_renderer/init.ts

@@ -1,9 +1,9 @@
-import * as events from 'events';
-import { setImmediate, clearImmediate } from 'timers';
 import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
-
-import type * as ipcRendererUtilsModule from '@electron/internal/renderer/ipc-renderer-internal-utils';
 import type * as ipcRendererInternalModule from '@electron/internal/renderer/ipc-renderer-internal';
+import type * as ipcRendererUtilsModule from '@electron/internal/renderer/ipc-renderer-internal-utils';
+
+import * as events from 'events';
+import { setImmediate, clearImmediate } from 'timers';
 
 declare const binding: {
   get: (name: string) => any;

+ 3 - 2
lib/utility/api/net.ts

@@ -1,7 +1,8 @@
+import { fetchWithSession } from '@electron/internal/browser/api/net-fetch';
+import { ClientRequest } from '@electron/internal/common/api/net-client-request';
+
 import { IncomingMessage } from 'electron/utility';
 import type { ClientRequestConstructorOptions } from 'electron/utility';
-import { ClientRequest } from '@electron/internal/common/api/net-client-request';
-import { fetchWithSession } from '@electron/internal/browser/api/net-fetch';
 
 const { isOnline, resolveHost } = process._linkedBinding('electron_common_net');
 

+ 2 - 2
lib/utility/init.ts

@@ -1,8 +1,8 @@
+import { ParentPort } from '@electron/internal/utility/parent-port';
+
 import { EventEmitter } from 'events';
 import { pathToFileURL } from 'url';
 
-import { ParentPort } from '@electron/internal/utility/parent-port';
-
 const v8Util = process._linkedBinding('electron_common_v8_util');
 
 const entryScript: string = v8Util.getHiddenValue(process, '_serviceStartupScript');

+ 3 - 1
lib/utility/parent-port.ts

@@ -1,5 +1,7 @@
-import { EventEmitter } from 'events';
 import { MessagePortMain } from '@electron/internal/browser/message-port-main';
+
+import { EventEmitter } from 'events';
+
 const { createParentPort } = process._linkedBinding('electron_utility_parent_port');
 
 export class ParentPort extends EventEmitter implements Electron.ParentPort {

+ 2 - 2
npm/cli.js

@@ -1,9 +1,9 @@
 #!/usr/bin/env node
 
-const electron = require('./');
-
 const proc = require('child_process');
 
+const electron = require('./');
+
 const child = proc.spawn(electron, process.argv.slice(2), { stdio: 'inherit', windowsHide: false });
 child.on('close', function (code, signal) {
   if (code === null) {

+ 5 - 3
npm/install.js

@@ -1,13 +1,15 @@
 #!/usr/bin/env node
 
-const { version } = require('./package');
+const { downloadArtifact } = require('@electron/get');
+
+const extract = require('extract-zip');
 
 const childProcess = require('child_process');
 const fs = require('fs');
 const os = require('os');
 const path = require('path');
-const extract = require('extract-zip');
-const { downloadArtifact } = require('@electron/get');
+
+const { version } = require('./package');
 
 if (process.env.ELECTRON_SKIP_BINARY_DOWNLOAD) {
   process.exit(0);

+ 1 - 2
package.json

@@ -25,7 +25,6 @@
     "buffer": "^6.0.3",
     "chalk": "^4.1.0",
     "check-for-leaks": "^1.2.1",
-    "dotenv-safe": "^4.0.4",
     "dugite": "^2.7.1",
     "eslint": "^8.57.1",
     "eslint-config-standard": "^17.1.0",
@@ -57,7 +56,7 @@
     "timers-browserify": "1.4.2",
     "ts-loader": "^8.0.2",
     "ts-node": "6.2.0",
-    "typescript": "^5.1.2",
+    "typescript": "^5.6.2",
     "url": "^0.11.4",
     "webpack": "^5.94.0",
     "webpack-cli": "^5.1.4",

+ 4 - 4
patches/boringssl/expose_ripemd160.patch

@@ -22,18 +22,18 @@ index 7033d9c9cc2a2e11c5d6b4bc8575b1f6d271170c..97107c022f6997c56581317feee230bd
      // hash function when given a signature OID. To avoid unintended lax parsing
      // of hash OIDs, this is no longer supported for lookup by OID or NID.
 diff --git a/crypto/fipsmodule/digest/digests.c.inc b/crypto/fipsmodule/digest/digests.c.inc
-index 216af52f7e7bb8df3bb3e9072b15a3edc15eaaf5..154aec02f93279a7a5dcb49b5410dfee9d4f0656 100644
+index 9ead2c65c43f6f4899fa84d095c025b2b7c0bedc..1644bba5c1b87037b681372db89d93c2e637ebf2 100644
 --- a/crypto/fipsmodule/digest/digests.c.inc
 +++ b/crypto/fipsmodule/digest/digests.c.inc
-@@ -61,6 +61,7 @@
+@@ -60,6 +60,7 @@
+ #include <string.h>
  
  #include <openssl/nid.h>
- #include <openssl/sha.h>
 +#include <openssl/ripemd.h>
  
  #include "internal.h"
  #include "../delocate.h"
-@@ -216,4 +217,27 @@ DEFINE_METHOD_FUNCTION(EVP_MD, EVP_sha512_256) {
+@@ -215,4 +216,27 @@ DEFINE_METHOD_FUNCTION(EVP_MD, EVP_sha512_256) {
    out->ctx_size = sizeof(SHA512_CTX);
  }
  

+ 3 - 3
patches/boringssl/revert_track_ssl_error_zero_return_explicitly.patch

@@ -20,10 +20,10 @@ index 7de8923518dbfb69fef62d7781f906b30cf62155..7a4310d6d8e85f07f0ae6c97726d909c
  
      case ssl_open_record_error:
 diff --git a/ssl/ssl_lib.cc b/ssl/ssl_lib.cc
-index 2e7859994430054cbba3b8a0e452ee6027b419a2..7be28a2af48c71b63f9311ac7c9fd69b5a247317 100644
+index 071709f50fb0552fb65ec67d8dc8313baf6f1e1c..e198849996c9b18e892113ac503ba61f2030ca7b 100644
 --- a/ssl/ssl_lib.cc
 +++ b/ssl/ssl_lib.cc
-@@ -1336,7 +1336,7 @@ int SSL_get_error(const SSL *ssl, int ret_code) {
+@@ -1343,7 +1343,7 @@ int SSL_get_error(const SSL *ssl, int ret_code) {
    }
  
    if (ret_code == 0) {
@@ -32,7 +32,7 @@ index 2e7859994430054cbba3b8a0e452ee6027b419a2..7be28a2af48c71b63f9311ac7c9fd69b
        return SSL_ERROR_ZERO_RETURN;
      }
      // An EOF was observed which violates the protocol, and the underlying
-@@ -2718,13 +2718,7 @@ void *SSL_CTX_get_ex_data(const SSL_CTX *ctx, int idx) {
+@@ -2725,13 +2725,7 @@ void *SSL_CTX_get_ex_data(const SSL_CTX *ctx, int idx) {
    return CRYPTO_get_ex_data(&ctx->ex_data, idx);
  }
  

+ 1 - 0
patches/chromium/.patches

@@ -131,3 +131,4 @@ feat_enable_customizing_symbol_color_in_framecaptionbutton.patch
 build_expose_webplugininfo_interface_to_electron.patch
 osr_shared_texture_remove_keyed_mutex_on_win_dxgi.patch
 feat_allow_usage_of_sccontentsharingpicker_on_supported_platforms.patch
+chore_partial_revert_of.patch

+ 2 - 2
patches/chromium/add_contentgpuclient_precreatemessageloop_callback.patch

@@ -10,7 +10,7 @@ Allows Electron to restore WER when ELECTRON_DEFAULT_ERROR_MODE is set.
 This should be upstreamed.
 
 diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc
-index d2be94d0d77ef798c888177cd4b882521335059b..8ed6f393da68f6d4ccb951f4d2c951e66e791b8f 100644
+index 59ab3b746782c71f7d9401c13a7c866e6e7a823d..f95842da98d3a1d853633b53c745be9c394b25d5 100644
 --- a/content/gpu/gpu_main.cc
 +++ b/content/gpu/gpu_main.cc
 @@ -258,6 +258,10 @@ int GpuMain(MainFunctionParams parameters) {
@@ -24,7 +24,7 @@ index d2be94d0d77ef798c888177cd4b882521335059b..8ed6f393da68f6d4ccb951f4d2c951e6
    // We are experiencing what appear to be memory-stomp issues in the GPU
    // process. These issues seem to be impacting the task executor and listeners
    // registered to it. Create the task executor on the heap to guard against
-@@ -358,7 +362,6 @@ int GpuMain(MainFunctionParams parameters) {
+@@ -368,7 +372,6 @@ int GpuMain(MainFunctionParams parameters) {
  #endif
    const bool dead_on_arrival = !init_success;
  

+ 6 - 6
patches/chromium/add_didinstallconditionalfeatures.patch

@@ -23,10 +23,10 @@ index ad0092ef2e13853e4bb8b923481559a043b00ab7..1c2dfd23f18733e21312992877ae1499
                                          int32_t world_id) {}
    virtual void DidClearWindowObject() {}
 diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
-index 724818204a4fa1578102c2fe1a8877735323595a..954fdbbdd4d07c32d6fe78632ca95efc29fadc3c 100644
+index ee1753d6b00887dcc0279bcfb95be728aea41ea3..31c5ed77ed0242261b021c397712d8372919800e 100644
 --- a/content/renderer/render_frame_impl.cc
 +++ b/content/renderer/render_frame_impl.cc
-@@ -4791,6 +4791,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local<v8::Context> context,
+@@ -4796,6 +4796,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local<v8::Context> context,
      observer.DidCreateScriptContext(context, world_id);
  }
  
@@ -40,10 +40,10 @@ index 724818204a4fa1578102c2fe1a8877735323595a..954fdbbdd4d07c32d6fe78632ca95efc
                                                 int world_id) {
    for (auto& observer : observers_)
 diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
-index a62e8a85a38d2f131685693f83794a0e0a8ebce9..6260aaa6049bed6f23f83f31b833ec1b311a5a2a 100644
+index 7cbbc9c3924f5c37e4d0665b2e3dd961aff227cb..f6bcf5b1dcace172256a49b4745b26cd8354427d 100644
 --- a/content/renderer/render_frame_impl.h
 +++ b/content/renderer/render_frame_impl.h
-@@ -648,6 +648,8 @@ class CONTENT_EXPORT RenderFrameImpl
+@@ -651,6 +651,8 @@ class CONTENT_EXPORT RenderFrameImpl
    void DidObserveLayoutShift(double score, bool after_input_or_scroll) override;
    void DidCreateScriptContext(v8::Local<v8::Context> context,
                                int world_id) override;
@@ -53,10 +53,10 @@ index a62e8a85a38d2f131685693f83794a0e0a8ebce9..6260aaa6049bed6f23f83f31b833ec1b
                                  int world_id) override;
    void DidChangeScrollOffset() override;
 diff --git a/third_party/blink/public/web/web_local_frame_client.h b/third_party/blink/public/web/web_local_frame_client.h
-index a8e13d160c1ec6944385d6272b7d44dc9f2f7c43..16a5fb0786f1a349f13428aedd1dc1a7bd983f7f 100644
+index 26c92021ceb5dc5cead46f9dcb8c73dc502bcc8b..9a6984cffc8ff24e9c5caf9dae2b1b65595edb94 100644
 --- a/third_party/blink/public/web/web_local_frame_client.h
 +++ b/third_party/blink/public/web/web_local_frame_client.h
-@@ -664,6 +664,9 @@ class BLINK_EXPORT WebLocalFrameClient {
+@@ -665,6 +665,9 @@ class BLINK_EXPORT WebLocalFrameClient {
    virtual void DidCreateScriptContext(v8::Local<v8::Context>,
                                        int32_t world_id) {}
  

+ 4 - 4
patches/chromium/add_maximized_parameter_to_linuxui_getwindowframeprovider.patch

@@ -8,10 +8,10 @@ decorations in maximized mode where needed, preventing empty space caused
 by decoration shadows and rounded titlebars around the window while maximized.
 
 diff --git a/ui/gtk/gtk_ui.cc b/ui/gtk/gtk_ui.cc
-index d215ab072131dcc6ec27e91410d5ac6dda054764..7684edaaf4e6798d18be9bb7e2349961e16c217d 100644
+index 69fdf309dbb71e1d2a2d258d15df1ffde3b14841..57052ded8b7d52932b1a217c2f6cb97abd65c2a5 100644
 --- a/ui/gtk/gtk_ui.cc
 +++ b/ui/gtk/gtk_ui.cc
-@@ -582,11 +582,12 @@ std::unique_ptr<ui::NavButtonProvider> GtkUi::CreateNavButtonProvider() {
+@@ -584,11 +584,12 @@ std::unique_ptr<ui::NavButtonProvider> GtkUi::CreateNavButtonProvider() {
  }
  
  ui::WindowFrameProvider* GtkUi::GetWindowFrameProvider(bool solid_frame,
@@ -201,10 +201,10 @@ index 0800349bc18753e6a41a938c70213dd7dd123d0d..a1553e0cb1fac188fb2c74e10163c52d
   private:
    std::optional<gfx::FontRenderParams> default_font_render_params_;
 diff --git a/ui/linux/linux_ui.h b/ui/linux/linux_ui.h
-index 0a4c394b07a682d55639f37414331d68f175841c..45db96c165d61f551b344c7c852c083546508325 100644
+index 1e59679d206462f72495d587740ac48ba0fa30df..090e770ac2f8e5231f2bdd11247cacaceb0c7ef6 100644
 --- a/ui/linux/linux_ui.h
 +++ b/ui/linux/linux_ui.h
-@@ -307,7 +307,8 @@ class COMPONENT_EXPORT(LINUX_UI) LinuxUiTheme {
+@@ -306,7 +306,8 @@ class COMPONENT_EXPORT(LINUX_UI) LinuxUiTheme {
    // The returned object is not owned by the caller and will remain alive until
    // the process ends.
    virtual WindowFrameProvider* GetWindowFrameProvider(bool solid_frame,

+ 4 - 4
patches/chromium/allow_disabling_blink_scheduler_throttling_per_renderview.patch

@@ -23,10 +23,10 @@ index e392efaf2e1ac3cfbef2d787ba40f0491b67f3cc..d45c7570484a7c1bfca25c860a1ddd2d
      return receiver_.BindNewEndpointAndPassDedicatedRemote();
    }
 diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc
-index f130879c92319b525f5a521c3a083f479b485d2e..af42b58b78beff2349deadf68c51a3d4a310ac58 100644
+index 52ce9d2c8c5e29b8dce26116c04dac087b83571d..1c9573708b1b27cffaac175740e1ed826c8115ec 100644
 --- a/content/browser/renderer_host/render_view_host_impl.cc
 +++ b/content/browser/renderer_host/render_view_host_impl.cc
-@@ -753,6 +753,11 @@ void RenderViewHostImpl::SetBackgroundOpaque(bool opaque) {
+@@ -746,6 +746,11 @@ void RenderViewHostImpl::SetBackgroundOpaque(bool opaque) {
    GetWidget()->GetAssociatedFrameWidget()->SetBackgroundOpaque(opaque);
  }
  
@@ -39,10 +39,10 @@ index f130879c92319b525f5a521c3a083f479b485d2e..af42b58b78beff2349deadf68c51a3d4
    return is_active();
  }
 diff --git a/content/browser/renderer_host/render_view_host_impl.h b/content/browser/renderer_host/render_view_host_impl.h
-index fe60e694fa35e5c46ce49dd9617ad33d73708912..df13884877ac87e414749dfec5db8ff83c1640ba 100644
+index 961e55732d9c3aa5437e9cc6eca7a2c8d06bd335..f0fc8d303dc9de2419d5f5d769657faf98caa22a 100644
 --- a/content/browser/renderer_host/render_view_host_impl.h
 +++ b/content/browser/renderer_host/render_view_host_impl.h
-@@ -139,6 +139,7 @@ class CONTENT_EXPORT RenderViewHostImpl
+@@ -135,6 +135,7 @@ class CONTENT_EXPORT RenderViewHostImpl
    void EnablePreferredSizeMode() override;
    void WriteIntoTrace(perfetto::TracedProto<TraceProto> context) const override;
  

+ 3 - 3
patches/chromium/blink_local_frame.patch

@@ -15,10 +15,10 @@ Refs changes in:
 This patch reverts the changes to fix associated crashes in Electron.
 
 diff --git a/third_party/blink/renderer/core/frame/frame.cc b/third_party/blink/renderer/core/frame/frame.cc
-index 6210eae2b7c25dae24ad7087d3e0ac494dada375..934ee55c89c526ca8fa390a13c4dd79b1c85882f 100644
+index 2f33ec660a975522c473ecd50e633b5edaca707f..65221a51927d9f44bd6adbad88fa1144f2db3add 100644
 --- a/third_party/blink/renderer/core/frame/frame.cc
 +++ b/third_party/blink/renderer/core/frame/frame.cc
-@@ -131,14 +131,6 @@ bool Frame::Detach(FrameDetachType type) {
+@@ -135,14 +135,6 @@ bool Frame::Detach(FrameDetachType type) {
  
    DCHECK(!IsDetached());
  
@@ -33,7 +33,7 @@ index 6210eae2b7c25dae24ad7087d3e0ac494dada375..934ee55c89c526ca8fa390a13c4dd79b
    if (type == FrameDetachType::kRemove) {
      if (provisional_frame_) {
        provisional_frame_->Detach(FrameDetachType::kRemove);
-@@ -162,6 +154,14 @@ bool Frame::Detach(FrameDetachType type) {
+@@ -166,6 +158,14 @@ bool Frame::Detach(FrameDetachType type) {
      GetWindowProxyManager()->ClearForSwap();
    }
  

+ 7 - 7
patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch

@@ -11,7 +11,7 @@ if we ever align our .pak file generation with Chrome we can remove this
 patch.
 
 diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn
-index 6193a1017c888a5b1187f25f858b9af5930063bb..4421014867944cd67c0072777c9f36badb8f1e3e 100644
+index 751a3087c4a06f9f03373f890b3400621680089d..ea7bf129c8ad67c9c84fc86e972eecfa0a80ad5d 100644
 --- a/chrome/BUILD.gn
 +++ b/chrome/BUILD.gn
 @@ -204,11 +204,16 @@ if (!is_android && !is_mac) {
@@ -33,10 +33,10 @@ index 6193a1017c888a5b1187f25f858b9af5930063bb..4421014867944cd67c0072777c9f36ba
            "//base",
            "//build:branding_buildflags",
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
-index 28bde5af4f7a7e399c36a293416e151af06a029e..bf31cd8d19a323535611de9fe13e0de62744e535 100644
+index 5c279715b863215a9d34272cdeea5b58beaedfce..732ec6aaf297def2925dcc35417ab351c49dcbf1 100644
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -4474,7 +4474,7 @@ static_library("browser") {
+@@ -4528,7 +4528,7 @@ static_library("browser") {
        ]
      }
  
@@ -46,10 +46,10 @@ index 28bde5af4f7a7e399c36a293416e151af06a029e..bf31cd8d19a323535611de9fe13e0de6
        # than here in :chrome_dll.
        deps += [ "//chrome:packed_resources_integrity_header" ]
 diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
-index 19758ff98652b42d0e81e6c647c82e3d36583466..821e649362b3a6ffba83bd03ab30afe73cfb3d21 100644
+index d7e7f17b2fa2119a3781e0bc085988284bdce814..b4788192fc02716ac8f8bb6bd693ac89bad85291 100644
 --- a/chrome/test/BUILD.gn
 +++ b/chrome/test/BUILD.gn
-@@ -7169,9 +7169,12 @@ test("unit_tests") {
+@@ -7116,9 +7116,12 @@ test("unit_tests") {
        "//chrome/notification_helper",
      ]
  
@@ -63,7 +63,7 @@ index 19758ff98652b42d0e81e6c647c82e3d36583466..821e649362b3a6ffba83bd03ab30afe7
        "//chrome//services/util_win:unit_tests",
        "//chrome/app:chrome_dll_resources",
        "//chrome/app:win_unit_tests",
-@@ -8174,6 +8177,10 @@ test("unit_tests") {
+@@ -8077,6 +8080,10 @@ test("unit_tests") {
        "../browser/performance_manager/policies/background_tab_loading_policy_unittest.cc",
      ]
  
@@ -74,7 +74,7 @@ index 19758ff98652b42d0e81e6c647c82e3d36583466..821e649362b3a6ffba83bd03ab30afe7
      sources += [
        # The importer code is not used on Android.
        "../common/importer/firefox_importer_utils_unittest.cc",
-@@ -8226,7 +8233,6 @@ test("unit_tests") {
+@@ -8129,7 +8136,6 @@ test("unit_tests") {
      # Non-android deps for "unit_tests" target.
      deps += [
        "../browser/screen_ai:screen_ai_install_state",

+ 1 - 1
patches/chromium/build_run_reclient_cfg_generator_after_chrome.patch

@@ -20,7 +20,7 @@ index 17103061c4752e6fcac07413dbf574e0c6fd6d39..848be71fa6dc81a64b7274b31d461f9d
  /win-cross/
  reproxy.cfg
 diff --git a/buildtools/reclient_cfgs/configure_reclient_cfgs.py b/buildtools/reclient_cfgs/configure_reclient_cfgs.py
-index ba44640480e758d4ed8c9115497a2c09074918b4..837158cbbeb9120b7456aefc516eb3db6a38558c 100755
+index e367bf89e2ebabe731dcf8714ea7a0fa3b15d50d..f5cf97c51b7cc1d07ca4effb04aa6d9a3ee52845 100755
 --- a/buildtools/reclient_cfgs/configure_reclient_cfgs.py
 +++ b/buildtools/reclient_cfgs/configure_reclient_cfgs.py
 @@ -344,4 +344,13 @@ def main():

+ 16 - 16
patches/chromium/can_create_window.patch

@@ -9,10 +9,10 @@ potentially prevent a window from being created.
 TODO(loc): this patch is currently broken.
 
 diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
-index ad884c1077b1c3f3b0af9490eb9e7ecd09ff2880..5ca1a4ff1c2e3acb3988bba651153a334058911d 100644
+index 86c862dd1976a77fcfd70a44ef63839a4b4c70e8..744715d8ecc1ddca8400ae88e115e52797df1ffa 100644
 --- a/content/browser/renderer_host/render_frame_host_impl.cc
 +++ b/content/browser/renderer_host/render_frame_host_impl.cc
-@@ -8945,6 +8945,7 @@ void RenderFrameHostImpl::CreateNewWindow(
+@@ -9067,6 +9067,7 @@ void RenderFrameHostImpl::CreateNewWindow(
            last_committed_origin_, params->window_container_type,
            params->target_url, params->referrer.To<Referrer>(),
            params->frame_name, params->disposition, *params->features,
@@ -21,10 +21,10 @@ index ad884c1077b1c3f3b0af9490eb9e7ecd09ff2880..5ca1a4ff1c2e3acb3988bba651153a33
            &no_javascript_access);
  
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index f7982642de07c3e57d1ff19c901f10947bec6cae..30b5caf0379d8209ee92945be69cc8aac98c7666 100644
+index 005138eef91d9b5b2e44478312deda8ea3ce8cfc..ef9109104139a7df3b16ed42e839666b05fd756f 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
-@@ -4793,6 +4793,12 @@ FrameTree* WebContentsImpl::CreateNewWindow(
+@@ -4771,6 +4771,12 @@ FrameTree* WebContentsImpl::CreateNewWindow(
    SetPartitionedPopinOpenerOnNewWindowIfNeeded(new_contents_impl, params,
                                                 opener);
  
@@ -37,7 +37,7 @@ index f7982642de07c3e57d1ff19c901f10947bec6cae..30b5caf0379d8209ee92945be69cc8aa
    // If the new frame has a name, make sure any SiteInstances that can find
    // this named frame have proxies for it.  Must be called after
    // SetSessionStorageNamespace, since this calls CreateRenderView, which uses
-@@ -4834,12 +4840,6 @@ FrameTree* WebContentsImpl::CreateNewWindow(
+@@ -4812,12 +4818,6 @@ FrameTree* WebContentsImpl::CreateNewWindow(
      AddWebContentsDestructionObserver(new_contents_impl);
    }
  
@@ -66,10 +66,10 @@ index 61ee456a1bfb842aefd8b644ff0ae630a698ef7c..cbf4276337139a81d46fb263bce8f5ee
  
  // Operation result when the renderer asks the browser to create a new window.
 diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
-index d93b8edafc1182afb10f85a266e9c074340466bd..6b8f1d00b10290fedeea138426dc0299e7cd4d3f 100644
+index 9848ac58da8a0918d04bb4bb6f1d76da36ab8078..491963b39a0140193915480373371f162e2d370f 100644
 --- a/content/public/browser/content_browser_client.cc
 +++ b/content/public/browser/content_browser_client.cc
-@@ -754,6 +754,8 @@ bool ContentBrowserClient::CanCreateWindow(
+@@ -760,6 +760,8 @@ bool ContentBrowserClient::CanCreateWindow(
      const std::string& frame_name,
      WindowOpenDisposition disposition,
      const blink::mojom::WindowFeatures& features,
@@ -79,10 +79,10 @@ index d93b8edafc1182afb10f85a266e9c074340466bd..6b8f1d00b10290fedeea138426dc0299
      bool opener_suppressed,
      bool* no_javascript_access) {
 diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
-index 65101a5595ef5e9d40719eb934a0cad4d4ade4de..eb527d816e7ccf9122f0d154e95eca8f6981443f 100644
+index 2831b0d6a44e1def69f2bc02d7daf0074acca6f4..58fd2cea8a602832e56ac5962fbac57b5adae610 100644
 --- a/content/public/browser/content_browser_client.h
 +++ b/content/public/browser/content_browser_client.h
-@@ -194,6 +194,7 @@ class NetworkService;
+@@ -196,6 +196,7 @@ class NetworkService;
  class TrustedURLLoaderHeaderClient;
  }  // namespace mojom
  struct ResourceRequest;
@@ -90,7 +90,7 @@ index 65101a5595ef5e9d40719eb934a0cad4d4ade4de..eb527d816e7ccf9122f0d154e95eca8f
  }  // namespace network
  
  namespace sandbox {
-@@ -1301,6 +1302,8 @@ class CONTENT_EXPORT ContentBrowserClient {
+@@ -1322,6 +1323,8 @@ class CONTENT_EXPORT ContentBrowserClient {
        const std::string& frame_name,
        WindowOpenDisposition disposition,
        const blink::mojom::WindowFeatures& features,
@@ -100,7 +100,7 @@ index 65101a5595ef5e9d40719eb934a0cad4d4ade4de..eb527d816e7ccf9122f0d154e95eca8f
        bool opener_suppressed,
        bool* no_javascript_access);
 diff --git a/content/public/browser/web_contents_delegate.cc b/content/public/browser/web_contents_delegate.cc
-index d9af18d041a9726862b0b00285ccb55e0756daf0..dfb3c2401074c95c129290ec68149e1aab81d1cb 100644
+index 9d14f11ef397a525633292dbedfed40f38a9ec8f..49bc6ce731ea06cae8281107dbaa527060ffd4ce 100644
 --- a/content/public/browser/web_contents_delegate.cc
 +++ b/content/public/browser/web_contents_delegate.cc
 @@ -31,6 +31,17 @@ namespace content {
@@ -122,7 +122,7 @@ index d9af18d041a9726862b0b00285ccb55e0756daf0..dfb3c2401074c95c129290ec68149e1a
      WebContents* source,
      const OpenURLParams& params,
 diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h
-index a080fb57f00c712eb8a3a9be669413e1082ce3b3..4826eea9747c4860d7f5b4b8d478e62cb48a675b 100644
+index 294dc13ec8f27875c28b459b56b166f2c8f4a2ff..1a58077807de673e1937f3323c8dc37b4c69468e 100644
 --- a/content/public/browser/web_contents_delegate.h
 +++ b/content/public/browser/web_contents_delegate.h
 @@ -17,6 +17,7 @@
@@ -148,10 +148,10 @@ index a080fb57f00c712eb8a3a9be669413e1082ce3b3..4826eea9747c4860d7f5b4b8d478e62c
    // typically happens when popups are created.
    virtual void WebContentsCreated(WebContents* source_contents,
 diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
-index d5e16b9e780efac46e088b3ef226e4418a90aeaf..724818204a4fa1578102c2fe1a8877735323595a 100644
+index 6a69e532bf8056ef2fc3f8f215407e92268f00c9..ee1753d6b00887dcc0279bcfb95be728aea41ea3 100644
 --- a/content/renderer/render_frame_impl.cc
 +++ b/content/renderer/render_frame_impl.cc
-@@ -6834,6 +6834,10 @@ WebView* RenderFrameImpl::CreateNewWindow(
+@@ -6854,6 +6854,10 @@ WebView* RenderFrameImpl::CreateNewWindow(
            request.HasUserGesture(), GetWebFrame()->IsAdFrame(),
            GetWebFrame()->IsAdScriptInStack());
  
@@ -163,7 +163,7 @@ index d5e16b9e780efac46e088b3ef226e4418a90aeaf..724818204a4fa1578102c2fe1a887773
    // moved on send.
    bool is_background_tab =
 diff --git a/content/web_test/browser/web_test_content_browser_client.cc b/content/web_test/browser/web_test_content_browser_client.cc
-index 207c7298ffb187354d4a50dad421fe78f9bc066d..10bae4861c9cac9d2c9cedae8beca16f2c4c5f5a 100644
+index 91d731a33bb48a9b7432b1139bd52e777d1e1967..d5dc4514f16063314afe1847bb64b0d5e43f5d92 100644
 --- a/content/web_test/browser/web_test_content_browser_client.cc
 +++ b/content/web_test/browser/web_test_content_browser_client.cc
 @@ -520,6 +520,8 @@ bool WebTestContentBrowserClient::CanCreateWindow(
@@ -176,7 +176,7 @@ index 207c7298ffb187354d4a50dad421fe78f9bc066d..10bae4861c9cac9d2c9cedae8beca16f
      bool opener_suppressed,
      bool* no_javascript_access) {
 diff --git a/content/web_test/browser/web_test_content_browser_client.h b/content/web_test/browser/web_test_content_browser_client.h
-index 115b75966f53ee16f7886fc4152741727c7825c8..a1944f7de539f04f85fdb238ccf67e091f413ad3 100644
+index 00cbe48de3b874215f2896940d71c6ed5bed98b5..8937c40d8bffbf09c8b0c33524086d16dbbee57a 100644
 --- a/content/web_test/browser/web_test_content_browser_client.h
 +++ b/content/web_test/browser/web_test_content_browser_client.h
 @@ -92,6 +92,8 @@ class WebTestContentBrowserClient : public ShellContentBrowserClient {

+ 2 - 2
patches/chromium/chore_allow_chromium_to_handle_synthetic_mouse_events_for_touch.patch

@@ -34,10 +34,10 @@ index 1e2c5bb35cc314d44dba85a9bafc5e55bf2b5f14..d110d0a2f005888c4450262fc1887cbf
    Widget* GetWidget();
    const Widget* GetWidget() const;
 diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
-index 49a39d1a9cc20ddce24b651341fc361def3fe24a..47592b26ed16163759bf94f8278b5898bf60423d 100644
+index de8284b0b75511d11dc3afed60efc75788d0a7d0..1d47f744b21b23afa48687e1bcc3a0f02f042a87 100644
 --- a/ui/views/win/hwnd_message_handler.cc
 +++ b/ui/views/win/hwnd_message_handler.cc
-@@ -3131,15 +3131,19 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message,
+@@ -3135,15 +3135,19 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message,
        SetMsgHandled(FALSE);
      // We must let Windows handle the caption buttons if it's drawing them, or
      // they won't work.

+ 4 - 4
patches/chromium/chore_introduce_blocking_api_for_electron.patch

@@ -7,7 +7,7 @@ This patch comes after Chromium removed the ScopedAllowIO API in favor
 of explicitly adding ScopedAllowBlocking calls as friends.
 
 diff --git a/base/threading/thread_restrictions.h b/base/threading/thread_restrictions.h
-index 0de909d74fffc91b9e3afead3204f9c8234fa131..0eca9f62f2bda366c93fa1c57f30e707f228f2a5 100644
+index 965206e18e7a536947354c734ef17196c3e736ff..8a8a687d33f725aacf736a20ffc600cdf3fb05e4 100644
 --- a/base/threading/thread_restrictions.h
 +++ b/base/threading/thread_restrictions.h
 @@ -132,6 +132,7 @@ class KeyStorageLinux;
@@ -18,7 +18,7 @@ index 0de909d74fffc91b9e3afead3204f9c8234fa131..0eca9f62f2bda366c93fa1c57f30e707
  class Profile;
  class ProfileImpl;
  class ScopedAllowBlockingForProfile;
-@@ -282,6 +283,9 @@ class BackendImpl;
+@@ -283,6 +284,9 @@ class BackendImpl;
  class InFlightIO;
  bool CleanupDirectorySync(const base::FilePath&);
  }  // namespace disk_cache
@@ -28,7 +28,7 @@ index 0de909d74fffc91b9e3afead3204f9c8234fa131..0eca9f62f2bda366c93fa1c57f30e707
  namespace enterprise_connectors {
  class LinuxKeyRotationCommand;
  }  // namespace enterprise_connectors
-@@ -579,6 +583,7 @@ class BASE_EXPORT ScopedAllowBlocking {
+@@ -580,6 +584,7 @@ class BASE_EXPORT ScopedAllowBlocking {
    friend class ::DesktopNotificationBalloon;
    friend class ::FirefoxProfileLock;
    friend class ::GaiaConfig;
@@ -36,7 +36,7 @@ index 0de909d74fffc91b9e3afead3204f9c8234fa131..0eca9f62f2bda366c93fa1c57f30e707
    friend class ::ProfileImpl;
    friend class ::ScopedAllowBlockingForProfile;
    friend class ::StartupTabProviderImpl;
-@@ -619,6 +624,7 @@ class BASE_EXPORT ScopedAllowBlocking {
+@@ -620,6 +625,7 @@ class BASE_EXPORT ScopedAllowBlocking {
    friend class crosapi::LacrosThreadTypeDelegate;
    friend class crypto::ScopedAllowBlockingForNSS;  // http://crbug.com/59847
    friend class drive::FakeDriveService;

+ 29 - 0
patches/chromium/chore_partial_revert_of.patch

@@ -0,0 +1,29 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Charles Kerr <[email protected]>
+Date: Sat, 28 Sep 2024 17:33:51 -0500
+Subject: chore: partial revert of
+ https://chromium-review.googlesource.com/c/chromium/src/+/5894233
+
+The `CHECK_EQ()` being removed here is failing in the Chromium roll.
+I experimented with backporting the `CHECK_EQ()` to `main` and it's
+failing there as well, so some pre-existing behavior in Electron is
+incompatible with this assertion.
+
+I will file an upgrades-followup-task issue in Electron and try to
+track down the source of this problem & figure out if we can fix it
+by changing something in Electron.
+
+diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
+index 8ff4173be99dea55a927385ce40f9e7df2cdb8ef..fc725ed64bdd603e80f6dc81a0f1591c767310db 100644
+--- a/content/browser/web_contents/web_contents_impl.cc
++++ b/content/browser/web_contents/web_contents_impl.cc
+@@ -4697,9 +4697,6 @@ FrameTree* WebContentsImpl::CreateNewWindow(
+   bool renderer_started_hidden =
+       params.disposition == WindowOpenDisposition::NEW_BACKGROUND_TAB;
+ 
+-  // While some guest types do not have a guest SiteInstance, the ones that
+-  // don't all override WebContents creation above.
+-  CHECK_EQ(source_site_instance->IsGuest(), IsGuest());
+   bool is_guest = IsGuest();
+ 
+   // We usually create the new window in the same BrowsingInstance (group of

+ 1 - 1
patches/chromium/chore_patch_out_partition_attribute_dcheck_for_webviews.patch

@@ -14,7 +14,7 @@ This change patches it out to prevent the DCHECK.
 It can be removed once/if we see a better solution to the problem.
 
 diff --git a/content/browser/site_instance_impl.cc b/content/browser/site_instance_impl.cc
-index 05814643c905cf14068de87d47914b5fd315264e..9af1584d933af2c72fc5f63fcca86cc001a81aad 100644
+index ebe21d861ba3c7725f22d8c59738e49856c030ca..c2fc12ea2d5a4f7e6b33546d2a5e0bcbbe4e4c9d 100644
 --- a/content/browser/site_instance_impl.cc
 +++ b/content/browser/site_instance_impl.cc
 @@ -210,7 +210,7 @@ scoped_refptr<SiteInstanceImpl> SiteInstanceImpl::CreateForGuest(

+ 46 - 10
patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch

@@ -80,10 +80,10 @@ index b078a4a06c7b3f767e2e01f0bef2ba440f729620..0459568581a3073333ae6afabd3680f2
        content::WebContents* source,
        const content::OpenURLParams& params,
 diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
-index 00aec167d625e7f0377f5c437a343cdd7a494886..ce7af63b948ec9c6baeec2e68c2f559ddc195749 100644
+index 05354407fd600432bae001d1afd66ffae4fe562b..9dd7d8b60b9a13eeffe5355044cd039a56dd8424 100644
 --- a/chrome/browser/ui/browser.cc
 +++ b/chrome/browser/ui/browser.cc
-@@ -2087,12 +2087,11 @@ bool Browser::IsWebContentsCreationOverridden(
+@@ -2096,12 +2096,11 @@ bool Browser::IsWebContentsCreationOverridden(
      content::SiteInstance* source_site_instance,
      content::mojom::WindowContainerType window_container_type,
      const GURL& opener_url,
@@ -99,10 +99,10 @@ index 00aec167d625e7f0377f5c437a343cdd7a494886..ce7af63b948ec9c6baeec2e68c2f559d
  
  WebContents* Browser::CreateCustomWebContents(
 diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h
-index ede585e30530a096f2295a081ed7cfd1ffd032e6..4ecbfcfb80d1732000137646ca23484acb3ca2d2 100644
+index 2f17fc1f34808af63448b95bdde72569bf65e364..2a20ad8c9acf60a31382698aa30281addaaf99ed 100644
 --- a/chrome/browser/ui/browser.h
 +++ b/chrome/browser/ui/browser.h
-@@ -965,8 +965,7 @@ class Browser : public TabStripModelObserver,
+@@ -969,8 +969,7 @@ class Browser : public TabStripModelObserver,
        content::SiteInstance* source_site_instance,
        content::mojom::WindowContainerType window_container_type,
        const GURL& opener_url,
@@ -218,10 +218,10 @@ index c6838c83ef971b88769b1f3fba8095025ae25464..2da6a4e08340e72ba7de5d03444c2f17
    content::WebContents* AddNewContents(
        content::WebContents* source,
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index 362b94678c1add8d3d3baeb6dd1caec0dab87f16..2101c84a1af87ad01825fa0f683647363ae02e18 100644
+index e67eadd2877ba992c55e7226c9af1e9369d6caa5..86e0677b15bcc855f8376f87618ec557b4ef7b40 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
-@@ -4691,8 +4691,7 @@ FrameTree* WebContentsImpl::CreateNewWindow(
+@@ -4666,8 +4666,7 @@ FrameTree* WebContentsImpl::CreateNewWindow(
  
    if (delegate_ && delegate_->IsWebContentsCreationOverridden(
                         source_site_instance, params.window_container_type,
@@ -232,7 +232,7 @@ index 362b94678c1add8d3d3baeb6dd1caec0dab87f16..2101c84a1af87ad01825fa0f68364736
          static_cast<WebContentsImpl*>(delegate_->CreateCustomWebContents(
              opener, source_site_instance, is_new_browsing_instance,
 diff --git a/content/public/browser/web_contents_delegate.cc b/content/public/browser/web_contents_delegate.cc
-index dfb3c2401074c95c129290ec68149e1aab81d1cb..f843b336189849bf1a1dbe9b79afeb20cd21b5a6 100644
+index 49bc6ce731ea06cae8281107dbaa527060ffd4ce..b061435dd97fd80e748591390a6d0631eab78c42 100644
 --- a/content/public/browser/web_contents_delegate.cc
 +++ b/content/public/browser/web_contents_delegate.cc
 @@ -152,8 +152,7 @@ bool WebContentsDelegate::IsWebContentsCreationOverridden(
@@ -246,7 +246,7 @@ index dfb3c2401074c95c129290ec68149e1aab81d1cb..f843b336189849bf1a1dbe9b79afeb20
  }
  
 diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h
-index 4826eea9747c4860d7f5b4b8d478e62cb48a675b..4bd15ce68cbf3c393b2b51883f19835f40a6e285 100644
+index 1a58077807de673e1937f3323c8dc37b4c69468e..87f97ef6c2456e7dcc4a46b820ecba58dcf19388 100644
 --- a/content/public/browser/web_contents_delegate.h
 +++ b/content/public/browser/web_contents_delegate.h
 @@ -345,8 +345,7 @@ class CONTENT_EXPORT WebContentsDelegate {
@@ -259,8 +259,44 @@ index 4826eea9747c4860d7f5b4b8d478e62cb48a675b..4bd15ce68cbf3c393b2b51883f19835f
  
    // Allow delegate to creates a custom WebContents when
    // WebContents::CreateNewWindow() is called. This function is only called
+diff --git a/extensions/browser/guest_view/app_view/app_view_guest.cc b/extensions/browser/guest_view/app_view/app_view_guest.cc
+index 7168904a792aedeea0249a1bc38718da06a43c04..f69143c9554f74709edbb5ac80c50083860e8856 100644
+--- a/extensions/browser/guest_view/app_view/app_view_guest.cc
++++ b/extensions/browser/guest_view/app_view/app_view_guest.cc
+@@ -142,8 +142,7 @@ bool AppViewGuest::IsWebContentsCreationOverridden(
+     content::SiteInstance* source_site_instance,
+     content::mojom::WindowContainerType window_container_type,
+     const GURL& opener_url,
+-    const std::string& frame_name,
+-    const GURL& target_url) {
++    const content::mojom::CreateNewWindowParams& params) {
+   return true;
+ }
+ 
+diff --git a/extensions/browser/guest_view/app_view/app_view_guest.h b/extensions/browser/guest_view/app_view/app_view_guest.h
+index cb4241744b7c8ee4803de5ff5ccdefcae61cb02f..390ff1e3840f245b302aad460fc00cb4ea3e68b2 100644
+--- a/extensions/browser/guest_view/app_view/app_view_guest.h
++++ b/extensions/browser/guest_view/app_view/app_view_guest.h
+@@ -10,6 +10,7 @@
+ #include "base/containers/id_map.h"
+ #include "base/values.h"
+ #include "components/guest_view/browser/guest_view.h"
++#include "content/common/frame.mojom-shared.h"
+ #include "extensions/browser/guest_view/app_view/app_view_guest_delegate.h"
+ #include "extensions/browser/lazy_context_task_queue.h"
+ 
+@@ -73,8 +74,7 @@ class AppViewGuest : public guest_view::GuestView<AppViewGuest> {
+       content::SiteInstance* source_site_instance,
+       content::mojom::WindowContainerType window_container_type,
+       const GURL& opener_url,
+-      const std::string& frame_name,
+-      const GURL& target_url) final;
++      const content::mojom::CreateNewWindowParams& params) final;
+   content::WebContents* CreateCustomWebContents(
+       content::RenderFrameHost* opener,
+       content::SiteInstance* source_site_instance,
 diff --git a/extensions/browser/guest_view/extension_options/extension_options_guest.cc b/extensions/browser/guest_view/extension_options/extension_options_guest.cc
-index c9492327c30d41eab2425c037d23cae5b50d24eb..f7627e2fd5b2e419a3d00f6966535bd5f1fe94f6 100644
+index 0eb1b7b778c139971601a14cef729be6fdf5c247..3491662f5eb6131e6d4a6cd525e6ba951ac91e00 100644
 --- a/extensions/browser/guest_view/extension_options/extension_options_guest.cc
 +++ b/extensions/browser/guest_view/extension_options/extension_options_guest.cc
 @@ -221,8 +221,7 @@ bool ExtensionOptionsGuest::IsWebContentsCreationOverridden(
@@ -288,7 +324,7 @@ index 2ee922084c82edb7e49ec1c894b517b88f56f54d..9c12c8e9bab2ac59b16cb4a638e099ca
        content::RenderFrameHost* opener,
        content::SiteInstance* source_site_instance,
 diff --git a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc
-index fad08e33e16e4408a295c3c0b755e9e050f4b48f..23fb05dac66b271ad465d548167fbd6b0bf355d9 100644
+index 6c8040666b5203f9d2cd1f87cb730680483942c3..5a48581859f36a2c2a3925d44fcae0b07096bae4 100644
 --- a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc
 +++ b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc
 @@ -389,8 +389,7 @@ bool MimeHandlerViewGuest::IsWebContentsCreationOverridden(

+ 3 - 3
patches/chromium/create_browser_v8_snapshot_file_name_fuse.patch

@@ -95,10 +95,10 @@ index f482ce44b4339e0cf2a57a6a4f9db4d1be5fa178..49604d211b4d406fd59e7da3c4a648dd
    friend class ContentClientCreator;
    friend class ContentClientInitializer;
 diff --git a/gin/v8_initializer.cc b/gin/v8_initializer.cc
-index e306ccd3a19b0cba92ed902c179c920f0e4d1faa..2470da09803fc56d6eafff53df3a3ef76d4fa2ce 100644
+index 8e806321258f010d6f084e65b791d725735fb951..ed2dda8326eb3826a068d5268be6d8cfc5a547f6 100644
 --- a/gin/v8_initializer.cc
 +++ b/gin/v8_initializer.cc
-@@ -594,8 +594,7 @@ void V8Initializer::GetV8ExternalSnapshotData(const char** snapshot_data_out,
+@@ -662,8 +662,7 @@ void V8Initializer::GetV8ExternalSnapshotData(const char** snapshot_data_out,
  
  #if defined(V8_USE_EXTERNAL_STARTUP_DATA)
  
@@ -108,7 +108,7 @@ index e306ccd3a19b0cba92ed902c179c920f0e4d1faa..2470da09803fc56d6eafff53df3a3ef7
    if (g_mapped_snapshot) {
      // TODO(crbug.com/40558459): Confirm not loading different type of snapshot
      // files in a process.
-@@ -604,10 +603,17 @@ void V8Initializer::LoadV8Snapshot(V8SnapshotFileType snapshot_file_type) {
+@@ -672,10 +671,17 @@ void V8Initializer::LoadV8Snapshot(V8SnapshotFileType snapshot_file_type) {
  
    base::MemoryMappedFile::Region file_region;
    base::File file =

+ 1 - 1
patches/chromium/disable_compositor_recycling.patch

@@ -6,7 +6,7 @@ Subject: fix: disabling compositor recycling
 Compositor recycling is useful for Chrome because there can be many tabs and spinning up a compositor for each one would be costly. In practice, Chrome uses the parent compositor code path of browser_compositor_view_mac.mm; the NSView of each tab is detached when it's hidden and attached when it's shown. For Electron, there is no parent compositor, so we're forced into the "own compositor" code path, which seems to be non-optimal and pretty ruthless in terms of the release of resources. Electron has no real concept of multiple tabs per window, so it should be okay to disable this ruthless recycling altogether in Electron.
 
 diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
-index e3c4075e4aa4a2bf854f5308f25775bd10ce32dc..6b5f96f0f9480fcb2c79fff37ed89fd4be057c5c 100644
+index 69eb2ad17a15a17ca274a3a3128de9b841061a95..8eb231302c35ac6de1bfdfd53019287723cf40ed 100644
 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm
 +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
 @@ -559,7 +559,11 @@

+ 3 - 3
patches/chromium/disable_hidden.patch

@@ -6,7 +6,7 @@ Subject: disable_hidden.patch
 Electron uses this to disable background throttling for hidden windows.
 
 diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
-index 3d6e27546d1a53a1aecbce49a7cf3d6620e854ce..3ca8b3839f99534224ee4f110ae1bb4f692c1b3c 100644
+index e309e8b96cd6605fc812fda2ca3c7ece07824e0c..5472056b3731569737df69b62fa7c75c4ffe18a8 100644
 --- a/content/browser/renderer_host/render_widget_host_impl.cc
 +++ b/content/browser/renderer_host/render_widget_host_impl.cc
 @@ -789,6 +789,9 @@ void RenderWidgetHostImpl::WasHidden() {
@@ -20,10 +20,10 @@ index 3d6e27546d1a53a1aecbce49a7cf3d6620e854ce..3ca8b3839f99534224ee4f110ae1bb4f
        blink::mojom::PointerLockResult::kWrongDocument);
  
 diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h
-index 3d03709303e22489edf7c8cf61a611c0832ea26e..469b91d7bd3f46fb23645a9d5a0f1f9e5519ba59 100644
+index 4ce389437e583f3b0beaac78b4935808ee54c98e..e39e793bc2673d438cdf01aa909d72732aa32ae2 100644
 --- a/content/browser/renderer_host/render_widget_host_impl.h
 +++ b/content/browser/renderer_host/render_widget_host_impl.h
-@@ -1008,6 +1008,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl
+@@ -1017,6 +1017,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl
    // Requests a commit and forced redraw in the renderer compositor.
    void ForceRedrawForTesting();
  

+ 1 - 1
patches/chromium/enable_reset_aspect_ratio.patch

@@ -19,7 +19,7 @@ index 6cd2eace306cb6b3b8d39d968f898c6468d00eea..e2146f0a06fb70d16c48fe6e06d0615c
                                     excluded_margin);
  }
 diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
-index ec0ff0ae4e53ff380666a5f36cf412dfa8e61639..4f792b6c9c466ce17c4a4ef12d9666a18ebda309 100644
+index 328cf96499fa2ec23259339cffce467de142acc6..466738cc252dceae3fcaa7c44aaa29ff945386ef 100644
 --- a/ui/views/win/hwnd_message_handler.cc
 +++ b/ui/views/win/hwnd_message_handler.cc
 @@ -962,8 +962,11 @@ void HWNDMessageHandler::SetFullscreen(bool fullscreen,

+ 1 - 1
patches/chromium/expose_setuseragent_on_networkcontext.patch

@@ -33,7 +33,7 @@ index 0ab8187b0db8ae6db46d81738f653a2bc4c566f6..de3d55e85c22317f7f9375eb94d0d5d4
  
  }  // namespace net
 diff --git a/services/network/network_context.cc b/services/network/network_context.cc
-index 3b0481e6d6b21eac255d717a262bc2c48102ef06..4b31e5f8b434a0de1d4d3963161de40253dfde10 100644
+index 43fe136e619f0fd4473f44bfb48247d532550b11..a121455608abc4fa6405d61fe0fa90081432cde2 100644
 --- a/services/network/network_context.cc
 +++ b/services/network/network_context.cc
 @@ -1746,6 +1746,13 @@ void NetworkContext::SetNetworkConditions(

+ 2 - 2
patches/chromium/feat_add_set_theme_source_to_allow_apps_to.patch

@@ -13,10 +13,10 @@ uses internally for things like menus and devtools.
 We can remove this patch once it has in some shape been upstreamed.
 
 diff --git a/ui/native_theme/native_theme.cc b/ui/native_theme/native_theme.cc
-index 9d108fe375fa68811c5aba9b2d3b5622b7293b49..3080f77e125e1792f37b402ceeb3dbf730af45eb 100644
+index 0f5155569923a732928457f2f3d73e649122279f..75b5c406ee5d75b03361ae0c11b4d21f6addf373 100644
 --- a/ui/native_theme/native_theme.cc
 +++ b/ui/native_theme/native_theme.cc
-@@ -209,6 +209,8 @@ NativeTheme::NativeTheme(bool should_use_dark_colors,
+@@ -208,6 +208,8 @@ NativeTheme::NativeTheme(bool should_use_dark_colors,
  NativeTheme::~NativeTheme() = default;
  
  bool NativeTheme::ShouldUseDarkColors() const {

+ 6 - 6
patches/chromium/feat_allow_usage_of_sccontentsharingpicker_on_supported_platforms.patch

@@ -311,10 +311,10 @@ index 128bca8bb64113418551a20164f67ef5e5a88253..93f86ec79364db1f46c5d2eb015a11cf
  
  // Although ScreenCaptureKit is available in 12.3 there were some bugs that
 diff --git a/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc b/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc
-index 7adf8264cfa9980c4a8414bf0f8bfa9ad70ec0b3..bab2f0282b191a4263fc964125e199e52c62554b 100644
+index 5b76ef79789414fd1f18b0629873e7722c9fbd1c..fff10d51944ba27556b97abc3222308e440645cd 100644
 --- a/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc
 +++ b/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc
-@@ -332,8 +332,16 @@ void InProcessVideoCaptureDeviceLauncher::LaunchDeviceAsync(
+@@ -329,8 +329,16 @@ void InProcessVideoCaptureDeviceLauncher::LaunchDeviceAsync(
          break;
        }
  
@@ -332,10 +332,10 @@ index 7adf8264cfa9980c4a8414bf0f8bfa9ad70ec0b3..bab2f0282b191a4263fc964125e199e5
          // For the other capturers, when a bug reports the type of capture it's
          // easy enough to determine which capturer was used, but it's a little
          // fuzzier with window capture.
-@@ -360,13 +368,15 @@ void InProcessVideoCaptureDeviceLauncher::LaunchDeviceAsync(
-           std::move(after_start_capture_callback));
-       break;
- #else
+@@ -346,13 +354,15 @@ void InProcessVideoCaptureDeviceLauncher::LaunchDeviceAsync(
+       }
+ #endif  // defined(USE_AURA) || BUILDFLAG(IS_MAC)
+ 
 +      media::VideoCaptureParams updated_params = params;
 +      updated_params.use_native_picker = stream_type != blink::mojom::MediaStreamType::GUM_DESKTOP_VIDEO_CAPTURE;
        // All cases other than tab capture or Aura desktop/window capture.

+ 16 - 16
patches/chromium/feat_configure_launch_options_for_service_process.patch

@@ -187,7 +187,7 @@ index bdd5bec301f5fcff2d3e3d7994ecbc4eae46da36..f6082bada22c5f4e70af60ea6f555b0f
    host->GetChildProcess()->BindServiceInterface(std::move(receiver));
  }
 diff --git a/content/browser/utility_process_host.cc b/content/browser/utility_process_host.cc
-index d63bb20c8a4dc09e3df70cf8fe5b454d593ea360..918d1f92476277cd8f463a7aa1ceda008815c1d7 100644
+index 23370e926c9fb9c24bb151d6d4dbca7d5936ebae..b617e0fd3aecb3f9cd1c4cfa9aadf68e658a2dbc 100644
 --- a/content/browser/utility_process_host.cc
 +++ b/content/browser/utility_process_host.cc
 @@ -179,11 +179,13 @@ const ChildProcessData& UtilityProcessHost::GetData() {
@@ -237,7 +237,7 @@ index d63bb20c8a4dc09e3df70cf8fe5b454d593ea360..918d1f92476277cd8f463a7aa1ceda00
  mojom::ChildProcess* UtilityProcessHost::GetChildProcess() {
    return static_cast<ChildProcessHostImpl*>(process_->GetHost())
        ->child_process();
-@@ -435,9 +461,26 @@ bool UtilityProcessHost::StartProcess() {
+@@ -436,9 +462,26 @@ bool UtilityProcessHost::StartProcess() {
      }
  #endif  // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
  
@@ -347,7 +347,7 @@ index 9791ae2f761043b9eecd9064a6fd39a6e2339af4..c1809298c830b814f886859c2626d6bc
    // launch failed.
    enum class LaunchState {
 diff --git a/content/browser/utility_sandbox_delegate.cc b/content/browser/utility_sandbox_delegate.cc
-index ad04359ead729d46d26027a7ef995ebdff1fe842..a476a4c1be9156270c8400666f4042de584555ca 100644
+index 816e834d4a58b79c3b8026ea8b960cbfe75eb319..f0c4a59941d9898006ad31248d6bf1472cb0eede 100644
 --- a/content/browser/utility_sandbox_delegate.cc
 +++ b/content/browser/utility_sandbox_delegate.cc
 @@ -34,17 +34,19 @@ UtilitySandboxedProcessLauncherDelegate::
@@ -374,7 +374,7 @@ index ad04359ead729d46d26027a7ef995ebdff1fe842..a476a4c1be9156270c8400666f4042de
  #if DCHECK_IS_ON()
    bool supported_sandbox_type =
        sandbox_type_ == sandbox::mojom::Sandbox::kNoSandbox ||
-@@ -110,11 +112,28 @@ UtilitySandboxedProcessLauncherDelegate::GetSandboxType() {
+@@ -113,11 +115,28 @@ UtilitySandboxedProcessLauncherDelegate::GetSandboxType() {
    return sandbox_type_;
  }
  
@@ -641,10 +641,10 @@ index 9bb4b30ba0f5d37ec2b28f0848d94f34c24f9423..b614fef01ee5cdf81b7112be721b851c
  
  }  // namespace content
 diff --git a/content/public/common/sandboxed_process_launcher_delegate.cc b/content/public/common/sandboxed_process_launcher_delegate.cc
-index 9c1aa450f32b6812d4a87cd0b9ee0dfb1a9557f4..c281fc33709376dbd50af281c219f3f5bda5635b 100644
+index 8656215a709012eef80532e7aac197818ac292df..74ad339d8f8fcc62628006171e0a7ad265143625 100644
 --- a/content/public/common/sandboxed_process_launcher_delegate.cc
 +++ b/content/public/common/sandboxed_process_launcher_delegate.cc
-@@ -68,11 +68,23 @@ ZygoteCommunication* SandboxedProcessLauncherDelegate::GetZygote() {
+@@ -64,11 +64,23 @@ ZygoteCommunication* SandboxedProcessLauncherDelegate::GetZygote() {
  }
  #endif  // BUILDFLAG(USE_ZYGOTE)
  
@@ -671,7 +671,7 @@ index 9c1aa450f32b6812d4a87cd0b9ee0dfb1a9557f4..c281fc33709376dbd50af281c219f3f5
  #if BUILDFLAG(IS_MAC)
  
 diff --git a/content/public/common/sandboxed_process_launcher_delegate.h b/content/public/common/sandboxed_process_launcher_delegate.h
-index cb43aa14c9742f3788ae58c3e49b890cd532f327..276b2a06fabba559eb1caaaa9129b9f78058aa9f 100644
+index 4b2ea0e2680c552b853fcbe4f5e4765a908f8915..6e8af760d986911ed6030b24244e9b21eeba865c 100644
 --- a/content/public/common/sandboxed_process_launcher_delegate.h
 +++ b/content/public/common/sandboxed_process_launcher_delegate.h
 @@ -6,6 +6,7 @@
@@ -682,7 +682,7 @@ index cb43aa14c9742f3788ae58c3e49b890cd532f327..276b2a06fabba559eb1caaaa9129b9f7
  #include "base/files/scoped_file.h"
  #include "base/process/process.h"
  #include "build/build_config.h"
-@@ -57,10 +58,19 @@ class CONTENT_EXPORT SandboxedProcessLauncherDelegate
+@@ -56,10 +57,19 @@ class CONTENT_EXPORT SandboxedProcessLauncherDelegate
    virtual ZygoteCommunication* GetZygote();
  #endif  // BUILDFLAG(USE_ZYGOTE)
  
@@ -705,10 +705,10 @@ index cb43aa14c9742f3788ae58c3e49b890cd532f327..276b2a06fabba559eb1caaaa9129b9f7
  #if BUILDFLAG(IS_MAC)
    // Whether or not to disclaim TCC responsibility for the process, defaults to
 diff --git a/sandbox/policy/win/sandbox_win.cc b/sandbox/policy/win/sandbox_win.cc
-index aecdbe31e3ddcc66798c11902a415c767679c233..904520a77541c9bfd4b2ba31df830af3f588269e 100644
+index 00525a5e5146f3789f5ed4bfe4a1cf36b174a00f..55d3c96e00b76e50d5fe8a1695829d3c9db11fbf 100644
 --- a/sandbox/policy/win/sandbox_win.cc
 +++ b/sandbox/policy/win/sandbox_win.cc
-@@ -700,11 +700,9 @@ base::win::ScopedHandle CreateUnsandboxedJob() {
+@@ -672,11 +672,9 @@ base::win::ScopedHandle CreateUnsandboxedJob() {
  // command line flag.
  ResultCode LaunchWithoutSandbox(
      const base::CommandLine& cmd_line,
@@ -721,7 +721,7 @@ index aecdbe31e3ddcc66798c11902a415c767679c233..904520a77541c9bfd4b2ba31df830af3
    // Network process runs in a job even when unsandboxed. This is to ensure it
    // does not outlive the browser, which could happen if there is a lot of I/O
    // on process shutdown, in which case TerminateProcess can fail. See
-@@ -934,7 +932,7 @@ bool SandboxWin::InitTargetServices(TargetServices* target_services) {
+@@ -906,7 +904,7 @@ bool SandboxWin::InitTargetServices(TargetServices* target_services) {
  // static
  ResultCode SandboxWin::GeneratePolicyForSandboxedProcess(
      const base::CommandLine& cmd_line,
@@ -730,7 +730,7 @@ index aecdbe31e3ddcc66798c11902a415c767679c233..904520a77541c9bfd4b2ba31df830af3
      SandboxDelegate* delegate,
      TargetPolicy* policy) {
    const base::CommandLine& launcher_process_command_line =
-@@ -948,7 +946,7 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess(
+@@ -920,7 +918,7 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess(
    }
  
    // Add any handles to be inherited to the policy.
@@ -739,7 +739,7 @@ index aecdbe31e3ddcc66798c11902a415c767679c233..904520a77541c9bfd4b2ba31df830af3
      policy->AddHandleToShare(handle);
  
    if (!policy->GetConfig()->IsConfigured()) {
-@@ -963,6 +961,13 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess(
+@@ -935,6 +933,13 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess(
    // have no effect. These calls can fail with SBOX_ERROR_BAD_PARAMS.
    policy->SetStdoutHandle(GetStdHandle(STD_OUTPUT_HANDLE));
    policy->SetStderrHandle(GetStdHandle(STD_ERROR_HANDLE));
@@ -753,7 +753,7 @@ index aecdbe31e3ddcc66798c11902a415c767679c233..904520a77541c9bfd4b2ba31df830af3
  #endif
  
    if (!delegate->PreSpawnTarget(policy))
-@@ -974,7 +979,7 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess(
+@@ -946,7 +951,7 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess(
  // static
  ResultCode SandboxWin::StartSandboxedProcess(
      const base::CommandLine& cmd_line,
@@ -762,7 +762,7 @@ index aecdbe31e3ddcc66798c11902a415c767679c233..904520a77541c9bfd4b2ba31df830af3
      SandboxDelegate* delegate,
      base::Process* process) {
    SandboxLaunchTimer timer;
-@@ -982,7 +987,7 @@ ResultCode SandboxWin::StartSandboxedProcess(
+@@ -954,7 +959,7 @@ ResultCode SandboxWin::StartSandboxedProcess(
    // Avoid making a policy if we won't use it.
    if (IsUnsandboxedProcess(delegate->GetSandboxType(), cmd_line,
                             *base::CommandLine::ForCurrentProcess())) {
@@ -771,7 +771,7 @@ index aecdbe31e3ddcc66798c11902a415c767679c233..904520a77541c9bfd4b2ba31df830af3
                                  process);
    }
  
-@@ -990,7 +995,7 @@ ResultCode SandboxWin::StartSandboxedProcess(
+@@ -962,7 +967,7 @@ ResultCode SandboxWin::StartSandboxedProcess(
    timer.OnPolicyCreated();
  
    ResultCode result = GeneratePolicyForSandboxedProcess(

+ 2 - 2
patches/chromium/feat_enable_offscreen_rendering_with_viz_compositor.patch

@@ -90,7 +90,7 @@ index 8af69cac78b7488d28f1f05ccb174793fe5148cd..9f74e511c263d147b5fbe81fe100d217
   private:
    const HWND hwnd_;
 diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn
-index 2f36496cf77258fe7e7b5eb7c93c6c53ff55abd0..0808df2627a4630c9e573fdb4f620ef601252026 100644
+index 4ba0b6669f76c9b2725e6665f3a8463e02327cc3..ad5e62fe4184b308148c12c7f47838fd232575b6 100644
 --- a/components/viz/service/BUILD.gn
 +++ b/components/viz/service/BUILD.gn
 @@ -172,6 +172,8 @@ viz_component("service") {
@@ -117,7 +117,7 @@ index 524df4c2a1382e6d009ab1165305a79894dca15e..a21da0785be3884e5e299643d306d25e
    virtual gpu::SharedImageManager* GetSharedImageManager() = 0;
    virtual gpu::SyncPointManager* GetSyncPointManager() = 0;
 diff --git a/components/viz/service/display_embedder/output_surface_provider_impl.cc b/components/viz/service/display_embedder/output_surface_provider_impl.cc
-index bddaacb09fcf9f94594b55bd82b903804c2d6970..3aa4753e4d2dd7b391a1dc4057fce7162ba63110 100644
+index 87722045daafa87f7111df943217ceaa8518e55c..badf8c3dc5fb768388a19814d8428a46d3c5648b 100644
 --- a/components/viz/service/display_embedder/output_surface_provider_impl.cc
 +++ b/components/viz/service/display_embedder/output_surface_provider_impl.cc
 @@ -25,6 +25,7 @@

+ 2 - 2
patches/chromium/feat_enable_passing_exit_code_on_service_process_crash.patch

@@ -76,10 +76,10 @@ index f6082bada22c5f4e70af60ea6f555b0f363919c5..228f947edbe04bce242df62080052d9c
  void ServiceProcessHost::RemoveObserver(Observer* observer) {
    GetServiceProcessTracker().RemoveObserver(observer);
 diff --git a/content/browser/utility_process_host.cc b/content/browser/utility_process_host.cc
-index 918d1f92476277cd8f463a7aa1ceda008815c1d7..cdebe04babbd9682f97923149261bbe23c9d9701 100644
+index b617e0fd3aecb3f9cd1c4cfa9aadf68e658a2dbc..c1d6999e53b222ae08ddb5f403de780d01b0ba71 100644
 --- a/content/browser/utility_process_host.cc
 +++ b/content/browser/utility_process_host.cc
-@@ -518,7 +518,7 @@ void UtilityProcessHost::OnProcessCrashed(int exit_code) {
+@@ -519,7 +519,7 @@ void UtilityProcessHost::OnProcessCrashed(int exit_code) {
    // Take ownership of |client_| so the destructor doesn't notify it of
    // termination.
    auto client = std::move(client_);

+ 6 - 6
patches/chromium/feat_expose_raw_response_headers_from_urlloader.patch

@@ -112,10 +112,10 @@ index 3450c15835d8b792f37764f6edc4a4560be435ef..b1034aa141d6121f8e1524fb34a28a04
    string mime_type;
  
 diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc
-index 72cb384706358f14f7c4fd2c25c8bed0734eb833..fde4df3dc26ab92ca2b57313b0f1df0c0a92d1bf 100644
+index 6434cd76b2fc0593448471a63652c0ddc56fe3ed..33b531855e2e7328fc559f10c4ad7b3f7af2e28e 100644
 --- a/services/network/url_loader.cc
 +++ b/services/network/url_loader.cc
-@@ -720,6 +720,7 @@ URLLoader::URLLoader(
+@@ -726,6 +726,7 @@ URLLoader::URLLoader(
          request.trusted_params->allow_cookies_from_browser;
      include_request_cookies_with_response_ =
          request.trusted_params->include_request_cookies_with_response;
@@ -123,7 +123,7 @@ index 72cb384706358f14f7c4fd2c25c8bed0734eb833..fde4df3dc26ab92ca2b57313b0f1df0c
    }
  
    // Store any cookies passed from the browser process to later attach them to
-@@ -758,7 +759,7 @@ URLLoader::URLLoader(
+@@ -762,7 +763,7 @@ URLLoader::URLLoader(
          &URLLoader::IsSharedDictionaryReadAllowed, base::Unretained(this)));
    }
  
@@ -132,7 +132,7 @@ index 72cb384706358f14f7c4fd2c25c8bed0734eb833..fde4df3dc26ab92ca2b57313b0f1df0c
      url_request_->SetResponseHeadersCallback(base::BindRepeating(
          &URLLoader::SetRawResponseHeaders, base::Unretained(this)));
    }
-@@ -1734,6 +1735,19 @@ void URLLoader::OnResponseStarted(net::URLRequest* url_request, int net_error) {
+@@ -1737,6 +1738,19 @@ void URLLoader::OnResponseStarted(net::URLRequest* url_request, int net_error) {
    }
  
    response_ = BuildResponseHead();
@@ -153,10 +153,10 @@ index 72cb384706358f14f7c4fd2c25c8bed0734eb833..fde4df3dc26ab92ca2b57313b0f1df0c
  
    // Parse and remove the Trust Tokens response headers, if any are expected,
 diff --git a/services/network/url_loader.h b/services/network/url_loader.h
-index cfc5b5b82557792f336a4a00ff3dc0f11aee22c4..69680e5560c143ac2f45d23fbdfdc64c3bc141af 100644
+index 3089be9b39552c8fc03ee97bd90a5f5626f66b26..e70b15cc3683d77e900fce644616da64851bc801 100644
 --- a/services/network/url_loader.h
 +++ b/services/network/url_loader.h
-@@ -676,6 +676,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader
+@@ -680,6 +680,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader
    std::unique_ptr<ResourceScheduler::ScheduledResourceRequest>
        resource_scheduler_request_handle_;
  

+ 2 - 2
patches/chromium/fix_activate_background_material_on_windows.patch

@@ -14,7 +14,7 @@ This patch likely can't be upstreamed as-is, as Chromium doesn't have
 this use case in mind currently.
 
 diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
-index d9d5dac1934ee2e625f66ece4a70ec41b9ca804d..b7b1b67dd4b586140c70d512cdd2dce35df7286a 100644
+index ae24de9ce9d3a2d6c9d7612104e1ef13bbd84f9f..c7ce5bc2aaa8bd29c41c253bd9b6fc9e713ff5a5 100644
 --- a/ui/views/win/hwnd_message_handler.cc
 +++ b/ui/views/win/hwnd_message_handler.cc
 @@ -909,13 +909,13 @@ void HWNDMessageHandler::FrameTypeChanged() {
@@ -33,7 +33,7 @@ index d9d5dac1934ee2e625f66ece4a70ec41b9ca804d..b7b1b67dd4b586140c70d512cdd2dce3
  }
  
  void HWNDMessageHandler::SetWindowIcons(const gfx::ImageSkia& window_icon,
-@@ -2260,17 +2260,18 @@ LRESULT HWNDMessageHandler::OnNCActivate(UINT message,
+@@ -2264,17 +2264,18 @@ LRESULT HWNDMessageHandler::OnNCActivate(UINT message,
    if (IsVisible())
      delegate_->SchedulePaint();
  

+ 2 - 2
patches/chromium/fix_aspect_ratio_with_max_size.patch

@@ -11,10 +11,10 @@ enlarge window above dimensions set during creation of the
 BrowserWindow.
 
 diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
-index 4f792b6c9c466ce17c4a4ef12d9666a18ebda309..49a39d1a9cc20ddce24b651341fc361def3fe24a 100644
+index 466738cc252dceae3fcaa7c44aaa29ff945386ef..de8284b0b75511d11dc3afed60efc75788d0a7d0 100644
 --- a/ui/views/win/hwnd_message_handler.cc
 +++ b/ui/views/win/hwnd_message_handler.cc
-@@ -3685,14 +3685,29 @@ void HWNDMessageHandler::SizeWindowToAspectRatio(UINT param,
+@@ -3689,14 +3689,29 @@ void HWNDMessageHandler::SizeWindowToAspectRatio(UINT param,
    delegate_->GetMinMaxSize(&min_window_size, &max_window_size);
    min_window_size = delegate_->DIPToScreenSize(min_window_size);
    max_window_size = delegate_->DIPToScreenSize(max_window_size);

+ 8 - 8
patches/chromium/fix_crash_loading_non-standard_schemes_in_iframes.patch

@@ -23,10 +23,10 @@ Upstream bug https://bugs.chromium.org/p/chromium/issues/detail?id=1081397.
 Upstreamed at https://chromium-review.googlesource.com/c/chromium/src/+/3856266.
 
 diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc
-index 4216f8eb94a64b9d8e63abe043fc26f27d50da39..230ea765249e7949c57a5eb68a882563d575094e 100644
+index 6e329572b72d5c76e0c78204c9eb98346626c543..55dde123a54068e6e0ffc5c98f6ae5cef59cd892 100644
 --- a/content/browser/renderer_host/navigation_request.cc
 +++ b/content/browser/renderer_host/navigation_request.cc
-@@ -10774,6 +10774,12 @@ NavigationRequest::GetOriginForURLLoaderFactoryUncheckedWithDebugInfo() {
+@@ -10783,6 +10783,12 @@ NavigationRequest::GetOriginForURLLoaderFactoryUncheckedWithDebugInfo() {
          "blob");
    }
  
@@ -40,10 +40,10 @@ index 4216f8eb94a64b9d8e63abe043fc26f27d50da39..230ea765249e7949c57a5eb68a882563
    // origin of |common_params.url| and/or |common_params.initiator_origin|.
    url::Origin resolved_origin = url::Origin::Resolve(
 diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc
-index 0fb02ada85ed3d4cc113ac7ce18d6efdb7065627..9e78c486fdc9b931dfcbcf40145076a22f221e35 100644
+index 37272602835da25fc3b26eedb72d1786af3487fc..6dd8e7f6bd987ecda0d3908e2f66af65f6931682 100644
 --- a/third_party/blink/renderer/core/loader/document_loader.cc
 +++ b/third_party/blink/renderer/core/loader/document_loader.cc
-@@ -2261,6 +2261,10 @@ Frame* DocumentLoader::CalculateOwnerFrame() {
+@@ -2264,6 +2264,10 @@ Frame* DocumentLoader::CalculateOwnerFrame() {
  scoped_refptr<SecurityOrigin> DocumentLoader::CalculateOrigin(
      Document* owner_document) {
    scoped_refptr<SecurityOrigin> origin;
@@ -54,10 +54,10 @@ index 0fb02ada85ed3d4cc113ac7ce18d6efdb7065627..9e78c486fdc9b931dfcbcf40145076a2
    StringBuilder debug_info_builder;
    // Whether the origin is newly created within this call, instead of copied
    // from an existing document's origin or from `origin_to_commit_`. If this is
-@@ -2313,6 +2317,10 @@ scoped_refptr<SecurityOrigin> DocumentLoader::CalculateOrigin(
-     debug_info_builder.Append(", url=");
-     debug_info_builder.Append(owner_document->Url().BaseAsString());
-     debug_info_builder.Append(")");
+@@ -2317,6 +2321,10 @@ scoped_refptr<SecurityOrigin> DocumentLoader::CalculateOrigin(
+     // the end of this function.
+     origin = origin_to_commit_;
+     debug_info_builder.Append("use_origin_to_commit");
 +  } else if (!SecurityOrigin::ShouldUseInnerURL(url_) &&
 +             !is_standard) {
 +    debug_info_builder.Append("use_url_with_non_standard_scheme");

+ 5 - 5
patches/chromium/fix_crash_when_saving_edited_pdf_files.patch

@@ -13,10 +13,10 @@ This patch can be removed should we choose to support chrome.fileSystem
 or support it enough to fix the crash.
 
 diff --git a/chrome/browser/resources/pdf/pdf_viewer.ts b/chrome/browser/resources/pdf/pdf_viewer.ts
-index f291ca720095ad1d079135539fb0a7421cae0be9..b967868063402572d9410c1725188e9c9caa5455 100644
+index 2e621b9a66b0443ad961d32a6bed47e1128035a8..5e7c0e238bfe6eb55a2e795681529679a35b8d03 100644
 --- a/chrome/browser/resources/pdf/pdf_viewer.ts
 +++ b/chrome/browser/resources/pdf/pdf_viewer.ts
-@@ -1010,7 +1010,15 @@ export class PdfViewerElement extends PdfViewerBaseElement {
+@@ -1012,7 +1012,15 @@ export class PdfViewerElement extends PdfViewerBaseElement {
        dataArray = [result.dataToSave];
      }
  
@@ -32,7 +32,7 @@ index f291ca720095ad1d079135539fb0a7421cae0be9..b967868063402572d9410c1725188e9c
      const fileName = this.attachments_[index].name;
      chrome.fileSystem.chooseEntry(
          {type: 'saveFile', suggestedName: fileName},
-@@ -1032,6 +1040,7 @@ export class PdfViewerElement extends PdfViewerBaseElement {
+@@ -1034,6 +1042,7 @@ export class PdfViewerElement extends PdfViewerBaseElement {
              // </if>
            });
          });
@@ -40,7 +40,7 @@ index f291ca720095ad1d079135539fb0a7421cae0be9..b967868063402572d9410c1725188e9c
    }
  
    /**
-@@ -1160,7 +1169,15 @@ export class PdfViewerElement extends PdfViewerBaseElement {
+@@ -1162,7 +1171,15 @@ export class PdfViewerElement extends PdfViewerBaseElement {
      }
  
      // Create blob before callback to avoid race condition.
@@ -56,7 +56,7 @@ index f291ca720095ad1d079135539fb0a7421cae0be9..b967868063402572d9410c1725188e9c
      chrome.fileSystem.chooseEntry(
          {
            type: 'saveFile',
-@@ -1189,6 +1206,7 @@ export class PdfViewerElement extends PdfViewerBaseElement {
+@@ -1191,6 +1208,7 @@ export class PdfViewerElement extends PdfViewerBaseElement {
              // </if>
            });
          });

+ 2 - 2
patches/chromium/fix_media_key_usage_with_globalshortcuts.patch

@@ -46,10 +46,10 @@ index 91226bd6e383636ecebdac93b151e107b3f943d9..7fe79f49484b50d2ae9a8d5d0ba9749c
    CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
    if (IsShortcutHandlingSuspended())
 diff --git a/chrome/browser/extensions/global_shortcut_listener.h b/chrome/browser/extensions/global_shortcut_listener.h
-index f96af14cb915c8ab92b314ac15b6dffcdd6ec607..2556abe433493251ebd48d4aeddaa6d4f553208f 100644
+index 06e65da05a218a8ecc641bbd749ace2b0832ce72..370dfdc9579a9e6b3a6bdc6f4526650a32f53b55 100644
 --- a/chrome/browser/extensions/global_shortcut_listener.h
 +++ b/chrome/browser/extensions/global_shortcut_listener.h
-@@ -33,6 +33,8 @@ class GlobalShortcutListener {
+@@ -34,6 +34,8 @@ class GlobalShortcutListener {
  
    static GlobalShortcutListener* GetInstance();
  

+ 2 - 2
patches/chromium/fix_on-screen-keyboard_hides_on_input_blur_in_webview.patch

@@ -87,10 +87,10 @@ index 0c7d5b2c1d3e97420913bd643bb2a524a76fc286..653793fa480f035ce11e079b370bf5ed
    // The view with active text input state, i.e., a focused <input> element.
    // It will be nullptr if no such view exists. Note that the active view
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index 56a5730482e667d1d141f546fa263792a2c2f246..617c4449700873b2343c462a2c37e169d36b59b7 100644
+index 2737b01ebb915b1c04524def18cbd4a5395f034a..8ff4173be99dea55a927385ce40f9e7df2cdb8ef 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
-@@ -9273,7 +9273,7 @@ void WebContentsImpl::OnFocusedElementChangedInFrame(
+@@ -9225,7 +9225,7 @@ void WebContentsImpl::OnFocusedElementChangedInFrame(
                          "WebContentsImpl::OnFocusedElementChangedInFrame",
                          "render_frame_host", frame);
    RenderWidgetHostViewBase* root_view =

+ 3 - 3
patches/chromium/fix_properly_honor_printing_page_ranges.patch

@@ -25,10 +25,10 @@ index 5b469b3b6bd11d8e0baa08e9be257990ac9bc438..c1410e5d8112f0319de40e4fbf41dbae
    // Returns true if duplex mode is set.
    bool SetDuplexModeInPrintSettings(mojom::DuplexMode mode);
 diff --git a/printing/printing_context_mac.mm b/printing/printing_context_mac.mm
-index e724e46e422be25ddab8b94d03324832ab08e518..b5c4c9c41607d55d89a1ee6831848d4ecc4b06be 100644
+index f39f8b2dd3aa2b89498ed5331aa9b9ba6a02abf5..c0e155c14b2b4e81cde35cea1db284bc4c43f5e6 100644
 --- a/printing/printing_context_mac.mm
 +++ b/printing/printing_context_mac.mm
-@@ -527,7 +527,8 @@ bool IsIppColorModelColorful(mojom::ColorModel color_model) {
+@@ -520,7 +520,8 @@ bool IsIppColorModelColorful(mojom::ColorModel color_model) {
          !SetCollateInPrintSettings(settings_->collate()) ||
          !SetDuplexModeInPrintSettings(settings_->duplex_mode()) ||
          !SetOutputColor(static_cast<int>(settings_->color())) ||
@@ -38,7 +38,7 @@ index e724e46e422be25ddab8b94d03324832ab08e518..b5c4c9c41607d55d89a1ee6831848d4e
        return OnError();
      }
    }
-@@ -680,6 +681,22 @@ bool IsIppColorModelColorful(mojom::ColorModel color_model) {
+@@ -673,6 +674,22 @@ bool IsIppColorModelColorful(mojom::ColorModel color_model) {
    return PMSetCopies(print_settings, copies, false) == noErr;
  }
  

+ 2 - 2
patches/chromium/fix_remove_caption-removing_style_call.patch

@@ -18,10 +18,10 @@ or resizing, but Electron does not seem to run into that issue
 for opaque frameless windows even with that block commented out.
 
 diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
-index 47592b26ed16163759bf94f8278b5898bf60423d..d9d5dac1934ee2e625f66ece4a70ec41b9ca804d 100644
+index 1d47f744b21b23afa48687e1bcc3a0f02f042a87..ae24de9ce9d3a2d6c9d7612104e1ef13bbd84f9f 100644
 --- a/ui/views/win/hwnd_message_handler.cc
 +++ b/ui/views/win/hwnd_message_handler.cc
-@@ -1733,7 +1733,23 @@ LRESULT HWNDMessageHandler::OnCreate(CREATESTRUCT* create_struct) {
+@@ -1737,7 +1737,23 @@ LRESULT HWNDMessageHandler::OnCreate(CREATESTRUCT* create_struct) {
    SendMessage(hwnd(), WM_CHANGEUISTATE, MAKELPARAM(UIS_CLEAR, UISF_HIDEFOCUS),
                0);
  

+ 1 - 1
patches/chromium/fix_restore_original_resize_performance_on_macos.patch

@@ -11,7 +11,7 @@ This patch should be upstreamed as a conditional revert of the logic in desktop
 vs mobile runtimes.  i.e. restore the old logic only on desktop platforms
 
 diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
-index a5094a38ceaad3cd671aff988e5f99d273156459..7cfb057c582ba8d9ccd83bb92260e0f5e187c577 100644
+index 23fba344bb82ca317db3141ac5def321928bfb4c..89cba17fc2cd46da12cb394b7b728276ffe7ff08 100644
 --- a/content/browser/renderer_host/render_widget_host_impl.cc
 +++ b/content/browser/renderer_host/render_widget_host_impl.cc
 @@ -2043,9 +2043,8 @@ RenderWidgetHostImpl::GetWidgetInputHandler() {

Some files were not shown because too many files changed in this diff