webContents: handle POST navigation for new windows

This commit is contained in:
deepak1556 2016-10-10 05:00:38 +05:30 committed by Kevin Sawicki
parent 7cfe1dd0af
commit 0410a184ce
10 changed files with 187 additions and 49 deletions

View file

@ -18,13 +18,17 @@ BrowserWindow.prototype._init = function () {
}
// Make new windows requested by links behave like "window.open"
this.webContents.on('-new-window', (event, url, frameName, disposition, additionalFeatures) => {
this.webContents.on('-new-window', (event, url, frameName,
disposition, additionalFeatures,
postData) => {
const options = {
show: true,
width: 800,
height: 600
}
ipcMain.emit('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_OPEN', event, url, frameName, disposition, options, additionalFeatures)
ipcMain.emit('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_OPEN',
event, url, frameName, disposition,
options, additionalFeatures, postData)
})
this.webContents.on('-web-contents-created', (event, webContents, url,

View file

@ -84,7 +84,7 @@ const setupGuest = function (embedder, frameName, guest, options) {
}
// Create a new guest created by |embedder| with |options|.
const createGuest = function (embedder, url, frameName, options) {
const createGuest = function (embedder, url, frameName, options, postData) {
let guest = frameToGuest[frameName]
if (frameName && (guest != null)) {
guest.loadURL(url)
@ -119,7 +119,10 @@ const createGuest = function (embedder, url, frameName, options) {
//
// The above code would not work if a navigation to "about:blank" is done
// here, since the window would be cleared of all changes in the next tick.
guest.loadURL(url)
const loadOptions = {}
if (postData)
loadOptions.postData = postData
guest.loadURL(url, loadOptions)
}
return setupGuest(embedder, frameName, guest, options)
@ -140,7 +143,9 @@ const getGuestWindow = function (guestId) {
}
// Routed window.open messages.
ipcMain.on('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_OPEN', function (event, url, frameName, disposition, options, additionalFeatures) {
ipcMain.on('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_OPEN', function (event, url, frameName,
disposition, options,
additionalFeatures, postData) {
options = mergeBrowserWindowOptions(event.sender, options)
event.sender.emit('new-window', event, url, frameName, disposition, options, additionalFeatures)
const newGuest = event.newGuest
@ -151,7 +156,7 @@ ipcMain.on('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_OPEN', function (event, url, fr
event.returnValue = null
}
} else {
event.returnValue = createGuest(event.sender, url, frameName, options)
event.returnValue = createGuest(event.sender, url, frameName, options, postData)
}
})