Browser favicons: better error handling & data URL support (#305244)

This commit is contained in:
Kyle Cutler
2026-03-26 14:01:23 -07:00
committed by GitHub
parent 08c09ae70d
commit 82287d80de

View File

@@ -169,6 +169,9 @@ export class BrowserView extends Disposable implements ICDPTarget {
for (const url of favicons) {
if (!this._faviconRequestCache.has(url)) {
this._faviconRequestCache.set(url, (async () => {
if (url.startsWith('data:image/')) {
return url;
}
const response = await webContents.session.fetch(url, {
cache: 'force-cache'
});
@@ -176,6 +179,9 @@ export class BrowserView extends Disposable implements ICDPTarget {
throw new Error(`Failed to fetch favicon: ${response.status} ${response.statusText}`);
}
const type = await response.headers.get('content-type');
if (!type?.startsWith('image/')) {
throw new Error(`Favicon is not an image: ${type}`);
}
const buffer = await response.arrayBuffer();
return `data:${type};base64,${Buffer.from(buffer).toString('base64')}`;