mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
test: improve test coverage of pdf viewer
This commit is contained in:
@@ -1421,20 +1421,46 @@ describe('chromium features', () => {
|
||||
protocol: 'file',
|
||||
slashes: true
|
||||
});
|
||||
const redPdfSource = url.format({
|
||||
pathname: path.join(__dirname, 'fixtures', 'red.pdf').replace(/\\/g, '/'),
|
||||
protocol: 'file',
|
||||
slashes: true
|
||||
});
|
||||
|
||||
async function ensurePdfLoaded (webContents: WebContents) {
|
||||
const result = await webContents.executeJavaScript(`new Promise(resolve => {
|
||||
window.addEventListener('message', event => {
|
||||
if (event.origin !==
|
||||
'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai') {
|
||||
return;
|
||||
}
|
||||
if (event.data.type === 'documentLoaded') {
|
||||
resolve(event.data.load_state === 'success');
|
||||
}
|
||||
});
|
||||
document.getElementsByTagName('embed')[0].postMessage({type: 'initialize'});
|
||||
})`);
|
||||
expect(result).to.be.true();
|
||||
}
|
||||
|
||||
it('successfully loads a PDF file', async () => {
|
||||
const w = new BrowserWindow({ show: false });
|
||||
|
||||
w.loadURL(pdfSource);
|
||||
await emittedOnce(w.webContents, 'did-finish-load');
|
||||
await ensurePdfLoaded(w.webContents);
|
||||
});
|
||||
|
||||
it('opens when loading a pdf resource as top level navigation', async () => {
|
||||
const w = new BrowserWindow({ show: false });
|
||||
w.loadURL(pdfSource);
|
||||
const [, contents] = await emittedOnce(app, 'web-contents-created');
|
||||
await emittedOnce(contents, 'did-navigate');
|
||||
expect(contents.getURL()).to.equal('chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/index.html');
|
||||
it('renders a PDF', async () => {
|
||||
const w = new BrowserWindow({ show: false, width: 1000, height: 1000 });
|
||||
|
||||
w.loadURL(redPdfSource);
|
||||
await ensurePdfLoaded(w.webContents);
|
||||
const image = await w.webContents.capturePage();
|
||||
const bitmap = image.getBitmap();
|
||||
const middleB = bitmap[(500 * 1000 + 500) * 4];
|
||||
const middleG = bitmap[(500 * 1000 + 500) * 4 + 1];
|
||||
const middleR = bitmap[(500 * 1000 + 500) * 4 + 2];
|
||||
expect({ r: middleR, g: middleG, b: middleB }).to.deep.equal({ r: 255, g: 0, b: 0 });
|
||||
});
|
||||
|
||||
it('opens when loading a pdf resource in a iframe', async () => {
|
||||
@@ -1443,6 +1469,8 @@ describe('chromium features', () => {
|
||||
const [, contents] = await emittedOnce(app, 'web-contents-created');
|
||||
await emittedOnce(contents, 'did-navigate');
|
||||
expect(contents.getURL()).to.equal('chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/index.html');
|
||||
// TODO(nornagon): this doesn't actually check that the pdf in the iframe
|
||||
// loaded.
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
BIN
spec-main/fixtures/red.pdf
Normal file
BIN
spec-main/fixtures/red.pdf
Normal file
Binary file not shown.
Reference in New Issue
Block a user