Browse Source

Merge pull request #11235 from electron/standard-10

infra: Upgrade to StandardJS 10
Cheng Zhao 7 years ago
parent
commit
1c0ea0286e

+ 0 - 1
default_app/main.js

@@ -306,7 +306,6 @@ function startRepl () {
   if (process.platform === 'win32') {
     console.error('Electron REPL not currently supported on Windows')
     process.exit(1)
-    return
   }
 
   const repl = require('repl')

+ 9 - 3
lib/browser/api/auto-updater/squirrel-update-win.js

@@ -28,7 +28,9 @@ var spawnUpdate = function (args, detached, callback) {
     // Process spawned, different args:   Return with error
     // No process spawned:                Spawn new process
     if (spawnedProcess && !isSameArgs(args)) {
-      return callback('AutoUpdater process with arguments ' + args + ' is already running')
+      // Disabled for backwards compatibility:
+      // eslint-disable-next-line standard/no-callback-literal
+      return callback(`AutoUpdater process with arguments ${args} is already running`)
     } else if (!spawnedProcess) {
       spawnedProcess = spawn(updateExe, args, {
         detached: detached
@@ -68,7 +70,9 @@ var spawnUpdate = function (args, detached, callback) {
 
     // Process terminated with error.
     if (code !== 0) {
-      return callback('Command failed: ' + (signal != null ? signal : code) + '\n' + stderr)
+      // Disabled for backwards compatibility:
+      // eslint-disable-next-line standard/no-callback-literal
+      return callback(`Command failed: ${signal != null ? signal : code}\n${stderr}`)
     }
 
     // Success.
@@ -93,7 +97,9 @@ exports.checkForUpdate = function (updateURL, callback) {
       json = stdout.trim().split('\n').pop()
       update = (ref = JSON.parse(json)) != null ? (ref1 = ref.releasesToApply) != null ? typeof ref1.pop === 'function' ? ref1.pop() : void 0 : void 0 : void 0
     } catch (jsonError) {
-      return callback('Invalid result:\n' + stdout)
+      // Disabled for backwards compatibility:
+      // eslint-disable-next-line standard/no-callback-literal
+      return callback(`Invalid result:\n${stdout}`)
     }
     return callback(null, update)
   })

+ 0 - 3
lib/browser/api/net.js

@@ -79,7 +79,6 @@ class IncomingMessage extends Readable {
     this.shouldPush = true
     this._pushInternalData()
   }
-
 }
 
 URLRequest.prototype._emitRequestEvent = function (isAsync, ...rest) {
@@ -103,7 +102,6 @@ URLRequest.prototype._emitResponseEvent = function (isAsync, ...rest) {
 }
 
 class ClientRequest extends EventEmitter {
-
   constructor (options, callback) {
     super()
 
@@ -354,7 +352,6 @@ class ClientRequest extends EventEmitter {
   abort () {
     this.urlRequest.cancel()
   }
-
 }
 
 function writeAfterEndNT (self, error, callback) {

+ 2 - 0
lib/browser/api/session.js

@@ -26,6 +26,8 @@ Session.prototype.setCertificateVerifyProc = function (verifyProc) {
     // TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings
     this._setCertificateVerifyProc(({hostname, certificate, verificationResult}, cb) => {
       verifyProc(hostname, certificate, (result) => {
+        // Disabled due to false positive in StandardJS
+        // eslint-disable-next-line standard/no-callback-literal
         cb(result ? 0 : -2)
       })
     })

+ 1 - 0
lib/browser/api/web-contents.js

@@ -6,6 +6,7 @@ const {app, ipcMain, session, NavigationController} = electron
 
 // session is not used here, the purpose is to make sure session is initalized
 // before the webContents module.
+// eslint-disable-next-line
 session
 
 let nextId = 0

+ 4 - 0
lib/browser/chrome-extension.js

@@ -311,6 +311,8 @@ const chromeExtensionHandler = function (request, callback) {
 
   const page = backgroundPages[parsed.hostname]
   if (page && parsed.path === `/${page.name}`) {
+    // Disabled due to false positive in StandardJS
+    // eslint-disable-next-line standard/no-callback-literal
     return callback({
       mimeType: 'text/html',
       data: page.html
@@ -319,6 +321,8 @@ const chromeExtensionHandler = function (request, callback) {
 
   fs.readFile(path.join(manifest.srcDirectory, parsed.path), function (err, content) {
     if (err) {
+      // Disabled due to false positive in StandardJS
+      // eslint-disable-next-line standard/no-callback-literal
       return callback(-6)  // FILE_NOT_FOUND
     } else {
       return callback(content)

+ 7 - 5
lib/common/asar.js

@@ -367,6 +367,8 @@
         return invalidArchiveError(asarPath, callback)
       }
       process.nextTick(function () {
+        // Disabled due to false positive in StandardJS
+        // eslint-disable-next-line standard/no-callback-literal
         callback(archive.stat(filePath) !== false)
       })
     }
@@ -482,7 +484,7 @@
       }
       if (info.size === 0) {
         return process.nextTick(function () {
-          callback(null, encoding ? '' : new Buffer(0))
+          callback(null, encoding ? '' : Buffer.alloc(0))
         })
       }
       if (info.unpacked) {
@@ -490,7 +492,7 @@
         return fs.readFile(realPath, options, callback)
       }
 
-      const buffer = new Buffer(info.size)
+      const buffer = Buffer.alloc(info.size)
       const fd = archive.getFd()
       if (!(fd >= 0)) {
         return notFoundError(asarPath, filePath, callback)
@@ -519,7 +521,7 @@
         if (options) {
           return ''
         } else {
-          return new Buffer(0)
+          return Buffer.alloc(0)
         }
       }
       if (info.unpacked) {
@@ -538,7 +540,7 @@
         throw new TypeError('Bad arguments')
       }
       const {encoding} = options
-      const buffer = new Buffer(info.size)
+      const buffer = Buffer.alloc(info.size)
       const fd = archive.getFd()
       if (!(fd >= 0)) {
         notFoundError(asarPath, filePath)
@@ -611,7 +613,7 @@
           encoding: 'utf8'
         })
       }
-      const buffer = new Buffer(info.size)
+      const buffer = Buffer.alloc(info.size)
       const fd = archive.getFd()
       if (!(fd >= 0)) {
         return

+ 2 - 0
lib/renderer/chrome-api.js

@@ -147,6 +147,8 @@ exports.injectTo = function (extensionId, isBackgroundPage, context) {
     executeScript (tabId, details, callback) {
       const requestId = ++nextId
       ipcRenderer.once(`CHROME_TABS_EXECUTESCRIPT_RESULT_${requestId}`, (event, result) => {
+        // Disabled due to false positive in StandardJS
+        // eslint-disable-next-line standard/no-callback-literal
         callback([event.result])
       })
       ipcRenderer.send('CHROME_TABS_EXECUTESCRIPT', requestId, tabId, extensionId, details)

+ 5 - 0
lib/renderer/extensions/storage.js

@@ -51,6 +51,8 @@ const getStorage = (storageType, extensionId, cb) => {
     if (data !== null) {
       cb(JSON.parse(data))
     } else {
+      // Disabled due to false positive in StandardJS
+      // eslint-disable-next-line standard/no-callback-literal
       cb({})
     }
   })
@@ -82,6 +84,9 @@ const getStorageManager = (storageType, extensionId) => {
             }
             break
         }
+
+        // Disabled due to false positive in StandardJS
+        // eslint-disable-next-line standard/no-callback-literal
         if (keys.length === 0) return callback({})
 
         let items = {}

+ 1 - 1
package.json

@@ -20,7 +20,7 @@
     "remark-cli": "^4.0.0",
     "remark-preset-lint-markdown-style-guide": "^2.1.1",
     "request": "^2.68.0",
-    "standard": "^8.4.0",
+    "standard": "^10.0.0",
     "standard-markdown": "^4.0.0",
     "sumchecker": "^2.0.2",
     "temp": "^0.8.3"

+ 1 - 1
script/ci-release-build.js

@@ -32,7 +32,7 @@ async function makeRequest (requestOptions, parseResponse) {
         } else {
           console.log('Error: ', `(status ${res.statusCode})`, err || res.body, requestOptions)
         }
-        reject()
+        reject(err)
       }
     })
   })

+ 5 - 5
script/merge-release.js

@@ -31,7 +31,7 @@ async function checkoutBranch (branchName) {
   console.log(`Checking out ${branchName}.`)
   let errorMessage = `Error checking out branch ${branchName}:`
   let successMessage = `Successfully checked out branch ${branchName}.`
-  return await callGit(['checkout', branchName], errorMessage, successMessage)
+  return callGit(['checkout', branchName], errorMessage, successMessage)
 }
 
 async function commitMerge () {
@@ -39,7 +39,7 @@ async function commitMerge () {
   let errorMessage = `Error committing merge:`
   let successMessage = `Successfully committed the merge for v${pkg.version}`
   let gitArgs = ['commit', '-m', `v${pkg.version}`]
-  return await callGit(gitArgs, errorMessage, successMessage)
+  return callGit(gitArgs, errorMessage, successMessage)
 }
 
 async function mergeReleaseIntoBranch (branchName) {
@@ -67,14 +67,14 @@ async function pushBranch (branchName) {
   let pushArgs = ['push', 'origin', branchName]
   let errorMessage = `Could not push branch ${branchName} due to an error:`
   let successMessage = `Successfully pushed branch ${branchName}.`
-  return await callGit(pushArgs, errorMessage, successMessage)
+  return callGit(pushArgs, errorMessage, successMessage)
 }
 
 async function pull () {
   console.log(`Performing a git pull`)
   let errorMessage = `Could not pull due to an error:`
   let successMessage = `Successfully performed a git pull`
-  return await callGit(['pull'], errorMessage, successMessage)
+  return callGit(['pull'], errorMessage, successMessage)
 }
 
 async function rebase (targetBranch) {
@@ -82,7 +82,7 @@ async function rebase (targetBranch) {
   let errorMessage = `Could not rebase due to an error:`
   let successMessage = `Successfully rebased release branch from ` +
     `${targetBranch}`
-  return await callGit(['rebase', targetBranch], errorMessage, successMessage)
+  return callGit(['rebase', targetBranch], errorMessage, successMessage)
 }
 
 async function mergeRelease () {

+ 3 - 3
script/release.js

@@ -215,7 +215,7 @@ async function uploadShasumFile (filePath, fileName, release) {
     filePath,
     name: fileName
   }
-  return await github.repos.uploadAsset(githubOpts)
+  return github.repos.uploadAsset(githubOpts)
     .catch(err => {
       console.log(`${fail} Error uploading ${filePath} to GitHub:`, err)
       process.exit(1)
@@ -250,7 +250,7 @@ async function publishRelease (release) {
     tag_name: release.tag_name,
     draft: false
   }
-  return await github.repos.editRelease(githubOpts)
+  return github.repos.editRelease(githubOpts)
     .catch(err => {
       console.log(`${fail} Error publishing release:`, err)
       process.exit(1)
@@ -447,7 +447,7 @@ async function cleanupReleaseBranch () {
   await callGit(['branch', '-D', 'release'], errorMessage, successMessage)
   errorMessage = `Could not delete remote release branch.`
   successMessage = `Successfully deleted remote release branch.`
-  return await callGit(['push', 'origin', ':release'], errorMessage, successMessage)
+  return callGit(['push', 'origin', ':release'], errorMessage, successMessage)
 }
 
 async function callGit (args, errorMessage, successMessage) {

+ 7 - 3
spec/api-browser-window-spec.js

@@ -27,7 +27,7 @@ describe('BrowserWindow module', () => {
     postData = [
       {
         type: 'rawData',
-        bytes: new Buffer('username=test&file=')
+        bytes: Buffer.from('username=test&file=')
       },
       {
         type: 'file',
@@ -153,7 +153,7 @@ describe('BrowserWindow module', () => {
       ]
       const responseEvent = 'window-webContents-destroyed'
 
-      function* genNavigationEvent () {
+      function * genNavigationEvent () {
         let eventOptions = null
         while ((eventOptions = events.shift()) && events.length) {
           let w = new BrowserWindow({show: false})
@@ -270,7 +270,7 @@ describe('BrowserWindow module', () => {
         assert.equal(isMainFrame, true)
         done()
       })
-      const data = new Buffer(2 * 1024 * 1024).toString('base64')
+      const data = Buffer.alloc(2 * 1024 * 1024).toString('base64')
       w.loadURL(`data:image/png;base64,${data}`)
     })
 
@@ -1056,6 +1056,8 @@ describe('BrowserWindow module', () => {
       // http protocol to simulate accessing another domain. This is required
       // because the code paths for cross domain popups is different.
       function crossDomainHandler (request, callback) {
+        // Disabled due to false positive in StandardJS
+        // eslint-disable-next-line standard/no-callback-literal
         callback({
           mimeType: 'text/html',
           data: `<html><body><h1>${request.url}</h1></body></html>`
@@ -3033,6 +3035,8 @@ const isScaleFactorRounding = () => {
 function serveFileFromProtocol (protocolName, filePath) {
   return new Promise((resolve, reject) => {
     protocol.registerBufferProtocol(protocolName, (request, callback) => {
+      // Disabled due to false positive in StandardJS
+      // eslint-disable-next-line standard/no-callback-literal
       callback({
         mimeType: 'text/html',
         data: fs.readFileSync(filePath)

+ 3 - 2
spec/api-ipc-spec.js

@@ -145,7 +145,7 @@ describe('ipc module', () => {
 
   describe('remote.createFunctionWithReturnValue', () => {
     it('should be called in browser synchronously', () => {
-      const buf = new Buffer('test')
+      const buf = Buffer.from('test')
       const call = remote.require(path.join(fixtures, 'module', 'call.js'))
       const result = call.call(remote.createFunctionWithReturnValue(buf))
       assert.equal(result.constructor.name, 'Buffer')
@@ -195,6 +195,7 @@ describe('ipc module', () => {
       const foo = remote.require(path.join(fixtures, 'module', 'error-properties.js'))
 
       assert.throws(() => {
+        // eslint-disable-next-line
         foo.bar
       }, /getting error/)
 
@@ -239,7 +240,7 @@ describe('ipc module', () => {
     const printName = remote.require(print)
 
     it('keeps its constructor name for objects', () => {
-      const buf = new Buffer('test')
+      const buf = Buffer.from('test')
       assert.equal(printName.print(buf), 'Buffer')
     })
 

+ 2 - 0
spec/api-native-image-spec.js

@@ -1,5 +1,7 @@
 'use strict'
 
+/* eslint-disable no-unused-expressions */
+
 const {expect} = require('chai')
 const {nativeImage} = require('electron')
 const path = require('path')

+ 11 - 0
spec/api-net-spec.js

@@ -6,6 +6,9 @@ const url = require('url')
 const {net} = remote
 const {session} = remote
 
+/* The whole net API doesn't use standard callbacks */
+/* eslint-disable standard/no-callback-literal */
+
 function randomBuffer (size, start, end) {
   start = start || 0
   end = end || 255
@@ -855,6 +858,8 @@ describe('net module', () => {
         (details, callback) => {
           if (details.url === `${server.url}${requestUrl}`) {
             requestIsIntercepted = true
+            // Disabled due to false positive in StandardJS
+            // eslint-disable-next-line standard/no-callback-literal
             callback({
               redirectURL: `${server.url}${redirectUrl}`
             })
@@ -907,6 +912,8 @@ describe('net module', () => {
       customSession.webRequest.onBeforeRequest((details, callback) => {
         if (details.url === `${server.url}${requestUrl}`) {
           requestIsIntercepted = true
+          // Disabled due to false positive in StandardJS
+          // eslint-disable-next-line standard/no-callback-literal
           callback({
             redirectURL: `${server.url}${redirectUrl}`
           })
@@ -1154,6 +1161,8 @@ describe('net module', () => {
           url: `${server.url}${requestUrl}`,
           session: 1
         })
+
+        // eslint-disable-next-line
         urlRequest
       } catch (exception) {
         done()
@@ -1223,6 +1232,8 @@ describe('net module', () => {
           url: `${server.url}${requestUrl}`,
           partition: 1
         })
+
+        // eslint-disable-next-line
         urlRequest
       } catch (exception) {
         done()

+ 6 - 3
spec/api-protocol-spec.js

@@ -10,6 +10,9 @@ const {BrowserWindow, ipcMain, protocol, session, webContents} = remote
 // and use Stream instances created in the browser process.
 const stream = remote.require('stream')
 
+/* The whole protocol API doesn't use standard callbacks */
+/* eslint-disable standard/no-callback-literal */
+
 describe('protocol module', () => {
   const protocolName = 'sp'
   const text = 'valar morghulis'
@@ -28,7 +31,7 @@ describe('protocol module', () => {
     const body = stream.PassThrough()
 
     async function sendChunks () {
-      let buf = new Buffer(data)
+      let buf = Buffer.from(data)
       for (;;) {
         body.push(buf.slice(0, chunkSize))
         buf = buf.slice(chunkSize)
@@ -204,7 +207,7 @@ describe('protocol module', () => {
   })
 
   describe('protocol.registerBufferProtocol', () => {
-    const buffer = new Buffer(text)
+    const buffer = Buffer.from(text)
     it('sends Buffer as response', (done) => {
       const handler = (request, callback) => callback(buffer)
       protocol.registerBufferProtocol(protocolName, handler, (error) => {
@@ -767,7 +770,7 @@ describe('protocol module', () => {
 
   describe('protocol.interceptBufferProtocol', () => {
     it('can intercept http protocol', (done) => {
-      const handler = (request, callback) => callback(new Buffer(text))
+      const handler = (request, callback) => callback(Buffer.from(text))
       protocol.interceptBufferProtocol('http', handler, (error) => {
         if (error) return done(error)
         $.ajax({

+ 5 - 2
spec/api-session-spec.js

@@ -10,6 +10,9 @@ const {closeWindow} = require('./window-helpers')
 const {ipcRenderer, remote} = require('electron')
 const {ipcMain, session, BrowserWindow, net} = remote
 
+/* The whole session API doesn't use standard callbacks */
+/* eslint-disable standard/no-callback-literal */
+
 describe('session module', () => {
   let fixtures = path.resolve(__dirname, 'fixtures')
   let w = null
@@ -242,7 +245,7 @@ describe('session module', () => {
     })
 
     it('can cancel default download behavior', (done) => {
-      const mockFile = new Buffer(1024)
+      const mockFile = Buffer.alloc(1024)
       const contentDisposition = 'inline; filename="mockFile.txt"'
       const downloadServer = http.createServer((req, res) => {
         res.writeHead(200, {
@@ -271,7 +274,7 @@ describe('session module', () => {
   })
 
   describe('DownloadItem', () => {
-    const mockPDF = new Buffer(1024 * 1024 * 5)
+    const mockPDF = Buffer.alloc(1024 * 1024 * 5)
     let contentDisposition = 'inline; filename="mock.pdf"'
     const downloadFilePath = path.join(fixtures, 'mock.pdf')
     const downloadServer = http.createServer((req, res) => {

+ 4 - 1
spec/api-web-contents-spec.js

@@ -10,6 +10,9 @@ const {BrowserWindow, webContents, ipcMain, session} = remote
 
 const isCi = remote.getGlobal('isCi')
 
+/* The whole webContents API doesn't use standard callbacks */
+/* eslint-disable standard/no-callback-literal */
+
 describe('webContents module', () => {
   const fixtures = path.resolve(__dirname, 'fixtures')
   let w
@@ -634,7 +637,7 @@ describe('webContents module', () => {
       ]
       const responseEvent = 'webcontents-destroyed'
 
-      function* genNavigationEvent () {
+      function * genNavigationEvent () {
         let eventOptions = null
         while ((eventOptions = events.shift()) && events.length) {
           eventOptions.responseEvent = responseEvent

+ 3 - 0
spec/api-web-frame-spec.js

@@ -4,6 +4,9 @@ const {closeWindow} = require('./window-helpers')
 const {remote, webFrame} = require('electron')
 const {BrowserWindow, protocol, ipcMain} = remote
 
+/* Most of the APIs here don't use standard callbacks */
+/* eslint-disable standard/no-callback-literal */
+
 describe('webFrame module', function () {
   var fixtures = path.resolve(__dirname, 'fixtures')
   var w = null

+ 3 - 0
spec/api-web-request-spec.js

@@ -4,6 +4,9 @@ const qs = require('querystring')
 const remote = require('electron').remote
 const session = remote.session
 
+/* The whole webRequest API doesn't use standard callbacks */
+/* eslint-disable standard/no-callback-literal */
+
 describe('webRequest module', () => {
   const ses = session.defaultSession
   const server = http.createServer((req, res) => {

+ 3 - 3
spec/asar-spec.js

@@ -15,7 +15,7 @@ describe('asar package', function () {
 
   describe('node api', function () {
     it('supports paths specified as a Buffer', function () {
-      var file = new Buffer(path.join(fixtures, 'asar', 'a.asar', 'file1'))
+      var file = Buffer.from(path.join(fixtures, 'asar', 'a.asar', 'file1'))
       assert.equal(fs.existsSync(file), true)
     })
 
@@ -491,7 +491,7 @@ describe('asar package', function () {
           file = ref2[j]
           p = path.join(fixtures, 'asar', 'a.asar', file)
           fd = fs.openSync(p, 'r')
-          buffer = new Buffer(6)
+          buffer = Buffer.alloc(6)
           fs.readSync(fd, buffer, 0, 6, 0)
           assert.equal(String(buffer).trim(), 'file1')
           fs.closeSync(fd)
@@ -512,7 +512,7 @@ describe('asar package', function () {
         var p = path.join(fixtures, 'asar', 'a.asar', 'file1')
         fs.open(p, 'r', function (err, fd) {
           assert.equal(err, null)
-          var buffer = new Buffer(6)
+          var buffer = Buffer.alloc(6)
           fs.read(fd, buffer, 0, 6, 0, function (err) {
             assert.equal(err, null)
             assert.equal(String(buffer).trim(), 'file1')

+ 3 - 0
spec/chromium-spec.js

@@ -11,6 +11,9 @@ const {app, BrowserWindow, ipcMain, protocol, session, webContents} = remote
 
 const isCI = remote.getGlobal('isCi')
 
+/* Most of the APIs here don't use standard callbacks */
+/* eslint-disable standard/no-callback-literal */
+
 describe('chromium feature', () => {
   const fixtures = path.resolve(__dirname, 'fixtures')
   let listener = null

+ 6 - 5
spec/node-spec.js

@@ -300,7 +300,7 @@ describe('node feature', () => {
     it('can be created from WebKit external string', () => {
       const p = document.createElement('p')
       p.innerText = '闲云潭影日悠悠,物换星移几度秋'
-      const b = new Buffer(p.innerText)
+      const b = Buffer.from(p.innerText)
       assert.equal(b.toString(), '闲云潭影日悠悠,物换星移几度秋')
       assert.equal(Buffer.byteLength(p.innerText), 45)
     })
@@ -308,15 +308,15 @@ describe('node feature', () => {
     it('correctly parses external one-byte UTF8 string', () => {
       const p = document.createElement('p')
       p.innerText = 'Jøhänñéß'
-      const b = new Buffer(p.innerText)
+      const b = Buffer.from(p.innerText)
       assert.equal(b.toString(), 'Jøhänñéß')
       assert.equal(Buffer.byteLength(p.innerText), 13)
     })
 
     it('does not crash when creating large Buffers', () => {
-      let buffer = new Buffer(new Array(4096).join(' '))
+      let buffer = Buffer.from(new Array(4096).join(' '))
       assert.equal(buffer.length, 4095)
-      buffer = new Buffer(new Array(4097).join(' '))
+      buffer = Buffer.from(new Array(4097).join(' '))
       assert.equal(buffer.length, 4096)
     })
   })
@@ -324,6 +324,7 @@ describe('node feature', () => {
   describe('process.stdout', () => {
     it('does not throw an exception when accessed', () => {
       assert.doesNotThrow(() => {
+        // eslint-disable-next-line
         process.stdout
       })
     })
@@ -358,7 +359,7 @@ describe('node feature', () => {
   describe('process.stdin', () => {
     it('does not throw an exception when accessed', () => {
       assert.doesNotThrow(() => {
-        process.stdin
+        process.stdin // eslint-disable-line
       })
     })
 

+ 4 - 0
spec/static/main.js

@@ -32,9 +32,11 @@ app.commandLine.appendSwitch('disable-renderer-backgrounding')
 // Accessing stdout in the main process will result in the process.stdout
 // throwing UnknownSystemError in renderer process sometimes. This line makes
 // sure we can reproduce it in renderer process.
+// eslint-disable-next-line
 process.stdout
 
 // Access console to reproduce #3482.
+// eslint-disable-next-line
 console
 
 ipcMain.on('message', function (event, ...args) {
@@ -378,6 +380,8 @@ const suspendListeners = (emitter, eventName, callback) => {
     listeners.forEach((listener) => {
       emitter.on(eventName, listener)
     })
+
+    // eslint-disable-next-line standard/no-callback-literal
     callback(...args)
   })
 }

+ 5 - 2
spec/webview-spec.js

@@ -9,6 +9,9 @@ const {closeWindow} = require('./window-helpers')
 const isCI = remote.getGlobal('isCi')
 const nativeModulesEnabled = remote.getGlobal('nativeModulesEnabled')
 
+/* Most of the APIs here don't use standard callbacks */
+/* eslint-disable standard/no-callback-literal */
+
 describe('<webview> tag', function () {
   this.timeout(3 * 60 * 1000)
 
@@ -1425,7 +1428,7 @@ describe('<webview> tag', function () {
         })
 
         webview.style.display = 'none'
-        webview.offsetHeight
+        webview.offsetHeight // eslint-disable-line
         webview.style.display = 'block'
       })
       webview.src = `file://${fixtures}/pages/a.html`
@@ -1444,7 +1447,7 @@ describe('<webview> tag', function () {
         })
 
         webview.style.display = 'none'
-        webview.offsetHeight
+        webview.offsetHeight  // eslint-disable-line
         webview.style.display = 'block'
       })
       webview.src = `file://${fixtures}/pages/a.html`