提交 577105a7 编写于 作者: M Matt Bierner 提交者: kieferrm

Disable svg loading in the main render process

上级 b1173ffe
......@@ -10,6 +10,7 @@ import * as fs from 'original-fs';
import * as nls from 'vs/nls';
import * as arrays from 'vs/base/common/arrays';
import { assign, mixin } from 'vs/base/common/objects';
import URI from 'vs/base/common/uri';
import { IBackupMainService } from 'vs/platform/backup/common/backup';
import { IEnvironmentService, ParsedArgs } from 'vs/platform/environment/common/environment';
import { IStorageService } from 'vs/platform/storage/node/storage';
......@@ -30,6 +31,7 @@ import { IHistoryMainService } from "vs/platform/history/electron-main/historyMa
import { IProcessEnvironment, isLinux, isMacintosh, isWindows } from "vs/base/common/platform";
import { TPromise } from "vs/base/common/winjs.base";
enum WindowError {
UNRESPONSIVE,
CRASHED
......@@ -796,6 +798,25 @@ export class WindowsManager implements IWindowsMainService {
codeWindow.win.on('unresponsive', () => this.onWindowError(codeWindow, WindowError.UNRESPONSIVE));
codeWindow.win.on('closed', () => this.onWindowClosed(codeWindow));
// Prevent loading on svgs in main renderer
codeWindow.win.webContents.session.webRequest.onBeforeRequest((details, callback) => {
if (details.url.indexOf('.svg') > 0) {
const uri = URI.parse(details.url);
if (uri && !uri.scheme.match(/file/i) && (uri.path as any).endsWith('.svg')) {
return callback({ cancel: true });
}
}
return callback({});
});
codeWindow.win.webContents.session.webRequest.onHeadersReceived((details, callback) => {
const contentType: string[] = details.responseHeaders['content-type'] as any;
if (contentType && Array.isArray(contentType) && contentType.some(x => x.toLowerCase().indexOf('image/svg') >= 0)) {
return callback({ cancel: true });
}
return callback({});
});
// Lifecycle
this.lifecycleService.registerWindow(codeWindow);
}
......
......@@ -75,6 +75,7 @@ export default class Webview {
this._webview.setAttribute('disableguestresize', '');
this._webview.setAttribute('webpreferences', 'contextIsolation=yes');
this._webview.setAttribute('partition', 'webview');
this._webview.preload = require.toUrl('./webview-pre.js');
this._webview.src = require.toUrl('./webview.html');
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册