feat: add chrome.runtime.getManifest (#16891)

* feat: add chrome.runtime.getManifest

* Add test for chrome.runtime.getManifest

* Use IPC utils for getManifest internals
This commit is contained in:
Samuel Maddock 2019-02-13 12:16:12 -05:00 committed by John Kleinschmidt
parent 46f818b0c3
commit 8f6a543398
5 changed files with 89 additions and 0 deletions

48
spec/chrome-api-spec.js Normal file
View file

@ -0,0 +1,48 @@
const fs = require('fs')
const path = require('path')
const { expect } = require('chai')
const { remote } = require('electron')
const { closeWindow } = require('./window-helpers')
const { emittedOnce } = require('./events-helpers')
const { BrowserWindow } = remote
describe('chrome api', () => {
const fixtures = path.resolve(__dirname, 'fixtures')
let w
before(() => {
BrowserWindow.addExtension(path.join(fixtures, 'extensions/chrome-api'))
})
after(() => {
BrowserWindow.removeExtension('chrome-api')
})
beforeEach(() => {
w = new BrowserWindow({
show: false
})
})
afterEach(() => closeWindow(w).then(() => { w = null }))
it('runtime.getManifest returns extension manifest', async () => {
const actualManifest = (() => {
const data = fs.readFileSync(path.join(fixtures, 'extensions/chrome-api/manifest.json'), 'utf-8')
return JSON.parse(data)
})()
w.loadURL('about:blank')
const p = emittedOnce(w.webContents, 'console-message')
w.webContents.executeJavaScript(`window.postMessage('getManifest', '*')`)
const [,, manifestString] = await p
const manifest = JSON.parse(manifestString)
expect(manifest.name).to.equal(actualManifest.name)
expect(manifest.content_scripts.length).to.equal(actualManifest.content_scripts.length)
})
})