test: worker should be able to load asar files (#28858)

This commit is contained in:
Cheng Zhao 2021-04-28 01:07:05 +09:00 коммит произвёл GitHub
Родитель 72092c2312
Коммит b97b973306
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
4 изменённых файлов: 58 добавлений и 0 удалений

Просмотреть файл

@ -1,5 +1,6 @@
import { expect } from 'chai';
import * as path from 'path';
import * as url from 'url';
import { BrowserWindow, ipcMain } from 'electron/main';
import { closeAllWindows } from './window-helpers';
import { emittedOnce } from './events-helpers';
@ -79,4 +80,32 @@ describe('asar package', () => {
}
});
});
describe('worker', () => {
it('Worker can load asar file', async () => {
const w = new BrowserWindow({ show: false });
await w.loadFile(path.join(fixtures, 'workers', 'load_worker.html'));
const workerUrl = url.format({
pathname: path.resolve(fixtures, 'workers', 'workers.asar', 'worker.js').replace(/\\/g, '/'),
protocol: 'file',
slashes: true
});
const result = await w.webContents.executeJavaScript(`loadWorker('${workerUrl}')`);
expect(result).to.equal('success');
});
it('SharedWorker can load asar file', async () => {
const w = new BrowserWindow({ show: false });
await w.loadFile(path.join(fixtures, 'workers', 'load_shared_worker.html'));
const workerUrl = url.format({
pathname: path.resolve(fixtures, 'workers', 'workers.asar', 'shared_worker.js').replace(/\\/g, '/'),
protocol: 'file',
slashes: true
});
const result = await w.webContents.executeJavaScript(`loadSharedWorker('${workerUrl}')`);
expect(result).to.equal('success');
});
});
});

15
spec/fixtures/workers/load_shared_worker.html поставляемый Normal file
Просмотреть файл

@ -0,0 +1,15 @@
<script>
function loadSharedWorker(url) {
return new Promise((resolve) => {
try {
const w = new SharedWorker(url);
w.onerror = () => resolve('failed');
w.port.onmessage = (m) => resolve(m.data);
w.port.postMessage('success');
} catch {
resolve('failed');
}
});
}
</script>

14
spec/fixtures/workers/load_worker.html поставляемый Normal file
Просмотреть файл

@ -0,0 +1,14 @@
<script>
function loadWorker(url) {
return new Promise((resolve) => {
try {
const w = new Worker(url);
w.onerror = () => resolve('failed');
w.onmessage = (m) => resolve(m.data);
w.postMessage('success');
} catch {
resolve('failed');
}
});
}
</script>

Двоичные данные
spec/fixtures/workers/workers.asar поставляемый Normal file

Двоичный файл не отображается.