@codingame/monaco-vscode-view-common-service-override 4.5.0-improve-code-splitting.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/assets/fake.html +10 -0
  2. package/assets/index-no-csp.html +1230 -0
  3. package/assets/index.html +1231 -0
  4. package/assets/service-worker.js +457 -0
  5. package/index.d.ts +1 -0
  6. package/index.js +1 -0
  7. package/override/vs/workbench/browser/parts/editor/textEditor.js +5 -0
  8. package/override/vs/workbench/browser/parts/editor/textEditor.weak.js +11 -0
  9. package/package.json +32 -0
  10. package/tools/editorAssets.js +4 -0
  11. package/tools/url.js +10 -0
  12. package/viewCommon.d.ts +5 -0
  13. package/viewCommon.js +105 -0
  14. package/vscode/src/vs/base/browser/deviceAccess.js +61 -0
  15. package/vscode/src/vs/base/browser/ui/centered/centeredViewLayout.js +180 -0
  16. package/vscode/src/vs/base/browser/ui/grid/grid.js +494 -0
  17. package/vscode/src/vs/base/browser/ui/grid/gridview.css.js +6 -0
  18. package/vscode/src/vs/base/browser/ui/grid/gridview.js +1113 -0
  19. package/vscode/src/vs/platform/languagePacks/common/localizedStrings.js +12 -0
  20. package/vscode/src/vs/platform/webview/common/mimeTypes.js +24 -0
  21. package/vscode/src/vs/platform/webview/common/webviewPortMapping.js +64 -0
  22. package/vscode/src/vs/workbench/api/browser/viewsExtensionPoint.js +907 -0
  23. package/vscode/src/vs/workbench/browser/actions/listCommands.js +764 -0
  24. package/vscode/src/vs/workbench/browser/actions/navigationActions.js +301 -0
  25. package/vscode/src/vs/workbench/browser/media/style.css.js +6 -0
  26. package/vscode/src/vs/workbench/browser/parts/activitybar/activitybarPart.js +671 -0
  27. package/vscode/src/vs/workbench/browser/parts/activitybar/media/activityaction.css.js +6 -0
  28. package/vscode/src/vs/workbench/browser/parts/activitybar/media/activitybarpart.css.js +6 -0
  29. package/vscode/src/vs/workbench/browser/parts/auxiliarybar/auxiliaryBarPart.js +229 -0
  30. package/vscode/src/vs/workbench/browser/parts/auxiliarybar/media/auxiliaryBarPart.css.js +6 -0
  31. package/vscode/src/vs/workbench/browser/parts/compositeBar.js +606 -0
  32. package/vscode/src/vs/workbench/browser/parts/compositePart.js +346 -0
  33. package/vscode/src/vs/workbench/browser/parts/editor/auxiliaryEditorPart.js +246 -0
  34. package/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.js +1403 -0
  35. package/vscode/src/vs/workbench/browser/parts/editor/editorConfiguration.js +188 -0
  36. package/vscode/src/vs/workbench/browser/parts/editor/editorDropTarget.js +523 -0
  37. package/vscode/src/vs/workbench/browser/parts/editor/editorPart.js +1030 -0
  38. package/vscode/src/vs/workbench/browser/parts/editor/editorParts.js +391 -0
  39. package/vscode/src/vs/workbench/browser/parts/editor/media/editordroptarget.css.js +6 -0
  40. package/vscode/src/vs/workbench/browser/parts/media/compositepart.css.js +6 -0
  41. package/vscode/src/vs/workbench/browser/parts/media/paneCompositePart.css.js +6 -0
  42. package/vscode/src/vs/workbench/browser/parts/paneCompositeBar.js +643 -0
  43. package/vscode/src/vs/workbench/browser/parts/paneCompositePart.js +472 -0
  44. package/vscode/src/vs/workbench/browser/parts/paneCompositePartService.js +68 -0
  45. package/vscode/src/vs/workbench/browser/parts/panel/panelPart.js +160 -0
  46. package/vscode/src/vs/workbench/browser/parts/sidebar/media/sidebarpart.css.js +6 -0
  47. package/vscode/src/vs/workbench/browser/parts/sidebar/sidebarActions.js +39 -0
  48. package/vscode/src/vs/workbench/browser/parts/sidebar/sidebarPart.js +238 -0
  49. package/vscode/src/vs/workbench/browser/style.js +54 -0
  50. package/vscode/src/vs/workbench/browser/window.js +381 -0
  51. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js +300 -0
  52. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js +367 -0
  53. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.js +135 -0
  54. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/media/callHierarchy.css.js +6 -0
  55. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.js +18 -0
  56. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.js +146 -0
  57. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditors.js +215 -0
  58. package/vscode/src/vs/workbench/contrib/customEditor/browser/media/customEditor.css.js +6 -0
  59. package/vscode/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.js +78 -0
  60. package/vscode/src/vs/workbench/contrib/customEditor/common/customEditor.js +56 -0
  61. package/vscode/src/vs/workbench/contrib/customEditor/common/customEditorModelManager.js +63 -0
  62. package/vscode/src/vs/workbench/contrib/customEditor/common/extensionPoint.js +183 -0
  63. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/externalUriOpener.contribution.js +8 -0
  64. package/vscode/src/vs/workbench/contrib/languageStatus/browser/languageStatus.contribution.js +408 -0
  65. package/vscode/src/vs/workbench/contrib/languageStatus/browser/media/languageStatus.css.js +6 -0
  66. package/vscode/src/vs/workbench/contrib/limitIndicator/browser/limitIndicator.contribution.js +147 -0
  67. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/commands/commands.js +635 -0
  68. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/commands/devCommands.js +230 -0
  69. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditor.contribution.js +75 -0
  70. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorSerializer.js +42 -0
  71. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/colors.js +81 -0
  72. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/conflictActions.js +350 -0
  73. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editorGutter.js +100 -0
  74. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView.js +148 -0
  75. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/codeEditorView.js +106 -0
  76. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.js +403 -0
  77. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/resultCodeEditorView.js +199 -0
  78. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/fixedZoneWidget.js +41 -0
  79. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/lineAlignment.js +128 -0
  80. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/media/mergeEditor.css.js +6 -0
  81. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/mergeEditor.js +619 -0
  82. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/scrollSynchronizer.js +161 -0
  83. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/viewModel.js +266 -0
  84. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/viewZones.js +173 -0
  85. package/vscode/src/vs/workbench/contrib/preferences/browser/keyboardLayoutPicker.js +195 -0
  86. package/vscode/src/vs/workbench/contrib/sash/browser/sash.contribution.js +38 -0
  87. package/vscode/src/vs/workbench/contrib/sash/browser/sash.js +41 -0
  88. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/media/typeHierarchy.css.js +6 -0
  89. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchy.contribution.js +283 -0
  90. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyPeek.js +362 -0
  91. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyTree.js +133 -0
  92. package/vscode/src/vs/workbench/contrib/webview/browser/overlayWebview.js +314 -0
  93. package/vscode/src/vs/workbench/contrib/webview/browser/resourceLoading.js +96 -0
  94. package/vscode/src/vs/workbench/contrib/webview/browser/themeing.js +98 -0
  95. package/vscode/src/vs/workbench/contrib/webview/browser/webviewElement.js +656 -0
  96. package/vscode/src/vs/workbench/contrib/webview/browser/webviewFindWidget.js +65 -0
  97. package/vscode/src/vs/workbench/contrib/webview/browser/webviewService.js +59 -0
  98. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewCommands.js +143 -0
  99. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewEditorInputSerializer.js +121 -0
  100. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewPanel.contribution.js +67 -0
  101. package/vscode/src/vs/workbench/contrib/webviewView/browser/webviewViewPane.js +234 -0
  102. package/vscode/src/vs/workbench/contrib/webviewView/browser/webviewViewService.js +45 -0
  103. package/vscode/src/vs/workbench/services/activity/browser/activityService.js +145 -0
  104. package/vscode/src/vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService.js +341 -0
  105. package/vscode/src/vs/workbench/services/driver/browser/driver.js +186 -0
  106. package/vscode/src/vs/workbench/services/editor/browser/editorPaneService.js +13 -0
  107. package/vscode/src/vs/workbench/services/editor/browser/editorResolverService.js +676 -0
  108. package/vscode/src/vs/workbench/services/history/browser/historyService.js +1516 -0
  109. package/vscode/src/vs/workbench/services/progress/browser/media/progressService.css.js +6 -0
  110. package/vscode/src/vs/workbench/services/progress/browser/progressService.js +527 -0
  111. package/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorHandler.js +102 -0
  112. package/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorService.js +133 -0
  113. package/vscode/src/vs/workbench/services/views/browser/viewDescriptorService.js +711 -0
  114. package/vscode/src/vs/workbench/services/views/common/viewContainerModel.js +603 -0
@@ -0,0 +1,341 @@
1
+ import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
2
+ import { localizeWithPath } from 'vscode/vscode/vs/nls';
3
+ import { mark } from 'vscode/vscode/vs/base/common/performance';
4
+ import { Emitter, Event } from 'vscode/vscode/vs/base/common/event';
5
+ import { addDisposableListener, EventType, EventHelper, ModifierKeyEmitter, getClientArea, getWindowId, registerWindow, getActiveWindow, createMetaElement, copyAttributes, createLinkElement, isGlobalStylesheet, cloneGlobalStylesheets, sharedMutationObserver, position, trackAttributes } from 'vscode/vscode/vs/base/browser/dom';
6
+ import { mainWindow, ensureCodeWindow } from 'vscode/vscode/vs/base/browser/window';
7
+ import { Disposable, DisposableStore, toDisposable } from 'vscode/vscode/vs/base/common/lifecycle';
8
+ import { IWorkbenchLayoutService } from 'vscode/vscode/vs/workbench/services/layout/browser/layoutService.service';
9
+ import { onUnexpectedError } from 'vscode/vscode/vs/base/common/errors';
10
+ import { isWeb } from 'vscode/vscode/vs/base/common/platform';
11
+ import { WindowMinimumSize } from 'vscode/vscode/vs/platform/window/common/window';
12
+ import { IDialogService } from 'vscode/vscode/vs/platform/dialogs/common/dialogs.service';
13
+ import Severity$1 from 'vscode/vscode/vs/base/common/severity';
14
+ import { BaseWindow } from '../../../browser/window.js';
15
+ import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration.service';
16
+ import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry.service';
17
+ import { Barrier } from 'vscode/vscode/vs/base/common/async';
18
+ import { IHostService } from 'vscode/vscode/vs/workbench/services/host/browser/host.service';
19
+ import { IWorkbenchEnvironmentService } from 'vscode/vscode/vs/workbench/services/environment/common/environmentService.service';
20
+ import 'vscode/vscode/vs/platform/instantiation/common/instantiation';
21
+
22
+ var BrowserAuxiliaryWindowService_1;
23
+ let AuxiliaryWindow = class AuxiliaryWindow extends BaseWindow {
24
+ constructor(window, container, stylesHaveLoaded, configurationService, hostService, environmentService) {
25
+ super(window, undefined, hostService, environmentService);
26
+ this.window = window;
27
+ this.container = container;
28
+ this.configurationService = configurationService;
29
+ this._onWillLayout = this._register(( new Emitter()));
30
+ this.onWillLayout = this._onWillLayout.event;
31
+ this._onDidLayout = this._register(( new Emitter()));
32
+ this.onDidLayout = this._onDidLayout.event;
33
+ this._onBeforeUnload = this._register(( new Emitter()));
34
+ this.onBeforeUnload = this._onBeforeUnload.event;
35
+ this._onUnload = this._register(( new Emitter()));
36
+ this.onUnload = this._onUnload.event;
37
+ this._onWillDispose = this._register(( new Emitter()));
38
+ this.onWillDispose = this._onWillDispose.event;
39
+ this.whenStylesHaveLoaded = stylesHaveLoaded.wait().then(() => undefined);
40
+ this.registerListeners();
41
+ }
42
+ registerListeners() {
43
+ this._register(addDisposableListener(this.window, EventType.BEFORE_UNLOAD, (e) => this.handleBeforeUnload(e)));
44
+ this._register(addDisposableListener(this.window, EventType.UNLOAD, () => this.handleUnload()));
45
+ this._register(addDisposableListener(this.window, 'unhandledrejection', e => {
46
+ onUnexpectedError(e.reason);
47
+ e.preventDefault();
48
+ }));
49
+ this._register(addDisposableListener(this.window, EventType.RESIZE, () => this.layout()));
50
+ this._register(addDisposableListener(this.container, EventType.SCROLL, () => this.container.scrollTop = 0));
51
+ if (isWeb) {
52
+ this._register(addDisposableListener(this.container, EventType.DROP, e => EventHelper.stop(e, true)));
53
+ this._register(addDisposableListener(this.container, EventType.WHEEL, e => e.preventDefault(), { passive: false }));
54
+ this._register(addDisposableListener(this.container, EventType.CONTEXT_MENU, e => EventHelper.stop(e, true)));
55
+ }
56
+ else {
57
+ this._register(addDisposableListener(this.window.document.body, EventType.DRAG_OVER, (e) => EventHelper.stop(e)));
58
+ this._register(addDisposableListener(this.window.document.body, EventType.DROP, (e) => EventHelper.stop(e)));
59
+ }
60
+ }
61
+ handleBeforeUnload(e) {
62
+ let veto;
63
+ this._onBeforeUnload.fire({
64
+ veto(reason) {
65
+ if (reason) {
66
+ veto = reason;
67
+ }
68
+ }
69
+ });
70
+ if (veto) {
71
+ this.handleVetoBeforeClose(e, veto);
72
+ return;
73
+ }
74
+ const confirmBeforeCloseSetting = this.configurationService.getValue('window.confirmBeforeClose');
75
+ const confirmBeforeClose = confirmBeforeCloseSetting === 'always' || (confirmBeforeCloseSetting === 'keyboardOnly' && ModifierKeyEmitter.getInstance().isModifierPressed);
76
+ if (confirmBeforeClose) {
77
+ this.confirmBeforeClose(e);
78
+ }
79
+ }
80
+ handleVetoBeforeClose(e, reason) {
81
+ this.preventUnload(e);
82
+ }
83
+ preventUnload(e) {
84
+ e.preventDefault();
85
+ e.returnValue = ( localizeWithPath(
86
+ 'vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService',
87
+ 'lifecycleVeto',
88
+ "Changes that you made may not be saved. Please check press 'Cancel' and try again."
89
+ ));
90
+ }
91
+ confirmBeforeClose(e) {
92
+ this.preventUnload(e);
93
+ }
94
+ handleUnload() {
95
+ this._onUnload.fire();
96
+ }
97
+ layout() {
98
+ const dimension = getClientArea(this.window.document.body, this.container);
99
+ this._onWillLayout.fire(dimension);
100
+ this._onDidLayout.fire(dimension);
101
+ }
102
+ dispose() {
103
+ if (this._store.isDisposed) {
104
+ return;
105
+ }
106
+ this._onWillDispose.fire();
107
+ super.dispose();
108
+ }
109
+ };
110
+ AuxiliaryWindow = ( __decorate([
111
+ ( __param(3, IConfigurationService)),
112
+ ( __param(4, IHostService)),
113
+ ( __param(5, IWorkbenchEnvironmentService))
114
+ ], AuxiliaryWindow));
115
+ let BrowserAuxiliaryWindowService = class BrowserAuxiliaryWindowService extends Disposable {
116
+ static { BrowserAuxiliaryWindowService_1 = this; }
117
+ static { this.DEFAULT_SIZE = { width: 800, height: 600 }; }
118
+ static { this.WINDOW_IDS = getWindowId(mainWindow) + 1; }
119
+ constructor(layoutService, dialogService, configurationService, telemetryService, hostService, environmentService) {
120
+ super();
121
+ this.layoutService = layoutService;
122
+ this.dialogService = dialogService;
123
+ this.configurationService = configurationService;
124
+ this.telemetryService = telemetryService;
125
+ this.hostService = hostService;
126
+ this.environmentService = environmentService;
127
+ this._onDidOpenAuxiliaryWindow = this._register(( new Emitter()));
128
+ this.onDidOpenAuxiliaryWindow = this._onDidOpenAuxiliaryWindow.event;
129
+ this.windows = ( new Map());
130
+ }
131
+ async open(options) {
132
+ mark('code/auxiliaryWindow/willOpen');
133
+ const targetWindow = await this.openWindow(options);
134
+ if (!targetWindow) {
135
+ throw new Error(localizeWithPath('vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService', 'unableToOpenWindowError', "Unable to open a new window."));
136
+ }
137
+ const resolvedWindowId = await this.resolveWindowId(targetWindow);
138
+ ensureCodeWindow(targetWindow, resolvedWindowId);
139
+ const containerDisposables = ( new DisposableStore());
140
+ const { container, stylesLoaded } = this.createContainer(targetWindow, containerDisposables, options);
141
+ const auxiliaryWindow = this.createAuxiliaryWindow(targetWindow, container, stylesLoaded);
142
+ const registryDisposables = ( new DisposableStore());
143
+ this.windows.set(targetWindow.vscodeWindowId, auxiliaryWindow);
144
+ registryDisposables.add(toDisposable(() => this.windows.delete(targetWindow.vscodeWindowId)));
145
+ const eventDisposables = ( new DisposableStore());
146
+ Event.once(auxiliaryWindow.onWillDispose)(() => {
147
+ targetWindow.close();
148
+ containerDisposables.dispose();
149
+ registryDisposables.dispose();
150
+ eventDisposables.dispose();
151
+ });
152
+ registryDisposables.add(registerWindow(targetWindow));
153
+ this._onDidOpenAuxiliaryWindow.fire({ window: auxiliaryWindow, disposables: eventDisposables });
154
+ mark('code/auxiliaryWindow/didOpen');
155
+ this.telemetryService.publicLog2('auxiliaryWindowOpen', { bounds: !!options?.bounds });
156
+ return auxiliaryWindow;
157
+ }
158
+ createAuxiliaryWindow(targetWindow, container, stylesLoaded) {
159
+ return ( new AuxiliaryWindow(
160
+ targetWindow,
161
+ container,
162
+ stylesLoaded,
163
+ this.configurationService,
164
+ this.hostService,
165
+ this.environmentService
166
+ ));
167
+ }
168
+ async openWindow(options) {
169
+ const activeWindow = getActiveWindow();
170
+ const activeWindowBounds = {
171
+ x: activeWindow.screenX,
172
+ y: activeWindow.screenY,
173
+ width: activeWindow.outerWidth,
174
+ height: activeWindow.outerHeight
175
+ };
176
+ const width = Math.max(options?.bounds?.width ?? BrowserAuxiliaryWindowService_1.DEFAULT_SIZE.width, WindowMinimumSize.WIDTH);
177
+ const height = Math.max(options?.bounds?.height ?? BrowserAuxiliaryWindowService_1.DEFAULT_SIZE.height, WindowMinimumSize.HEIGHT);
178
+ let newWindowBounds = {
179
+ x: options?.bounds?.x ?? Math.max(activeWindowBounds.x + activeWindowBounds.width / 2 - width / 2, 0),
180
+ y: options?.bounds?.y ?? Math.max(activeWindowBounds.y + activeWindowBounds.height / 2 - height / 2, 0),
181
+ width,
182
+ height
183
+ };
184
+ if (newWindowBounds.x === activeWindowBounds.x && newWindowBounds.y === activeWindowBounds.y) {
185
+ newWindowBounds = {
186
+ ...newWindowBounds,
187
+ x: newWindowBounds.x + 30,
188
+ y: newWindowBounds.y + 30
189
+ };
190
+ }
191
+ const auxiliaryWindow = mainWindow.open('about:blank', undefined, `popup=yes,left=${newWindowBounds.x},top=${newWindowBounds.y},width=${newWindowBounds.width},height=${newWindowBounds.height}`);
192
+ if (!auxiliaryWindow && isWeb) {
193
+ return (await this.dialogService.prompt({
194
+ type: Severity$1.Warning,
195
+ message: ( localizeWithPath(
196
+ 'vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService',
197
+ 'unableToOpenWindow',
198
+ "The browser interrupted the opening of a new window. Press 'Retry' to try again."
199
+ )),
200
+ detail: ( localizeWithPath(
201
+ 'vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService',
202
+ 'unableToOpenWindowDetail',
203
+ "To avoid this problem in the future, please ensure to allow popups for this website."
204
+ )),
205
+ buttons: [
206
+ {
207
+ label: ( localizeWithPath(
208
+ 'vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService',
209
+ { key: 'retry', comment: ['&& denotes a mnemonic'] },
210
+ "&&Retry"
211
+ )),
212
+ run: () => this.openWindow(options)
213
+ }
214
+ ],
215
+ cancelButton: true
216
+ })).result;
217
+ }
218
+ return auxiliaryWindow?.window;
219
+ }
220
+ async resolveWindowId(auxiliaryWindow) {
221
+ return BrowserAuxiliaryWindowService_1.WINDOW_IDS++;
222
+ }
223
+ createContainer(auxiliaryWindow, disposables, options) {
224
+ this.applyMeta(auxiliaryWindow);
225
+ const { stylesLoaded } = this.applyCSS(auxiliaryWindow, disposables);
226
+ const container = this.applyHTML(auxiliaryWindow, disposables);
227
+ return { stylesLoaded, container };
228
+ }
229
+ applyMeta(auxiliaryWindow) {
230
+ for (const metaTag of ['meta[charset="utf-8"]', 'meta[http-equiv="Content-Security-Policy"]', 'meta[name="viewport"]', 'meta[name="theme-color"]']) {
231
+ const metaElement = mainWindow.document.querySelector(metaTag);
232
+ if (metaElement) {
233
+ const clonedMetaElement = createMetaElement(auxiliaryWindow.document.head);
234
+ copyAttributes(metaElement, clonedMetaElement);
235
+ if (metaTag === 'meta[http-equiv="Content-Security-Policy"]') {
236
+ const content = clonedMetaElement.getAttribute('content');
237
+ if (content) {
238
+ clonedMetaElement.setAttribute('content', content.replace(/(script-src[^\;]*)/, `script-src 'none'`));
239
+ }
240
+ }
241
+ }
242
+ }
243
+ const originalIconLinkTag = mainWindow.document.querySelector('link[rel="icon"]');
244
+ if (originalIconLinkTag) {
245
+ const icon = createLinkElement(auxiliaryWindow.document.head);
246
+ copyAttributes(originalIconLinkTag, icon);
247
+ }
248
+ }
249
+ applyCSS(auxiliaryWindow, disposables) {
250
+ mark('code/auxiliaryWindow/willApplyCSS');
251
+ const mapOriginalToClone = ( new Map());
252
+ const stylesLoaded = ( new Barrier());
253
+ stylesLoaded.wait().then(() => mark('code/auxiliaryWindow/didLoadCSSStyles'));
254
+ const pendingLinksDisposables = disposables.add(( new DisposableStore()));
255
+ let pendingLinksToSettle = 0;
256
+ function onLinkSettled() {
257
+ if (--pendingLinksToSettle === 0) {
258
+ pendingLinksDisposables.dispose();
259
+ stylesLoaded.open();
260
+ }
261
+ }
262
+ function cloneNode(originalNode) {
263
+ if (isGlobalStylesheet(originalNode)) {
264
+ return;
265
+ }
266
+ const clonedNode = auxiliaryWindow.document.head.appendChild(originalNode.cloneNode(true));
267
+ if (originalNode.tagName.toLowerCase() === 'link') {
268
+ pendingLinksToSettle++;
269
+ pendingLinksDisposables.add(addDisposableListener(clonedNode, 'load', onLinkSettled));
270
+ pendingLinksDisposables.add(addDisposableListener(clonedNode, 'error', onLinkSettled));
271
+ }
272
+ mapOriginalToClone.set(originalNode, clonedNode);
273
+ }
274
+ pendingLinksToSettle++;
275
+ try {
276
+ for (const originalNode of mainWindow.document.head.querySelectorAll('link[rel="stylesheet"], style')) {
277
+ cloneNode(originalNode);
278
+ }
279
+ }
280
+ finally {
281
+ onLinkSettled();
282
+ }
283
+ disposables.add(cloneGlobalStylesheets(auxiliaryWindow));
284
+ disposables.add(sharedMutationObserver.observe(mainWindow.document.head, disposables, { childList: true, subtree: true })(mutations => {
285
+ for (const mutation of mutations) {
286
+ if (mutation.type !== 'childList' ||
287
+ mutation.target.nodeName.toLowerCase() === 'title' ||
288
+ mutation.target.nodeName.toLowerCase() === 'script' ||
289
+ mutation.target.nodeName.toLowerCase() === 'meta'
290
+ ) {
291
+ continue;
292
+ }
293
+ for (const node of mutation.addedNodes) {
294
+ if (node instanceof HTMLElement && (node.tagName.toLowerCase() === 'style' || node.tagName.toLowerCase() === 'link')) {
295
+ cloneNode(node);
296
+ }
297
+ else if (node.nodeType === Node.TEXT_NODE && node.parentNode) {
298
+ const clonedNode = mapOriginalToClone.get(node.parentNode);
299
+ if (clonedNode) {
300
+ clonedNode.textContent = node.textContent;
301
+ }
302
+ }
303
+ }
304
+ for (const node of mutation.removedNodes) {
305
+ const clonedNode = mapOriginalToClone.get(node);
306
+ if (clonedNode) {
307
+ clonedNode.parentNode?.removeChild(clonedNode);
308
+ mapOriginalToClone.delete(node);
309
+ }
310
+ }
311
+ }
312
+ }));
313
+ mark('code/auxiliaryWindow/didApplyCSS');
314
+ return { stylesLoaded };
315
+ }
316
+ applyHTML(auxiliaryWindow, disposables) {
317
+ mark('code/auxiliaryWindow/willApplyHTML');
318
+ const container = document.createElement('div');
319
+ container.setAttribute('role', 'application');
320
+ position(container, 0, 0, 0, 0, 'relative');
321
+ container.style.display = 'flex';
322
+ container.style.height = '100%';
323
+ container.style.flexDirection = 'column';
324
+ auxiliaryWindow.document.body.append(container);
325
+ disposables.add(trackAttributes(mainWindow.document.documentElement, auxiliaryWindow.document.documentElement));
326
+ disposables.add(trackAttributes(mainWindow.document.body, auxiliaryWindow.document.body));
327
+ disposables.add(trackAttributes(this.layoutService.mainContainer, container, ['class']));
328
+ mark('code/auxiliaryWindow/didApplyHTML');
329
+ return container;
330
+ }
331
+ };
332
+ BrowserAuxiliaryWindowService = BrowserAuxiliaryWindowService_1 = ( __decorate([
333
+ ( __param(0, IWorkbenchLayoutService)),
334
+ ( __param(1, IDialogService)),
335
+ ( __param(2, IConfigurationService)),
336
+ ( __param(3, ITelemetryService)),
337
+ ( __param(4, IHostService)),
338
+ ( __param(5, IWorkbenchEnvironmentService))
339
+ ], BrowserAuxiliaryWindowService));
340
+
341
+ export { AuxiliaryWindow, BrowserAuxiliaryWindowService };
@@ -0,0 +1,186 @@
1
+ import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
2
+ import { getTopLeftOffset, getClientArea } from 'vscode/vscode/vs/base/browser/dom';
3
+ import { mainWindow } from 'vscode/vscode/vs/base/browser/window';
4
+ import { coalesce } from 'vscode/vscode/vs/base/common/arrays';
5
+ import { language, locale } from 'vscode/vscode/vs/base/common/platform';
6
+ import { IEnvironmentService } from 'vscode/vscode/vs/platform/environment/common/environment.service';
7
+ import { IFileService } from 'vscode/vscode/vs/platform/files/common/files.service';
8
+ import localizedStrings from '../../../../platform/languagePacks/common/localizedStrings.js';
9
+ import { getLogs } from 'vscode/vscode/vs/platform/log/browser/log';
10
+ import { ILogService } from 'vscode/vscode/vs/platform/log/common/log.service';
11
+ import { Registry } from 'vscode/vscode/vs/platform/registry/common/platform';
12
+ import { Extensions } from 'vscode/vscode/vs/workbench/common/contributions';
13
+ import { ILifecycleService } from 'vscode/vscode/vs/workbench/services/lifecycle/common/lifecycle.service';
14
+
15
+ let BrowserWindowDriver = class BrowserWindowDriver {
16
+ constructor(fileService, environmentService, lifecycleService, logService) {
17
+ this.fileService = fileService;
18
+ this.environmentService = environmentService;
19
+ this.lifecycleService = lifecycleService;
20
+ this.logService = logService;
21
+ }
22
+ async getLogs() {
23
+ return getLogs(this.fileService, this.environmentService);
24
+ }
25
+ async whenWorkbenchRestored() {
26
+ this.logService.info('[driver] Waiting for restored lifecycle phase...');
27
+ await this.lifecycleService.when(3 );
28
+ this.logService.info('[driver] Restored lifecycle phase reached. Waiting for contributions...');
29
+ await ( Registry.as(Extensions.Workbench)).whenRestored;
30
+ this.logService.info('[driver] Workbench contributions created.');
31
+ }
32
+ async setValue(selector, text) {
33
+ const element = mainWindow.document.querySelector(selector);
34
+ if (!element) {
35
+ return Promise.reject(( new Error(`Element not found: ${selector}`)));
36
+ }
37
+ const inputElement = element;
38
+ inputElement.value = text;
39
+ const event = ( new Event('input', { bubbles: true, cancelable: true }));
40
+ inputElement.dispatchEvent(event);
41
+ }
42
+ async isActiveElement(selector) {
43
+ const element = mainWindow.document.querySelector(selector);
44
+ if (element !== mainWindow.document.activeElement) {
45
+ const chain = [];
46
+ let el = mainWindow.document.activeElement;
47
+ while (el) {
48
+ const tagName = el.tagName;
49
+ const id = el.id ? `#${el.id}` : '';
50
+ const classes = ( coalesce(( el.className.split(/\s+/g).map(c => c.trim()))).map(c => `.${c}`)).join('');
51
+ chain.unshift(`${tagName}${id}${classes}`);
52
+ el = el.parentElement;
53
+ }
54
+ throw new Error(`Active element not found. Current active element is '${chain.join(' > ')}'. Looking for ${selector}`);
55
+ }
56
+ return true;
57
+ }
58
+ async getElements(selector, recursive) {
59
+ const query = mainWindow.document.querySelectorAll(selector);
60
+ const result = [];
61
+ for (let i = 0; i < query.length; i++) {
62
+ const element = query.item(i);
63
+ result.push(this.serializeElement(element, recursive));
64
+ }
65
+ return result;
66
+ }
67
+ serializeElement(element, recursive) {
68
+ const attributes = Object.create(null);
69
+ for (let j = 0; j < element.attributes.length; j++) {
70
+ const attr = element.attributes.item(j);
71
+ if (attr) {
72
+ attributes[attr.name] = attr.value;
73
+ }
74
+ }
75
+ const children = [];
76
+ if (recursive) {
77
+ for (let i = 0; i < element.children.length; i++) {
78
+ const child = element.children.item(i);
79
+ if (child) {
80
+ children.push(this.serializeElement(child, true));
81
+ }
82
+ }
83
+ }
84
+ const { left, top } = getTopLeftOffset(element);
85
+ return {
86
+ tagName: element.tagName,
87
+ className: element.className,
88
+ textContent: element.textContent || '',
89
+ attributes,
90
+ children,
91
+ left,
92
+ top
93
+ };
94
+ }
95
+ async getElementXY(selector, xoffset, yoffset) {
96
+ const offset = typeof xoffset === 'number' && typeof yoffset === 'number' ? { x: xoffset, y: yoffset } : undefined;
97
+ return this._getElementXY(selector, offset);
98
+ }
99
+ async typeInEditor(selector, text) {
100
+ const element = mainWindow.document.querySelector(selector);
101
+ if (!element) {
102
+ throw new Error(`Editor not found: ${selector}`);
103
+ }
104
+ const textarea = element;
105
+ const start = textarea.selectionStart;
106
+ const newStart = start + text.length;
107
+ const value = textarea.value;
108
+ const newValue = value.substr(0, start) + text + value.substr(start);
109
+ textarea.value = newValue;
110
+ textarea.setSelectionRange(newStart, newStart);
111
+ const event = ( new Event('input', { 'bubbles': true, 'cancelable': true }));
112
+ textarea.dispatchEvent(event);
113
+ }
114
+ async getTerminalBuffer(selector) {
115
+ const element = mainWindow.document.querySelector(selector);
116
+ if (!element) {
117
+ throw new Error(`Terminal not found: ${selector}`);
118
+ }
119
+ const xterm = element.xterm;
120
+ if (!xterm) {
121
+ throw new Error(`Xterm not found: ${selector}`);
122
+ }
123
+ const lines = [];
124
+ for (let i = 0; i < xterm.buffer.active.length; i++) {
125
+ lines.push(xterm.buffer.active.getLine(i).translateToString(true));
126
+ }
127
+ return lines;
128
+ }
129
+ async writeInTerminal(selector, text) {
130
+ const element = mainWindow.document.querySelector(selector);
131
+ if (!element) {
132
+ throw new Error(`Element not found: ${selector}`);
133
+ }
134
+ const xterm = element.xterm;
135
+ if (!xterm) {
136
+ throw new Error(`Xterm not found: ${selector}`);
137
+ }
138
+ xterm._core.coreService.triggerDataEvent(text);
139
+ }
140
+ getLocaleInfo() {
141
+ return Promise.resolve({
142
+ language: language,
143
+ locale: locale
144
+ });
145
+ }
146
+ getLocalizedStrings() {
147
+ return Promise.resolve({
148
+ open: localizedStrings.open,
149
+ close: localizedStrings.close,
150
+ find: localizedStrings.find
151
+ });
152
+ }
153
+ async _getElementXY(selector, offset) {
154
+ const element = mainWindow.document.querySelector(selector);
155
+ if (!element) {
156
+ return Promise.reject(( new Error(`Element not found: ${selector}`)));
157
+ }
158
+ const { left, top } = getTopLeftOffset(element);
159
+ const { width, height } = getClientArea(element);
160
+ let x, y;
161
+ if (offset) {
162
+ x = left + offset.x;
163
+ y = top + offset.y;
164
+ }
165
+ else {
166
+ x = left + (width / 2);
167
+ y = top + (height / 2);
168
+ }
169
+ x = Math.round(x);
170
+ y = Math.round(y);
171
+ return { x, y };
172
+ }
173
+ async exitApplication() {
174
+ }
175
+ };
176
+ BrowserWindowDriver = ( __decorate([
177
+ ( __param(0, IFileService)),
178
+ ( __param(1, IEnvironmentService)),
179
+ ( __param(2, ILifecycleService)),
180
+ ( __param(3, ILogService))
181
+ ], BrowserWindowDriver));
182
+ function registerWindowDriver(instantiationService) {
183
+ Object.assign(mainWindow, { driver: instantiationService.createInstance(BrowserWindowDriver) });
184
+ }
185
+
186
+ export { BrowserWindowDriver, registerWindowDriver };
@@ -0,0 +1,13 @@
1
+ import 'vscode/vscode/vs/platform/instantiation/common/instantiation';
2
+ import { EditorPaneDescriptor } from 'vscode/vscode/vs/workbench/browser/editor';
3
+
4
+ class EditorPaneService {
5
+ constructor() {
6
+ this.onWillInstantiateEditorPane = EditorPaneDescriptor.onWillInstantiateEditorPane;
7
+ }
8
+ didInstantiateEditorPane(typeId) {
9
+ return EditorPaneDescriptor.didInstantiateEditorPane(typeId);
10
+ }
11
+ }
12
+
13
+ export { EditorPaneService };