Merge vscode source through 1.62 release (#19981)

* Build breaks 1

* Build breaks

* Build breaks

* Build breaks

* More build breaks

* Build breaks (#2512)

* Runtime breaks

* Build breaks

* Fix dialog location break

* Update typescript

* Fix ASAR break issue

* Unit test breaks

* Update distro

* Fix breaks in ADO builds (#2513)

* Bump to node 16

* Fix hygiene errors

* Bump distro

* Remove reference to node type

* Delete vscode specific extension

* Bump to node 16 in CI yaml

* Skip integration tests in CI builds (while fixing)

* yarn.lock update

* Bump moment dependency in remote yarn

* Fix drop-down chevron style

* Bump to node 16

* Remove playwrite from ci.yaml

* Skip building build scripts in hygine check
This commit is contained in:
Karl Burtram
2022-07-11 14:09:32 -07:00
committed by GitHub
parent fa0fcef303
commit 26455e9113
1876 changed files with 72050 additions and 37997 deletions

View File

@@ -11,13 +11,14 @@ import { Lazy } from 'vs/base/common/lazy';
import { Disposable, DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle';
import { ResourceMap } from 'vs/base/common/map';
import { Schemas } from 'vs/base/common/network';
import { isDefined } from 'vs/base/common/types';
import { URI } from 'vs/base/common/uri';
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
import { IEditorOptions } from 'vs/editor/common/config/editorOptions';
import { BareFontInfo } from 'vs/editor/common/config/fontInfo';
// import { localize } from 'vs/nls'; {{SQL CARBON EDIT}} Notebook registration handled in SQL code
import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { ConfigurationTarget, IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IResourceEditorInput } from 'vs/platform/editor/common/editor';
import { IFileService } from 'vs/platform/files/common/files';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
@@ -30,14 +31,14 @@ import { INotebookEditorOptions } from 'vs/workbench/contrib/notebook/browser/no
import { NotebookDiffEditorInput } from 'vs/workbench/contrib/notebook/browser/notebookDiffEditorInput';
import { NotebookCellTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookCellTextModel';
import { NotebookTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookTextModel';
import { ACCESSIBLE_NOTEBOOK_DISPLAY_ORDER, BUILTIN_RENDERER_ID, CellUri, DisplayOrderKey, INotebookExclusiveDocumentFilter, INotebookContributionData, INotebookRendererInfo, INotebookTextModel, IOrderedMimeType, IOutputDto, mimeTypeIsAlwaysSecure, mimeTypeSupportedByCore, NotebookData, NotebookRendererMatch, NotebookTextDiffEditorPreview, RENDERER_NOT_AVAILABLE, sortMimeTypes, TransientOptions } from 'vs/workbench/contrib/notebook/common/notebookCommon'; // {{SQL CARBON EDIT}} Remove unused
import { ACCESSIBLE_NOTEBOOK_DISPLAY_ORDER, BUILTIN_RENDERER_ID, CellUri, DisplayOrderKey, INotebookExclusiveDocumentFilter, INotebookContributionData, INotebookRendererInfo, INotebookTextModel, IOrderedMimeType, IOutputDto, mimeTypeIsAlwaysSecure, mimeTypeSupportedByCore, NotebookData, NotebookRendererMatch, NotebookTextDiffEditorPreview, NOTEBOOK_DISPLAY_ORDER, RENDERER_NOT_AVAILABLE, TransientOptions, MimeTypeDisplayOrder } from 'vs/workbench/contrib/notebook/common/notebookCommon'; // {{SQL CARBON EDIT}} Remove unused
import { NotebookEditorInput } from 'vs/workbench/contrib/notebook/common/notebookEditorInput';
import { INotebookEditorModelResolverService } from 'vs/workbench/contrib/notebook/common/notebookEditorModelResolverService';
import { updateEditorTopPadding } from 'vs/workbench/contrib/notebook/common/notebookOptions';
import { NotebookOutputRendererInfo } from 'vs/workbench/contrib/notebook/common/notebookOutputRenderer';
import { NotebookEditorDescriptor, NotebookProviderInfo } from 'vs/workbench/contrib/notebook/common/notebookProvider';
import { ComplexNotebookProviderInfo, INotebookContentProvider, INotebookSerializer, INotebookService, SimpleNotebookProviderInfo } from 'vs/workbench/contrib/notebook/common/notebookService';
import { RegisteredEditorInfo, RegisteredEditorPriority, DiffEditorInputFactoryFunction, EditorInputFactoryFunction, IEditorResolverService, IEditorType, UntitledEditorInputFactoryFunction } from 'vs/workbench/services/editor/common/editorResolverService';
import { DiffEditorInputFactoryFunction, EditorInputFactoryFunction, IEditorResolverService, IEditorType, RegisteredEditorInfo, RegisteredEditorPriority, UntitledEditorInputFactoryFunction } from 'vs/workbench/services/editor/common/editorResolverService';
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
// import { IExtensionPointUser } from 'vs/workbench/services/extensions/common/extensionsRegistry'; {{SQL CARBON EDIT}} Notebook registration handled in SQL code
@@ -164,7 +165,7 @@ export class NotebookProviderInfoStore extends Disposable {
};
const notebookEditorOptions = {
canHandleDiff: () => !!this._configurationService.getValue(NotebookTextDiffEditorPreview) && !this._accessibilityService.isScreenReaderOptimized(),
canSupportResource: (resource: URI) => resource.scheme === Schemas.untitled || resource.scheme === Schemas.vscodeNotebookCell || this._fileService.canHandleResource(resource)
canSupportResource: (resource: URI) => resource.scheme === Schemas.untitled || resource.scheme === Schemas.vscodeNotebookCell || this._fileService.hasProvider(resource)
};
const notebookEditorInputFactory: EditorInputFactoryFunction = ({ resource, options }) => {
const data = CellUri.parse(resource);
@@ -266,12 +267,16 @@ export class NotebookProviderInfoStore extends Disposable {
}
export class NotebookOutputRendererInfoStore {
private readonly contributedRenderers = new Map<string, NotebookOutputRendererInfo>();
private readonly contributedRenderers = new Map</* rendererId */ string, NotebookOutputRendererInfo>();
private readonly preferredMimetypeMemento: Memento;
private readonly preferredMimetype = new Lazy(() => this.preferredMimetypeMemento.getMemento(StorageScope.WORKSPACE, StorageTarget.USER));
private readonly preferredMimetype = new Lazy<{ [notebookType: string]: { [mimeType: string]: /* rendererId */ string } }>(
() => this.preferredMimetypeMemento.getMemento(StorageScope.WORKSPACE, StorageTarget.USER));
constructor(@IStorageService storageService: IStorageService) {
this.preferredMimetypeMemento = new Memento('workbench.editor.notebook.preferredRenderer', storageService);
constructor(
@IStorageService storageService: IStorageService,
@IWorkspaceTrustManagementService private readonly workspaceTrustManagementService: IWorkspaceTrustManagementService,
) {
this.preferredMimetypeMemento = new Memento('workbench.editor.notebook.preferredRenderer2', storageService);
}
clear() {
@@ -294,25 +299,65 @@ export class NotebookOutputRendererInfoStore {
}
/** Update and remember the preferred renderer for the given mimetype in this workspace */
setPreferred(mimeType: string, rendererId: string) {
this.preferredMimetype.getValue()[mimeType] = rendererId;
setPreferred(notebookProviderInfo: NotebookProviderInfo, mimeType: string, rendererId: string) {
const mementoObj = this.preferredMimetype.getValue();
const forNotebook = mementoObj[notebookProviderInfo.id];
if (forNotebook) {
forNotebook[mimeType] = rendererId;
} else {
mementoObj[notebookProviderInfo.id] = { [mimeType]: rendererId };
}
this.preferredMimetypeMemento.saveMemento();
}
getContributedRenderer(mimeType: string, kernelProvides: readonly string[] | undefined): NotebookOutputRendererInfo[] {
const preferred = this.preferredMimetype.getValue()[mimeType];
const possible = Array.from(this.contributedRenderers.values())
.map(renderer => ({
renderer,
score: kernelProvides === undefined
? renderer.matchesWithoutKernel(mimeType)
: renderer.matches(mimeType, kernelProvides),
}))
.sort((a, b) => a.score - b.score)
.filter(r => r.score !== NotebookRendererMatch.Never)
.map(r => r.renderer);
findBestRenderers(notebookProviderInfo: NotebookProviderInfo | undefined, mimeType: string, kernelProvides: readonly string[] | undefined): IOrderedMimeType[] {
return preferred ? possible.sort((a, b) => (a.id === preferred ? -1 : 0) + (b.id === preferred ? 1 : 0)) : possible;
const enum ReuseOrder {
PreviouslySelected = 1 << 8,
SameExtensionAsNotebook = 2 << 8,
OtherRenderer = 3 << 8,
BuiltIn = 4 << 8,
}
const preferred = notebookProviderInfo && this.preferredMimetype.getValue()[notebookProviderInfo.id]?.[mimeType];
const renderers: { ordered: IOrderedMimeType, score: number }[] = Array.from(this.contributedRenderers.values())
.map(renderer => {
const ownScore = kernelProvides === undefined
? renderer.matchesWithoutKernel(mimeType)
: renderer.matches(mimeType, kernelProvides);
if (ownScore === NotebookRendererMatch.Never) {
return undefined;
}
const reuseScore = preferred === renderer.id
? ReuseOrder.PreviouslySelected
: renderer.extensionId.value === notebookProviderInfo?.extension?.value
? ReuseOrder.SameExtensionAsNotebook
: renderer.isBuiltin ? ReuseOrder.BuiltIn : ReuseOrder.OtherRenderer;
return {
ordered: { mimeType, rendererId: renderer.id, isTrusted: true },
score: reuseScore | ownScore,
};
}).filter(isDefined);
if (mimeTypeSupportedByCore(mimeType)) {
renderers.push({
score: ReuseOrder.BuiltIn,
ordered: {
mimeType,
rendererId: BUILTIN_RENDERER_ID,
isTrusted: mimeTypeIsAlwaysSecure(mimeType) || this.workspaceTrustManagementService.isWorkspaceTrusted()
}
});
}
if (renderers.length === 0) {
return [{ mimeType, rendererId: RENDERER_NOT_AVAILABLE, isTrusted: true }];
}
return renderers.sort((a, b) => a.score - b.score).map(r => r.ordered);
}
}
@@ -369,7 +414,7 @@ export class NotebookService extends Disposable implements INotebookService {
private _cutItems: NotebookCellTextModel[] | undefined;
private _lastClipboardIsCopy: boolean = true;
private _displayOrder: { userOrder: string[], defaultOrder: string[]; } = Object.create(null);
private _displayOrder!: MimeTypeDisplayOrder;
constructor(
@IExtensionService private readonly _extensionService: IExtensionService,
@@ -378,7 +423,6 @@ export class NotebookService extends Disposable implements INotebookService {
@IInstantiationService private readonly _instantiationService: IInstantiationService,
@ICodeEditorService private readonly _codeEditorService: ICodeEditorService,
@IConfigurationService private readonly configurationService: IConfigurationService,
@IWorkspaceTrustManagementService private readonly workspaceTrustManagementService: IWorkspaceTrustManagementService,
) {
super();
@@ -413,11 +457,12 @@ export class NotebookService extends Disposable implements INotebookService {
});
const updateOrder = () => {
const userOrder = this._configurationService.getValue<string[]>(DisplayOrderKey);
this._displayOrder = {
defaultOrder: this._accessibilityService.isScreenReaderOptimized() ? ACCESSIBLE_NOTEBOOK_DISPLAY_ORDER : [],
userOrder: userOrder
};
this._displayOrder = new MimeTypeDisplayOrder(
this._configurationService.getValue<string[]>(DisplayOrderKey) || [],
this._accessibilityService.isScreenReaderOptimized()
? ACCESSIBLE_NOTEBOOK_DISPLAY_ORDER
: NOTEBOOK_DISPLAY_ORDER,
);
};
updateOrder();
@@ -571,8 +616,17 @@ export class NotebookService extends Disposable implements INotebookService {
return this._notebookRenderersInfoStore.get(rendererId);
}
updateMimePreferredRenderer(mimeType: string, rendererId: string): void {
this._notebookRenderersInfoStore.setPreferred(mimeType, rendererId);
updateMimePreferredRenderer(viewType: string, mimeType: string, rendererId: string, otherMimetypes: readonly string[]): void {
const info = this.notebookProviderInfoStore.get(viewType);
if (info) {
this._notebookRenderersInfoStore.setPreferred(info, mimeType, rendererId);
}
this._displayOrder.prioritize(mimeType, otherMimetypes);
}
saveMimeDisplayOrder(target: ConfigurationTarget) {
this._configurationService.updateValue(DisplayOrderKey, this._displayOrder.toArray(), target);
}
getRenderers(): INotebookRendererInfo[] {
@@ -616,64 +670,12 @@ export class NotebookService extends Disposable implements INotebookService {
}
getOutputMimeTypeInfo(textModel: NotebookTextModel, kernelProvides: readonly string[] | undefined, output: IOutputDto): readonly IOrderedMimeType[] {
const sorted = this._displayOrder.sort(new Set<string>(output.outputs.map(op => op.mime)));
const notebookProviderInfo = this.notebookProviderInfoStore.get(textModel.viewType);
const mimeTypeSet = new Set<string>(output.outputs.map(op => op.mime));
const mimeTypes: string[] = [...mimeTypeSet];
const coreDisplayOrder = this._displayOrder;
const sorted = sortMimeTypes(mimeTypes, coreDisplayOrder?.userOrder ?? [], coreDisplayOrder?.defaultOrder ?? []);
const orderMimeTypes: IOrderedMimeType[] = [];
sorted.forEach(mimeType => {
const handlers = this._findBestMatchedRenderer(mimeType, kernelProvides);
if (handlers.length) {
const handler = handlers[0];
orderMimeTypes.push({
mimeType: mimeType,
rendererId: handler.id,
isTrusted: true
});
for (let i = 1; i < handlers.length; i++) {
orderMimeTypes.push({
mimeType: mimeType,
rendererId: handlers[i].id,
isTrusted: true
});
}
if (mimeTypeSupportedByCore(mimeType)) {
orderMimeTypes.push({
mimeType: mimeType,
rendererId: BUILTIN_RENDERER_ID,
isTrusted: mimeTypeIsAlwaysSecure(mimeType) || this.workspaceTrustManagementService.isWorkspaceTrusted()
});
}
} else {
if (mimeTypeSupportedByCore(mimeType)) {
orderMimeTypes.push({
mimeType: mimeType,
rendererId: BUILTIN_RENDERER_ID,
isTrusted: mimeTypeIsAlwaysSecure(mimeType) || this.workspaceTrustManagementService.isWorkspaceTrusted()
});
} else {
orderMimeTypes.push({
mimeType: mimeType,
rendererId: RENDERER_NOT_AVAILABLE,
isTrusted: true
});
}
}
});
return orderMimeTypes;
}
private _findBestMatchedRenderer(mimeType: string, kernelProvides: readonly string[] | undefined): readonly NotebookOutputRendererInfo[] {
return this._notebookRenderersInfoStore.getContributedRenderer(mimeType, kernelProvides);
return sorted
.flatMap(mimeType => this._notebookRenderersInfoStore.findBestRenderers(notebookProviderInfo, mimeType, kernelProvides))
.sort((a, b) => (a.rendererId === RENDERER_NOT_AVAILABLE ? 1 : 0) - (b.rendererId === RENDERER_NOT_AVAILABLE ? 1 : 0));
}
getContributedNotebookTypes(resource?: URI): readonly NotebookProviderInfo[] {
@@ -715,3 +717,4 @@ export class NotebookService extends Disposable implements INotebookService {
}
}