electron/spec/fixtures/extensions/chrome-i18n/v2/main.js

34 lines
848 B
JavaScript
Raw Normal View History

/* global chrome */
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 });
});