From 1e040c62d99590588bae7f61c048496506303530 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 10 Mar 2017 16:08:02 +0100 Subject: [PATCH 1/3] Add `AtomEnvironment.prototype.resolveProxy(url)` This new private API will allow settings-view to communicate asynchronously with the main process to resolve proxies, instead of using `remote` and blocking the renderer process during startup. --- src/application-delegate.coffee | 11 +++++++++++ src/atom-environment.coffee | 11 +++++++++++ src/main-process/atom-application.coffee | 3 +++ 3 files changed, 25 insertions(+) diff --git a/src/application-delegate.coffee b/src/application-delegate.coffee index b247fe7c2..e69efa458 100644 --- a/src/application-delegate.coffee +++ b/src/application-delegate.coffee @@ -277,3 +277,14 @@ class ApplicationDelegate emitDidSavePath: (path) -> ipcRenderer.sendSync('did-save-path', path) + + resolveProxy: (requestId, url) -> + ipcRenderer.send('resolve-proxy', requestId, url) + + onDidResolveProxy: (callback) -> + outerCallback = (event, requestId, proxy) -> + callback(requestId, proxy) + + ipcRenderer.on('did-resolve-proxy', outerCallback) + new Disposable -> + ipcRenderer.removeListener('did-resolve-proxy', outerCallback) diff --git a/src/atom-environment.coffee b/src/atom-environment.coffee index 6d9b3333f..3fe5ba96c 100644 --- a/src/atom-environment.coffee +++ b/src/atom-environment.coffee @@ -133,6 +133,7 @@ class AtomEnvironment extends Model constructor: (params={}) -> {@blobStore, @applicationDelegate, @window, @document, @clipboard, @configDirPath, @enablePersistence, onlyLoadBaseStyleSheets} = params + @nextProxyRequestId = 0 @unloaded = false @loadTime = null {devMode, safeMode, resourcePath, clearWindowState} = @getLoadSettings() @@ -993,6 +994,16 @@ class AtomEnvironment extends Model return + resolveProxy: (url) -> + return new Promise (resolve, reject) => + requestId = @nextProxyRequestId++ + disposable = @applicationDelegate.onDidResolveProxy (id, proxy) => + if id is requestId + disposable.dispose() + resolve(proxy) + + @applicationDelegate.resolveProxy(requestId, url) + # Preserve this deprecation until 2.0. Sorry. Should have removed Q sooner. Promise.prototype.done = (callback) -> deprecate("Atom now uses ES6 Promises instead of Q. Call promise.then instead of promise.done") diff --git a/src/main-process/atom-application.coffee b/src/main-process/atom-application.coffee index 0e364393a..e6f40379d 100644 --- a/src/main-process/atom-application.coffee +++ b/src/main-process/atom-application.coffee @@ -283,6 +283,9 @@ class AtomApplication @disposable.add ipcHelpers.on ipcMain, 'restart-application', => @restart() + @disposable.add ipcHelpers.on ipcMain, 'resolve-proxy', (event, requestId, url) -> + event.sender.session.resolveProxy url, (proxy) -> event.sender.send('did-resolve-proxy', requestId, proxy) + @disposable.add ipcHelpers.on ipcMain, 'did-change-history-manager', (event) => for atomWindow in @windows webContents = atomWindow.browserWindow.webContents From 69ea645b8579b1ea5e483bdc089f7e080153b480 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 10 Mar 2017 16:31:20 +0100 Subject: [PATCH 2/3] Fix lint errors --- src/atom-environment.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/atom-environment.coffee b/src/atom-environment.coffee index 3fe5ba96c..e45e11a10 100644 --- a/src/atom-environment.coffee +++ b/src/atom-environment.coffee @@ -997,7 +997,7 @@ class AtomEnvironment extends Model resolveProxy: (url) -> return new Promise (resolve, reject) => requestId = @nextProxyRequestId++ - disposable = @applicationDelegate.onDidResolveProxy (id, proxy) => + disposable = @applicationDelegate.onDidResolveProxy (id, proxy) -> if id is requestId disposable.dispose() resolve(proxy) From c27ee0286c396fec985e588ac84366f72e176852 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 10 Mar 2017 16:47:06 +0100 Subject: [PATCH 3/3] :arrow_up: settings-view --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d85374b6f..46f5dc165 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,7 @@ "notifications": "0.67.1", "open-on-github": "1.2.1", "package-generator": "1.1.1", - "settings-view": "0.248.2", + "settings-view": "0.249.0", "snippets": "1.1.3", "spell-check": "0.71.1", "status-bar": "1.8.4",