| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 | 
							- diff --git a/src/bootstrap-window.js b/src/bootstrap-window.js
 
- index 0cc92ec..8ba8fb0 100644
 
- --- a/src/bootstrap-window.js
 
- +++ b/src/bootstrap-window.js
 
- @@ -24,6 +24,7 @@
 
-  	const bootstrapLib = bootstrap();
 
-  	const preloadGlobals = sandboxGlobals();
 
-  	const safeProcess = preloadGlobals.process;
 
- +	const useCustomProtocol = safeProcess.sandboxed;
 
-  
 
-  	/**
 
-  	 * @typedef {import('./vs/base/parts/sandbox/common/sandboxTypes').ISandboxConfiguration} ISandboxConfiguration
 
- @@ -107,9 +108,9 @@
 
-  		window['MonacoEnvironment'] = {};
 
-  
 
-  		const loaderConfig = {
 
- -			baseUrl: `${bootstrapLib.fileUriFromPath(configuration.appRoot, { isWindows: safeProcess.platform === 'win32', scheme: 'vscode-file', fallbackAuthority: 'vscode-app' })}/out`,
 
- +			baseUrl: `${bootstrapLib.fileUriFromPath(configuration.appRoot, { isWindows: safeProcess.platform === 'win32' })}/out`,
 
-  			'vs/nls': nlsConfig,
 
- -			preferScriptTags: true
 
- +			preferScriptTags: useCustomProtocol
 
-  		};
 
-  
 
-  		// use a trusted types policy when loading via script tags
 
- @@ -143,6 +144,14 @@
 
-  			loaderConfig.amdModulesPattern = /^vs\//;
 
-  		}
 
-  
 
- +		// Cached data config (node.js loading only)
 
- +		if (!useCustomProtocol && configuration.codeCachePath) {
 
- +			loaderConfig.nodeCachedData = {
 
- +				path: configuration.codeCachePath,
 
- +				seed: modulePaths.join('')
 
- +			};
 
- +		}
 
- +
 
-  		// Signal before require.config()
 
-  		if (typeof options?.beforeLoaderConfig === 'function') {
 
-  			options.beforeLoaderConfig(loaderConfig);
 
- diff --git a/src/vs/base/common/network.ts b/src/vs/base/common/network.ts
 
- index 41a3fe9..bbb06e3 100644
 
- --- a/src/vs/base/common/network.ts
 
- +++ b/src/vs/base/common/network.ts
 
- @@ -166,16 +166,7 @@ class FileAccessImpl {
 
-  		}
 
-  
 
-  		// Convert to `vscode-file` resource..
 
- -		if (
 
- -			// ...only ever for `file` resources
 
- -			uri.scheme === Schemas.file &&
 
- -			(
 
- -				// ...and we run in native environments
 
- -				platform.isNative ||
 
- -				// ...or web worker extensions on desktop
 
- -				(typeof platform.globals.importScripts === 'function' && platform.globals.origin === `${Schemas.vscodeFileResource}://${FileAccessImpl.FALLBACK_AUTHORITY}`)
 
- -			)
 
- -		) {
 
- +		if (uri.scheme === Schemas.file && typeof platform.globals.importScripts === 'function' && platform.globals.origin === `${Schemas.vscodeFileResource}://${FileAccessImpl.FALLBACK_AUTHORITY}`) {
 
-  			return uri.with({
 
-  				scheme: Schemas.vscodeFileResource,
 
-  				// We need to provide an authority here so that it can serve
 
- diff --git a/src/vs/platform/protocol/electron-main/protocolMainService.ts b/src/vs/platform/protocol/electron-main/protocolMainService.ts
 
- index bde08d8..3f09ad1 100644
 
- --- a/src/vs/platform/protocol/electron-main/protocolMainService.ts
 
- +++ b/src/vs/platform/protocol/electron-main/protocolMainService.ts
 
- @@ -72,9 +72,24 @@ export class ProtocolMainService extends Disposable implements IProtocolMainServ
 
-  	//#region file://
 
-  
 
-  	private handleFileRequest(request: Electron.ProtocolRequest, callback: ProtocolCallback) {
 
- -		const uri = URI.parse(request.url);
 
- +		const fileUri = URI.parse(request.url);
 
- +
 
- +		// first check by validRoots
 
- +		if (this.validRoots.findSubstr(fileUri)) {
 
- +			return callback({
 
- +				path: fileUri.fsPath
 
- +			});
 
- +		}
 
-  
 
- -		this.logService.error(`Refused to load resource ${uri.fsPath} from ${Schemas.file}: protocol (original URL: ${request.url})`);
 
- +		// then check by validExtensions
 
- +		if (this.validExtensions.has(extname(fileUri))) {
 
- +			return callback({
 
- +				path: fileUri.fsPath
 
- +			});
 
- +		}
 
- +
 
- +		// finally block to load the resource
 
- +		this.logService.error(`${Schemas.file}: Refused to load resource ${fileUri.fsPath} from ${Schemas.file}: protocol (original URL: ${request.url})`);
 
-  
 
-  		return callback({ error: -3 /* ABORTED */ });
 
-  	}
 
- diff --git a/src/vs/workbench/services/timer/electron-sandbox/timerService.ts b/src/vs/workbench/services/timer/electron-sandbox/timerService.ts
 
- index 7cae207..1c54ac9 100644
 
- --- a/src/vs/workbench/services/timer/electron-sandbox/timerService.ts
 
- +++ b/src/vs/workbench/services/timer/electron-sandbox/timerService.ts
 
- @@ -19,7 +19,7 @@ import { process } from 'vs/base/parts/sandbox/electron-sandbox/globals';
 
-  import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
 
-  import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService';
 
-  import { IProductService } from 'vs/platform/product/common/productService';
 
- -import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage';
 
- +import { IStorageService } from 'vs/platform/storage/common/storage';
 
-  
 
-  export class TimerService extends AbstractTimerService {
 
-  
 
- @@ -91,24 +91,23 @@ registerSingleton(ITimerService, TimerService);
 
-  
 
-  //#region cached data logic
 
-  
 
- -const lastRunningCommitStorageKey = 'perf/lastRunningCommit';
 
- -let _didUseCachedData: boolean | undefined = undefined;
 
- -
 
-  export function didUseCachedData(productService: IProductService, storageService: IStorageService, environmentService: INativeWorkbenchEnvironmentService): boolean {
 
- -	// browser code loading: only a guess based on
 
- -	// this being the first start with the commit
 
- -	// or subsequent
 
- -	if (typeof _didUseCachedData !== 'boolean') {
 
- -		if (!environmentService.configuration.codeCachePath || !productService.commit) {
 
- -			_didUseCachedData = false; // we only produce cached data whith commit and code cache path
 
- -		} else if (storageService.get(lastRunningCommitStorageKey, StorageScope.GLOBAL) === productService.commit) {
 
- -			_didUseCachedData = true; // subsequent start on same commit, assume cached data is there
 
- -		} else {
 
- -			storageService.store(lastRunningCommitStorageKey, productService.commit, StorageScope.GLOBAL, StorageTarget.MACHINE);
 
- -			_didUseCachedData = false; // first time start on commit, assume cached data is not yet there
 
- +	if (!Boolean((<any>window).require.getConfig().nodeCachedData)) {
 
- +		return false;
 
- +	}
 
- +	// There are loader events that signal if cached data was missing, rejected,
 
- +	// or used. The former two mean no cached data.
 
- +	let cachedDataFound = 0;
 
- +	for (const event of require.getStats()) {
 
- +		switch (event.type) {
 
- +			case LoaderEventType.CachedDataRejected:
 
- +				return false;
 
- +			case LoaderEventType.CachedDataFound:
 
- +				cachedDataFound += 1;
 
- +				break;
 
-  		}
 
-  	}
 
- -	return _didUseCachedData;
 
- +	return cachedDataFound > 0;
 
-  }
 
-  
 
-  //#endregion
 
 
  |