Merge pull request #3768 from atom/window-post-message-origin
Fix window.postMessage event.origin value
This commit is contained in:
commit
a6976b7d83
4 changed files with 26 additions and 4 deletions
|
@ -73,15 +73,15 @@ ipcMain.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_CLOSE', (event, guestId) ->
|
||||||
ipcMain.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_METHOD', (event, guestId, method, args...) ->
|
ipcMain.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_METHOD', (event, guestId, method, args...) ->
|
||||||
BrowserWindow.fromId(guestId)?[method] args...
|
BrowserWindow.fromId(guestId)?[method] args...
|
||||||
|
|
||||||
ipcMain.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_POSTMESSAGE', (event, guestId, message, targetOrigin) ->
|
ipcMain.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_POSTMESSAGE', (event, guestId, message, targetOrigin, sourceOrigin) ->
|
||||||
guestContents = BrowserWindow.fromId(guestId)?.webContents
|
guestContents = BrowserWindow.fromId(guestId)?.webContents
|
||||||
if guestContents?.getURL().indexOf(targetOrigin) is 0 or targetOrigin is '*'
|
if guestContents?.getURL().indexOf(targetOrigin) is 0 or targetOrigin is '*'
|
||||||
guestContents.send 'ATOM_SHELL_GUEST_WINDOW_POSTMESSAGE', guestId, message, targetOrigin
|
guestContents?.send 'ATOM_SHELL_GUEST_WINDOW_POSTMESSAGE', guestId, message, sourceOrigin
|
||||||
|
|
||||||
ipcMain.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_OPENER_POSTMESSAGE', (event, guestId, message, targetOrigin, sourceOrigin) ->
|
ipcMain.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_OPENER_POSTMESSAGE', (event, guestId, message, targetOrigin, sourceOrigin) ->
|
||||||
embedder = v8Util.getHiddenValue event.sender, 'embedder'
|
embedder = v8Util.getHiddenValue event.sender, 'embedder'
|
||||||
if embedder?.getURL().indexOf(targetOrigin) is 0 or targetOrigin is '*'
|
if embedder?.getURL().indexOf(targetOrigin) is 0 or targetOrigin is '*'
|
||||||
embedder.send 'ATOM_SHELL_GUEST_WINDOW_POSTMESSAGE', guestId, message, sourceOrigin
|
embedder?.send 'ATOM_SHELL_GUEST_WINDOW_POSTMESSAGE', guestId, message, sourceOrigin
|
||||||
|
|
||||||
ipcMain.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD', (event, guestId, method, args...) ->
|
ipcMain.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD', (event, guestId, method, args...) ->
|
||||||
BrowserWindow.fromId(guestId)?.webContents?[method] args...
|
BrowserWindow.fromId(guestId)?.webContents?[method] args...
|
||||||
|
|
|
@ -32,7 +32,7 @@ class BrowserWindowProxy
|
||||||
ipcRenderer.send 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_METHOD', @guestId, 'blur'
|
ipcRenderer.send 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_METHOD', @guestId, 'blur'
|
||||||
|
|
||||||
postMessage: (message, targetOrigin='*') ->
|
postMessage: (message, targetOrigin='*') ->
|
||||||
ipcRenderer.send 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_POSTMESSAGE', @guestId, message, targetOrigin
|
ipcRenderer.send 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_POSTMESSAGE', @guestId, message, targetOrigin, location.origin
|
||||||
|
|
||||||
eval: (args...) ->
|
eval: (args...) ->
|
||||||
ipcRenderer.send 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD', @guestId, 'executeJavaScript', args...
|
ipcRenderer.send 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD', @guestId, 'executeJavaScript', args...
|
||||||
|
|
|
@ -115,6 +115,19 @@ describe 'chromium feature', ->
|
||||||
window.addEventListener 'message', listener
|
window.addEventListener 'message', listener
|
||||||
b = window.open url, '', 'show=no'
|
b = window.open url, '', 'show=no'
|
||||||
|
|
||||||
|
describe 'window.postMessage', ->
|
||||||
|
it 'sets the origin correctly', (done) ->
|
||||||
|
listener = (event) ->
|
||||||
|
window.removeEventListener 'message', listener
|
||||||
|
b.close()
|
||||||
|
assert.equal event.data, 'file://testing'
|
||||||
|
assert.equal event.origin, 'file://'
|
||||||
|
done()
|
||||||
|
window.addEventListener 'message', listener
|
||||||
|
b = window.open "file://#{fixtures}/pages/window-open-postMessage.html", '', 'show=no'
|
||||||
|
BrowserWindow.fromId(b.guestId).webContents.once 'did-finish-load', ->
|
||||||
|
b.postMessage('testing', '*')
|
||||||
|
|
||||||
describe 'window.opener.postMessage', ->
|
describe 'window.opener.postMessage', ->
|
||||||
it 'sets source and origin correctly', (done) ->
|
it 'sets source and origin correctly', (done) ->
|
||||||
listener = (event) ->
|
listener = (event) ->
|
||||||
|
|
9
spec/fixtures/pages/window-open-postMessage.html
vendored
Normal file
9
spec/fixtures/pages/window-open-postMessage.html
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<script type="text/javascript" charset="utf-8">
|
||||||
|
window.addEventListener('message', function (e) {
|
||||||
|
window.opener.postMessage(e.origin + e.data, '*');
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Add table
Add a link
Reference in a new issue