electron/spec/fixtures/no-proprietary-codecs.js

52 lines
1.3 KiB
JavaScript
Raw Normal View History

2017-03-29 23:30:04 +00:00
// Verifies that Electron cannot play a video that uses proprietary codecs
//
// This application should be run with the ffmpeg that does not include
// proprietary codecs to ensure Electron uses it instead of the version
// that does include proprietary codecs.
2020-03-20 20:28:31 +00:00
const { app, BrowserWindow, ipcMain } = require('electron');
const path = require('path');
2020-03-20 20:28:31 +00:00
const MEDIA_ERR_SRC_NOT_SUPPORTED = 4;
const FIVE_MINUTES = 5 * 60 * 1000;
2020-03-20 20:28:31 +00:00
let window;
app.whenReady().then(() => {
window = new BrowserWindow({
show: false,
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
2020-03-20 20:28:31 +00:00
});
window.webContents.on('render-process-gone', (event, details) => {
console.log(`WebContents crashed ${JSON.stringify(details)}`);
2020-03-20 20:28:31 +00:00
app.exit(1);
});
2020-03-20 20:28:31 +00:00
window.loadFile(path.resolve(__dirname, 'test.asar', 'video.asar', 'index.html'));
2017-03-30 21:39:48 +00:00
ipcMain.on('asar-video', (event, message, error) => {
if (message === 'ended') {
2020-03-20 20:28:31 +00:00
console.log('Video played, proprietary codecs are included');
app.exit(1);
return;
}
if (message === 'error' && error === MEDIA_ERR_SRC_NOT_SUPPORTED) {
2020-03-20 20:28:31 +00:00
app.exit(0);
return;
}
2020-03-20 20:28:31 +00:00
console.log(`Unexpected response from page: ${message} ${error}`);
app.exit(1);
});
2017-03-30 21:39:48 +00:00
setTimeout(() => {
2020-03-20 20:28:31 +00:00
console.log('No IPC message after 5 minutes');
app.exit(1);
}, FIVE_MINUTES);
});