fix: disable kWindowCaptureMacV2 for desktopCapturer (#30507)
This commit is contained in:
parent
fc9a197f6c
commit
a11a234eac
2 changed files with 42 additions and 0 deletions
|
@ -48,6 +48,12 @@ void InitializeFeatureList() {
|
||||||
// an empty suggestions list to be returned
|
// an empty suggestions list to be returned
|
||||||
disable_features +=
|
disable_features +=
|
||||||
std::string(",") + spellcheck::kWinRetrieveSuggestionsOnlyOnDemand.name;
|
std::string(",") + spellcheck::kWinRetrieveSuggestionsOnlyOnDemand.name;
|
||||||
|
#endif
|
||||||
|
#if defined(OS_MAC)
|
||||||
|
// Disable kWindowCaptureMacV2, which causes the wrong window id to
|
||||||
|
// be returned (this has been disabled in upstream Chromium here):
|
||||||
|
// https://chromium-review.googlesource.com/c/chromium/src/+/3069272
|
||||||
|
disable_features += std::string(",") + features::kWindowCaptureMacV2.name;
|
||||||
#endif
|
#endif
|
||||||
base::FeatureList::InitializeInstance(enable_features, disable_features);
|
base::FeatureList::InitializeInstance(enable_features, disable_features);
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,6 +146,42 @@ ifdescribe(!process.arch.includes('arm') && process.platform !== 'win32')('deskt
|
||||||
expect(mediaSourceId).to.equal(foundSource!.id);
|
expect(mediaSourceId).to.equal(foundSource!.id);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('getSources should not incorrectly duplicate window_id', async () => {
|
||||||
|
const w = new BrowserWindow({ show: false, width: 100, height: 100, webPreferences: { contextIsolation: false } });
|
||||||
|
const wShown = emittedOnce(w, 'show');
|
||||||
|
const wFocused = emittedOnce(w, 'focus');
|
||||||
|
w.show();
|
||||||
|
w.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 ids = mediaSourceId.split(':');
|
||||||
|
expect(ids[1]).to.not.equal(ids[2]);
|
||||||
|
|
||||||
|
const sources = await 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) {
|
||||||
|
it.skip('desktopCapturer.getSources returned an empty source list');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(sources).to.be.an('array').that.is.not.empty();
|
||||||
|
for (const source of sources) {
|
||||||
|
const sourceIds = source.id.split(':');
|
||||||
|
expect(sourceIds[1]).to.not.equal(sourceIds[2]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// TODO(deepak1556): currently fails on all ci, enable it after upgrade.
|
// TODO(deepak1556): currently fails on all ci, enable it after upgrade.
|
||||||
it.skip('moveAbove should move the window at the requested place', async () => {
|
it.skip('moveAbove should move the window at the requested place', async () => {
|
||||||
// DesktopCapturer.getSources() is guaranteed to return in the correct
|
// DesktopCapturer.getSources() is guaranteed to return in the correct
|
||||||
|
|
Loading…
Reference in a new issue