feat(extensions): add chrome.i18n API (#22455)
* feat(extensions): implement chrome.i18n API * refactor(extensions): use forward declaration for ScriptExecutor * fix(extensions): add message filter to handle i18n GetMessageBundle * test(extensions): add chrome.i18n tests * fix(extensions): message filter lint error * fix: remove exclusive test * fix(extensions): format api feature arrays Co-Authored-By: Jeremy Apthorp <nornagon@nornagon.net> * fix(extensions): uncomment chrome.i18n usage in old extensions test Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
This commit is contained in:
parent
1e9fa204ee
commit
d6701ff435
18 changed files with 502 additions and 3 deletions
|
@ -1,5 +1,5 @@
|
|||
import { expect } from 'chai'
|
||||
import { app, session, BrowserWindow, ipcMain, WebContents } from 'electron'
|
||||
import { app, session, BrowserWindow, ipcMain, WebContents, Extension } from 'electron'
|
||||
import { closeAllWindows, closeWindow } from './window-helpers'
|
||||
import * as http from 'http'
|
||||
import { AddressInfo } from 'net'
|
||||
|
@ -103,6 +103,32 @@ ifdescribe(process.electronBinding('features').isExtensionsEnabled())('chrome ex
|
|||
await expect(customSession.loadExtension(path.join(fixtures, 'extensions', 'red-bg'))).to.eventually.be.rejectedWith('Extensions cannot be loaded in a temporary session')
|
||||
})
|
||||
|
||||
describe('chrome.i18n', () => {
|
||||
let w: BrowserWindow
|
||||
let extension: Extension
|
||||
const exec = async (name: string) => {
|
||||
const p = emittedOnce(ipcMain, 'success')
|
||||
await w.webContents.executeJavaScript(`exec('${name}')`)
|
||||
const [, result] = await p
|
||||
return result
|
||||
}
|
||||
beforeEach(async () => {
|
||||
const customSession = session.fromPartition(`persist:${require('uuid').v4()}`)
|
||||
extension = await customSession.loadExtension(path.join(fixtures, 'extensions', 'chrome-i18n'))
|
||||
w = new BrowserWindow({ show: false, webPreferences: { session: customSession, nodeIntegration: true } })
|
||||
await w.loadURL(url)
|
||||
})
|
||||
it('getAcceptLanguages()', async () => {
|
||||
const result = await exec('getAcceptLanguages')
|
||||
expect(result).to.be.an('array').and.deep.equal(['en-US'])
|
||||
})
|
||||
it('getMessage()', async () => {
|
||||
const result = await exec('getMessage')
|
||||
expect(result.id).to.be.a('string').and.equal(extension.id)
|
||||
expect(result.name).to.be.a('string').and.equal('chrome-i18n')
|
||||
})
|
||||
})
|
||||
|
||||
describe('chrome.runtime', () => {
|
||||
let content: any
|
||||
before(async () => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue