mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-23 01:58:53 +01:00
Merge branch 'main' into pointer-lock-in-webview
This commit is contained in:
@@ -3,13 +3,12 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { app, BrowserWindow, protocol, session, Session, systemPreferences, WebFrameMain } from 'electron';
|
||||
import { app, protocol, session, Session, systemPreferences, WebFrameMain } from 'electron';
|
||||
import { addUNCHostToAllowlist, disableUNCAccessRestrictions } from '../../base/node/unc.js';
|
||||
import { validatedIpcMain } from '../../base/parts/ipc/electron-main/ipcMain.js';
|
||||
import { hostname, release } from 'os';
|
||||
import { VSBuffer } from '../../base/common/buffer.js';
|
||||
import { toErrorMessage } from '../../base/common/errorMessage.js';
|
||||
import { isSigPipeError, onUnexpectedError, setUnexpectedErrorHandler } from '../../base/common/errors.js';
|
||||
import { Event } from '../../base/common/event.js';
|
||||
import { parse } from '../../base/common/jsonc.js';
|
||||
import { getPathLabel } from '../../base/common/labels.js';
|
||||
@@ -84,7 +83,7 @@ import { ElectronURLListener } from '../../platform/url/electron-main/electronUr
|
||||
import { IWebviewManagerService } from '../../platform/webview/common/webviewManagerService.js';
|
||||
import { WebviewMainService } from '../../platform/webview/electron-main/webviewMainService.js';
|
||||
import { isFolderToOpen, isWorkspaceToOpen, IWindowOpenable } from '../../platform/window/common/window.js';
|
||||
import { IWindowsMainService, OpenContext } from '../../platform/windows/electron-main/windows.js';
|
||||
import { getAllWindowsExcludingOffscreen, IWindowsMainService, OpenContext } from '../../platform/windows/electron-main/windows.js';
|
||||
import { ICodeWindow } from '../../platform/window/electron-main/window.js';
|
||||
import { WindowsMainService } from '../../platform/windows/electron-main/windowsMainService.js';
|
||||
import { ActiveWindowManager } from '../../platform/windows/node/windowTracker.js';
|
||||
@@ -122,6 +121,7 @@ import { INativeMcpDiscoveryHelperService, NativeMcpDiscoveryHelperChannelName }
|
||||
import { NativeMcpDiscoveryHelperService } from '../../platform/mcp/node/nativeMcpDiscoveryHelperService.js';
|
||||
import { IWebContentExtractorService } from '../../platform/webContentExtractor/common/webContentExtractor.js';
|
||||
import { NativeWebContentExtractorService } from '../../platform/webContentExtractor/electron-main/webContentExtractorService.js';
|
||||
import ErrorTelemetry from '../../platform/telemetry/electron-main/errorTelemetry.js';
|
||||
|
||||
/**
|
||||
* The main VS Code application. There will only ever be one instance,
|
||||
@@ -236,7 +236,7 @@ export class CodeApplication extends Disposable {
|
||||
}
|
||||
|
||||
// Check to see if the request comes from one of the main windows (or shared process) and not from embedded content
|
||||
const windows = BrowserWindow.getAllWindows();
|
||||
const windows = getAllWindowsExcludingOffscreen();
|
||||
for (const window of windows) {
|
||||
if (frame.processId === window.webContents.mainFrame.processId) {
|
||||
return true;
|
||||
@@ -377,15 +377,6 @@ export class CodeApplication extends Disposable {
|
||||
|
||||
private registerListeners(): void {
|
||||
|
||||
// We handle uncaught exceptions here to prevent electron from opening a dialog to the user
|
||||
setUnexpectedErrorHandler(error => this.onUnexpectedError(error));
|
||||
process.on('uncaughtException', error => {
|
||||
if (!isSigPipeError(error)) {
|
||||
onUnexpectedError(error);
|
||||
}
|
||||
});
|
||||
process.on('unhandledRejection', (reason: unknown) => onUnexpectedError(reason));
|
||||
|
||||
// Dispose on shutdown
|
||||
Event.once(this.lifecycleMainService.onWillShutdown)(() => this.dispose());
|
||||
|
||||
@@ -532,25 +523,6 @@ export class CodeApplication extends Disposable {
|
||||
//#endregion
|
||||
}
|
||||
|
||||
private onUnexpectedError(error: Error): void {
|
||||
if (error) {
|
||||
|
||||
// take only the message and stack property
|
||||
const friendlyError = {
|
||||
message: `[uncaught exception in main]: ${error.message}`,
|
||||
stack: error.stack
|
||||
};
|
||||
|
||||
// handle on client side
|
||||
this.windowsMainService?.sendToFocused('vscode:reportError', JSON.stringify(friendlyError));
|
||||
}
|
||||
|
||||
this.logService.error(`[uncaught exception in main]: ${error}`);
|
||||
if (error.stack) {
|
||||
this.logService.error(error.stack);
|
||||
}
|
||||
}
|
||||
|
||||
async startup(): Promise<void> {
|
||||
this.logService.debug('Starting VS Code');
|
||||
this.logService.debug(`from: ${this.environmentMainService.appRoot}`);
|
||||
@@ -607,6 +579,9 @@ export class CodeApplication extends Disposable {
|
||||
// Services
|
||||
const appInstantiationService = await this.initServices(machineId, sqmId, devDeviceId, sharedProcessReady);
|
||||
|
||||
// Error telemetry
|
||||
appInstantiationService.invokeFunction(accessor => this._register(new ErrorTelemetry(accessor.get(ILogService), accessor.get(ITelemetryService))));
|
||||
|
||||
// Auth Handler
|
||||
appInstantiationService.invokeFunction(accessor => accessor.get(IProxyAuthService));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user