wait app to be ready before creating a BrowserWindow for system proxy resolver (#7443)

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
Jari Kolehmainen authored and GitHub committed 2023-03-31 13:33:13 +03:00
1 parent b5e564271e
commit 7bae712703
4 files changed
+15 -6

No files matched your search

@@ -10,11 +10,12 @@ const resolveSystemProxyFromElectronInjectable = getInjectable({
id: "resolve-system-proxy-from-electron", id: "resolve-system-proxy-from-electron",
instantiate: (di) => { instantiate: (di) => {
const helperWindow = di.inject(resolveSystemProxyWindowInjectable);
const withErrorLoggingFor = di.inject(withErrorLoggingInjectable); const withErrorLoggingFor = di.inject(withErrorLoggingInjectable);
const withErrorLogging = withErrorLoggingFor(() => "Error resolving proxy"); const withErrorLogging = withErrorLoggingFor(() => "Error resolving proxy");
return withErrorLogging(async (url: string) => { return withErrorLogging(async (url: string) => {
const helperWindow = await di.inject(resolveSystemProxyWindowInjectable);
return await helperWindow.webContents.session.resolveProxy(url); return await helperWindow.webContents.session.resolveProxy(url);
}); });
}, },
@@ -32,7 +32,7 @@ describe("technical: resolve-system-proxy-from-electron", () => {
di.override( di.override(
resolveSystemProxyWindowInjectable, resolveSystemProxyWindowInjectable,
() => ({ async () => ({
webContents: { webContents: {
session: { session: {
resolveProxy: resolveSystemProxyMock, resolveProxy: resolveSystemProxyMock,
@@ -73,7 +73,7 @@ describe("technical: resolve-system-proxy-from-electron", () => {
di.override( di.override(
resolveSystemProxyWindowInjectable, resolveSystemProxyWindowInjectable,
() => ({ async () => ({
webContents: { webContents: {
session: { session: {
resolveProxy: () => { resolveProxy: () => {
@@ -9,7 +9,7 @@ import resolveSystemProxyWindowInjectable from "./resolve-system-proxy-window.in
export default getGlobalOverride( export default getGlobalOverride(
resolveSystemProxyWindowInjectable, resolveSystemProxyWindowInjectable,
() => ({ async () => ({
webContents: { webContents: {
session: { session: {
resolveProxy: () => "DIRECT", resolveProxy: () => "DIRECT",
@@ -4,11 +4,19 @@
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { BrowserWindow } from "electron"; import { BrowserWindow } from "electron";
import electronAppInjectable from "../../electron-app/electron-app.injectable";
const resolveSystemProxyWindowInjectable = getInjectable({ const resolveSystemProxyWindowInjectable = getInjectable({
id: "resolve-system-proxy-window", id: "resolve-system-proxy-window",
instantiate: () => { instantiate: async (di) => {
const window = new BrowserWindow({ show: false }); const app = di.inject(electronAppInjectable);
await app.whenReady();
const window = new BrowserWindow({
show: false,
paintWhenInitiallyHidden: false,
});
window.hide(); window.hide();