mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-23 18:19:12 +01:00
Merge remote-tracking branch origin/main into feature/font-picker
This commit is contained in:
@@ -51,9 +51,8 @@ import { DiskFileSystemProvider } from '../../platform/files/node/diskFileSystem
|
||||
import { SyncDescriptor } from '../../platform/instantiation/common/descriptors.js';
|
||||
import { IInstantiationService, ServicesAccessor } from '../../platform/instantiation/common/instantiation.js';
|
||||
import { ServiceCollection } from '../../platform/instantiation/common/serviceCollection.js';
|
||||
import { IProcessMainService, IIssueMainService } from '../../platform/issue/common/issue.js';
|
||||
import { IssueMainService } from '../../platform/issue/electron-main/issueMainService.js';
|
||||
import { ProcessMainService } from '../../platform/issue/electron-main/processMainService.js';
|
||||
import { IProcessMainService } from '../../platform/process/common/process.js';
|
||||
import { ProcessMainService } from '../../platform/process/electron-main/processMainService.js';
|
||||
import { IKeyboardLayoutMainService, KeyboardLayoutMainService } from '../../platform/keyboardLayout/electron-main/keyboardLayoutMainService.js';
|
||||
import { ILaunchMainService, LaunchMainService } from '../../platform/launch/electron-main/launchMainService.js';
|
||||
import { ILifecycleMainService, LifecycleMainPhase, ShutdownReason } from '../../platform/lifecycle/electron-main/lifecycleMainService.js';
|
||||
@@ -103,7 +102,7 @@ import { ExtensionsScannerService } from '../../platform/extensionManagement/nod
|
||||
import { UserDataProfilesHandler } from '../../platform/userDataProfile/electron-main/userDataProfilesHandler.js';
|
||||
import { ProfileStorageChangesListenerChannel } from '../../platform/userDataProfile/electron-main/userDataProfileStorageIpc.js';
|
||||
import { Promises, RunOnceScheduler, runWhenGlobalIdle } from '../../base/common/async.js';
|
||||
import { resolveMachineId, resolveSqmId, resolvedevDeviceId } from '../../platform/telemetry/electron-main/telemetryUtils.js';
|
||||
import { resolveMachineId, resolveSqmId, resolvedevDeviceId, validatedevDeviceId } from '../../platform/telemetry/electron-main/telemetryUtils.js';
|
||||
import { ExtensionsProfileScannerService } from '../../platform/extensionManagement/node/extensionsProfileScannerService.js';
|
||||
import { LoggerChannel } from '../../platform/log/electron-main/logIpc.js';
|
||||
import { ILoggerMainService } from '../../platform/log/electron-main/loggerService.js';
|
||||
@@ -119,7 +118,6 @@ import { IAuxiliaryWindowsMainService } from '../../platform/auxiliaryWindow/ele
|
||||
import { AuxiliaryWindowsMainService } from '../../platform/auxiliaryWindow/electron-main/auxiliaryWindowsMainService.js';
|
||||
import { normalizeNFC } from '../../base/common/normalization.js';
|
||||
import { ICSSDevelopmentService, CSSDevelopmentService } from '../../platform/cssDev/node/cssDevService.js';
|
||||
import { ExtensionSignatureVerificationService, IExtensionSignatureVerificationService } from '../../platform/extensionManagement/node/extensionSignatureVerificationService.js';
|
||||
|
||||
/**
|
||||
* The main VS Code application. There will only ever be one instance,
|
||||
@@ -163,6 +161,7 @@ export class CodeApplication extends Disposable {
|
||||
// !!! DO NOT CHANGE without consulting the documentation !!!
|
||||
//
|
||||
|
||||
const isUrlFromWindow = (requestingUrl?: string | undefined) => requestingUrl?.startsWith(`${Schemas.vscodeFileResource}://${VSCODE_AUTHORITY}`);
|
||||
const isUrlFromWebview = (requestingUrl: string | undefined) => requestingUrl?.startsWith(`${Schemas.vscodeWebview}://`);
|
||||
|
||||
const allowedPermissionsInWebview = new Set([
|
||||
@@ -170,21 +169,42 @@ export class CodeApplication extends Disposable {
|
||||
'clipboard-sanitized-write',
|
||||
]);
|
||||
|
||||
<<<<<<< HEAD
|
||||
const allowedPermissionsDefault = new Set(['font-access', 'local-fonts']);
|
||||
=======
|
||||
const allowedPermissionsInCore = new Set([
|
||||
'media',
|
||||
'local-fonts',
|
||||
]);
|
||||
>>>>>>> origin/main
|
||||
|
||||
session.defaultSession.setPermissionRequestHandler((_webContents, permission, callback, details) => {
|
||||
if (isUrlFromWebview(details.requestingUrl)) {
|
||||
return callback(allowedPermissionsInWebview.has(permission));
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
return callback(allowedPermissionsDefault.has(permission));
|
||||
=======
|
||||
if (isUrlFromWindow(details.requestingUrl)) {
|
||||
return callback(allowedPermissionsInCore.has(permission));
|
||||
}
|
||||
return callback(false);
|
||||
>>>>>>> origin/main
|
||||
});
|
||||
|
||||
session.defaultSession.setPermissionCheckHandler((_webContents, permission, _origin, details) => {
|
||||
if (isUrlFromWebview(details.requestingUrl)) {
|
||||
return allowedPermissionsInWebview.has(permission);
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
return allowedPermissionsDefault.has(permission);
|
||||
=======
|
||||
if (isUrlFromWindow(details.requestingUrl)) {
|
||||
return allowedPermissionsInCore.has(permission);
|
||||
}
|
||||
return false;
|
||||
>>>>>>> origin/main
|
||||
});
|
||||
|
||||
//#endregion
|
||||
@@ -615,7 +635,14 @@ export class CodeApplication extends Disposable {
|
||||
|
||||
// Set lifecycle phase to `Eventually` after a short delay and when idle (min 2.5sec, max 5sec)
|
||||
const eventuallyPhaseScheduler = this._register(new RunOnceScheduler(() => {
|
||||
this._register(runWhenGlobalIdle(() => this.lifecycleMainService.phase = LifecycleMainPhase.Eventually, 2500));
|
||||
this._register(runWhenGlobalIdle(() => {
|
||||
|
||||
// Signal phase: eventually
|
||||
this.lifecycleMainService.phase = LifecycleMainPhase.Eventually;
|
||||
|
||||
// Eventually Post Open Window Tasks
|
||||
this.eventuallyAfterWindowOpen();
|
||||
}, 2500));
|
||||
}, 2500));
|
||||
eventuallyPhaseScheduler.schedule();
|
||||
}
|
||||
@@ -1014,9 +1041,6 @@ export class CodeApplication extends Disposable {
|
||||
services.set(IDiagnosticsMainService, new SyncDescriptor(DiagnosticsMainService, undefined, false /* proxied to other processes */));
|
||||
services.set(IDiagnosticsService, ProxyChannel.toService(getDelayedChannel(sharedProcessReady.then(client => client.getChannel('diagnostics')))));
|
||||
|
||||
// Issues
|
||||
services.set(IIssueMainService, new SyncDescriptor(IssueMainService, [this.userEnv]));
|
||||
|
||||
// Process
|
||||
services.set(IProcessMainService, new SyncDescriptor(ProcessMainService, [this.userEnv]));
|
||||
|
||||
@@ -1105,11 +1129,6 @@ export class CodeApplication extends Disposable {
|
||||
// Dev Only: CSS service (for ESM)
|
||||
services.set(ICSSDevelopmentService, new SyncDescriptor(CSSDevelopmentService, undefined, true));
|
||||
|
||||
if (this.productService.quality !== 'stable') {
|
||||
// extensions signature verification service
|
||||
services.set(IExtensionSignatureVerificationService, new SyncDescriptor(ExtensionSignatureVerificationService, undefined, true));
|
||||
}
|
||||
|
||||
// Init services that require it
|
||||
await Promises.settled([
|
||||
backupMainService.initialize(),
|
||||
@@ -1151,21 +1170,10 @@ export class CodeApplication extends Disposable {
|
||||
mainProcessElectronServer.registerChannel('userDataProfiles', userDataProfilesService);
|
||||
sharedProcessClient.then(client => client.registerChannel('userDataProfiles', userDataProfilesService));
|
||||
|
||||
if (this.productService.quality !== 'stable') {
|
||||
// Extension signature verification service
|
||||
const extensionSignatureVerificationService = accessor.get(IExtensionSignatureVerificationService);
|
||||
sharedProcessClient.then(client => client.registerChannel('signatureVerificationService',
|
||||
ProxyChannel.fromService(extensionSignatureVerificationService, disposables)));
|
||||
}
|
||||
|
||||
// Update
|
||||
const updateChannel = new UpdateChannel(accessor.get(IUpdateService));
|
||||
mainProcessElectronServer.registerChannel('update', updateChannel);
|
||||
|
||||
// Issues
|
||||
const issueChannel = ProxyChannel.fromService(accessor.get(IIssueMainService), disposables);
|
||||
mainProcessElectronServer.registerChannel('issue', issueChannel);
|
||||
|
||||
// Process
|
||||
const processChannel = ProxyChannel.fromService(accessor.get(IProcessMainService), disposables);
|
||||
mainProcessElectronServer.registerChannel('process', processChannel);
|
||||
@@ -1460,4 +1468,11 @@ export class CodeApplication extends Disposable {
|
||||
this.windowsMainService?.sendToFocused('vscode:showArgvParseWarning');
|
||||
}
|
||||
}
|
||||
|
||||
private eventuallyAfterWindowOpen(): void {
|
||||
|
||||
// Validate Device ID is up to date (delay this as it has shown significant perf impact)
|
||||
// Refs: https://github.com/microsoft/vscode/issues/234064
|
||||
validatedevDeviceId(this.stateService, this.logService);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user