chore: bump chromium to 138.0.7204.23 (37-x-y) (#47455)

* chore: bump chromium in DEPS to 138.0.7204.23

* chore: update patches

* test: fixup api-desktop-capturer-spec.ts for linux

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
This commit is contained in:
electron-roller[bot]
2025-06-17 11:38:13 -04:00
committed by GitHub
parent 03c32ba3be
commit 5bd18aac95
22 changed files with 97 additions and 117 deletions

View File

@@ -8,18 +8,16 @@ import { setTimeout } from 'node:timers/promises';
import { ifdescribe, ifit } from './lib/spec-helpers';
import { closeAllWindows } from './lib/window-helpers';
function getSourceTypes (): ('window' | 'screen')[] {
if (process.platform === 'linux') {
return ['screen'];
}
return ['window', 'screen'];
}
ifdescribe(!process.arch.includes('arm') && process.platform !== 'win32')('desktopCapturer', () => {
let w: BrowserWindow;
before(async () => {
w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true, contextIsolation: false } });
await w.loadURL('about:blank');
});
after(closeAllWindows);
it('should return a non-empty array of sources', async () => {
const sources = await desktopCapturer.getSources({ types: ['window', 'screen'] });
const sources = await desktopCapturer.getSources({ types: getSourceTypes() });
expect(sources).to.be.an('array').that.is.not.empty();
});
@@ -29,14 +27,15 @@ ifdescribe(!process.arch.includes('arm') && process.platform !== 'win32')('deskt
});
it('does not throw an error when called more than once (regression)', async () => {
const sources1 = await desktopCapturer.getSources({ types: ['window', 'screen'] });
const sources1 = await desktopCapturer.getSources({ types: getSourceTypes() });
expect(sources1).to.be.an('array').that.is.not.empty();
const sources2 = await desktopCapturer.getSources({ types: ['window', 'screen'] });
const sources2 = await desktopCapturer.getSources({ types: getSourceTypes() });
expect(sources2).to.be.an('array').that.is.not.empty();
});
it('responds to subsequent calls of different options', async () => {
// Linux doesn't return any window sources.
ifit(process.platform !== 'linux')('responds to subsequent calls of different options', async () => {
const promise1 = desktopCapturer.getSources({ types: ['window'] });
await expect(promise1).to.eventually.be.fulfilled();
@@ -46,11 +45,11 @@ ifdescribe(!process.arch.includes('arm') && process.platform !== 'win32')('deskt
// Linux doesn't return any window sources.
ifit(process.platform !== 'linux')('returns an empty display_id for window sources', async () => {
const w = new BrowserWindow({ width: 200, height: 200 });
await w.loadURL('about:blank');
const w2 = new BrowserWindow({ width: 200, height: 200 });
await w2.loadURL('about:blank');
const sources = await desktopCapturer.getSources({ types: ['window'] });
w.destroy();
w2.destroy();
expect(sources).to.be.an('array').that.is.not.empty();
for (const { display_id: displayId } of sources) {
expect(displayId).to.be.a('string').and.be.empty();
@@ -74,7 +73,7 @@ ifdescribe(!process.arch.includes('arm') && process.platform !== 'win32')('deskt
await wShown;
const isNonEmpties: boolean[] = (await desktopCapturer.getSources({
types: ['window', 'screen'],
types: getSourceTypes(),
thumbnailSize: { width: 100, height: 100 }
})).map(s => s.thumbnail.constructor.name === 'NativeImage' && !s.thumbnail.isEmpty());
@@ -90,7 +89,7 @@ ifdescribe(!process.arch.includes('arm') && process.platform !== 'win32')('deskt
await wShown;
const isEmpties: boolean[] = (await desktopCapturer.getSources({
types: ['window', 'screen'],
types: getSourceTypes(),
thumbnailSize: { width: 0, height: 0 }
})).map(s => s.thumbnail.constructor.name === 'NativeImage' && s.thumbnail.isEmpty());
@@ -99,29 +98,22 @@ ifdescribe(!process.arch.includes('arm') && process.platform !== 'win32')('deskt
expect(isEmpties.every(e => e === true)).to.be.true();
});
it('getMediaSourceId should match DesktopCapturerSource.id', async function () {
const w = new BrowserWindow({ show: false, width: 100, height: 100, webPreferences: { contextIsolation: false } });
const wShown = once(w, 'show');
const wFocused = once(w, 'focus');
w.show();
w.focus();
// Linux doesn't return any window sources.
ifit(process.platform !== 'linux')('getMediaSourceId should match DesktopCapturerSource.id', async function () {
const w2 = new BrowserWindow({ show: false, width: 100, height: 100, webPreferences: { contextIsolation: false } });
const wShown = once(w2, 'show');
const wFocused = once(w2, 'focus');
w2.show();
w2.focus();
await wShown;
await wFocused;
const mediaSourceId = w.getMediaSourceId();
const mediaSourceId = w2.getMediaSourceId();
const sources = await desktopCapturer.getSources({
types: ['window'],
thumbnailSize: { width: 0, height: 0 }
});
w.destroy();
// TODO(julien.isorce): investigate why |sources| is empty on the linux
// bots while it is not on my workstation, as expected, with and without
// the --ci parameter.
if (process.platform === 'linux' && sources.length === 0) {
this.skip();
return;
}
w2.destroy();
expect(sources).to.be.an('array').that.is.not.empty();
const foundSource = sources.find((source) => {
@@ -130,18 +122,19 @@ ifdescribe(!process.arch.includes('arm') && process.platform !== 'win32')('deskt
expect(mediaSourceId).to.equal(foundSource!.id);
});
it('getSources should not incorrectly duplicate window_id', async function () {
const w = new BrowserWindow({ show: false, width: 100, height: 100, webPreferences: { contextIsolation: false } });
const wShown = once(w, 'show');
const wFocused = once(w, 'focus');
w.show();
w.focus();
// Linux doesn't return any window sources.
ifit(process.platform !== 'linux')('getSources should not incorrectly duplicate window_id', async function () {
const w2 = new BrowserWindow({ show: false, width: 100, height: 100, webPreferences: { contextIsolation: false } });
const wShown = once(w2, 'show');
const wFocused = once(w2, 'focus');
w2.show();
w2.focus();
await wShown;
await wFocused;
// ensure window_id isn't duplicated in getMediaSourceId,
// which uses a different method than getSources
const mediaSourceId = w.getMediaSourceId();
const mediaSourceId = w2.getMediaSourceId();
const ids = mediaSourceId.split(':');
expect(ids[1]).to.not.equal(ids[2]);
@@ -149,15 +142,7 @@ ifdescribe(!process.arch.includes('arm') && process.platform !== 'win32')('deskt
types: ['window'],
thumbnailSize: { width: 0, height: 0 }
});
w.destroy();
// TODO(julien.isorce): investigate why |sources| is empty on the linux
// bots while it is not on my workstation, as expected, with and without
// the --ci parameter.
if (process.platform === 'linux' && sources.length === 0) {
this.skip();
return;
}
w2.destroy();
expect(sources).to.be.an('array').that.is.not.empty();
for (const source of sources) {
@@ -168,19 +153,23 @@ ifdescribe(!process.arch.includes('arm') && process.platform !== 'win32')('deskt
// Regression test - see https://github.com/electron/electron/issues/43002
it('does not affect window resizable state', async () => {
const w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true, contextIsolation: false } });
await w.loadURL('about:blank');
w.resizable = false;
const wShown = once(w, 'show');
w.show();
await wShown;
const sources = await desktopCapturer.getSources({ types: ['window', 'screen'] });
const sources = await desktopCapturer.getSources({ types: getSourceTypes() });
expect(sources).to.be.an('array').that.is.not.empty();
expect(w.resizable).to.be.false();
await closeAllWindows();
});
it('moveAbove should move the window at the requested place', async function () {
// Linux doesn't return any window sources.
ifit(process.platform !== 'linux')('moveAbove should move the window at the requested place', async function () {
// DesktopCapturer.getSources() is guaranteed to return in the correct
// z-order from foreground to background.
const MAX_WIN = 4;
@@ -220,15 +209,6 @@ ifdescribe(!process.arch.includes('arm') && process.platform !== 'win32')('deskt
thumbnailSize: { width: 0, height: 0 }
});
// TODO(julien.isorce): investigate why |sources| is empty on the linux
// bots while it is not on my workstation, as expected, with and without
// the --ci parameter.
if (process.platform === 'linux' && sources.length === 0) {
destroyWindows();
this.skip();
return;
}
expect(sources).to.be.an('array').that.is.not.empty();
expect(sources.length).to.gte(MAX_WIN);