diff options
-rw-r--r-- | src/index.js | 11 | ||||
-rw-r--r-- | src/models/Service.js | 17 |
2 files changed, 21 insertions, 7 deletions
diff --git a/src/index.js b/src/index.js index 9dfbb4d8f..dac8ec770 100644 --- a/src/index.js +++ b/src/index.js | |||
@@ -332,7 +332,7 @@ const createWindow = () => { | |||
332 | e.preventDefault(); | 332 | e.preventDefault(); |
333 | 333 | ||
334 | if (isValidExternalURL(url)) { | 334 | if (isValidExternalURL(url)) { |
335 | shell.openExternal(url); | 335 | shell.openExternal(url); |
336 | } | 336 | } |
337 | }); | 337 | }); |
338 | 338 | ||
@@ -411,6 +411,15 @@ ipcMain.on('feature-basic-auth-credentials', (e, { user, password }) => { | |||
411 | authCallback = noop; | 411 | authCallback = noop; |
412 | }); | 412 | }); |
413 | 413 | ||
414 | ipcMain.on('open-browser-window', (e, {disposition, url}, serviceId) => { | ||
415 | if (disposition === 'foreground-tab') { | ||
416 | let serviceSession = session.fromPartition(`persist:service-${serviceId}`) | ||
417 | let child = new BrowserWindow({ parent: mainWindow, webPreferences: {session: serviceSession}}); | ||
418 | child.show(); | ||
419 | child.loadURL(url); | ||
420 | } | ||
421 | debug('Received open-browser-window', disposition, url); | ||
422 | }); | ||
414 | 423 | ||
415 | ipcMain.on('modifyRequestHeaders', (e, { modifiedRequestHeaders, serviceId }) => { | 424 | ipcMain.on('modifyRequestHeaders', (e, { modifiedRequestHeaders, serviceId }) => { |
416 | debug('Received modifyRequestHeaders', modifiedRequestHeaders, serviceId); | 425 | debug('Received modifyRequestHeaders', modifiedRequestHeaders, serviceId); |
diff --git a/src/models/Service.js b/src/models/Service.js index fb8a4298b..45dc55fce 100644 --- a/src/models/Service.js +++ b/src/models/Service.js | |||
@@ -266,12 +266,17 @@ export default class Service { | |||
266 | })); | 266 | })); |
267 | 267 | ||
268 | this.webview.addEventListener('new-window', (event, url, frameName, options) => { | 268 | this.webview.addEventListener('new-window', (event, url, frameName, options) => { |
269 | openWindow({ | 269 | debug('new-window', event, url, frameName, options); |
270 | event, | 270 | if (event.disposition === 'foreground-tab') { |
271 | url, | 271 | ipcRenderer.send('open-browser-window', event, this.id); |
272 | frameName, | 272 | } else { |
273 | options, | 273 | openWindow({ |
274 | }); | 274 | event, |
275 | url, | ||
276 | frameName, | ||
277 | options, | ||
278 | }); | ||
279 | } | ||
275 | }); | 280 | }); |
276 | 281 | ||
277 | 282 | ||