Add failing specs window.opener from <webview> opened window
This commit is contained in:
parent
686a26d948
commit
0799317ff5
1 changed files with 64 additions and 1 deletions
|
@ -313,7 +313,7 @@ describe('chromium feature', function () {
|
|||
})
|
||||
})
|
||||
|
||||
describe('window.opener security', function () {
|
||||
describe('window.opener access from BrowserWindow', function () {
|
||||
this.timeout(10000)
|
||||
|
||||
const scheme = 'other'
|
||||
|
@ -355,6 +355,69 @@ describe('chromium feature', function () {
|
|||
})
|
||||
})
|
||||
|
||||
describe('window.opener access from <webview>', function () {
|
||||
this.timeout(10000)
|
||||
|
||||
const scheme = 'other'
|
||||
const srcPath = `${fixtures}/pages/webview-opener-postMessage.html`
|
||||
const pageURL = `file://${fixtures}/pages/window-opener-location.html`
|
||||
let webview = null
|
||||
|
||||
before(function (done) {
|
||||
protocol.registerFileProtocol(scheme, function (request, callback) {
|
||||
callback(srcPath)
|
||||
}, function (error) {
|
||||
done(error)
|
||||
})
|
||||
})
|
||||
|
||||
after(function () {
|
||||
protocol.unregisterProtocol(scheme)
|
||||
})
|
||||
|
||||
afterEach(function () {
|
||||
if (webview != null) webview.remove()
|
||||
})
|
||||
|
||||
it('does nothing when origin of webview src URL does not match opener', function (done) {
|
||||
webview = new WebView()
|
||||
webview.addEventListener('console-message', function (e) {
|
||||
assert.equal(e.message, 'null')
|
||||
done()
|
||||
})
|
||||
webview.setAttribute('allowpopups', 'on')
|
||||
webview.src = url.format({
|
||||
pathname: srcPath,
|
||||
protocol: scheme,
|
||||
query: {
|
||||
p: pageURL
|
||||
},
|
||||
slashes: true
|
||||
})
|
||||
document.body.appendChild(webview)
|
||||
})
|
||||
|
||||
it('works when origin does not match opener but has node integration', function (done) {
|
||||
webview = new WebView()
|
||||
webview.addEventListener('console-message', function (e) {
|
||||
webview.remove()
|
||||
assert.equal(e.message, location.href)
|
||||
done()
|
||||
})
|
||||
webview.setAttribute('allowpopups', 'on')
|
||||
webview.setAttribute('nodeintegration', 'on')
|
||||
webview.src = url.format({
|
||||
pathname: srcPath,
|
||||
protocol: scheme,
|
||||
query: {
|
||||
p: pageURL
|
||||
},
|
||||
slashes: true
|
||||
})
|
||||
document.body.appendChild(webview)
|
||||
})
|
||||
})
|
||||
|
||||
describe('window.postMessage', function () {
|
||||
it('sets the source and origin correctly', function (done) {
|
||||
var b, sourceId
|
||||
|
|
Loading…
Reference in a new issue