chrome-devtools-frontend 1.0.945677 → 1.0.947377

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 (191) hide show
  1. package/.eslintrc.js +1 -0
  2. package/config/gni/all_devtools_files.gni +0 -14
  3. package/config/gni/devtools_grd_files.gni +4 -42
  4. package/front_end/.eslintrc.js +5 -1
  5. package/front_end/core/host/InspectorFrontendHost.ts +0 -3
  6. package/front_end/core/host/InspectorFrontendHostAPI.ts +0 -1
  7. package/front_end/core/host/UserMetrics.ts +0 -22
  8. package/front_end/core/i18n/locales/en-US.json +33 -27
  9. package/front_end/core/i18n/locales/en-XL.json +33 -27
  10. package/front_end/core/root/Runtime.ts +0 -5
  11. package/front_end/core/sdk/AccessibilityModel.ts +0 -2
  12. package/front_end/core/sdk/CSSProperty.ts +16 -11
  13. package/front_end/core/sdk/CSSRule.ts +0 -2
  14. package/front_end/core/sdk/Cookie.ts +1 -5
  15. package/front_end/core/sdk/EmulationModel.ts +0 -2
  16. package/front_end/core/sdk/HeapProfilerModel.ts +0 -2
  17. package/front_end/core/sdk/NetworkManager.ts +0 -3
  18. package/front_end/core/sdk/Resource.ts +0 -3
  19. package/front_end/core/sdk/ResourceTreeModel.ts +0 -3
  20. package/front_end/core/sdk/ServiceWorkerManager.ts +0 -2
  21. package/front_end/core/sdk/sdk-meta.ts +20 -8
  22. package/front_end/devtools_compatibility.js +1 -8
  23. package/front_end/entrypoints/devtools_app/devtools_app.js +3 -0
  24. package/front_end/entrypoints/devtools_app/devtools_app.json +1 -3
  25. package/front_end/entrypoints/formatter_worker/CSSFormatter.ts +1 -3
  26. package/front_end/entrypoints/formatter_worker/FormatterActions.ts +0 -2
  27. package/front_end/entrypoints/formatter_worker/FormatterWorker.ts +0 -120
  28. package/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.ts +1 -11
  29. package/front_end/entrypoints/formatter_worker/formatter_worker.ts +5 -0
  30. package/front_end/entrypoints/inspector/{inspector.js → inspector.ts} +0 -3
  31. package/front_end/entrypoints/js_app/js_app.js +3 -0
  32. package/front_end/entrypoints/js_app/js_app.json +1 -2
  33. package/front_end/entrypoints/main/MainImpl.ts +0 -6
  34. package/front_end/entrypoints/ndb_app/ndb_app.js +3 -0
  35. package/front_end/entrypoints/ndb_app/ndb_app.json +1 -2
  36. package/front_end/entrypoints/{node_main → node_app}/NodeConnectionsPanel.ts +1 -1
  37. package/front_end/entrypoints/{node_main → node_app}/NodeMain.ts +2 -4
  38. package/front_end/entrypoints/{node_main → node_app}/nodeConnectionsPanel.css +0 -0
  39. package/front_end/entrypoints/node_app/node_app.ts +81 -0
  40. package/front_end/entrypoints/shell/shell.js +18 -1
  41. package/front_end/entrypoints/worker_app/{worker_app.js → worker_app.ts} +8 -2
  42. package/front_end/generated/InspectorBackendCommands.js +5 -1
  43. package/front_end/generated/protocol.d.ts +12 -0
  44. package/front_end/legacy_test_runner/sources_test_runner/sources_test_runner.js +0 -1
  45. package/front_end/models/bindings/CompilerScriptMapping.ts +0 -1
  46. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +4 -11
  47. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +1 -1
  48. package/front_end/models/bindings/ResourceMapping.ts +1 -1
  49. package/front_end/models/bindings/SASSSourceMapping.ts +0 -1
  50. package/front_end/models/emulation/DeviceModeModel.ts +0 -2
  51. package/front_end/models/formatter/FormatterWorkerPool.ts +0 -18
  52. package/front_end/models/issues_manager/CorsIssue.ts +8 -0
  53. package/front_end/models/text_utils/CodeMirrorUtils.ts +6 -51
  54. package/front_end/models/text_utils/TextUtils.ts +1 -2
  55. package/front_end/models/text_utils/text_utils-legacy.ts +0 -5
  56. package/front_end/panels/animation/AnimationTimeline.ts +0 -2
  57. package/front_end/panels/animation/AnimationUI.ts +0 -2
  58. package/front_end/panels/application/ApplicationPanelSidebar.ts +2 -4
  59. package/front_end/panels/application/BackForwardCacheStrings.ts +1 -0
  60. package/front_end/panels/css_overview/CSSOverviewModel.ts +0 -2
  61. package/front_end/panels/css_overview/CSSOverviewPanel.ts +0 -7
  62. package/front_end/panels/css_overview/CSSOverviewProcessingView.ts +0 -2
  63. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +0 -11
  64. package/front_end/panels/elements/StylesSidebarPane.ts +0 -1
  65. package/front_end/panels/elements/elementsTreeOutline.css +0 -13
  66. package/front_end/panels/emulation/DeviceModeToolbar.ts +0 -16
  67. package/front_end/panels/issues/CorsIssueDetailsView.ts +6 -2
  68. package/front_end/panels/lighthouse/lighthouse-meta.ts +0 -3
  69. package/front_end/panels/network/NetworkConfigView.ts +10 -0
  70. package/front_end/panels/network/NetworkItemView.ts +3 -0
  71. package/front_end/panels/network/networkConfigView.css +5 -0
  72. package/front_end/panels/profiler/profilesPanel.css +1 -1
  73. package/front_end/panels/search/SearchView.ts +24 -4
  74. package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +6 -4
  75. package/front_end/panels/settings/emulation/components/userAgentClientHintsForm.css +0 -12
  76. package/front_end/panels/sources/CSSPlugin.ts +3 -0
  77. package/front_end/panels/sources/CoveragePlugin.ts +2 -0
  78. package/front_end/panels/sources/DebuggerPlugin.ts +35 -7
  79. package/front_end/panels/sources/JavaScriptCompilerPlugin.ts +3 -0
  80. package/front_end/panels/sources/ProfilePlugin.ts +3 -0
  81. package/front_end/panels/sources/UISourceCodeFrame.ts +11 -2
  82. package/front_end/panels/sources/sourcesView.css +0 -130
  83. package/front_end/panels/timeline/TimelineTreeView.ts +1 -0
  84. package/front_end/third_party/codemirror/codemirror-tsconfig.json +1 -25
  85. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  86. package/front_end/third_party/codemirror.next/chunk/cpp.js +1 -2
  87. package/front_end/third_party/codemirror.next/chunk/java.js +1 -2
  88. package/front_end/third_party/codemirror.next/chunk/json.js +1 -2
  89. package/front_end/third_party/codemirror.next/chunk/markdown.js +1 -2
  90. package/front_end/third_party/codemirror.next/chunk/php.js +1 -2
  91. package/front_end/third_party/codemirror.next/chunk/python.js +1 -2
  92. package/front_end/third_party/codemirror.next/chunk/wast.js +1 -2
  93. package/front_end/third_party/codemirror.next/chunk/xml.js +1 -2
  94. package/front_end/third_party/codemirror.next/codemirror.next.d.ts +1486 -1423
  95. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -2
  96. package/front_end/third_party/codemirror.next/package.json +10 -9
  97. package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +168 -164
  98. package/front_end/third_party/lighthouse/locales/ar-XB.json +0 -3
  99. package/front_end/third_party/lighthouse/locales/ar.json +0 -3
  100. package/front_end/third_party/lighthouse/locales/bg.json +17 -20
  101. package/front_end/third_party/lighthouse/locales/ca.json +0 -3
  102. package/front_end/third_party/lighthouse/locales/cs.json +0 -3
  103. package/front_end/third_party/lighthouse/locales/da.json +16 -19
  104. package/front_end/third_party/lighthouse/locales/de.json +0 -3
  105. package/front_end/third_party/lighthouse/locales/el.json +0 -3
  106. package/front_end/third_party/lighthouse/locales/en-GB.json +19 -22
  107. package/front_end/third_party/lighthouse/locales/en-US.json +33 -3
  108. package/front_end/third_party/lighthouse/locales/en-XA.json +0 -3
  109. package/front_end/third_party/lighthouse/locales/en-XL.json +33 -3
  110. package/front_end/third_party/lighthouse/locales/es-419.json +17 -20
  111. package/front_end/third_party/lighthouse/locales/es.json +0 -3
  112. package/front_end/third_party/lighthouse/locales/fi.json +16 -19
  113. package/front_end/third_party/lighthouse/locales/fil.json +33 -36
  114. package/front_end/third_party/lighthouse/locales/fr.json +16 -19
  115. package/front_end/third_party/lighthouse/locales/he.json +16 -19
  116. package/front_end/third_party/lighthouse/locales/hi.json +0 -3
  117. package/front_end/third_party/lighthouse/locales/hr.json +16 -19
  118. package/front_end/third_party/lighthouse/locales/hu.json +16 -19
  119. package/front_end/third_party/lighthouse/locales/id.json +16 -19
  120. package/front_end/third_party/lighthouse/locales/it.json +37 -40
  121. package/front_end/third_party/lighthouse/locales/ja.json +16 -19
  122. package/front_end/third_party/lighthouse/locales/ko.json +16 -19
  123. package/front_end/third_party/lighthouse/locales/lt.json +17 -20
  124. package/front_end/third_party/lighthouse/locales/lv.json +0 -3
  125. package/front_end/third_party/lighthouse/locales/nl.json +16 -19
  126. package/front_end/third_party/lighthouse/locales/no.json +17 -20
  127. package/front_end/third_party/lighthouse/locales/pl.json +16 -19
  128. package/front_end/third_party/lighthouse/locales/pt-PT.json +37 -40
  129. package/front_end/third_party/lighthouse/locales/pt.json +16 -19
  130. package/front_end/third_party/lighthouse/locales/ro.json +0 -3
  131. package/front_end/third_party/lighthouse/locales/ru.json +16 -19
  132. package/front_end/third_party/lighthouse/locales/sk.json +0 -3
  133. package/front_end/third_party/lighthouse/locales/sl.json +0 -3
  134. package/front_end/third_party/lighthouse/locales/sr-Latn.json +16 -19
  135. package/front_end/third_party/lighthouse/locales/sr.json +16 -19
  136. package/front_end/third_party/lighthouse/locales/sv.json +17 -20
  137. package/front_end/third_party/lighthouse/locales/ta.json +0 -3
  138. package/front_end/third_party/lighthouse/locales/te.json +0 -3
  139. package/front_end/third_party/lighthouse/locales/th.json +0 -3
  140. package/front_end/third_party/lighthouse/locales/tr.json +0 -3
  141. package/front_end/third_party/lighthouse/locales/uk.json +17 -20
  142. package/front_end/third_party/lighthouse/locales/vi.json +0 -3
  143. package/front_end/third_party/lighthouse/locales/zh-HK.json +0 -3
  144. package/front_end/third_party/lighthouse/locales/zh-TW.json +0 -3
  145. package/front_end/third_party/lighthouse/locales/zh.json +0 -3
  146. package/front_end/third_party/lighthouse/report/bundle.d.ts +63 -61
  147. package/front_end/third_party/lighthouse/report/bundle.js +36 -7
  148. package/front_end/third_party/lighthouse/report-assets/report-generator.js +205 -192
  149. package/front_end/ui/components/linear_memory_inspector/LinearMemoryValueInterpreter.ts +0 -8
  150. package/front_end/ui/components/text_editor/config.ts +8 -7
  151. package/front_end/ui/components/text_editor/javascript.ts +28 -10
  152. package/front_end/ui/components/text_editor/theme.ts +1 -0
  153. package/front_end/ui/legacy/InspectorView.ts +10 -0
  154. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +2 -3
  155. package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +0 -1
  156. package/front_end/ui/legacy/components/object_ui/object_ui-legacy.ts +0 -8
  157. package/front_end/ui/legacy/components/object_ui/object_ui.ts +0 -4
  158. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +40 -29
  159. package/front_end/ui/legacy/inspectorSyntaxHighlight.css +0 -211
  160. package/front_end/ui/legacy/legacy-legacy.ts +0 -6
  161. package/front_end/ui/legacy/legacy.ts +0 -2
  162. package/front_end/ui/legacy/tabbedPane.css +1 -1
  163. package/front_end/ui/legacy/themeColors.css +1 -1
  164. package/package.json +1 -1
  165. package/scripts/check_gn.js +1 -1
  166. package/scripts/eslint_rules/lib/l10n_filename_matches.js +4 -4
  167. package/scripts/eslint_rules/tests/l10n_filename_matches_test.js +4 -0
  168. package/scripts/hosted_mode/server.js +17 -2
  169. package/front_end/entrypoints/inspector/inspector.json +0 -4
  170. package/front_end/entrypoints/node_app/node_app-meta.ts +0 -43
  171. package/front_end/entrypoints/node_app/node_app.js +0 -13
  172. package/front_end/entrypoints/node_app/node_app.json +0 -4
  173. package/front_end/entrypoints/node_main/node_main-meta.ts +0 -48
  174. package/front_end/entrypoints/node_main/node_main.ts +0 -11
  175. package/front_end/entrypoints/shell/shell-meta-files.ts +0 -22
  176. package/front_end/entrypoints/shell/shell.json +0 -5
  177. package/front_end/entrypoints/worker_app/worker_app.json +0 -4
  178. package/front_end/panels/lighthouse/module.json +0 -6
  179. package/front_end/third_party/lighthouse/report-assets/report.d.ts +0 -1
  180. package/front_end/third_party/lighthouse/report-assets/report.js +0 -233
  181. package/front_end/third_party/lighthouse/report-assets/standalone-template.html +0 -38
  182. package/front_end/ui/legacy/TextEditor.ts +0 -82
  183. package/front_end/ui/legacy/components/object_ui/JavaScriptAutocomplete.ts +0 -836
  184. package/front_end/ui/legacy/components/text_editor/CodeMirrorTextEditor.ts +0 -1676
  185. package/front_end/ui/legacy/components/text_editor/TextEditorAutocompleteController.ts +0 -586
  186. package/front_end/ui/legacy/components/text_editor/autocompleteTooltip.css +0 -20
  187. package/front_end/ui/legacy/components/text_editor/cm_modes.ts +0 -23
  188. package/front_end/ui/legacy/components/text_editor/cmdevtools.css +0 -995
  189. package/front_end/ui/legacy/components/text_editor/module.json +0 -7
  190. package/front_end/ui/legacy/components/text_editor/text_editor-legacy.ts +0 -33
  191. package/front_end/ui/legacy/components/text_editor/text_editor.ts +0 -13
@@ -186,19 +186,6 @@
186
186
  margin-right: 4px;
187
187
  }
188
188
 
189
- .CodeMirror {
190
- background-color: var(--color-background);
191
- height: 300px !important; /* stylelint-disable-line declaration-no-important */
192
- }
193
-
194
- .CodeMirror-lines {
195
- padding: 0;
196
- }
197
-
198
- .CodeMirror pre {
199
- padding: 0;
200
- }
201
-
202
189
  button,
203
190
  input,
204
191
  select {
@@ -225,10 +225,6 @@ export class DeviceModeToolbar {
225
225
  showMediaInspectorSetting: Common.Settings.Setting<boolean>,
226
226
  showRulersSetting: Common.Settings.Setting<boolean>) {
227
227
  this.model = model;
228
- const device = model.device();
229
- if (device) {
230
- this.recordDeviceChange(device, null);
231
- }
232
228
  this.showMediaInspectorSetting = showMediaInspectorSetting;
233
229
  this.showRulersSetting = showRulersSetting;
234
230
 
@@ -302,16 +298,6 @@ export class DeviceModeToolbar {
302
298
  }
303
299
  }
304
300
 
305
- private recordDeviceChange(
306
- device: EmulationModel.EmulatedDevices.EmulatedDevice,
307
- oldDevice: EmulationModel.EmulatedDevices.EmulatedDevice|null): void {
308
- if (device !== oldDevice && device && device.isDualScreen) {
309
- // When we start emulating a device, whether we start a new emulation session, or switch to
310
- // a new device, if the device is dual screen, we count this once.
311
- Host.userMetrics.dualScreenDeviceEmulated(Host.UserMetrics.DualScreenDeviceEmulated.DualScreenDeviceSelected);
312
- }
313
- }
314
-
315
301
  private createEmptyToolbarElement(): Element {
316
302
  const element = document.createElement('div');
317
303
  element.classList.add('device-mode-empty-toolbar-element');
@@ -527,7 +513,6 @@ export class DeviceModeToolbar {
527
513
 
528
514
  private emulateDevice(device: EmulationModel.EmulatedDevices.EmulatedDevice): void {
529
515
  const scale = this.autoAdjustScaleSetting.get() ? undefined : this.model.scaleSetting().get();
530
- this.recordDeviceChange(device, this.model.device());
531
516
  this.model.emulate(
532
517
  EmulationModel.DeviceModeModel.Type.Device, device, this.lastMode.get(device) || device.modes[0], scale);
533
518
  }
@@ -615,7 +600,6 @@ export class DeviceModeToolbar {
615
600
  return;
616
601
  }
617
602
 
618
- Host.userMetrics.dualScreenDeviceEmulated(Host.UserMetrics.DualScreenDeviceEmulated.SpanButtonClicked);
619
603
  const scale = this.autoAdjustScaleSetting.get() ? undefined : this.model.scaleSetting().get();
620
604
  const mode = this.model.mode();
621
605
  if (!mode) {
@@ -207,7 +207,9 @@ export class CorsIssueDetailsView extends AffectedResourcesView {
207
207
  IssuesManager.CorsIssue.IssueCode.PreflightInvalidAllowExternal|
208
208
  IssuesManager.CorsIssue.IssueCode.InvalidResponse|
209
209
  IssuesManager.CorsIssue.IssueCode.InvalidPrivateNetworkAccess|
210
- IssuesManager.CorsIssue.IssueCode.UnexpectedPrivateNetworkAccess>(issueCode);
210
+ IssuesManager.CorsIssue.IssueCode.UnexpectedPrivateNetworkAccess|
211
+ IssuesManager.CorsIssue.IssueCode.PreflightMissingAllowPrivateNetwork|
212
+ IssuesManager.CorsIssue.IssueCode.PreflightInvalidAllowPrivateNetwork>(issueCode);
211
213
  }
212
214
 
213
215
  this.affectedResources.appendChild(header);
@@ -433,7 +435,9 @@ export class CorsIssueDetailsView extends AffectedResourcesView {
433
435
  IssuesManager.CorsIssue.IssueCode.PreflightInvalidAllowExternal|
434
436
  IssuesManager.CorsIssue.IssueCode.InvalidResponse|
435
437
  IssuesManager.CorsIssue.IssueCode.InvalidPrivateNetworkAccess|
436
- IssuesManager.CorsIssue.IssueCode.UnexpectedPrivateNetworkAccess>(issueCode);
438
+ IssuesManager.CorsIssue.IssueCode.UnexpectedPrivateNetworkAccess|
439
+ IssuesManager.CorsIssue.IssueCode.PreflightMissingAllowPrivateNetwork|
440
+ IssuesManager.CorsIssue.IssueCode.PreflightInvalidAllowPrivateNetwork>(issueCode);
437
441
  break;
438
442
  }
439
443
 
@@ -3,7 +3,6 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  import * as i18n from '../../core/i18n/i18n.js';
6
- import * as Root from '../../core/root/root.js';
7
6
  import * as UI from '../../ui/legacy/legacy.js';
8
7
 
9
8
  import type * as Lighthouse from './lighthouse.js';
@@ -22,8 +21,6 @@ let loadedLighthouseModule: (typeof Lighthouse|undefined);
22
21
 
23
22
  async function loadLighthouseModule(): Promise<typeof Lighthouse> {
24
23
  if (!loadedLighthouseModule) {
25
- // Side-effect import resources in module.json
26
- await Root.Runtime.Runtime.instance().loadModulePromise('panels/lighthouse');
27
24
  loadedLighthouseModule = await import('./lighthouse.js');
28
25
  }
29
26
  return loadedLighthouseModule;
@@ -50,6 +50,10 @@ const UIStrings = {
50
50
  * a set of checkboxes to override the content encodings supported by the browser.
51
51
  */
52
52
  acceptedEncoding: 'Accepted `Content-Encoding`s',
53
+ /**
54
+ * @description Status text for successful update of client hints.
55
+ */
56
+ clientHintsStatusText: 'User agent updated.',
53
57
  };
54
58
  const str_ = i18n.i18n.registerUIStrings('panels/network/NetworkConfigView.ts', UIStrings);
55
59
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
@@ -246,10 +250,12 @@ export class NetworkConfigView extends UI.Widget.VBox {
246
250
  showMobileCheckbox: true,
247
251
  showSubmitButton: true,
248
252
  };
253
+ userAgentUpdateButtonStatusText.textContent = '';
249
254
  });
250
255
 
251
256
  clientHints.addEventListener('clienthintschange', () => {
252
257
  customSelectAndInput.select.value = 'custom';
258
+ userAgentUpdateButtonStatusText.textContent = '';
253
259
  });
254
260
 
255
261
  clientHints.addEventListener('clienthintssubmit', (event: Event) => {
@@ -257,8 +263,12 @@ export class NetworkConfigView extends UI.Widget.VBox {
257
263
  const customUA = customUserAgentSetting.get();
258
264
  userAgentMetadataSetting.set(metaData);
259
265
  SDK.NetworkManager.MultitargetNetworkManager.instance().setCustomUserAgentOverride(customUA, metaData);
266
+ userAgentUpdateButtonStatusText.textContent = i18nString(UIStrings.clientHintsStatusText);
260
267
  });
261
268
 
269
+ const userAgentUpdateButtonStatusText = section.createChild('span', 'status-text');
270
+ userAgentUpdateButtonStatusText.textContent = '';
271
+
262
272
  userAgentSelectBoxChanged();
263
273
 
264
274
  function userAgentSelectBoxChanged(): void {
@@ -250,6 +250,9 @@ export class NetworkItemView extends UI.TabbedPane.TabbedPane {
250
250
  }
251
251
 
252
252
  private async maybeAppendPayloadPanel(): Promise<void> {
253
+ if (this.hasTab('payload')) {
254
+ return;
255
+ }
253
256
  if (this.requestInternal.queryParameters || await this.requestInternal.requestFormData()) {
254
257
  this.payloadView = new RequestPayloadView(this.requestInternal);
255
258
  this.appendTab(
@@ -99,3 +99,8 @@
99
99
  margin-top: 14px;
100
100
  width: min(100%, 400px);
101
101
  }
102
+
103
+ .status-text {
104
+ padding: 10px;
105
+ color: var(--color-accent-green);
106
+ }
@@ -55,7 +55,7 @@
55
55
 
56
56
  .profile-view .data-grid span.percent-column {
57
57
  color: var(--color-text-secondary);
58
- width: 55px;
58
+ width: 9ex;
59
59
  display: inline-block;
60
60
  }
61
61
 
@@ -432,18 +432,38 @@ export class SearchView extends UI.Widget.VBox {
432
432
  }
433
433
  }
434
434
 
435
+ /**
436
+ * Handles keydown event on panel itself for handling expand/collapse all shortcut
437
+ *
438
+ * We use `event.code` instead of `event.key` here to check whether the shortcut is triggered.
439
+ * The reason is, `event.key` is dependent on the modification keys, locale and keyboard layout.
440
+ * Usually it is useful when we care about the character that needs to be printed.
441
+ *
442
+ * However, our aim in here is to assign a shortcut to the physical key combination on the keyboard
443
+ * not on the character that the key combination prints.
444
+ *
445
+ * For example, `Cmd + [` shortcut in global shortcuts map to focusing on previous panel.
446
+ * In Turkish - Q keyboard layout, the key combination that triggers the shortcut prints `ğ`
447
+ * character. Whereas in Turkish - Q Legacy keyboard layout, the shortcut that triggers focusing
448
+ * on previous panel prints `[` character. So, if we use `event.key` and check
449
+ * whether it is `[`, we break the shortcut in Turkish - Q keyboard layout.
450
+ *
451
+ * @param event KeyboardEvent
452
+ */
435
453
  private onKeyDownOnPanel(event: KeyboardEvent): void {
436
454
  const isMac = Host.Platform.isMac();
437
455
  // "Command + Alt + ]" for Mac
438
- const shouldShowAllForMac = isMac && event.metaKey && !event.ctrlKey && event.altKey && event.key === ']';
456
+ const shouldShowAllForMac =
457
+ isMac && event.metaKey && !event.ctrlKey && event.altKey && event.code === 'BracketRight';
439
458
  // "Ctrl + Shift + }" for other platforms
440
459
  const shouldShowAllForOtherPlatforms =
441
- !isMac && event.ctrlKey && !event.metaKey && event.shiftKey && event.key === '}';
460
+ !isMac && event.ctrlKey && !event.metaKey && event.shiftKey && event.code === 'BracketRight';
442
461
  // "Command + Alt + [" for Mac
443
- const shouldCollapseAllForMac = isMac && event.metaKey && !event.ctrlKey && event.altKey && event.key === '[';
462
+ const shouldCollapseAllForMac =
463
+ isMac && event.metaKey && !event.ctrlKey && event.altKey && event.code === 'BracketLeft';
444
464
  // "Command + Alt + {" for other platforms
445
465
  const shouldCollapseAllForOtherPlatforms =
446
- !isMac && event.ctrlKey && !event.metaKey && event.shiftKey && event.key === '{';
466
+ !isMac && event.ctrlKey && !event.metaKey && event.shiftKey && event.code === 'BracketLeft';
447
467
 
448
468
  if (shouldShowAllForMac || shouldShowAllForOtherPlatforms) {
449
469
  this.searchResultsPane?.showAllMatches();
@@ -3,8 +3,10 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  import * as i18n from '../../../../core/i18n/i18n.js';
6
+ import * as Buttons from '../../../../ui/components/buttons/buttons.js';
6
7
  import * as ComponentHelpers from '../../../../ui/components/helpers/helpers.js';
7
8
  import * as LitHtml from '../../../../ui/lit-html/lit-html.js';
9
+
8
10
  import userAgentClientHintsFormStyles from './userAgentClientHintsForm.css.js';
9
11
 
10
12
  import type * as Protocol from '../../../../generated/protocol.js';
@@ -532,12 +534,12 @@ export class UserAgentClientHintsForm extends HTMLElement {
532
534
  'architecture');
533
535
  const deviceModelSection = this.renderDeviceModelSection();
534
536
  const submitButton = this.showSubmitButton ? LitHtml.html`
535
- <button
536
- type="submit"
537
- class="submit-button full-row"
537
+ <${Buttons.Button.Button.litTagName}
538
+ .variant=${Buttons.Button.Variant.SECONDARY}
539
+ .type=${'submit'}
538
540
  >
539
541
  ${i18nString(UIStrings.update)}
540
- </button>
542
+ </${Buttons.Button.Button.litTagName}>
541
543
  ` :
542
544
  LitHtml.html``;
543
545
  const output = LitHtml.html`
@@ -96,18 +96,6 @@
96
96
  margin-left: 5px;
97
97
  }
98
98
 
99
- .submit-button {
100
- border: none;
101
- border-radius: 2px;
102
- font-weight: normal;
103
- height: 24px;
104
- font-size: 12px;
105
- padding: 0 12px;
106
- cursor: pointer;
107
- background-color: var(--color-primary-variant);
108
- color: var(--color-text-primary);
109
- }
110
-
111
99
  .hide-container {
112
100
  display: none;
113
101
  }
@@ -13,6 +13,9 @@ import * as UI from '../../ui/legacy/legacy.js';
13
13
 
14
14
  import {Plugin} from './Plugin.js';
15
15
 
16
+ // Plugin to add CSS completion, shortcuts, and color/curve swatches
17
+ // to editors with CSS content.
18
+
16
19
  const UIStrings = {
17
20
  /**
18
21
  *@description Swatch icon element title in CSSPlugin of the Sources panel
@@ -14,6 +14,8 @@ import * as Coverage from '../coverage/coverage.js';
14
14
 
15
15
  import {Plugin} from './Plugin.js';
16
16
 
17
+ // Plugin that shows a gutter with coverage information when available.
18
+
17
19
  const UIStrings = {
18
20
  /**
19
21
  *@description Text for Coverage Status Bar Item in Sources Panel
@@ -158,24 +158,37 @@ type BreakpointDescription = {
158
158
 
159
159
  export class DebuggerPlugin extends Plugin {
160
160
  private editor: TextEditor.TextEditor.TextEditor|undefined = undefined;
161
+ // Set if the debugger is stopped on a breakpoint in this file
161
162
  private executionLocation: Workspace.UISourceCode.UILocation|null = null;
163
+ // Track state of the control key because holding it makes debugger
164
+ // target locations show up in the editor
162
165
  private controlDown: boolean = false;
163
- private sourceMapInfobar: UI.Infobar.Infobar|null = null;
164
166
  private controlTimeout: number|undefined = undefined;
167
+ private sourceMapInfobar: UI.Infobar.Infobar|null = null;
165
168
  private readonly scriptsPanel: SourcesPanel;
166
169
  private readonly breakpointManager: Bindings.BreakpointManager.BreakpointManager;
170
+ // Manages pop-overs shown when the debugger is active and the user
171
+ // hovers over an expression
167
172
  private readonly popoverHelper: UI.PopoverHelper.PopoverHelper;
168
173
  private scriptFileForDebuggerModel:
169
174
  Map<SDK.DebuggerModel.DebuggerModel, Bindings.ResourceScriptMapping.ResourceScriptFile>;
170
175
  // The current set of breakpoints for this file. The locations in
171
- // here are only in sync with editor positions when `this.muted` is
172
- // false.
176
+ // here are kept in sync with their editor position. When a file's
177
+ // content is edited and later saved, these are used as a source of
178
+ // truth for re-creating the breakpoints.
173
179
  private breakpoints: BreakpointDescription[] = [];
174
180
  // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
175
181
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
176
182
  private continueToLocations: {from: number, to: number, async: boolean, click: () => void}[]|null = null;
177
183
  private readonly liveLocationPool: Bindings.LiveLocation.LiveLocationPool;
184
+ // When the editor content is changed by the user, this becomes
185
+ // true. When the plugin is muted, breakpoints show up as disabled
186
+ // and can't be manipulated. It is cleared again when the content is
187
+ // saved.
178
188
  private muted: boolean;
189
+ // If the plugin is initialized in muted state, we cannot correlated
190
+ // breakpoint position in the breakpoint manager with editor
191
+ // locations, so breakpoint manipulation is permanently disabled.
179
192
  private initializedMuted: boolean;
180
193
  private ignoreListInfobar: UI.Infobar.Infobar|null;
181
194
  private prettyPrintInfobar!: UI.Infobar.Infobar|null;
@@ -236,6 +249,8 @@ export class DebuggerPlugin extends Plugin {
236
249
  }
237
250
 
238
251
  editorExtension(): CodeMirror.Extension {
252
+ // Kludge to hook editor keyboard events into the ShortcutRegistry
253
+ // system.
239
254
  const handlers = this.shortcutHandlers();
240
255
 
241
256
  return [
@@ -309,6 +324,8 @@ export class DebuggerPlugin extends Plugin {
309
324
  }
310
325
 
311
326
  editorInitialized(editor: TextEditor.TextEditor.TextEditor): void {
327
+ // Start asynchronous actions that require access to the editor
328
+ // instance
312
329
  this.editor = editor;
313
330
  computeNonBreakableLines(editor.state, this.uiSourceCode).then(linePositions => {
314
331
  if (linePositions.length) {
@@ -589,8 +606,12 @@ export class DebuggerPlugin extends Plugin {
589
606
  if (node.firstChild) {
590
607
  return null;
591
608
  }
592
- while (node && node.name !== 'VariableDefinition' && node.name !== 'VariableName' &&
593
- node.name !== 'MemberExpression') {
609
+ while (
610
+ node && node.name !== 'VariableDefinition' && node.name !== 'VariableName' &&
611
+ node.name !== 'MemberExpression' &&
612
+ !(node.name === 'PropertyName' && node.parent?.name === 'PatternProperty' &&
613
+ node.nextSibling?.name !== ':') &&
614
+ !(node.name === 'PropertyDefinition' && node.parent?.name === 'Property' && node.nextSibling?.name !== ':')) {
594
615
  node = node.parent;
595
616
  }
596
617
  if (!node) {
@@ -681,6 +702,8 @@ export class DebuggerPlugin extends Plugin {
681
702
 
682
703
  private onEditorUpdate(update: CodeMirror.ViewUpdate): void {
683
704
  if (!update.changes.empty) {
705
+ // If the document changed, adjust known breakpoint positions
706
+ // for that change
684
707
  for (const breakpointDesc of this.breakpoints) {
685
708
  breakpointDesc.position = update.changes.mapPos(breakpointDesc.position);
686
709
  }
@@ -807,6 +830,7 @@ export class DebuggerPlugin extends Plugin {
807
830
  dialog.focusEditor();
808
831
  }
809
832
 
833
+ // Create decorations to indicate the current debugging position
810
834
  private computeExecutionDecorations(editorState: CodeMirror.EditorState, lineNumber: number, columnNumber: number):
811
835
  CodeMirror.DecorationSet {
812
836
  const {doc} = editorState;
@@ -953,6 +977,8 @@ export class DebuggerPlugin extends Plugin {
953
977
  return namesPerLine;
954
978
  }
955
979
 
980
+ // Highlight the locations the debugger can continue to (when
981
+ // Control is held)
956
982
  private async showContinueToLocations(): Promise<void> {
957
983
  this.popoverHelper.hidePopover();
958
984
  const executionContext = UI.Context.Context.instance().flavor(SDK.RuntimeModel.ExecutionContext);
@@ -1094,6 +1120,8 @@ export class DebuggerPlugin extends Plugin {
1094
1120
  return this.breakpoints.filter(b => b.position >= line.from && b.position <= line.to).map(b => b.breakpoint);
1095
1121
  }
1096
1122
 
1123
+ // Compute the decorations for existing breakpoints (both on the
1124
+ // gutter and inline in the code)
1097
1125
  private async computeBreakpointDecoration(state: CodeMirror.EditorState, breakpoints: BreakpointDescription[]):
1098
1126
  Promise<BreakpointDecoration> {
1099
1127
  const decorations: CodeMirror.Range<CodeMirror.Decoration>[] = [];
@@ -1298,7 +1326,7 @@ export class DebuggerPlugin extends Plugin {
1298
1326
  Bindings.ResourceScriptMapping.ResourceScriptFile.Events.DidMergeToVM, this.didMergeToVM, this);
1299
1327
  oldScriptFile.removeEventListener(
1300
1328
  Bindings.ResourceScriptMapping.ResourceScriptFile.Events.DidDivergeFromVM, this.didDivergeFromVM, this);
1301
- if (this.muted && !this.uiSourceCode.isDirty() && this.consistentScripts) {
1329
+ if (this.muted && !this.uiSourceCode.isDirty() && this.consistentScripts()) {
1302
1330
  this.setMuted(false);
1303
1331
  }
1304
1332
  }
@@ -1516,7 +1544,7 @@ export class DebuggerPlugin extends Plugin {
1516
1544
  }
1517
1545
  }
1518
1546
 
1519
- // Infobar panel state
1547
+ // Infobar panel state, used to show additional panels below the editor.
1520
1548
 
1521
1549
  const addInfobar = CodeMirror.StateEffect.define<UI.Infobar.Infobar>();
1522
1550
  const removeInfobar = CodeMirror.StateEffect.define<UI.Infobar.Infobar>();
@@ -12,6 +12,9 @@ import * as Snippets from '../snippets/snippets.js';
12
12
 
13
13
  import {Plugin} from './Plugin.js';
14
14
 
15
+ // Plugin that tries to compile the editor content and highlights
16
+ // compilation errors.
17
+
15
18
  export class JavaScriptCompilerPlugin extends Plugin {
16
19
  private compiling: boolean = false;
17
20
  private recompileScheduled: boolean = false;
@@ -11,6 +11,9 @@ import type * as TextEditor from '../../ui/components/text_editor/text_editor.js
11
11
 
12
12
  import {Plugin} from './Plugin.js';
13
13
 
14
+ // Defines plugins that show profiling information in the editor
15
+ // gutter when available.
16
+
14
17
  const UIStrings = {
15
18
  /**
16
19
  *@description The milisecond unit
@@ -52,7 +52,8 @@ import {SnippetsPlugin} from './SnippetsPlugin.js';
52
52
  import {SourcesPanel} from './SourcesPanel.js';
53
53
 
54
54
  function sourceFramePlugins(): (typeof Plugin)[] {
55
- // The order of these plugins matters for toolbar items
55
+ // The order of these plugins matters for toolbar items and editor
56
+ // extension precedence
56
57
  return [
57
58
  CSSPlugin,
58
59
  DebuggerPlugin,
@@ -74,6 +75,8 @@ export class UISourceCodeFrame extends
74
75
  private uiSourceCodeEventListeners: Common.EventTarget.EventDescriptor[];
75
76
  private messageAndDecorationListeners: Common.EventTarget.EventDescriptor[];
76
77
  private readonly boundOnBindingChanged: () => void;
78
+ // The active plugins. These are created in setContent, and
79
+ // recreated when the binding changes
77
80
  private plugins: Plugin[] = [];
78
81
  private readonly errorPopoverHelper: UI.PopoverHelper.PopoverHelper;
79
82
 
@@ -114,6 +117,7 @@ export class UISourceCodeFrame extends
114
117
  return [
115
118
  super.editorConfiguration(doc),
116
119
  rowMessages([...this.allMessages()]),
120
+ // Inject editor extensions from plugins
117
121
  pluginCompartment.of(this.plugins.map(plugin => plugin.editorExtension())),
118
122
  ];
119
123
  }
@@ -547,7 +551,11 @@ export type EventTypes = {
547
551
 
548
552
  const pluginCompartment = new CodeMirror.Compartment();
549
553
 
550
- // Row message management and display logic
554
+ // Row message management and display logic. The frame manages a
555
+ // collection of messages, organized by line (row), as a wavy
556
+ // underline starting at the start of the first message, up to the end
557
+ // of the line, with icons indicating the message severity and content
558
+ // at the end of the line.
551
559
 
552
560
  function addMessage(rows: Workspace.UISourceCode.Message[][], message: Workspace.UISourceCode.Message):
553
561
  Workspace.UISourceCode.Message[][] {
@@ -608,6 +616,7 @@ const setRowMessages = CodeMirror.StateEffect.define<RowMessages>();
608
616
 
609
617
  const underlineMark = CodeMirror.Decoration.mark({class: 'cm-waveUnderline'});
610
618
 
619
+ // The widget shown at the end of a message annotation.
611
620
  class MessageWidget extends CodeMirror.WidgetType {
612
621
  constructor(readonly messages: Workspace.UISourceCode.Message[]) {
613
622
  super();
@@ -58,133 +58,3 @@
58
58
  .-theme-with-dark-background .source-frame-debugger-script {
59
59
  --override-debugger-background-tint: rgb(61 61 0 / 50%);
60
60
  }
61
-
62
- @keyframes source-frame-value-update-highlight-animation {
63
- from {
64
- background-color: inherit;
65
- color: inherit;
66
- }
67
-
68
- 10% {
69
- background-color: var(--override-highlight-animation-10pc-background-color);
70
- color: var(--override-highlight-animation-10pc-foreground-color);
71
- }
72
-
73
- to {
74
- background-color: inherit;
75
- color: inherit;
76
- }
77
- }
78
-
79
- .source-frame-value-update-highlight {
80
- animation: source-frame-value-update-highlight-animation 0.8s 1 cubic-bezier(0, 0, 0.2, 1);
81
- border-radius: 2px;
82
- }
83
-
84
- .diff-entry-insert {
85
- --override-diff-line-number-background-color: hsl(144deg 55% 49% / 20%);
86
- }
87
-
88
- .-theme-with-dark-background .diff-entry-insert,
89
- :host-context(.-theme-with-dark-background) .diff-entry-insert {
90
- --override-diff-line-number-background-color: rgb(61 199 116 / 20%);
91
- }
92
-
93
- .diff-entry-insert .diff-marker {
94
- border-left: 4px solid var(--color-accent-green);
95
- }
96
-
97
- .diff-entry-insert .CodeMirror-gutter-background {
98
- background-color: var(--override-diff-line-number-background-color);
99
- }
100
-
101
- .diff-entry-modify {
102
- --override-diff-line-number-background-color: rgb(186 104 200 / 20%);
103
- --override-diff-line-number-border-color: #9c27b0;
104
- }
105
-
106
- .-theme-with-dark-background .diff-entry-modify,
107
- :host-context(.-theme-with-dark-background) .diff-entry-modify {
108
- --override-diff-line-number-background-color: rgb(137 55 151 / 20%);
109
- --override-diff-line-number-border-color: rgb(196 79 216);
110
- }
111
-
112
- .diff-entry-modify .diff-marker {
113
- border-left: 4px solid var(--override-diff-line-number-border-color);
114
- }
115
-
116
- .diff-entry-modify .CodeMirror-gutter-background {
117
- background-color: var(--override-diff-line-number-background-color);
118
- }
119
-
120
- .diff-entry-delete {
121
- --override-diff-deletion-color: #d32f2f;
122
- }
123
-
124
- .-theme-with-dark-background .diff-entry-delete,
125
- :host-context(.-theme-with-dark-background) .diff-entry-delete {
126
- --override-diff-deletion-color: rgb(208 44 44);
127
- }
128
-
129
- .diff-entry-delete .diff-marker {
130
- width: 0;
131
- height: 0;
132
- border-top: 6px solid transparent;
133
- border-bottom: 6px solid transparent;
134
- border-left: 6px solid var(--override-diff-deletion-color);
135
- position: relative;
136
- top: 6px;
137
- cursor: pointer;
138
- left: 0;
139
- }
140
-
141
- .diff-entry-delete .CodeMirror-gutter-background {
142
- border-bottom: 2px solid var(--override-diff-deletion-color);
143
- }
144
-
145
- .CodeMirror-gutter-diff {
146
- width: 4px;
147
- }
148
-
149
- .highlight-line-modification {
150
- --override-modification-background-fadeout-from: rgb(158 54 153 / 50%);
151
- --override-modification-background-fadeout-90pc: rgb(158 54 153 / 0%);
152
- --override-modification-foreground-fadeout-from: #fff;
153
-
154
- animation: source-line-modification-background-fadeout 0.4s 0s;
155
- animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
156
- }
157
-
158
- .highlight-line-modification span {
159
- animation: source-line-modification-foreground-fadeout 0.4s 0s;
160
- animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
161
- }
162
-
163
- @keyframes source-line-modification-background-fadeout {
164
- from {
165
- background-color: var(--override-modification-background-fadeout-from);
166
- }
167
-
168
- 50% {
169
- /* Purposefully uses the `from` color to delay the animation from 0-50% */
170
- background-color: var(--override-modification-background-fadeout-from);
171
- }
172
-
173
- 90% {
174
- background-color: var(--override-modification-background-fadeout-90pc);
175
- }
176
- to { background-color: transparent; }
177
- }
178
-
179
- @keyframes source-line-modification-foreground-fadeout {
180
- from {
181
- color: var(--override-modification-foreground-fadeout-from);
182
- }
183
-
184
- 50% {
185
- /* Purposefully uses the `from` color to delay the animation from 0-50% */
186
- color: var(--override-modification-foreground-fadeout-from);
187
- }
188
- 90% { color: initial; }
189
- to { color: initial; }
190
- }
@@ -651,6 +651,7 @@ export class GridNode extends DataGrid.SortableDataGrid.SortableDataGridNode<Gri
651
651
  }
652
652
  const cell = this.createTD(columnId);
653
653
  cell.className = 'numeric-column';
654
+ cell.setAttribute('title', i18nString(UIStrings.fms, {PH1: value.toFixed(4)}));
654
655
  const textDiv = cell.createChild('div');
655
656
  textDiv.createChild('span').textContent = i18nString(UIStrings.fms, {PH1: value.toFixed(1)});
656
657
 
@@ -3,33 +3,9 @@
3
3
  "composite": true
4
4
  },
5
5
  "files": [
6
- "package/addon/comment/comment.js",
7
- "package/addon/edit/closebrackets.js",
8
- "package/addon/edit/matchbrackets.js",
9
- "package/addon/fold/brace-fold.js",
10
- "package/addon/fold/foldcode.js",
11
- "package/addon/fold/foldgutter.js",
12
- "package/addon/mode/multiplex.js",
13
- "package/addon/mode/overlay.js",
14
- "package/addon/mode/simple.js",
15
6
  "package/addon/runmode/runmode-standalone.js",
16
- "package/addon/selection/active-line.js",
17
- "package/addon/selection/mark-selection.js",
18
- "package/lib/codemirror.js",
19
- "package/mode/clike/clike.js",
20
- "package/mode/clojure/clojure.js",
21
- "package/mode/coffeescript/coffeescript.js",
22
7
  "package/mode/css/css.js",
23
- "package/mode/htmlembedded/htmlembedded.js",
24
- "package/mode/htmlmixed/htmlmixed.js",
25
8
  "package/mode/javascript/javascript.js",
26
- "package/mode/jsx/jsx.js",
27
- "package/mode/livescript/livescript.js",
28
- "package/mode/markdown/markdown.js",
29
- "package/mode/php/php.js",
30
- "package/mode/python/python.js",
31
- "package/mode/shell/shell.js",
32
- "package/mode/wast/wast.js",
33
9
  "package/mode/xml/xml.js"
34
10
  ]
35
- }
11
+ }