From 7a5ec96d53d7b4b82677d622f1160850017fa18b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 13 Dec 2016 15:19:15 -0800 Subject: [PATCH] Prevent input event from main process --- spec/api-web-contents-spec.js | 8 ++------ spec/static/main.js | 7 +++++++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/spec/api-web-contents-spec.js b/spec/api-web-contents-spec.js index ab202c6..fc486be 100644 --- a/spec/api-web-contents-spec.js +++ b/spec/api-web-contents-spec.js @@ -4,7 +4,7 @@ const assert = require('assert') const path = require('path') const {closeWindow} = require('./window-helpers') -const {remote} = require('electron') +const {ipcRenderer, remote} = require('electron') const {BrowserWindow, webContents, ipcMain} = remote const isCi = remote.getGlobal('isCi') @@ -102,16 +102,12 @@ describe('webContents module', function () { it('can prevent document keyboard events', (done) => { w.loadURL('file://' + path.join(__dirname, 'fixtures', 'pages', 'key-events.html')) w.webContents.once('did-finish-load', () => { - w.webContents.once('before-input-event', (event, input) => { - assert.equal(input.key, 'a') - event.preventDefault() - }) - ipcMain.once('keydown', (event, key) => { assert.equal(key, 'b') done() }) + ipcRenderer.send('prevent-next-input-event', 'a', w.webContents.id) w.webContents.sendInputEvent({type: 'keyDown', keyCode: 'a'}) w.webContents.sendInputEvent({type: 'keyDown', keyCode: 'b'}) }) diff --git a/spec/static/main.js b/spec/static/main.js index 1b512e1..de59998 100644 --- a/spec/static/main.js +++ b/spec/static/main.js @@ -8,6 +8,7 @@ const ipcMain = electron.ipcMain const dialog = electron.dialog const BrowserWindow = electron.BrowserWindow const protocol = electron.protocol +const webContents = electron.webContents const v8 = require('v8') const Coverage = require('electabul').Coverage @@ -184,6 +185,12 @@ app.on('ready', function () { event.returnValue = 'done' }) + ipcMain.on('prevent-next-input-event', (event, key, id) => { + webContents.fromId(id).once('before-input-event', (event, input) => { + if (key === input.key) event.preventDefault() + }) + }) + ipcMain.on('executeJavaScript', function (event, code, hasCallback) { if (hasCallback) { window.webContents.executeJavaScript(code, (result) => { -- 2.7.4