Merge pull request #2408 from atom/window-opener
Only set window.opener for windows opened by window.open
This commit is contained in:
commit
9642cd286e
5 changed files with 38 additions and 2 deletions
|
@ -64,3 +64,6 @@ ipc.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_OPENER_POSTMESSAGE', (event, mess
|
||||||
|
|
||||||
ipc.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD', (event, guestId, method, args...) ->
|
ipc.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...
|
||||||
|
|
||||||
|
ipc.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_IS_GUEST_WINDOW', (event) ->
|
||||||
|
event.returnValue = v8Util.getHiddenValue(event.sender, 'embedder') isnt undefined
|
||||||
|
|
|
@ -91,7 +91,7 @@ window.prompt = ->
|
||||||
throw new Error('prompt() is and will not be supported.')
|
throw new Error('prompt() is and will not be supported.')
|
||||||
|
|
||||||
# Simple implementation of postMessage.
|
# Simple implementation of postMessage.
|
||||||
unless process.guestInstanceId?
|
if ipc.sendSync 'ATOM_SHELL_GUEST_WINDOW_MANAGER_IS_GUEST_WINDOW'
|
||||||
window.opener =
|
window.opener =
|
||||||
postMessage: (message, targetOrigin='*') ->
|
postMessage: (message, targetOrigin='*') ->
|
||||||
ipc.send 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_OPENER_POSTMESSAGE', message, targetOrigin
|
ipc.send 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_OPENER_POSTMESSAGE', message, targetOrigin
|
||||||
|
|
|
@ -3,6 +3,7 @@ http = require 'http'
|
||||||
https = require 'https'
|
https = require 'https'
|
||||||
path = require 'path'
|
path = require 'path'
|
||||||
ws = require 'ws'
|
ws = require 'ws'
|
||||||
|
remote = require 'remote'
|
||||||
|
|
||||||
describe 'chromium feature', ->
|
describe 'chromium feature', ->
|
||||||
fixtures = path.resolve __dirname, 'fixtures'
|
fixtures = path.resolve __dirname, 'fixtures'
|
||||||
|
@ -39,9 +40,31 @@ describe 'chromium feature', ->
|
||||||
assert.equal b.constructor.name, 'BrowserWindowProxy'
|
assert.equal b.constructor.name, 'BrowserWindowProxy'
|
||||||
b.close()
|
b.close()
|
||||||
|
|
||||||
|
describe 'window.opener', ->
|
||||||
|
ipc = remote.require 'ipc'
|
||||||
|
url = "file://#{fixtures}/pages/window-opener.html"
|
||||||
|
w = null
|
||||||
|
|
||||||
|
afterEach ->
|
||||||
|
w?.destroy()
|
||||||
|
ipc.removeAllListeners 'opener'
|
||||||
|
|
||||||
|
it 'is null for main window', (done) ->
|
||||||
|
ipc.on 'opener', (event, opener) ->
|
||||||
|
done(if opener is null then undefined else opener)
|
||||||
|
BrowserWindow = remote.require 'browser-window'
|
||||||
|
w = new BrowserWindow(show: false)
|
||||||
|
w.loadUrl url
|
||||||
|
|
||||||
|
it 'is not null for window opened by window.open', (done) ->
|
||||||
|
b = window.open url, 'test2', 'show=no'
|
||||||
|
ipc.on 'opener', (event, opener) ->
|
||||||
|
b.close()
|
||||||
|
done(if opener isnt null then undefined else opener)
|
||||||
|
|
||||||
describe 'creating a Uint8Array under browser side', ->
|
describe 'creating a Uint8Array under browser side', ->
|
||||||
it 'does not crash', ->
|
it 'does not crash', ->
|
||||||
RUint8Array = require('remote').getGlobal 'Uint8Array'
|
RUint8Array = remote.getGlobal 'Uint8Array'
|
||||||
new RUint8Array
|
new RUint8Array
|
||||||
|
|
||||||
describe 'webgl', ->
|
describe 'webgl', ->
|
||||||
|
|
8
spec/fixtures/pages/window-opener.html
vendored
Normal file
8
spec/fixtures/pages/window-opener.html
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<script type="text/javascript" charset="utf-8">
|
||||||
|
require('ipc').send('opener', window.opener);
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
|
@ -263,6 +263,8 @@ describe '<webview> tag', ->
|
||||||
document.body.appendChild webview
|
document.body.appendChild webview
|
||||||
|
|
||||||
describe 'executeJavaScript', ->
|
describe 'executeJavaScript', ->
|
||||||
|
return unless process.env.TRAVIS is 'true'
|
||||||
|
|
||||||
it 'should support user gesture', (done) ->
|
it 'should support user gesture', (done) ->
|
||||||
listener = (e) ->
|
listener = (e) ->
|
||||||
webview.removeEventListener 'enter-html-full-screen', listener
|
webview.removeEventListener 'enter-html-full-screen', listener
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue