mirror of
https://github.com/electron/electron.git
synced 2026-05-02 03:00:22 -04:00
test: cover window and browser values of preferredDisplaySurface
The request-object test only asserted the 'monitor' case, leaving 'window' and 'browser' unexercised. Since PreferredDisplaySurfaceToString has a default branch that coerces unknown enum values to 'none', a typo swapping the 'window' or 'browser' arms would ship silently. Parameterize the existing test over all three non-default values. Notes: none
This commit is contained in:
@@ -62,28 +62,29 @@ describe('setDisplayMediaRequestHandler', () => {
|
||||
expect(ok).to.be.true(message);
|
||||
});
|
||||
|
||||
it('includes preferredDisplaySurface in the request object', async () => {
|
||||
const ses = session.fromPartition('' + Math.random());
|
||||
let mediaRequest: any = null;
|
||||
ses.setDisplayMediaRequestHandler((request, callback) => {
|
||||
mediaRequest = request;
|
||||
callback({ video: request.frame });
|
||||
for (const surface of ['monitor', 'window', 'browser'] as const) {
|
||||
it(`includes preferredDisplaySurface='${surface}' in the request object`, async () => {
|
||||
const ses = session.fromPartition('' + Math.random());
|
||||
let mediaRequest: any = null;
|
||||
ses.setDisplayMediaRequestHandler((request, callback) => {
|
||||
mediaRequest = request;
|
||||
callback({ video: request.frame });
|
||||
});
|
||||
const w = new BrowserWindow({ show: false, webPreferences: { session: ses } });
|
||||
await w.loadURL(serverUrl);
|
||||
const { ok, message } = await w.webContents.executeJavaScript(
|
||||
`
|
||||
navigator.mediaDevices.getDisplayMedia({
|
||||
video: { displaySurface: '${surface}' },
|
||||
audio: false,
|
||||
}).then(x => ({ok: x instanceof MediaStream}), e => ({ok: false, message: e.message}))
|
||||
`,
|
||||
true
|
||||
);
|
||||
expect(ok).to.be.true(message);
|
||||
expect(mediaRequest.preferredDisplaySurface).to.equal(surface);
|
||||
});
|
||||
const w = new BrowserWindow({ show: false, webPreferences: { session: ses } });
|
||||
await w.loadURL(serverUrl);
|
||||
const { ok, message } = await w.webContents.executeJavaScript(
|
||||
`
|
||||
navigator.mediaDevices.getDisplayMedia({
|
||||
video: { displaySurface: 'monitor' },
|
||||
audio: false,
|
||||
}).then(x => ({ok: x instanceof MediaStream}), e => ({ok: false, message: e.message}))
|
||||
`,
|
||||
true
|
||||
);
|
||||
expect(ok).to.be.true(message);
|
||||
expect(mediaRequest.preferredDisplaySurface).to.be.a('string');
|
||||
expect(mediaRequest.preferredDisplaySurface).to.equal('monitor');
|
||||
});
|
||||
}
|
||||
|
||||
it('defaults preferredDisplaySurface to none when not specified', async () => {
|
||||
const ses = session.fromPartition('' + Math.random());
|
||||
|
||||
Reference in New Issue
Block a user