Skip to content

Commit

Permalink
Merge pull request #4678 from Tyriar/vscode189753
Browse files Browse the repository at this point in the history
Workaround crash that can happen in Electron/Chromium
  • Loading branch information
Tyriar committed Aug 15, 2023
2 parents c908eee + 2ca0ccb commit 2eca26b
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
13 changes: 9 additions & 4 deletions src/browser/renderer/dom/StyleSheet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
* @license MIT
*/

import { isElectron } from 'common/Platform';

export interface IStyleSheet {
dispose: () => void;
setCss: (value: string) => void;
Expand Down Expand Up @@ -37,9 +39,12 @@ const createStyleElement = (parent: HTMLElement): IStyleSheet => {
};

export const createStyle = (parent: HTMLElement): IStyleSheet => {
try {
return createCssStyleSheet(parent.ownerDocument);
} catch {
return createStyleElement(parent);
// The combination of the CSP workaround and the DOM renderer can trigger a crash in electron
// https://github.com/microsoft/vscode/issues/189753
if (!isElectron) {
try {
return createCssStyleSheet(parent.ownerDocument);
} catch { /* Fall through */ }
}
return createStyleElement(parent);
};
1 change: 1 addition & 0 deletions src/common/Platform.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export const isNode = (typeof navigator === 'undefined') ? true : false;
const userAgent = (isNode) ? 'node' : navigator.userAgent;
const platform = (isNode) ? 'node' : navigator.platform;

export const isElectron = userAgent.includes('Electron');
export const isFirefox = userAgent.includes('Firefox');
export const isLegacyEdge = userAgent.includes('Edge');
export const isSafari = /^((?!chrome|android).)*safari/i.test(userAgent);
Expand Down

0 comments on commit 2eca26b

Please sign in to comment.