@codingame/monaco-vscode-view-common-service-override 20.5.0 → 21.0.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 (49) hide show
  1. package/index.js +0 -1
  2. package/package.json +41 -41
  3. package/service-override/vs/workbench/contrib/webview/browser/pre/index.html +62 -6
  4. package/service-override/vs/workbench/contrib/webview/browser/pre/service-worker.js +17 -2
  5. package/vscode/src/vs/workbench/api/browser/viewsExtensionPoint.js +70 -60
  6. package/vscode/src/vs/workbench/browser/actions/listCommands.js +3 -3
  7. package/vscode/src/vs/workbench/browser/actions/navigationActions.js +6 -6
  8. package/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.js +169 -168
  9. package/vscode/src/vs/workbench/browser/parts/editor/editorConfiguration.js +8 -8
  10. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js +12 -12
  11. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js +5 -5
  12. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.js +3 -3
  13. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.js +1 -1
  14. package/vscode/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.js +2 -2
  15. package/vscode/src/vs/workbench/contrib/customEditor/common/customEditor.js +1 -1
  16. package/vscode/src/vs/workbench/contrib/customEditor/common/extensionPoint.js +12 -12
  17. package/vscode/src/vs/workbench/contrib/languageStatus/browser/languageStatus.js +7 -7
  18. package/vscode/src/vs/workbench/contrib/limitIndicator/browser/limitIndicator.contribution.js +8 -8
  19. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/commands/commands.js +29 -29
  20. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/commands/devCommands.js +14 -14
  21. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditor.contribution.js +4 -4
  22. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorAccessibilityHelp.js +5 -5
  23. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/colors.js +13 -13
  24. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView.js +3 -3
  25. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/codeEditorView.js +1 -1
  26. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.js +11 -11
  27. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/resultCodeEditorView.js +5 -5
  28. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/mergeEditor.d.ts +1 -1
  29. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/mergeEditor.js +2 -2
  30. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/viewModel.js +1 -1
  31. package/vscode/src/vs/workbench/contrib/preferences/browser/keyboardLayoutPicker.js +12 -12
  32. package/vscode/src/vs/workbench/contrib/sash/browser/sash.contribution.js +2 -2
  33. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchy.contribution.js +10 -10
  34. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyPeek.js +5 -5
  35. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyTree.js +3 -3
  36. package/vscode/src/vs/workbench/contrib/webview/browser/resourceLoading.js +5 -4
  37. package/vscode/src/vs/workbench/contrib/webview/browser/themeing.js +2 -2
  38. package/vscode/src/vs/workbench/contrib/webview/browser/webviewElement.d.ts +3 -2
  39. package/vscode/src/vs/workbench/contrib/webview/browser/webviewElement.js +14 -4
  40. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewCommands.js +5 -5
  41. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewPanel.contribution.js +2 -2
  42. package/vscode/src/vs/workbench/contrib/webviewView/browser/webviewViewPane.d.ts +1 -1
  43. package/vscode/src/vs/workbench/contrib/webviewView/browser/webviewViewPane.js +3 -3
  44. package/vscode/src/vs/workbench/services/editor/browser/editorPaneService.js +1 -1
  45. package/vscode/src/vs/workbench/services/editor/browser/editorResolverService.js +9 -9
  46. package/vscode/src/vs/workbench/services/history/browser/historyService.js +9 -9
  47. package/vscode/src/vs/workbench/services/progress/browser/progressService.js +9 -9
  48. package/vscode/src/vs/workbench/services/views/browser/viewDescriptorService.js +6 -6
  49. package/service-override/vs/workbench/contrib/webview/browser/pre/index-no-csp.html +0 -1251
package/index.js CHANGED
@@ -72,7 +72,6 @@ let webviewIframeAlternateDomains;
72
72
  registerAssets({
73
73
  'vs/workbench/contrib/webview/browser/pre/service-worker.js': () => changeUrlDomain(new URL('./service-override/vs/workbench/contrib/webview/browser/pre/service-worker.js', import.meta.url).href, webviewIframeAlternateDomains),
74
74
  'vs/workbench/contrib/webview/browser/pre/index.html': () => changeUrlDomain(new URL('./service-override/vs/workbench/contrib/webview/browser/pre/index.html', import.meta.url).href, webviewIframeAlternateDomains),
75
- 'vs/workbench/contrib/webview/browser/pre/index-no-csp.html': () => changeUrlDomain(new URL('./service-override/vs/workbench/contrib/webview/browser/pre/index-no-csp.html', import.meta.url).href, webviewIframeAlternateDomains),
76
75
  'vs/workbench/contrib/webview/browser/pre/fake.html': () => changeUrlDomain(new URL('./service-override/vs/workbench/contrib/webview/browser/pre/fake.html', import.meta.url).href, webviewIframeAlternateDomains)
77
76
  });
78
77
  registerServiceInitializePostParticipant(async (accessor) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-view-common-service-override",
3
- "version": "20.5.0",
3
+ "version": "21.0.1",
4
4
  "private": false,
5
5
  "description": "VSCode public API plugged on the monaco editor - view-common service-override",
6
6
  "keywords": [],
@@ -15,46 +15,46 @@
15
15
  },
16
16
  "type": "module",
17
17
  "dependencies": {
18
- "@codingame/monaco-vscode-0c06bfba-d24d-5c4d-90cd-b40cefb7f811-common": "20.5.0",
19
- "@codingame/monaco-vscode-0cc5da60-f921-59b9-bd8c-a018e93c0a6f-common": "20.5.0",
20
- "@codingame/monaco-vscode-158b9837-fc78-5d9c-86f5-9134e4358643-common": "20.5.0",
21
- "@codingame/monaco-vscode-1b4486de-4fe4-59c4-9e6d-34f265ff6625-common": "20.5.0",
22
- "@codingame/monaco-vscode-2a94c04a-b85b-5669-b06b-89c1bfa11cb9-common": "20.5.0",
23
- "@codingame/monaco-vscode-3109a756-1f83-5d09-945b-9f0fcad928f0-common": "20.5.0",
24
- "@codingame/monaco-vscode-40cada32-7e9c-528a-81fc-766e4da54147-common": "20.5.0",
25
- "@codingame/monaco-vscode-4a316137-39d1-5d77-8b53-112db3547c1e-common": "20.5.0",
26
- "@codingame/monaco-vscode-501b06ab-3f58-516b-8a1a-c29d375d3da4-common": "20.5.0",
27
- "@codingame/monaco-vscode-523730aa-81e6-55d7-9916-87ad537fe087-common": "20.5.0",
28
- "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.5.0",
29
- "@codingame/monaco-vscode-615ce609-8555-545a-a549-47bd9f80e9f8-common": "20.5.0",
30
- "@codingame/monaco-vscode-670aae94-7f88-54d7-90ea-6fcbef423557-common": "20.5.0",
31
- "@codingame/monaco-vscode-6980eeab-47bb-5a48-8e15-32caf0785565-common": "20.5.0",
32
- "@codingame/monaco-vscode-6db1b967-5327-5c5c-8c17-bd92774c0fb2-common": "20.5.0",
33
- "@codingame/monaco-vscode-72a1b7d3-3f58-5545-9b7e-f579bd003081-common": "20.5.0",
34
- "@codingame/monaco-vscode-7869cfe8-f42c-5721-9f2b-7d04a6a41f16-common": "20.5.0",
35
- "@codingame/monaco-vscode-7f39b6f1-3542-5430-8760-0f404d7a7cee-common": "20.5.0",
36
- "@codingame/monaco-vscode-897bebad-39df-57cb-8a57-36a271d038be-common": "20.5.0",
37
- "@codingame/monaco-vscode-89a82baf-8ded-5b2f-b8af-e5fbd72dc5ad-common": "20.5.0",
38
- "@codingame/monaco-vscode-8ccb7637-50ea-5359-97bf-00015d7fe567-common": "20.5.0",
39
- "@codingame/monaco-vscode-9c84f943-bcb5-5bcf-92a6-91f66a732f26-common": "20.5.0",
40
- "@codingame/monaco-vscode-9efc1f50-c7de-55d6-8b28-bcc88bd49b5a-common": "20.5.0",
41
- "@codingame/monaco-vscode-a17e9d37-b6c1-5556-8402-5db73960fae3-common": "20.5.0",
42
- "@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common": "20.5.0",
43
- "@codingame/monaco-vscode-a8d3bd74-e63e-5327-96e8-4f931661e329-common": "20.5.0",
44
- "@codingame/monaco-vscode-ac93482b-2178-52df-a200-ba0d1a4963fb-common": "20.5.0",
45
- "@codingame/monaco-vscode-api": "20.5.0",
46
- "@codingame/monaco-vscode-bc6d9a89-1625-5010-b57e-ff44151144fe-common": "20.5.0",
47
- "@codingame/monaco-vscode-bulk-edit-service-override": "20.5.0",
48
- "@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common": "20.5.0",
49
- "@codingame/monaco-vscode-d26a96d3-122c-5a3d-a04d-deb5ff0f19c0-common": "20.5.0",
50
- "@codingame/monaco-vscode-d481a59e-259c-524e-bee1-76483d75d3a1-common": "20.5.0",
51
- "@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": "20.5.0",
52
- "@codingame/monaco-vscode-dbfe5f85-b426-55ed-a79b-5f811b395762-common": "20.5.0",
53
- "@codingame/monaco-vscode-e59ecb8c-db32-5324-8fe4-cf9921fd92b8-common": "20.5.0",
54
- "@codingame/monaco-vscode-e72c94ca-257a-5b75-8b68-5a5fa3c18255-common": "20.5.0",
55
- "@codingame/monaco-vscode-f1bbc6d3-6129-583c-a2ba-c80b832993d2-common": "20.5.0",
56
- "@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": "20.5.0",
57
- "@codingame/monaco-vscode-ff9fa663-eae3-5274-8573-c2b918871e4b-common": "20.5.0"
18
+ "@codingame/monaco-vscode-0c06bfba-d24d-5c4d-90cd-b40cefb7f811-common": "21.0.1",
19
+ "@codingame/monaco-vscode-0cc5da60-f921-59b9-bd8c-a018e93c0a6f-common": "21.0.1",
20
+ "@codingame/monaco-vscode-158b9837-fc78-5d9c-86f5-9134e4358643-common": "21.0.1",
21
+ "@codingame/monaco-vscode-1b4486de-4fe4-59c4-9e6d-34f265ff6625-common": "21.0.1",
22
+ "@codingame/monaco-vscode-23b6fb38-5e58-5886-b34b-27abc4f5df02-common": "21.0.1",
23
+ "@codingame/monaco-vscode-2a94c04a-b85b-5669-b06b-89c1bfa11cb9-common": "21.0.1",
24
+ "@codingame/monaco-vscode-3109a756-1f83-5d09-945b-9f0fcad928f0-common": "21.0.1",
25
+ "@codingame/monaco-vscode-40cada32-7e9c-528a-81fc-766e4da54147-common": "21.0.1",
26
+ "@codingame/monaco-vscode-4a316137-39d1-5d77-8b53-112db3547c1e-common": "21.0.1",
27
+ "@codingame/monaco-vscode-4fad3647-b95d-5c19-bab1-bb9de627a5ec-common": "21.0.1",
28
+ "@codingame/monaco-vscode-523730aa-81e6-55d7-9916-87ad537fe087-common": "21.0.1",
29
+ "@codingame/monaco-vscode-5e2c24a1-3217-55e8-bc90-521eaf7df5a6-common": "21.0.1",
30
+ "@codingame/monaco-vscode-615ce609-8555-545a-a549-47bd9f80e9f8-common": "21.0.1",
31
+ "@codingame/monaco-vscode-670aae94-7f88-54d7-90ea-6fcbef423557-common": "21.0.1",
32
+ "@codingame/monaco-vscode-6980eeab-47bb-5a48-8e15-32caf0785565-common": "21.0.1",
33
+ "@codingame/monaco-vscode-6db1b967-5327-5c5c-8c17-bd92774c0fb2-common": "21.0.1",
34
+ "@codingame/monaco-vscode-71c8dbff-4c98-552f-aef0-e72b00fdcfc0-common": "21.0.1",
35
+ "@codingame/monaco-vscode-72a1b7d3-3f58-5545-9b7e-f579bd003081-common": "21.0.1",
36
+ "@codingame/monaco-vscode-7869cfe8-f42c-5721-9f2b-7d04a6a41f16-common": "21.0.1",
37
+ "@codingame/monaco-vscode-7f39b6f1-3542-5430-8760-0f404d7a7cee-common": "21.0.1",
38
+ "@codingame/monaco-vscode-897bebad-39df-57cb-8a57-36a271d038be-common": "21.0.1",
39
+ "@codingame/monaco-vscode-89a82baf-8ded-5b2f-b8af-e5fbd72dc5ad-common": "21.0.1",
40
+ "@codingame/monaco-vscode-8ccb7637-50ea-5359-97bf-00015d7fe567-common": "21.0.1",
41
+ "@codingame/monaco-vscode-9a5ab9e7-d838-5831-9eb4-e79ea3764dcb-common": "21.0.1",
42
+ "@codingame/monaco-vscode-9c84f943-bcb5-5bcf-92a6-91f66a732f26-common": "21.0.1",
43
+ "@codingame/monaco-vscode-9efc1f50-c7de-55d6-8b28-bcc88bd49b5a-common": "21.0.1",
44
+ "@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common": "21.0.1",
45
+ "@codingame/monaco-vscode-ac93482b-2178-52df-a200-ba0d1a4963fb-common": "21.0.1",
46
+ "@codingame/monaco-vscode-api": "21.0.1",
47
+ "@codingame/monaco-vscode-bc6d9a89-1625-5010-b57e-ff44151144fe-common": "21.0.1",
48
+ "@codingame/monaco-vscode-bulk-edit-service-override": "21.0.1",
49
+ "@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common": "21.0.1",
50
+ "@codingame/monaco-vscode-d26a96d3-122c-5a3d-a04d-deb5ff0f19c0-common": "21.0.1",
51
+ "@codingame/monaco-vscode-d481a59e-259c-524e-bee1-76483d75d3a1-common": "21.0.1",
52
+ "@codingame/monaco-vscode-dbfe5f85-b426-55ed-a79b-5f811b395762-common": "21.0.1",
53
+ "@codingame/monaco-vscode-e59ecb8c-db32-5324-8fe4-cf9921fd92b8-common": "21.0.1",
54
+ "@codingame/monaco-vscode-e72c94ca-257a-5b75-8b68-5a5fa3c18255-common": "21.0.1",
55
+ "@codingame/monaco-vscode-f1bbc6d3-6129-583c-a2ba-c80b832993d2-common": "21.0.1",
56
+ "@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": "21.0.1",
57
+ "@codingame/monaco-vscode-ff9fa663-eae3-5274-8573-c2b918871e4b-common": "21.0.1"
58
58
  },
59
59
  "main": "index.js",
60
60
  "module": "index.js",
@@ -5,7 +5,7 @@
5
5
  <meta charset="UTF-8">
6
6
 
7
7
  <meta http-equiv="Content-Security-Policy"
8
- content="default-src 'none'; script-src 'sha256-pTZgf/zU+f1azdy9x9B5BfoQYdrPJWvIfvvlF2+dasY=' 'self'; frame-src 'self'; style-src 'unsafe-inline';">
8
+ content="default-src 'none'; script-src 'sha256-dk59AsDExia54iNuVBobMQ28rQB/JDlPxdX7gwMIfYU=' 'self'; frame-src 'self'; style-src 'unsafe-inline';">
9
9
 
10
10
  <!-- Disable pinch zooming -->
11
11
  <meta name="viewport"
@@ -38,6 +38,24 @@
38
38
  const serviceWorkerUri = searchParams.get('serviceWorkerUri');
39
39
  const fakeHtmlUri = searchParams.get('fakeHtmlUri');
40
40
 
41
+ /**
42
+ * @param {string} name
43
+ * @param {Record<string, string>} [options]
44
+ */
45
+ const perfMark = (name, options = {}) => {
46
+ performance.mark(`webview/index.html/${name}`, {
47
+ detail: {
48
+ id: ID,
49
+ ...options
50
+ }
51
+ });
52
+ }
53
+
54
+ perfMark('scriptStart');
55
+
56
+ /** @type {MessageChannel | undefined} */
57
+ let outerIframeMessageChannel;
58
+
41
59
  /**
42
60
  * Use polling to track focus of main webview and iframes within the webview
43
61
  *
@@ -88,6 +106,7 @@
88
106
  const defaultStyles = document.createElement('style');
89
107
  defaultStyles.id = '_defaultStyles';
90
108
  defaultStyles.textContent = `
109
+ @layer vscode-default {
91
110
  html {
92
111
  scrollbar-color: var(--vscode-scrollbarSlider-background) var(--vscode-editor-background);
93
112
  }
@@ -181,6 +200,7 @@
181
200
  }
182
201
  ::highlight(current-find-highlight) {
183
202
  background-color: var(--vscode-editor-findMatchBackground);
203
+ }
184
204
  }`;
185
205
 
186
206
  /**
@@ -221,9 +241,9 @@
221
241
  });
222
242
  };
223
243
  })();
224
- delete window.parent;
225
- delete window.top;
226
- delete window.frameElement;
244
+ window.parent = window;
245
+ window.top = window;
246
+ window.frameElement = null;
227
247
  `;
228
248
  }
229
249
 
@@ -238,7 +258,7 @@
238
258
  }
239
259
 
240
260
  const swPath = encodeURI(`${serviceWorkerUri}?v=${expectedWorkerVersion}&vscode-resource-base-authority=${searchParams.get('vscode-resource-base-authority')}&id=${ID}&remoteAuthority=${searchParams.get('remoteAuthority') ?? ''}`);
241
- navigator.serviceWorker.register(swPath)
261
+ navigator.serviceWorker.register(swPath, { type: 'module' })
242
262
  .then(async registration => {
243
263
  /**
244
264
  * @param {MessageEvent} event
@@ -266,7 +286,8 @@
266
286
  navigator.serviceWorker.addEventListener('message', versionHandler);
267
287
 
268
288
  const postVersionMessage = (/** @type {ServiceWorker} */ controller) => {
269
- controller.postMessage({ channel: 'version' });
289
+ outerIframeMessageChannel = new MessageChannel();
290
+ controller.postMessage({ channel: 'version' }, [outerIframeMessageChannel.port2]);
270
291
  };
271
292
 
272
293
  // At this point, either the service worker is ready and
@@ -343,6 +364,7 @@
343
364
 
344
365
  async signalReady() {
345
366
  const start = (/** @type {string} */ parentOrigin) => {
367
+ perfMark('signalingReady');
346
368
  window.parent.postMessage({ target: ID, channel: 'webview-ready', data: {} }, parentOrigin, [this.channel.port2]);
347
369
  };
348
370
 
@@ -888,6 +910,7 @@
888
910
  window.addEventListener('drag', handleInnerDragEvent);
889
911
  window.addEventListener('drop', handleInnerDropEvent);
890
912
 
913
+
891
914
  onDomReady(() => {
892
915
  if (!document.body) {
893
916
  return;
@@ -934,9 +957,12 @@
934
957
  // update iframe-contents
935
958
  let updateId = 0;
936
959
  hostMessaging.onMessage('content', async (_event, /** @type {import('../webviewMessages').UpdateContentEvent} */ data) => {
960
+ perfMark('content/started');
961
+
937
962
  const currentUpdateId = ++updateId;
938
963
  try {
939
964
  await workerReady;
965
+ perfMark('content/workerReady');
940
966
  } catch (e) {
941
967
  console.error(`Webview fatal error: ${e}`);
942
968
  hostMessaging.postMessage('fatal-error', { message: e + '' });
@@ -1025,12 +1051,15 @@
1025
1051
  * @param {Document} contentDocument
1026
1052
  */
1027
1053
  function onFrameLoaded(contentDocument) {
1054
+ perfMark('content/innerFrameLoaded')
1055
+
1028
1056
  // Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=978325
1029
1057
  setTimeout(() => {
1030
1058
  contentDocument.open();
1031
1059
  contentDocument.write(newDocument);
1032
1060
  contentDocument.close();
1033
1061
  hookupOnLoadHandlers(newFrame);
1062
+ perfMark('content/wroteInnerContent')
1034
1063
 
1035
1064
  if (initialStyleVersion !== styleVersion) {
1036
1065
  applyStyles(contentDocument, contentDocument.body);
@@ -1091,6 +1120,21 @@
1091
1120
  contentWindow.focus();
1092
1121
  }
1093
1122
 
1123
+ // Get body size
1124
+ const docEl = contentDocument.documentElement;
1125
+ if (docEl) {
1126
+ const postSize = () => {
1127
+ hostMessaging.postMessage('updated-intrinsic-content-size', {
1128
+ width: docEl.offsetWidth,
1129
+ height: docEl.offsetHeight
1130
+ });
1131
+ };
1132
+
1133
+ const resizeObserver = new ResizeObserver(postSize);
1134
+ resizeObserver.observe(docEl);
1135
+ postSize();
1136
+ }
1137
+
1094
1138
  pendingMessages.forEach((message) => {
1095
1139
  contentWindow.postMessage(message.message, window.origin, message.transfer);
1096
1140
  });
@@ -1170,9 +1214,21 @@
1170
1214
  contentWindow.addEventListener('dragenter', handleInnerDragStartEvent);
1171
1215
  contentWindow.addEventListener('dragover', handleInnerDragEvent);
1172
1216
  contentWindow.addEventListener('drag', handleInnerDragEvent);
1217
+ contentWindow.addEventListener('drop', handleInnerDropEvent);
1173
1218
 
1174
1219
  unloadMonitor.onIframeLoaded(newFrame);
1175
1220
  }
1221
+
1222
+ if (!disableServiceWorker && outerIframeMessageChannel) {
1223
+ outerIframeMessageChannel.port1.onmessage = event => {
1224
+ switch (event.data.channel) {
1225
+ case 'load-resource':
1226
+ case 'load-localhost':
1227
+ hostMessaging.postMessage(event.data.channel, event.data);
1228
+ return;
1229
+ }
1230
+ };
1231
+ }
1176
1232
  });
1177
1233
 
1178
1234
  // propagate vscode-context-menu-visible class
@@ -26,6 +26,19 @@ let outerIframeMessagePort;
26
26
  */
27
27
  const resourceBaseAuthority = searchParams.get('vscode-resource-base-authority');
28
28
 
29
+ /**
30
+ * @param {string} name
31
+ * @param {Record<string, string>} [options]
32
+ */
33
+ const perfMark = (name, options = {}) => {
34
+ performance.mark(`webview/service-worker/${name}`, {
35
+ detail: {
36
+ ...options
37
+ }
38
+ });
39
+ }
40
+
41
+ perfMark('scriptStart');
29
42
 
30
43
  /** @type {number} */
31
44
  const resolveTimeout = 30_000;
@@ -55,8 +68,8 @@ class RequestStore {
55
68
  }
56
69
 
57
70
  /**
58
- * @returns {{ requestId: number, promise: Promise<RequestStoreResult<T>> }}
59
- */
71
+ * @returns {{ requestId: number, promise: Promise<RequestStoreResult<T>> }}
72
+ */
60
73
  create() {
61
74
  const requestId = ++this.requestPool;
62
75
 
@@ -129,8 +142,10 @@ sw.addEventListener('message', async (event) => {
129
142
  const source = event.source;
130
143
  switch (event.data.channel) {
131
144
  case 'version': {
145
+ perfMark('version/request');
132
146
  outerIframeMessagePort = event.ports[0];
133
147
  sw.clients.get(source.id).then(client => {
148
+ perfMark('version/reply');
134
149
  if (client) {
135
150
  client.postMessage({
136
151
  channel: 'version',