electron/spec-main/fixtures/extensions/chrome-i18n/main.js
John Kleinschmidt d6701ff435
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>
2020-03-05 09:56:21 -05:00

33 lines
834 B
JavaScript

/* eslint-disable */
function evalInMainWorld(fn) {
const script = document.createElement('script')
script.textContent = `((${fn})())`
document.documentElement.appendChild(script)
}
async function exec(name) {
let result
switch (name) {
case 'getMessage':
result = {
id: chrome.i18n.getMessage('@@extension_id'),
name: chrome.i18n.getMessage('extName'),
}
break
case 'getAcceptLanguages':
result = await new Promise(resolve => chrome.i18n.getAcceptLanguages(resolve))
break
}
const funcStr = `() => { require('electron').ipcRenderer.send('success', ${JSON.stringify(result)}) }`
evalInMainWorld(funcStr)
}
window.addEventListener('message', event => {
exec(event.data.name)
})
evalInMainWorld(() => {
window.exec = name => window.postMessage({ name })
})