Remove nodeIntegration warning of webview in BrowserWindow

nodeintegration attribute is ignored in React because it's unknown.
So fortunately the integration is not working.
New 'will-attach-webview' allows us to set nodeIntegration = false.
This commit is contained in:
Yuya Ochiai 2017-03-18 20:53:00 +09:00
parent 67c58ac074
commit b1d586e9da
3 changed files with 10 additions and 6 deletions

View file

@ -233,7 +233,6 @@ const MattermostView = React.createClass({
preload={preloadJS}
src={this.props.src}
ref='webview'
nodeintegration='false'
/>
</div>);
}

View file

@ -466,6 +466,10 @@ app.on('ready', () => {
console.log('The application has crashed.');
});
mainWindow.webContents.on('will-attach-webview', (event, webPreferences) => {
webPreferences.nodeIntegration = false;
});
mainWindow.on('unresponsive', () => {
console.log('The application has become unresponsive.');
});

View file

@ -51,17 +51,18 @@ describe('application', function desc() {
it('should NOT be able to call Node.js API in webview', () => {
env.addClientCommands(this.app.client);
// webview is handled as a window by chromedriver.
return this.app.client.
windowByIndex(1).isNodeEnabled().should.eventually.be.false.
windowByIndex(2).isNodeEnabled().should.eventually.be.false.
windowByIndex(0).
getAttribute('webview', 'nodeintegration').then((nodeintegration) => {
// nodeintegration is an array of string
nodeintegration.forEach((n) => {
n.should.equal('false');
});
}).
// webview is handled as a window by chromedriver.
windowByIndex(1).isNodeEnabled().should.eventually.be.false.
windowByIndex(2).isNodeEnabled().should.eventually.be.false;
});
});
it('should NOT be able to call Node.js API in a new window', () => {