fix: unexpected openExternal dialog on macOS Tahoe (#48517)

fix: unexpected openExternal dialog on macOS Tahoe

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
This commit is contained in:
trop[bot]
2025-10-13 10:13:53 +02:00
committed by GitHub
parent e03891eec7
commit 5b32b7b4f3
2 changed files with 11 additions and 0 deletions

View File

@@ -148,6 +148,12 @@ void OpenExternal(const GURL& url,
return;
}
// Check this to prevent system dialog from popping up on macOS Tahoe.
if (![[NSWorkspace sharedWorkspace] URLForApplicationToOpenURL:ns_url]) {
std::move(callback).Run("No application found to open URL");
return;
}
NSWorkspaceOpenConfiguration* configuration =
[NSWorkspaceOpenConfiguration configuration];
configuration.activates = options.activate;

View File

@@ -82,6 +82,11 @@ describe('shell module', () => {
]);
});
ifit(process.platform === 'darwin')('throws when there is no application registered to open the URL', async () => {
const url = `unknownscheme-${Date.now()}://test`;
await expect(shell.openExternal(url)).to.eventually.be.rejectedWith(/No application found to open URL/);
});
it('opens an external link in the renderer', async () => {
const { url, requestReceived } = await urlOpened();
const w = new BrowserWindow({ show: false, webPreferences: { sandbox: false, contextIsolation: false, nodeIntegration: true } });