From a1136b3a02caaff67a86662e837864e0548540b6 Mon Sep 17 00:00:00 2001 From: Asher Date: Fri, 5 Apr 2019 18:49:29 -0500 Subject: [PATCH] Update VS Code to 1.33.0 (#445) * Update VS Code to 1.33.0 * Fix slow file tree * Fix WindowsService fill * Provide `off` on event listeners * Fix webview * Fix double title bar and missing preferences on Mac * Bump VS Code version in Travis config * Fix black dialog text (again) * Fix shared process not starting --- .travis.yml | 2 +- build/tasks.ts | 2 +- packages/ide/src/client.ts | 19 +- packages/ide/src/fill/dialog.ts | 2 +- packages/ide/src/fill/electron.ts | 4 + packages/ide/src/fill/webview.html | 8 + packages/ide/src/retry.ts | 2 +- .../protocol/src/browser/modules/spdlog.ts | 8 + packages/protocol/src/common/proxy.ts | 15 +- packages/protocol/test/net.test.ts | 17 + packages/server/src/vscode/sharedProcess.ts | 16 +- packages/vscode/src/dialog.ts | 2 +- packages/vscode/src/fill/paste.ts | 4 +- packages/vscode/src/fill/windowsService.ts | 7 +- packages/vscode/src/fill/workbenchRegistry.ts | 2 +- packages/vscode/src/workbench.ts | 13 +- packages/vscode/webpack.bootstrap.config.js | 4 +- packages/web/webpack.config.js | 1 + scripts/vscode.patch | 541 +++++++++--------- scripts/vstar.sh | 2 +- 20 files changed, 368 insertions(+), 303 deletions(-) create mode 100644 packages/ide/src/fill/webview.html diff --git a/.travis.yml b/.travis.yml index d144c09bf..158ad64f6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ language: node_js node_js: - 8.15.0 env: - - VSCODE_VERSION="1.32.0" MAJOR_VERSION="1" VERSION="$MAJOR_VERSION.$TRAVIS_BUILD_NUMBER-vsc$VSCODE_VERSION" + - VSCODE_VERSION="1.33.0" MAJOR_VERSION="1" VERSION="$MAJOR_VERSION.$TRAVIS_BUILD_NUMBER-vsc$VSCODE_VERSION" matrix: include: - os: linux diff --git a/build/tasks.ts b/build/tasks.ts index ae285123a..b43316e17 100644 --- a/build/tasks.ts +++ b/build/tasks.ts @@ -12,7 +12,7 @@ const libPath = path.join(__dirname, "../lib"); const vscodePath = path.join(libPath, "vscode"); const defaultExtensionsPath = path.join(libPath, "extensions"); const pkgsPath = path.join(__dirname, "../packages"); -const vscodeVersion = process.env.VSCODE_VERSION || "1.32.0"; +const vscodeVersion = process.env.VSCODE_VERSION || "1.33.0"; const vsSourceUrl = `https://codesrv-ci.cdr.sh/vstar-${vscodeVersion}.tar.gz`; const buildServerBinary = register("build:server:binary", async (runner) => { diff --git a/packages/ide/src/client.ts b/packages/ide/src/client.ts index b7cfe2024..1cfce0752 100644 --- a/packages/ide/src/client.ts +++ b/packages/ide/src/client.ts @@ -41,7 +41,16 @@ export abstract class IdeClient { }); this.sharedProcessData = new Promise((resolve): void => { - client.onSharedProcessActive(resolve); + let d = client.onSharedProcessActive((data) => { + d.dispose(); + d = client.onSharedProcessActive(() => { + d.dispose(); + this.retry.notificationService.error( + new Error("Disconnected from shared process. Searching, installing, enabling, and disabling extensions will not work until the page is refreshed."), + ); + }); + resolve(data); + }); }); window.addEventListener("contextmenu", (event) => { @@ -65,10 +74,6 @@ export abstract class IdeClient { }); } - /** - * Wrap a task in some logging, timing, and progress updates. Can optionally - * wait on other tasks which won't count towards this task's time. - */ public async task(description: string, duration: number, task: () => Promise): Promise; public async task(description: string, duration: number, task: (v: V) => Promise, t: Promise): Promise; public async task(description: string, duration: number, task: (v1: V1, v2: V2) => Promise, t1: Promise, t2: Promise): Promise; @@ -76,6 +81,10 @@ export abstract class IdeClient { public async task(description: string, duration: number, task: (v1: V1, v2: V2, v3: V3, v4: V4) => Promise, t1: Promise, t2: Promise, t3: Promise, t4: Promise): Promise; public async task(description: string, duration: number, task: (v1: V1, v2: V2, v3: V3, v4: V4, v5: V5) => Promise, t1: Promise, t2: Promise, t3: Promise, t4: Promise, t5: Promise): Promise; public async task(description: string, duration: number, task: (v1: V1, v2: V2, v3: V3, v4: V4, v5: V5, v6: V6) => Promise, t1: Promise, t2: Promise, t3: Promise, t4: Promise, t5: Promise, t6: Promise): Promise; + /** + * Wrap a task in some logging, timing, and progress updates. Can optionally + * wait on other tasks which won't count towards this task's time. + */ public async task( description: string, duration: number = 100, task: (...args: any[]) => Promise, ...after: Array> // tslint:disable-line no-any ): Promise { diff --git a/packages/ide/src/fill/dialog.ts b/packages/ide/src/fill/dialog.ts index afec23665..acee2bdca 100644 --- a/packages/ide/src/fill/dialog.ts +++ b/packages/ide/src/fill/dialog.ts @@ -132,7 +132,7 @@ export class Dialog { public show(): void { if (!this.cachedActiveElement) { this.cachedActiveElement = document.activeElement as HTMLElement; - (document.getElementById("workbench.main.container") || document.body).appendChild(this.overlay); + (document.querySelector(".monaco-workbench") || document.body).appendChild(this.overlay); document.addEventListener("keydown", this.onKeydown); if (this.input) { this.input.focus(); diff --git a/packages/ide/src/fill/electron.ts b/packages/ide/src/fill/electron.ts index af2b7928f..bbc1f48b8 100644 --- a/packages/ide/src/fill/electron.ts +++ b/packages/ide/src/fill/electron.ts @@ -137,6 +137,10 @@ const newCreateElement = (tagName: K): HT }; }, }); + view.src = require("!!file-loader?name=[path][name].[ext]!./webview.html"); + Object.defineProperty(view, "src", { + set: (): void => { /* Nope. */ }, + }); (view as any).getWebContents = (): void => undefined; // tslint:disable-line no-any (view as any).send = (channel: string, ...args: any[]): void => { // tslint:disable-line no-any if (args[0] && typeof args[0] === "object" && args[0].contents) { diff --git a/packages/ide/src/fill/webview.html b/packages/ide/src/fill/webview.html new file mode 100644 index 000000000..d2a85bdd1 --- /dev/null +++ b/packages/ide/src/fill/webview.html @@ -0,0 +1,8 @@ + + + + Virtual Document + + + + diff --git a/packages/ide/src/retry.ts b/packages/ide/src/retry.ts index 7ba808023..66a1575de 100644 --- a/packages/ide/src/retry.ts +++ b/packages/ide/src/retry.ts @@ -147,7 +147,7 @@ export class Retry { * * Blocking without a name will override a block with a name. */ - private block(name?: string): void { + public block(name?: string): void { if (!this.blocked || !name) { this.blocked = name || true; this.items.forEach((item) => { diff --git a/packages/protocol/src/browser/modules/spdlog.ts b/packages/protocol/src/browser/modules/spdlog.ts index 7416302a5..01e1da3d9 100644 --- a/packages/protocol/src/browser/modules/spdlog.ts +++ b/packages/protocol/src/browser/modules/spdlog.ts @@ -45,4 +45,12 @@ export class SpdlogModule { public setAsyncMode = (bufferSize: number, flushInterval: number): Promise => { return this.proxy.setAsyncMode(bufferSize, flushInterval); } + + public createRotatingLogger(name: string, filename: string, filesize: number, filecount: number): RotatingLogger { + return new RotatingLogger(this.proxy, name, filename, filesize, filecount); + } + + public createRotatingLoggerAsync(name: string, filename: string, filesize: number, filecount: number): Promise { + return Promise.resolve(this.createRotatingLogger(name, filename, filesize, filecount)); + } } diff --git a/packages/protocol/src/common/proxy.ts b/packages/protocol/src/common/proxy.ts index 040013211..8da8131aa 100644 --- a/packages/protocol/src/common/proxy.ts +++ b/packages/protocol/src/common/proxy.ts @@ -53,6 +53,17 @@ export abstract class ClientProxy extends EventEmitter { } } + /** + * Remove an event listener. + */ + public off(event: string, cb: (...args: any[]) => void): this { + // Fill it here because the fill we're using to provide EventEmitter for the + // browser doesn't appear to include `off`. + this.removeListener(event, cb); + + return this; + } + protected get proxy(): T { if (!this._proxy) { throw new Error("not initialized"); @@ -158,8 +169,10 @@ export abstract class Batch { private readonly maxCount: number = 100, /** * Flush after not receiving more requests for this amount of time. + * This is pretty low by default so essentially we just end up batching + * requests that are all made at the same time. */ - private readonly idleTime: number = 100, + private readonly idleTime: number = 1, ) {} public add = (args: A): Promise => { diff --git a/packages/protocol/test/net.test.ts b/packages/protocol/test/net.test.ts index 1dfd2e35f..856e23130 100644 --- a/packages/protocol/test/net.test.ts +++ b/packages/protocol/test/net.test.ts @@ -38,6 +38,23 @@ describe("net", () => { expect(fn).toHaveBeenCalledTimes(1); }); + it("should remove event listener", async () => { + const socket = new net.Socket(); + + const fn1 = jest.fn(); + const fn2 = jest.fn(); + + socket.on("error", fn1); + socket.on("error", fn2); + socket.off("error", fn1); + + socket.connect("/tmp/t/e/s/t/d/o/e/s/n/o/t/e/x/i/s/t"); + + await new Promise((r): nativeNet.Socket => socket.on("close", r)); + expect(fn1).toHaveBeenCalledTimes(0); + expect(fn2).toHaveBeenCalledTimes(1); + }); + it("should connect", async () => { await new Promise((resolve): void => { const socket = net.createConnection(socketPath, () => { diff --git a/packages/server/src/vscode/sharedProcess.ts b/packages/server/src/vscode/sharedProcess.ts index 5383bf0c5..0f9a898cc 100644 --- a/packages/server/src/vscode/sharedProcess.ts +++ b/packages/server/src/vscode/sharedProcess.ts @@ -66,12 +66,6 @@ export class SharedProcess { this.setState({ state: SharedProcessState.Starting }); const activeProcess = await this.restart(); - activeProcess.stderr.on("data", (data) => { - // Warn instead of error to prevent panic. It's unlikely stderr here is - // about anything critical to the functioning of the editor. - logger.warn(data.toString()); - }); - activeProcess.on("exit", (exitCode) => { const error = new Error(`Exited with ${exitCode}`); this.setState({ @@ -132,6 +126,16 @@ export class SharedProcess { activeProcess.on("error", doReject); activeProcess.on("exit", doReject); + activeProcess.stdout.on("data", (data) => { + logger.trace(data.toString()); + }); + + activeProcess.stderr.on("data", (data) => { + // Warn instead of error to prevent panic. It's unlikely stderr here is + // about anything critical to the functioning of the editor. + logger.warn(data.toString()); + }); + this.ipcHandler = new StdioIpcHandler(activeProcess); this.ipcHandler.once("handshake:hello", () => { const data: { diff --git a/packages/vscode/src/dialog.ts b/packages/vscode/src/dialog.ts index 9321fac8e..4601b6d0a 100644 --- a/packages/vscode/src/dialog.ts +++ b/packages/vscode/src/dialog.ts @@ -108,7 +108,7 @@ class Dialog { this.root.style.width = "850px"; this.root.style.height = "600px"; this.background.appendChild(this.root); - (document.getElementById("workbench.main.container") || document.body).appendChild(this.background); + (document.querySelector(".monaco-workbench") || document.body).appendChild(this.background); this.root.classList.add("dialog"); const setProperty = (vari: string, id: string): void => { diff --git a/packages/vscode/src/fill/paste.ts b/packages/vscode/src/fill/paste.ts index f701ba2f4..72db94bae 100644 --- a/packages/vscode/src/fill/paste.ts +++ b/packages/vscode/src/fill/paste.ts @@ -2,8 +2,8 @@ import * as nls from "vs/nls"; import { Action } from "vs/base/common/actions"; import { TERMINAL_COMMAND_ID } from "vs/workbench/contrib/terminal/common/terminalCommands"; import { ITerminalService } from "vs/workbench/contrib/terminal/common/terminal"; -import * as actions from "vs/workbench/contrib/terminal/electron-browser/terminalActions"; -import * as instance from "vs/workbench/contrib/terminal/electron-browser/terminalInstance"; +import * as actions from "vs/workbench/contrib/terminal/browser/terminalActions"; +import * as instance from "vs/workbench/contrib/terminal/browser/terminalInstance"; import { client } from "../client"; const getLabel = (key: string, enabled: boolean): string => { diff --git a/packages/vscode/src/fill/windowsService.ts b/packages/vscode/src/fill/windowsService.ts index 079665e24..512ca757e 100644 --- a/packages/vscode/src/fill/windowsService.ts +++ b/packages/vscode/src/fill/windowsService.ts @@ -1,6 +1,5 @@ import * as electron from "electron"; import { Emitter } from "@coder/events"; -import * as windowsIpc from "vs/platform/windows/node/windowsIpc"; import { IWindowsService, INativeOpenDialogOptions, MessageBoxOptions, SaveDialogOptions, OpenDialogOptions, IMessageBoxResult, IDevToolsOptions, IEnterWorkspaceResult, CrashReporterStartOptions, INewWindowOptions, IOpenFileRequest, IAddFoldersRequest } from "vs/platform/windows/common/windows"; import { ParsedArgs } from "vs/platform/environment/common/environment"; import { IWorkspaceIdentifier, IWorkspaceFolderCreationData, ISingleFolderWorkspaceIdentifier } from "vs/platform/workspaces/common/workspaces"; @@ -15,7 +14,7 @@ import { workbench } from "../workbench"; * Instead of going to the shared process, we'll directly run these methods on * the client. This setup means we can only control the current window. */ -class WindowsService implements IWindowsService { +export class WindowsService implements IWindowsService { // tslint:disable-next-line no-any public _serviceBrand: any; @@ -343,7 +342,3 @@ class WindowsService implements IWindowsService { return this.window; } } - -const target = windowsIpc as typeof windowsIpc; -// @ts-ignore TODO: don't ignore it. -target.WindowsChannelClient = WindowsService; diff --git a/packages/vscode/src/fill/workbenchRegistry.ts b/packages/vscode/src/fill/workbenchRegistry.ts index df6ac30d7..69f8e5f28 100644 --- a/packages/vscode/src/fill/workbenchRegistry.ts +++ b/packages/vscode/src/fill/workbenchRegistry.ts @@ -5,7 +5,7 @@ import { IWorkbenchActionRegistry, Extensions } from "vs/workbench/common/action import { SyncActionDescriptor } from "vs/platform/actions/common/actions"; import { ContextKeyExpr } from "vs/platform/contextkey/common/contextkey"; import { ToggleDevToolsAction } from "vs/workbench/electron-browser/actions/developerActions"; -import { TerminalPasteAction } from "vs/workbench/contrib/terminal/electron-browser/terminalActions"; +import { TerminalPasteAction } from "vs/workbench/contrib/terminal/browser/terminalActions"; import { KEYBINDING_CONTEXT_TERMINAL_FOCUS } from "vs/workbench/contrib/terminal/common/terminal"; import { KeyCode, KeyMod } from "vs/base/common/keyCodes"; import { workbench } from "../workbench"; diff --git a/packages/vscode/src/workbench.ts b/packages/vscode/src/workbench.ts index dcd703e20..826cb176c 100644 --- a/packages/vscode/src/workbench.ts +++ b/packages/vscode/src/workbench.ts @@ -139,6 +139,13 @@ export class Workbench { logger.error(error.message); }); + const contextKeys = this.serviceCollection.get(IContextKeyService) as IContextKeyService; + const bounded = this.clipboardContextKey.bindTo(contextKeys); + client.clipboard.onPermissionChange((enabled) => { + bounded.set(enabled); + }); + client.clipboard.initialize(); + client.progressService = { start: (title: string, task: (progress: IProgress) => Promise, onCancel: () => void): Promise => { let lastProgress = 0; @@ -237,12 +244,6 @@ export class Workbench { return; } } - const contextKeys = this.serviceCollection.get(IContextKeyService) as IContextKeyService; - const bounded = this.clipboardContextKey.bindTo(contextKeys); - client.clipboard.onPermissionChange((enabled) => { - bounded.set(enabled); - }); - client.clipboard.initialize(); } } diff --git a/packages/vscode/webpack.bootstrap.config.js b/packages/vscode/webpack.bootstrap.config.js index 0b50f54e5..01acbbdf7 100644 --- a/packages/vscode/webpack.bootstrap.config.js +++ b/packages/vscode/webpack.bootstrap.config.js @@ -36,7 +36,8 @@ module.exports = merge( loader: "ignore-loader", }], }, { - test: /((\\|\/)vs(\\|\/)code(\\|\/)electron-main(\\|\/))|((\\|\/)test(\\|\/))|(OSSREADME\.json$)|\/browser\//, + // The only thing we need in electron-browser is the shared process (including contrib). + test: /((\\|\/)vs(\\|\/)code(\\|\/)electron-main(\\|\/))|((\\|\/)test(\\|\/))|(OSSREADME\.json$)|\/browser\/|\/electron-browser\/(?!sharedProcess\/).+\//, use: [{ loader: "ignore-loader", }], @@ -50,6 +51,7 @@ module.exports = merge( "windows-mutex": path.resolve(fills, "empty.ts"), "windows-process-tree": path.resolve(fills, "empty.ts"), "vscode-windows-registry": path.resolve(fills, "empty.ts"), + "vscode-windows-ca-certs": path.resolve(fills, "empty.ts"), "vscode-sqlite3": path.resolve(fills, "empty.ts"), "vs/base/browser/browser": path.resolve(fills, "empty.ts"), diff --git a/packages/web/webpack.config.js b/packages/web/webpack.config.js index a55d5314f..c2a1e5817 100644 --- a/packages/web/webpack.config.js +++ b/packages/web/webpack.config.js @@ -70,6 +70,7 @@ module.exports = merge( // This seems to be in the wrong place? "vs/workbench/contrib/codeEditor/electron-browser/media/WordWrap_16x.svg": "vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/WordWrap_16x.svg", + "vs/platform/windows/electron-browser/windowsService": path.join(vsFills, "windowsService.ts"), "vs/base/node/paths": path.join(vsFills, "paths.ts"), "vs/base/common/amd": path.join(vsFills, "amd.ts"), "vs/platform/product/node/package": path.resolve(vsFills, "package.ts"), diff --git a/scripts/vscode.patch b/scripts/vscode.patch index b48fa32a9..c7046fc47 100644 --- a/scripts/vscode.patch +++ b/scripts/vscode.patch @@ -1,5 +1,5 @@ diff --git a/src/vs/base/browser/browser.ts b/src/vs/base/browser/browser.ts -index c092106..66f1934 100644 +index 16414ef..3006e05 100644 --- a/src/vs/base/browser/browser.ts +++ b/src/vs/base/browser/browser.ts @@ -125,0 +126,4 @@ export const isEdgeWebView = isEdge && (userAgent.indexOf('WebView/') >= 0); @@ -24,45 +24,36 @@ index 03bdffc..d72c168 100644 -const metaKeyMod = (platform.isMacintosh ? KeyMod.CtrlCmd : KeyMod.WinCtrl); +const metaKeyMod = (browser.isMacintosh ? KeyMod.CtrlCmd : KeyMod.WinCtrl); diff --git a/src/vs/base/browser/ui/aria/aria.ts b/src/vs/base/browser/ui/aria/aria.ts -index 1922450..9900776 100644 +index fc71827..c8ed796 100644 --- a/src/vs/base/browser/ui/aria/aria.ts +++ b/src/vs/base/browser/ui/aria/aria.ts @@ -8 +8 @@ import * as nls from 'vs/nls'; -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts -index cd73128..b1246de 100644 +index 0869c52..4bd0813 100644 --- a/src/vs/base/browser/ui/list/listWidget.ts +++ b/src/vs/base/browser/ui/list/listWidget.ts @@ -13 +13 @@ import * as DOM from 'vs/base/browser/dom'; -import * as platform from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; -@@ -253 +253 @@ class KeyboardController implements IDisposable { +@@ -256 +256 @@ class KeyboardController implements IDisposable { - onKeyDown.filter(e => (platform.isMacintosh ? e.metaKey : e.ctrlKey) && e.keyCode === KeyCode.KEY_A).on(this.onCtrlA, this, this.disposables); + onKeyDown.filter(e => (browser.isMacintosh ? e.metaKey : e.ctrlKey) && e.keyCode === KeyCode.KEY_A).on(this.onCtrlA, this, this.disposables); -@@ -491 +491 @@ export function isSelectionSingleChangeEvent(event: IListMouseEvent | IList +@@ -494 +494 @@ export function isSelectionSingleChangeEvent(event: IListMouseEvent | IList - return platform.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey; + return browser.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey; -@@ -553 +553 @@ export class MouseController implements IDisposable { +@@ -556 +556 @@ export class MouseController implements IDisposable { - return platform.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey; + return browser.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey; -diff --git a/src/vs/base/browser/ui/menu/menu.ts b/src/vs/base/browser/ui/menu/menu.ts -index 47da5e4..fbf7e22 100644 ---- a/src/vs/base/browser/ui/menu/menu.ts -+++ b/src/vs/base/browser/ui/menu/menu.ts -@@ -23,2 +23,3 @@ import { isLinux } from 'vs/base/common/platform'; --export const MENU_MNEMONIC_REGEX: RegExp = /\(&([^\s&])\)|(?(logService: ILogService, modulePath: string, acti +@@ -769 +769 @@ function loadCommonJSModule(logService: ILogService, modulePath: string, acti - r = require.__$__nodeRequire(modulePath); + r = (global as any).nativeNodeRequire(modulePath); -diff --git a/src/vs/workbench/api/node/extHostTypeConverters.ts b/src/vs/workbench/api/node/extHostTypeConverters.ts -index a445750..c64712b 100644 ---- a/src/vs/workbench/api/node/extHostTypeConverters.ts -+++ b/src/vs/workbench/api/node/extHostTypeConverters.ts -@@ -26 +25,0 @@ import { ExtHostDocumentsAndEditors } from 'vs/workbench/api/node/extHostDocumen --import { isString, isNumber } from 'vs/base/common/types'; -@@ -31 +29,0 @@ import { LogLevel as _MainLogLevel } from 'vs/platform/log/common/log'; --import { coalesce } from 'vs/base/common/arrays'; -@@ -116,0 +115,2 @@ export namespace Diagnostic { -+ const { isString, isNumber } = require('vs/base/common/types'); -+ const { coalesce } = require('vs/base/common/arrays'); diff --git a/src/vs/workbench/browser/dnd.ts b/src/vs/workbench/browser/dnd.ts -index 5897ab9..57b926e 100644 +index 7b6ad89..3190356 100644 --- a/src/vs/workbench/browser/dnd.ts +++ b/src/vs/workbench/browser/dnd.ts -@@ -168 +168 @@ export class ResourcesDropHandler { +@@ -170 +170 @@ export class ResourcesDropHandler { - return; + return (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.handleDrop(event, resolveTargetGroup, afterDrop, targetIndex); diff --git a/src/vs/workbench/browser/layout.ts b/src/vs/workbench/browser/layout.ts -index 819bb31..de69133 100644 +index c25c940..9f11d98 100644 --- a/src/vs/workbench/browser/layout.ts +++ b/src/vs/workbench/browser/layout.ts -@@ -15 +15 @@ import { IThemeService } from 'vs/platform/theme/common/themeService'; +@@ -12 +12 @@ import { Registry } from 'vs/platform/registry/common/platform'; +-import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform'; ++import { isWindows, isLinux, isMacintosh, isNative, isWeb } from 'vs/base/common/platform'; +@@ -210 +210 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi +- if ((isWindows || isLinux) && getTitleBarStyle(this.configurationService, this.environmentService) === 'custom') { ++ if ((isWeb || isWindows || isLinux) && getTitleBarStyle(this.configurationService, this.environmentService) === 'custom') { +@@ -535 +535 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi +- } else if (isMacintosh) { ++ } else if (isNative && isMacintosh) { +@@ -567 +567 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi +- if (isMacintosh || this.state.menuBar.visibility === 'hidden') { ++ if ((isNative && isMacintosh) || this.state.menuBar.visibility === 'hidden') { +diff --git a/src/vs/workbench/browser/legacyLayout.ts b/src/vs/workbench/browser/legacyLayout.ts +index 53e73ac..0e24627 100644 +--- a/src/vs/workbench/browser/legacyLayout.ts ++++ b/src/vs/workbench/browser/legacyLayout.ts +@@ -13 +13 @@ import { IThemeService } from 'vs/platform/theme/common/themeService'; -import { isMacintosh } from 'vs/base/common/platform'; -+import { isNative, isMacintosh } from 'vs/base/common/platform'; -@@ -29 +29 @@ import { getZoomFactor } from 'vs/base/browser/browser'; ++import { isMacintosh, isNative } from 'vs/base/common/platform'; +@@ -20 +20 @@ import { Part } from 'vs/workbench/browser/part'; -const TITLE_BAR_HEIGHT = isMacintosh ? 22 : 30; +const TITLE_BAR_HEIGHT = isNative && isMacintosh ? 22 : 30; +@@ -413 +413 @@ export class WorkbenchLegacyLayout extends Disposable implements IVerticalSashLa +- this.titlebarHeight = isTitlebarHidden ? 0 : this.partLayoutInfo.titlebar.height / (isMacintosh || !menubarVisibility || menubarVisibility === 'hidden' ? getZoomFactor() : 1); // adjust for zoom prevention ++ this.titlebarHeight = isTitlebarHidden ? 0 : this.partLayoutInfo.titlebar.height / ((isNative && isMacintosh) || !menubarVisibility || menubarVisibility === 'hidden' ? getZoomFactor() : 1); // adjust for zoom prevention diff --git a/src/vs/workbench/browser/parts/editor/editor.contribution.ts b/src/vs/workbench/browser/parts/editor/editor.contribution.ts -index 5c1e6ef..dd79592 100644 +index df1ac8e..b86ab6a 100644 --- a/src/vs/workbench/browser/parts/editor/editor.contribution.ts +++ b/src/vs/workbench/browser/parts/editor/editor.contribution.ts @@ -48 +48 @@ import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/workbench/browser/parts/editor/editorDropTarget.ts b/src/vs/workbench/browser/parts/editor/editorDropTarget.ts -index 52272c0..77d447d 100644 +index acf2522..feebe63 100644 --- a/src/vs/workbench/browser/parts/editor/editorDropTarget.ts +++ b/src/vs/workbench/browser/parts/editor/editorDropTarget.ts @@ -14 +14 @@ import { IEditorIdentifier, EditorInput, EditorOptions } from 'vs/workbench/comm -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/browser/parts/editor/editorGroupView.ts b/src/vs/workbench/browser/parts/editor/editorGroupView.ts +index 50977a6..81e4fc0 100644 +--- a/src/vs/workbench/browser/parts/editor/editorGroupView.ts ++++ b/src/vs/workbench/browser/parts/editor/editorGroupView.ts +@@ -1499 +1499 @@ registerThemingParticipant((theme, collector, environment) => { +- const letterpress = `./media/letterpress${theme.type === 'dark' ? '-dark' : theme.type === 'hc' ? '-hc' : ''}.svg`; ++ const letterpress = theme.type === 'dark' ? require.toUrl('./media/letterpress-dark.svg') : theme.type === 'hc' ? require.toUrl('./media/letterpress-hc.svg') : require.toUrl('./media/letterpress.svg'); +@@ -1502 +1502 @@ registerThemingParticipant((theme, collector, environment) => { +- background-image: url('${require.toUrl(letterpress)}') ++ background-image: url('${letterpress}') diff --git a/src/vs/workbench/browser/parts/editor/resourceViewer.ts b/src/vs/workbench/browser/parts/editor/resourceViewer.ts -index 73446c7..90330a2 100644 +index 98a67c2..67d5248 100644 --- a/src/vs/workbench/browser/parts/editor/resourceViewer.ts +++ b/src/vs/workbench/browser/parts/editor/resourceViewer.ts @@ -23 +23 @@ import { memoize } from 'vs/base/common/decorators'; @@ -426,20 +429,20 @@ index 73446c7..90330a2 100644 - const isScrollWhellKeyPressed = platform.isMacintosh ? altPressed : ctrlPressed; + const isScrollWhellKeyPressed = browser.isMacintosh ? altPressed : ctrlPressed; diff --git a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts -index e2bfb8d..3f6ae26 100644 +index 8b40624..43df4de 100644 --- a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts +++ b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts @@ -7 +7 @@ import 'vs/css!./media/tabstitlecontrol'; -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/workbench/browser/parts/quickinput/quickInputList.ts b/src/vs/workbench/browser/parts/quickinput/quickInputList.ts -index 7478274..aa55946 100644 +index 78c0846..f20462f 100644 --- a/src/vs/workbench/browser/parts/quickinput/quickInputList.ts +++ b/src/vs/workbench/browser/parts/quickinput/quickInputList.ts @@ -24 +24 @@ import { range } from 'vs/base/common/arrays'; -import * as platform from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; -@@ -264 +264 @@ export class QuickInputList { +@@ -265 +265 @@ export class QuickInputList { - if (platform.isMacintosh ? e.metaKey : e.ctrlKey) { + if (browser.isMacintosh ? e.metaKey : e.ctrlKey) { diff --git a/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css b/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css @@ -449,7 +452,7 @@ index a215bde..df7562b 100644 @@ -44,0 +45 @@ +.web > .monaco-workbench .part.titlebar, diff --git a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts -index 254ae28..4f2e217 100644 +index a822341..43b882a 100644 --- a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts +++ b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts @@ -16 +16,2 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; @@ -459,50 +462,74 @@ index 254ae28..4f2e217 100644 @@ -117 +118 @@ export class MenubarControl extends Disposable { - if (isMacintosh) { + if (isNative && isMacintosh) { -@@ -123 +124 @@ export class MenubarControl extends Disposable { +@@ -126 +127 @@ export class MenubarControl extends Disposable { - if (isMacintosh || this.currentTitlebarStyleSetting !== 'custom') { + if ((isNative && isMacintosh) || this.currentTitlebarStyleSetting !== 'custom') { -@@ -283 +284 @@ export class MenubarControl extends Disposable { +@@ -138 +139 @@ export class MenubarControl extends Disposable { +- if (isMacintosh || this.currentTitlebarStyleSetting !== 'custom') { ++ if ((isNative && isMacintosh) || this.currentTitlebarStyleSetting !== 'custom') { +@@ -288 +289 @@ export class MenubarControl extends Disposable { - if (!isMacintosh && this.currentTitlebarStyleSetting === 'custom') { + if (!(isNative && isMacintosh) && this.currentTitlebarStyleSetting === 'custom') { -@@ -299 +300 @@ export class MenubarControl extends Disposable { +@@ -304 +305 @@ export class MenubarControl extends Disposable { - if (!isMacintosh && this.currentTitlebarStyleSetting === 'custom') { + if (!(isNative && isMacintosh) && this.currentTitlebarStyleSetting === 'custom') { -@@ -470 +471 @@ export class MenubarControl extends Disposable { +@@ -473 +474 @@ export class MenubarControl extends Disposable { - if (!isMacintosh) { + if (!(isNative && isMacintosh)) { -@@ -692 +693 @@ export class MenubarControl extends Disposable { +@@ -699 +700 @@ export class MenubarControl extends Disposable { - if (!isMacintosh && this.currentTitlebarStyleSetting === 'custom') { + if (!(isNative && isMacintosh) && this.currentTitlebarStyleSetting === 'custom') { diff --git a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts -index 3ab509f..5c76d17 100644 +index 028f375..4bfe956 100644 --- a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts +++ b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts -@@ -25 +25,2 @@ import { TITLE_BAR_ACTIVE_BACKGROUND, TITLE_BAR_ACTIVE_FOREGROUND, TITLE_BAR_INA +@@ -11 +11 @@ import { ITitleService, ITitleProperties } from 'vs/workbench/services/title/com +-import { getZoomFactor } from 'vs/base/browser/browser'; ++import { getZoomFactor, isMacintosh, isWindows, isLinux } from 'vs/base/browser/browser'; +@@ -25 +25 @@ import { TITLE_BAR_ACTIVE_BACKGROUND, TITLE_BAR_ACTIVE_FOREGROUND, TITLE_BAR_INA -import { isMacintosh, isWindows, isLinux } from 'vs/base/common/platform'; +import { isNative } from 'vs/base/common/platform'; -+import { isMacintosh, isWindows, isLinux } from 'vs/base/browser/browser'; -@@ -327 +328 @@ export class TitlebarPart extends Part implements ITitleService, ISerializableVi +@@ -327 +327 @@ export class TitlebarPart extends Part implements ITitleService { - if (!isMacintosh) { + if (!(isNative && isMacintosh)) { -@@ -343 +344 @@ export class TitlebarPart extends Part implements ITitleService, ISerializableVi +@@ -343 +343 @@ export class TitlebarPart extends Part implements ITitleService { - if (!isMacintosh) { + if (!(isNative && isMacintosh)) { -@@ -550 +551 @@ export class TitlebarPart extends Part implements ITitleService, ISerializableVi +@@ -549 +549 @@ export class TitlebarPart extends Part implements ITitleService { - if (!isMacintosh && + if (!(isNative && isMacintosh) && -@@ -568 +569 @@ export class TitlebarPart extends Part implements ITitleService, ISerializableVi +@@ -567 +567 @@ export class TitlebarPart extends Part implements ITitleService { - if (isMacintosh || this.configurationService.getValue('window.menuBarVisibility') === 'hidden') { + if ((isNative && isMacintosh) || this.configurationService.getValue('window.menuBarVisibility') === 'hidden') { diff --git a/src/vs/workbench/browser/workbench.contribution.ts b/src/vs/workbench/browser/workbench.contribution.ts -index 1eb763e..ad509f8 100644 +index 696f351..47af9f7 100644 --- a/src/vs/workbench/browser/workbench.contribution.ts +++ b/src/vs/workbench/browser/workbench.contribution.ts @@ -9 +9 @@ import { IConfigurationRegistry, Extensions as ConfigurationExtensions, Configur -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/browser/workbench.ts b/src/vs/workbench/browser/workbench.ts +index c69d1ab..a34dd7e 100644 +--- a/src/vs/workbench/browser/workbench.ts ++++ b/src/vs/workbench/browser/workbench.ts +@@ -13 +13 @@ import { runWhenIdle, IdleValue } from 'vs/base/common/async'; +-import { getZoomLevel } from 'vs/base/browser/browser'; ++import { getZoomLevel, isWindows, isLinux } from 'vs/base/browser/browser'; +@@ -17 +17 @@ import { Registry } from 'vs/platform/registry/common/platform'; +-import { isWindows, isLinux } from 'vs/base/common/platform'; ++import { isWeb } from 'vs/base/common/platform'; +@@ -83 +83 @@ export class Workbench extends Layout { +- // Inform user about loading issues from the loader ++ /*// Inform user about loading issues from the loader +@@ -90 +90 @@ export class Workbench extends Layout { +- }); ++ });*/ +@@ -272 +272 @@ export class Workbench extends Layout { +- addClasses(document.body, platformClass); // used by our fonts ++ addClasses(document.body, platformClass, isWeb ? 'web' : 'native'); // used by our fonts diff --git a/src/vs/workbench/common/contextkeys.ts b/src/vs/workbench/common/contextkeys.ts -index a0921a0..ed5ba1e 100644 +index e5b4a41..e623101 100644 --- a/src/vs/workbench/common/contextkeys.ts +++ b/src/vs/workbench/common/contextkeys.ts @@ -7 +7 @@ import { RawContextKey } from 'vs/platform/contextkey/common/contextkey'; @@ -522,7 +549,7 @@ index 787c9ef..bd50c14 100644 - platform.isMacintosh + browser.isMacintosh diff --git a/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts b/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts -index 1d338f1..4f13736 100644 +index b949e00..8a9005c 100644 --- a/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts +++ b/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts @@ -14 +14 @@ import { mixin } from 'vs/base/common/objects'; @@ -538,23 +565,24 @@ index 5e1b6da..f8643d2 100644 @@ -84 +84 @@ MenuRegistry.appendMenuItem(MenuId.MenubarSelectionMenu, { - platform.isMacintosh + browser.isMacintosh -diff --git a/src/vs/workbench/contrib/comments/electron-browser/commentNode.ts b/src/vs/workbench/contrib/comments/electron-browser/commentNode.ts -index 1ece57b..cf9505e 100644 ---- a/src/vs/workbench/contrib/comments/electron-browser/commentNode.ts -+++ b/src/vs/workbench/contrib/comments/electron-browser/commentNode.ts -@@ -26 +26 @@ import { KeyCode } from 'vs/base/common/keyCodes'; --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/contrib/comments/electron-browser/commentThreadWidget.ts b/src/vs/workbench/contrib/comments/electron-browser/commentThreadWidget.ts -index 973dd5a..6c54854 100644 ---- a/src/vs/workbench/contrib/comments/electron-browser/commentThreadWidget.ts -+++ b/src/vs/workbench/contrib/comments/electron-browser/commentThreadWidget.ts -@@ -15 +15 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle'; --import * as platform from 'vs/base/common/platform'; +diff --git a/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts b/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts +index de8fe1e..e8749fa 100644 +--- a/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts ++++ b/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts +@@ -9,0 +10 @@ import * as env from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; -@@ -742 +742 @@ export class ReviewZoneWidget extends ZoneWidget { -- let keybinding = platform.isMacintosh ? 'Cmd+Enter' : 'Ctrl+Enter'; -+ let keybinding = browser.isMacintosh ? 'Cmd+Enter' : 'Ctrl+Enter'; +@@ -181 +182 @@ export class DebugEditorContribution implements IDebugEditorContribution { +- if (e.event.rightButton || (env.isMacintosh && e.event.leftButton && e.event.ctrlKey)) { ++ if (e.event.rightButton || (browser.isMacintosh && e.event.leftButton && e.event.ctrlKey)) { +@@ -200 +201 @@ export class DebugEditorContribution implements IDebugEditorContribution { +- if (!env.isLinux && breakpoints.some(bp => !!bp.condition || !!bp.logMessage || !!bp.hitCondition)) { ++ if (!(env.isNative && env.isLinux) && breakpoints.some(bp => !!bp.condition || !!bp.logMessage || !!bp.hitCondition)) { +@@ -435 +436 @@ export class DebugEditorContribution implements IDebugEditorContribution { +- const stopKey = env.isMacintosh ? 'metaKey' : 'ctrlKey'; ++ const stopKey = browser.isMacintosh ? 'metaKey' : 'ctrlKey'; +@@ -453 +454 @@ export class DebugEditorContribution implements IDebugEditorContribution { +- const stopKey = env.isMacintosh ? KeyCode.Meta : KeyCode.Ctrl; ++ const stopKey = browser.isMacintosh ? KeyCode.Meta : KeyCode.Ctrl; diff --git a/src/vs/workbench/contrib/debug/browser/linkDetector.ts b/src/vs/workbench/contrib/debug/browser/linkDetector.ts index 1b6f41c..0c9bf68 100644 --- a/src/vs/workbench/contrib/debug/browser/linkDetector.ts @@ -563,88 +591,72 @@ index 1b6f41c..0c9bf68 100644 -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts -index fde17ef..6010faa 100644 +index 5ed1eda..60d3815 100644 --- a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts +++ b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts -@@ -45 +45 @@ import { ViewsRegistry } from 'vs/workbench/common/views'; +@@ -38 +38 @@ import { IViewsRegistry, Extensions as ViewExtensions } from 'vs/workbench/commo -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/contrib/debug/electron-browser/debugEditorContribution.ts b/src/vs/workbench/contrib/debug/electron-browser/debugEditorContribution.ts -index 89c1311..e803b6f 100644 ---- a/src/vs/workbench/contrib/debug/electron-browser/debugEditorContribution.ts -+++ b/src/vs/workbench/contrib/debug/electron-browser/debugEditorContribution.ts -@@ -9,0 +10 @@ import * as env from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -180 +181 @@ export class DebugEditorContribution implements IDebugEditorContribution { -- if (e.event.rightButton || (env.isMacintosh && e.event.leftButton && e.event.ctrlKey)) { -+ if (e.event.rightButton || (browser.isMacintosh && e.event.leftButton && e.event.ctrlKey)) { -@@ -429 +430 @@ export class DebugEditorContribution implements IDebugEditorContribution { -- const stopKey = env.isMacintosh ? 'metaKey' : 'ctrlKey'; -+ const stopKey = browser.isMacintosh ? 'metaKey' : 'ctrlKey'; -@@ -447 +448 @@ export class DebugEditorContribution implements IDebugEditorContribution { -- const stopKey = env.isMacintosh ? KeyCode.Meta : KeyCode.Ctrl; -+ const stopKey = browser.isMacintosh ? KeyCode.Meta : KeyCode.Ctrl; -diff --git a/src/vs/workbench/contrib/debug/node/debugAdapter.ts b/src/vs/workbench/contrib/debug/node/debugAdapter.ts -index b5f6da9..6e6ff4b 100644 ---- a/src/vs/workbench/contrib/debug/node/debugAdapter.ts -+++ b/src/vs/workbench/contrib/debug/node/debugAdapter.ts -@@ -315 +315 @@ export class ExecutableDebugAdapter extends StreamDebugAdapter { -- return new Promise((resolve, reject) => { -+ return new Promise(async (resolve, reject) => { -@@ -320 +320 @@ export class ExecutableDebugAdapter extends StreamDebugAdapter { -- if (!fs.existsSync(this.adapterExecutable.command)) { -+ if (!(await require("util").promisify(fs.exists)(this.adapterExecutable.command))) { diff --git a/src/vs/workbench/contrib/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/contrib/extensions/node/extensionsWorkbenchService.ts -index 67c0c41..956c3a6 100644 +index 7c58491..63ac200 100644 --- a/src/vs/workbench/contrib/extensions/node/extensionsWorkbenchService.ts +++ b/src/vs/workbench/contrib/extensions/node/extensionsWorkbenchService.ts @@ -118 +118 @@ class Extension implements IExtension { - return `${product.extensionsGallery.itemUrl}?itemName=${this.publisher}.${this.name}`; + return undefined; // `${product.extensionsGallery.itemUrl}?itemName=${this.publisher}.${this.name}`; diff --git a/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts b/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts -index f83842f..bca184e 100644 +index a9f017e..75fe519 100644 --- a/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts +++ b/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts @@ -17 +17 @@ import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/co -import { isWindows, isMacintosh } from 'vs/base/common/platform'; +import { isWindows, isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/workbench/contrib/files/browser/fileCommands.ts b/src/vs/workbench/contrib/files/browser/fileCommands.ts -index 136bbc9..6766894 100644 +index 59922c1..62d4d5b 100644 --- a/src/vs/workbench/contrib/files/browser/fileCommands.ts +++ b/src/vs/workbench/contrib/files/browser/fileCommands.ts @@ -28 +28 @@ import { KeyMod, KeyCode, KeyChord } from 'vs/base/common/keyCodes'; -import { isWindows, isMacintosh } from 'vs/base/common/platform'; +import { isWindows, isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/contrib/files/browser/views/emptyView.ts b/src/vs/workbench/contrib/files/browser/views/emptyView.ts +index 89e2def..9005795 100644 +--- a/src/vs/workbench/contrib/files/browser/views/emptyView.ts ++++ b/src/vs/workbench/contrib/files/browser/views/emptyView.ts +@@ -7,0 +8 @@ import * as errors from 'vs/base/common/errors'; ++import * as browser from 'vs/base/browser/browser'; +@@ -76 +77 @@ export class EmptyView extends ViewletPanel { +- const actionClass = this.contextService.getWorkbenchState() === WorkbenchState.WORKSPACE ? AddRootFolderAction : env.isMacintosh ? OpenFileFolderAction : OpenFolderAction; ++ const actionClass = this.contextService.getWorkbenchState() === WorkbenchState.WORKSPACE ? AddRootFolderAction : browser.isMacintosh ? OpenFileFolderAction : OpenFolderAction; diff --git a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts -index e944612..e638513 100644 +index b3c2d15..067215e 100644 --- a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts +++ b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts @@ -38 +38 @@ import { DesktopDragAndDropData, ExternalElementsDragAndDropData, ElementsDragAn -import { isMacintosh, isLinux } from 'vs/base/common/platform'; +import { isMacintosh, isLinux } from 'vs/base/browser/browser'; -@@ -592,0 +593 @@ export class FileDragAndDrop implements ITreeDragAndDrop { +@@ -606,0 +607 @@ export class FileDragAndDrop implements ITreeDragAndDrop { + return (require('vs/../../../../packages/vscode/src/workbench') as typeof import('vs/../../../../packages/vscode/src/workbench')).workbench.handleExternalDrop(target, originalEvent); diff --git a/src/vs/workbench/contrib/files/common/explorerModel.ts b/src/vs/workbench/contrib/files/common/explorerModel.ts -index 4ddf707..5e51b38 100644 +index a5cd043..0569a5f 100644 --- a/src/vs/workbench/contrib/files/common/explorerModel.ts +++ b/src/vs/workbench/contrib/files/common/explorerModel.ts @@ -77,0 +78 @@ export class ExplorerItem { + private forgotChildren: boolean = false; -@@ -252 +253,2 @@ export class ExplorerItem { +@@ -248 +249,2 @@ export class ExplorerItem { - if (!this._isDirectoryResolved) { + if (!this._isDirectoryResolved || this.forgotChildren) { + this.forgotChildren = false; @@ -277,0 +280 @@ export class ExplorerItem { + this.forgotChildren = true; diff --git a/src/vs/workbench/contrib/files/common/explorerService.ts b/src/vs/workbench/contrib/files/common/explorerService.ts -index 980c9b1..a692900 100644 +index 46d87e4..fd3f927 100644 --- a/src/vs/workbench/contrib/files/common/explorerService.ts +++ b/src/vs/workbench/contrib/files/common/explorerService.ts @@ -333 +333 @@ export class ExplorerService implements IExplorerService { - if (shouldRefresh()) { + if (true || shouldRefresh()) { diff --git a/src/vs/workbench/contrib/logs/common/logs.contribution.ts b/src/vs/workbench/contrib/logs/common/logs.contribution.ts -index a14a280..af264a8 100644 +index 25df212..6c40c9d 100644 --- a/src/vs/workbench/contrib/logs/common/logs.contribution.ts +++ b/src/vs/workbench/contrib/logs/common/logs.contribution.ts @@ -31 +31,2 @@ class LogOutputChannels extends Disposable implements IWorkbenchContribution { @@ -681,62 +693,58 @@ index e3c9552..a64fda2 100644 @@ -75 +76 @@ export class SettingsChangeRelauncher extends Disposable implements IWorkbenchCo - if (isMacintosh && config.window && typeof config.window.nativeFullScreen === 'boolean' && config.window.nativeFullScreen !== this.nativeFullScreen) { + if (isNative && isMacintosh && config.window && typeof config.window.nativeFullScreen === 'boolean' && config.window.nativeFullScreen !== this.nativeFullScreen) { -diff --git a/src/vs/workbench/contrib/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/contrib/scm/electron-browser/scmViewlet.ts -index 077334b..b215ede 100644 ---- a/src/vs/workbench/contrib/scm/electron-browser/scmViewlet.ts -+++ b/src/vs/workbench/contrib/scm/electron-browser/scmViewlet.ts -@@ -50 +50 @@ import { IPanelDndController, Panel } from 'vs/base/browser/ui/splitview/panelvi +diff --git a/src/vs/workbench/contrib/scm/browser/scmViewlet.ts b/src/vs/workbench/contrib/scm/browser/scmViewlet.ts +index b8db2f2..be84602 100644 +--- a/src/vs/workbench/contrib/scm/browser/scmViewlet.ts ++++ b/src/vs/workbench/contrib/scm/browser/scmViewlet.ts +@@ -46 +46 @@ import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/la -import * as platform from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; -@@ -816 +816 @@ export class RepositoryPanel extends ViewletPanel { +@@ -769 +769 @@ export class RepositoryPanel extends ViewletPanel { - const label = binding ? binding.getLabel() : (platform.isMacintosh ? 'Cmd+Enter' : 'Ctrl+Enter'); + const label = binding ? binding.getLabel() : (browser.isMacintosh ? 'Cmd+Enter' : 'Ctrl+Enter'); diff --git a/src/vs/workbench/contrib/search/browser/search.contribution.ts b/src/vs/workbench/contrib/search/browser/search.contribution.ts -index c60cccd..257cd31 100644 +index 1f8088e..f5b0551 100644 --- a/src/vs/workbench/contrib/search/browser/search.contribution.ts +++ b/src/vs/workbench/contrib/search/browser/search.contribution.ts -@@ -665 +665 @@ configurationRegistry.registerConfiguration({ +@@ -686 +686 @@ configurationRegistry.registerConfiguration({ - included: platform.isMacintosh + included: platform.isNative && platform.isMacintosh -diff --git a/src/vs/workbench/contrib/tasks/common/problemMatcher.ts b/src/vs/workbench/contrib/tasks/common/problemMatcher.ts -index 57ece42..91bc82a 100644 ---- a/src/vs/workbench/contrib/tasks/common/problemMatcher.ts -+++ b/src/vs/workbench/contrib/tasks/common/problemMatcher.ts -@@ -222 +222 @@ export function createLineMatcher(matcher: ProblemMatcher): ILineMatcher { --const endOfLine: string = Platform.OS === Platform.OperatingSystem.Windows ? '\r\n' : '\n'; -+const endOfLine: string = Platform.isWindows ? '\r\n' : '\n'; -diff --git a/src/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.ts b/src/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.ts -index b15ee85..4a577b3 100644 ---- a/src/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.ts -+++ b/src/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.ts -@@ -12,0 +13 @@ import * as platform from 'vs/base/common/platform'; +diff --git a/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts b/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts +index 24ba122..fca7faf 100644 +--- a/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts ++++ b/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts +@@ -12,0 +13 @@ import * as nls from 'vs/nls'; +import * as browser from 'vs/base/browser/browser'; -@@ -219 +220 @@ configurationRegistry.registerConfiguration({ +@@ -196 +197 @@ configurationRegistry.registerConfiguration({ - default: platform.isMacintosh ? 'selectWord' : platform.isWindows ? 'copyPaste' : 'default', + default: browser.isMacintosh ? 'selectWord' : browser.isWindows ? 'copyPaste' : 'default', -diff --git a/src/vs/workbench/contrib/terminal/electron-browser/terminalLinkHandler.ts b/src/vs/workbench/contrib/terminal/electron-browser/terminalLinkHandler.ts -index 734d13f..efba861 100644 ---- a/src/vs/workbench/contrib/terminal/electron-browser/terminalLinkHandler.ts -+++ b/src/vs/workbench/contrib/terminal/electron-browser/terminalLinkHandler.ts -@@ -7,0 +8 @@ import * as path from 'vs/base/common/path'; +diff --git a/src/vs/workbench/contrib/terminal/browser/terminalLinkHandler.ts b/src/vs/workbench/contrib/terminal/browser/terminalLinkHandler.ts +index 933e4ea..b661a7e 100644 +--- a/src/vs/workbench/contrib/terminal/browser/terminalLinkHandler.ts ++++ b/src/vs/workbench/contrib/terminal/browser/terminalLinkHandler.ts +@@ -7,0 +8 @@ import * as platform from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; -@@ -235 +236 @@ export class TerminalLinkHandler { +@@ -234 +235 @@ export class TerminalLinkHandler { - return platform.isMacintosh ? event.metaKey : event.ctrlKey; + return browser.isMacintosh ? event.metaKey : event.ctrlKey; -@@ -243 +244 @@ export class TerminalLinkHandler { +@@ -242 +243 @@ export class TerminalLinkHandler { - if (platform.isMacintosh) { + if (browser.isMacintosh) { -diff --git a/src/vs/workbench/contrib/terminal/electron-browser/terminalPanel.ts b/src/vs/workbench/contrib/terminal/electron-browser/terminalPanel.ts -index bfde146..6c3391e 100644 ---- a/src/vs/workbench/contrib/terminal/electron-browser/terminalPanel.ts -+++ b/src/vs/workbench/contrib/terminal/electron-browser/terminalPanel.ts +diff --git a/src/vs/workbench/contrib/terminal/browser/terminalPanel.ts b/src/vs/workbench/contrib/terminal/browser/terminalPanel.ts +index 780147c..2e8c9af 100644 +--- a/src/vs/workbench/contrib/terminal/browser/terminalPanel.ts ++++ b/src/vs/workbench/contrib/terminal/browser/terminalPanel.ts @@ -8,0 +9 @@ import * as platform from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; -@@ -232 +233 @@ export class TerminalPanel extends Panel { +@@ -211 +212 @@ export class TerminalPanel extends Panel { +- if (event.which === 2 && platform.isLinux) { ++ if (event.which === 2 && browser.isLinux) { +@@ -234 +235 @@ export class TerminalPanel extends Panel { - if (platform.isMacintosh) { + if (browser.isMacintosh) { diff --git a/src/vs/workbench/contrib/webview/electron-browser/webview-pre.js b/src/vs/workbench/contrib/webview/electron-browser/webview-pre.js -index a239f09..3f68547 100644 +index 74fc798..03728d0 100644 --- a/src/vs/workbench/contrib/webview/electron-browser/webview-pre.js +++ b/src/vs/workbench/contrib/webview/electron-browser/webview-pre.js @@ -10 +10,19 @@ @@ -776,31 +784,23 @@ index a239f09..3f68547 100644 + // corsEnabled: true + // }); diff --git a/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts b/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts -index 8e2b9e0..c06da1c 100644 +index 484ff86..f3f57cb 100644 --- a/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts +++ b/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts -@@ -24 +24 @@ import { InputFocusedContextKey } from 'vs/platform/contextkey/common/contextkey +@@ -23 +23 @@ import { InputFocusedContextKey } from 'vs/platform/contextkey/common/contextkey -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts -index 5a28744..9d6f38c 100644 +index 3e56ee1..3880c57 100644 --- a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts +++ b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts -@@ -19 +19,2 @@ import { endsWith } from 'vs/base/common/strings'; +@@ -11 +11 @@ import { Disposable } from 'vs/base/common/lifecycle'; -import { isMacintosh } from 'vs/base/common/platform'; -+import { isWeb } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; -@@ -254 +255 @@ export class WebviewElement extends Disposable { -- this._webview.src = this._options.useSameOriginForRoot ? require.toUrl('./webview.html') : 'data:text/html;charset=utf-8,%3C%21DOCTYPE%20html%3E%0D%0A%3Chtml%20lang%3D%22en%22%20style%3D%22width%3A%20100%25%3B%20height%3A%20100%25%22%3E%0D%0A%3Chead%3E%0D%0A%09%3Ctitle%3EVirtual%20Document%3C%2Ftitle%3E%0D%0A%3C%2Fhead%3E%0D%0A%3Cbody%20style%3D%22margin%3A%200%3B%20overflow%3A%20hidden%3B%20width%3A%20100%25%3B%20height%3A%20100%25%22%3E%0D%0A%3C%2Fbody%3E%0D%0A%3C%2Fhtml%3E'; -+ this._webview.src = isWeb || this._options.useSameOriginForRoot ? require.toUrl('./webview.html') : 'data:text/html;charset=utf-8,%3C%21DOCTYPE%20html%3E%0D%0A%3Chtml%20lang%3D%22en%22%20style%3D%22width%3A%20100%25%3B%20height%3A%20100%25%22%3E%0D%0A%3Chead%3E%0D%0A%09%3Ctitle%3EVirtual%20Document%3C%2Ftitle%3E%0D%0A%3C%2Fhead%3E%0D%0A%3Cbody%20style%3D%22margin%3A%200%3B%20overflow%3A%20hidden%3B%20width%3A%20100%25%3B%20height%3A%20100%25%22%3E%0D%0A%3C%2Fbody%3E%0D%0A%3C%2Fhtml%3E'; -@@ -265,0 +267,3 @@ export class WebviewElement extends Disposable { -+ Object.defineProperty(this._options, 'useSameOriginForRoot', { -+ value: true, -+ }); -diff --git a/src/vs/workbench/contrib/welcome/walkThrough/node/walkThroughContentProvider.ts b/src/vs/workbench/contrib/welcome/walkThrough/node/walkThroughContentProvider.ts -index 147f05b..a36fad0 100644 ---- a/src/vs/workbench/contrib/welcome/walkThrough/node/walkThroughContentProvider.ts -+++ b/src/vs/workbench/contrib/welcome/walkThrough/node/walkThroughContentProvider.ts +diff --git a/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts b/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts +index 147f05b..6bc9061 100644 +--- a/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts ++++ b/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts @@ -30,0 +31 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW + /* @@ -38 +39,11 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW @@ -808,7 +808,7 @@ index 147f05b..a36fad0 100644 + */ + // This works because the only walkthrough that is a module is the welcome page. + // We have to explicitly import it or Webpack won't pick it up. -+ import("vs/workbench/contrib/welcome/page/electron-browser/vs_code_welcome_page").then((content) => { ++ import("vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page").then((content) => { + resolve(content.default()); + }).catch((err) => { + reject(err); @@ -837,104 +837,96 @@ index 79e2ba2..8c1b21b 100644 +import { language } from 'vs/base/common/platform'; +import { isMacintosh, isLinux } from 'vs/base/browser/browser'; diff --git a/src/vs/workbench/electron-browser/actions/windowActions.ts b/src/vs/workbench/electron-browser/actions/windowActions.ts -index ef64015..689487d 100644 +index 48ef482..dc47f81 100644 --- a/src/vs/workbench/electron-browser/actions/windowActions.ts +++ b/src/vs/workbench/electron-browser/actions/windowActions.ts -@@ -14 +14 @@ import { IWorkspaceConfigurationService } from 'vs/workbench/services/configurat --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; +@@ -388 +388 @@ export abstract class BaseOpenRecentAction extends Action { +- placeHolder: isMacintosh ? nls.localize('openRecentPlaceHolderMac', "Select to open (hold Cmd-key to open in new window)") : nls.localize('openRecentPlaceHolder', "Select to open (hold Ctrl-key to open in new window)"), ++ placeHolder: browser.isMacintosh ? nls.localize('openRecentPlaceHolderMac', "Select to open (hold Cmd-key to open in new window)") : nls.localize('openRecentPlaceHolder', "Select to open (hold Ctrl-key to open in new window)"), diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts -index 0d9d443..f0e30f7 100644 +index 71bc992..59a1a20 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -13 +13,2 @@ import { KeyMod, KeyChord, KeyCode } from 'vs/base/common/keyCodes'; -import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform'; +import { isNative, isWeb } from 'vs/base/common/platform'; -+import { isWindows, isLinux, isMacintosh } from 'vs/base/browser/browser'; -@@ -535 +536 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; ++import { isMacintosh, isWindows, isLinux } from 'vs/base/browser/browser'; +@@ -306 +307 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- when: IsMacContext.toNegated() ++ // when: IsMacContext.toNegated() +@@ -538 +539 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; - isMacintosh ? + isNative && isMacintosh ? -@@ -542 +543 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +@@ -545 +546 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; - isMacintosh ? + isNative && isMacintosh ? -@@ -629 +630 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +@@ -626 +627 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; - 'included': isWindows || isLinux + 'included': isWeb || isWindows || isLinux -@@ -636 +637 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +@@ -633 +634 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; - 'included': isWindows || isLinux + 'included': isWeb || isWindows || isLinux -@@ -662 +663 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +@@ -650 +651 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- 'default': isLinux ? 'native' : 'custom', ++ 'default': isNative && isLinux ? 'native' : 'custom', +@@ -659 +660 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; - 'included': isMacintosh && parseFloat(os.release()) >= 16 // Minimum: macOS Sierra (10.12.x = darwin 16.x) + 'included': isNative && isMacintosh && parseFloat(os.release()) >= 16 // Minimum: macOS Sierra (10.12.x = darwin 16.x) -@@ -668 +669 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +@@ -665 +666 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; - 'included': isMacintosh + 'included': isNative && isMacintosh +diff --git a/src/vs/workbench/electron-browser/main.ts b/src/vs/workbench/electron-browser/main.ts +index b94daa8..5963023 100644 +--- a/src/vs/workbench/electron-browser/main.ts ++++ b/src/vs/workbench/electron-browser/main.ts +@@ -140,0 +141,2 @@ class CodeRendererMain extends Disposable { ++ ++ (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.serviceCollection = services.serviceCollection; diff --git a/src/vs/workbench/electron-browser/window.ts b/src/vs/workbench/electron-browser/window.ts -index acb68c8..bee143a 100644 +index 111982b..73d83a4 100644 --- a/src/vs/workbench/electron-browser/window.ts +++ b/src/vs/workbench/electron-browser/window.ts @@ -53 +53 @@ const TextInputActions: IAction[] = [ - new Action('editor.action.clipboardPasteAction', nls.localize('paste', "Paste"), undefined, true, () => Promise.resolve(document.execCommand('paste'))), + (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.pasteAction, -@@ -319 +319 @@ export class ElectronWindow extends Disposable { -- (window).open = function (url: string, target: string, features: string, replace: boolean): any { -+ (window).openInvalid = function (url: string, target: string, features: string, replace: boolean): any { -@@ -365 +365 @@ export class ElectronWindow extends Disposable { +@@ -361 +361 @@ export class ElectronWindow extends Disposable { - !isMacintosh || // macOS only + !browser.isMacintosh || // macOS only -diff --git a/src/vs/workbench/electron-browser/workbench.ts b/src/vs/workbench/electron-browser/workbench.ts -index 7445d7b..ba6bf4b 100644 ---- a/src/vs/workbench/electron-browser/workbench.ts -+++ b/src/vs/workbench/electron-browser/workbench.ts -@@ -19 +19,2 @@ import { Registry } from 'vs/platform/registry/common/platform'; --import { isWindows, isLinux, isMacintosh, language } from 'vs/base/common/platform'; -+import { isWeb, isNative, language } from 'vs/base/common/platform'; -+import { isWindows, isLinux, isMacintosh } from 'vs/base/browser/browser'; -@@ -321,0 +323 @@ export class Workbench extends Disposable implements IPartService { -+ (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.serviceCollection = serviceCollection; -@@ -345,0 +348 @@ export class Workbench extends Disposable implements IPartService { -+ /* -@@ -353,0 +357 @@ export class Workbench extends Disposable implements IPartService { -+ */ -@@ -458 +462 @@ export class Workbench extends Disposable implements IPartService { -- addClasses(document.body, platformClass); // used by our fonts -+ addClasses(document.body, platformClass, isWeb ? 'web' : 'native'); // used by our fonts -@@ -491,0 +496 @@ export class Workbench extends Disposable implements IPartService { -+ client.onClose(() => this.notificationService.error("Disconnected from shared process. Searching, installing, enabling, and disabling extensions will not work until the page is refreshed.")); -@@ -633 +638 @@ export class Workbench extends Disposable implements IPartService { -- if (!isMacintosh && this.useCustomTitleBarStyle()) { -+ if (isWeb || (!isMacintosh && this.useCustomTitleBarStyle())) { -@@ -1241 +1246 @@ export class Workbench extends Disposable implements IPartService { -- if ((isWindows || isLinux) && this.useCustomTitleBarStyle()) { -+ if ((isWeb || isWindows || isLinux) && this.useCustomTitleBarStyle()) { -@@ -1397 +1402 @@ export class Workbench extends Disposable implements IPartService { -- } else if (isMacintosh) { -+ } else if (isNative && isMacintosh) { +diff --git a/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts b/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts +index 75f0026..2e94683 100644 +--- a/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts ++++ b/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts +@@ -22 +22 @@ import { getTitleBarStyle } from 'vs/platform/windows/common/windows'; +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isNative, isMacintosh } from 'vs/base/common/platform'; +@@ -49 +49 @@ export class ContextMenuService extends Disposable implements IContextMenuServic +- if (!isMacintosh && getTitleBarStyle(configurationService, environmentService) === 'custom') { ++ if (!(isNative && isMacintosh) && getTitleBarStyle(configurationService, environmentService) === 'custom') { diff --git a/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts b/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts -index 0592910..0ce7e35 100644 +index 059f821..2dde675 100644 --- a/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts +++ b/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts -@@ -33,0 +34 @@ function getSystemExtensionsRoot(): string { +@@ -32,0 +33 @@ function getSystemExtensionsRoot(): string { + return (require('vs/../../../../packages/vscode/src/fill/paths') as typeof import ('vs/../../../../packages/vscode/src/fill/paths')).getBuiltInExtensionsDirectory(); diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts -index 2c2f9c7..e2ab620 100644 +index b337206..0477464 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts -@@ -92,0 +93 @@ export class ExtensionService extends Disposable implements IExtensionService { +@@ -96,0 +97 @@ export class ExtensionService extends Disposable implements IExtensionService { + private readonly retry = (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.retry.register('Extension Host', () => this.startExtensionHost()); -@@ -435,0 +437 @@ export class ExtensionService extends Disposable implements IExtensionService { -+ extHostProcessWorker.start().then(() => this.retry.recover()); -@@ -458,0 +461 @@ export class ExtensionService extends Disposable implements IExtensionService { +@@ -442,0 +444 @@ export class ExtensionService extends Disposable implements IExtensionService { ++ extHostProcessWorker.start()!.then(() => this.retry.recover()); +@@ -449,0 +452 @@ export class ExtensionService extends Disposable implements IExtensionService { + return this.retry.run(); diff --git a/src/vs/workbench/services/extensions/node/extensionHostProcess.ts b/src/vs/workbench/services/extensions/node/extensionHostProcess.ts -index 484cef9..f728fc8 100644 +index 838a9c7..2308cee 100644 --- a/src/vs/workbench/services/extensions/node/extensionHostProcess.ts +++ b/src/vs/workbench/services/extensions/node/extensionHostProcess.ts -@@ -137 +137 @@ function connectToRenderer(protocol: IMessagePassingProtocol): Promise this.retry.recover()); diff --git a/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts b/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts -index 7e3a324..a880182 100644 +index 8059d2c..b5a3d68 100644 --- a/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts +++ b/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts @@ -26,0 +27 @@ export class FileWatcher { @@ -967,26 +959,44 @@ index 74dad64..7bc591a 100644 + this.handle.stdout.once('data', () => this.retry.recover()); @@ -110,0 +113 @@ export class OutOfProcessWin32FolderWatcher { + return this.retry.run(); +diff --git a/src/vs/workbench/services/files2/node/diskFileSystemProvider.ts b/src/vs/workbench/services/files2/node/diskFileSystemProvider.ts +index 18edf56..8e5b395 100644 +--- a/src/vs/workbench/services/files2/node/diskFileSystemProvider.ts ++++ b/src/vs/workbench/services/files2/node/diskFileSystemProvider.ts +@@ -79,2 +79,2 @@ export class DiskFileSystemProvider extends Disposable implements IFileSystemPro +- for (let i = 0; i < children.length; i++) { +- const child = children[i]; ++ await Promise.all(children.map(async (child) => { // for (let i = 0; i < children.length; i++) { ++ // const child = children[i]; +@@ -88 +88 @@ export class DiskFileSystemProvider extends Disposable implements IFileSystemPro +- } ++ })); // } +diff --git a/src/vs/workbench/services/heap/node/heap.ts b/src/vs/workbench/services/heap/node/heap.ts +index 8f627ba..9a795eb 100644 +--- a/src/vs/workbench/services/heap/node/heap.ts ++++ b/src/vs/workbench/services/heap/node/heap.ts +@@ -33,0 +34 @@ export class HeapService implements IHeapService { ++ if (typeof process === 'undefined' || typeof process.stdout === 'undefined') { return; } // Doesn't work in the browser (for running the extension host in worker). diff --git a/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts b/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts -index 3c78990..545d91a 100644 +index 0c3d16f..e27e98c 100644 --- a/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts +++ b/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts @@ -16 +16 @@ import { KeybindingParser } from 'vs/base/common/keybindingParser'; -import { OS, OperatingSystem } from 'vs/base/common/platform'; +import { OS, OperatingSystem, isNative } from 'vs/base/common/platform'; -@@ -130 +130 @@ export class KeyboardMapperFactory { +@@ -131 +131 @@ export class KeyboardMapperFactory { - if (OS === OperatingSystem.Windows) { + if (isNative && OS === OperatingSystem.Windows) { diff --git a/src/vs/workbench/services/search/node/searchService.ts b/src/vs/workbench/services/search/node/searchService.ts -index 3eaafa4..3b4cb5f 100644 +index fcef06a..80f6800 100644 --- a/src/vs/workbench/services/search/node/searchService.ts +++ b/src/vs/workbench/services/search/node/searchService.ts @@ -11 +11 @@ import { Event } from 'vs/base/common/event'; -import { Disposable, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; +import { Disposable, IDisposable, toDisposable, dispose } from 'vs/base/common/lifecycle'; -@@ -433,0 +434 @@ export class DiskSearch implements ISearchResultProvider { +@@ -422,0 +423 @@ export class DiskSearch implements ISearchResultProvider { + private toDispose: IDisposable[] = []; -@@ -470,6 +471,15 @@ export class DiskSearch implements ISearchResultProvider { +@@ -458,6 +459,15 @@ export class DiskSearch implements ISearchResultProvider { - const client = new Client( - getPathFromAmdModule(require, 'bootstrap-fork'), - opts); @@ -1014,10 +1024,3 @@ index 6e6fbcc..645bd72 100644 +++ b/src/vs/workbench/services/timer/electron-browser/timerService.ts @@ -426,0 +427 @@ export function didUseCachedData(): boolean { + return false; -diff --git a/src/vs/workbench/workbench.main.ts b/src/vs/workbench/workbench.main.ts -index 368fffe..8c172db 100644 ---- a/src/vs/workbench/workbench.main.ts -+++ b/src/vs/workbench/workbench.main.ts -@@ -25 +25 @@ import 'vs/workbench/browser/actions/navigationActions'; --import 'vs/workbench/browser/parts/quickopen/quickopenActions'; -+import 'vs/workbench/browser/parts/quickopen/quickOpenActions'; diff --git a/scripts/vstar.sh b/scripts/vstar.sh index 478bc81cd..835880634 100755 --- a/scripts/vstar.sh +++ b/scripts/vstar.sh @@ -4,7 +4,7 @@ set -euxo pipefail # Builds a tarfile containing vscode sourcefiles neccessary for CI. # Done outside the CI and uploaded to object storage to reduce CI time. -branch=1.32.0 +branch=1.33.0 dir=/tmp/vstar outfile=/tmp/vstar-$branch.tar.gz rm -rf $dir