chrome-devtools-frontend 1.0.1581449 → 1.0.1582745

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 (95) hide show
  1. package/agents/prompts/merging-devtools-module.md +144 -0
  2. package/agents/prompts/ui-widgets.md +351 -0
  3. package/agents/prompts/verification.md +2 -1
  4. package/docs/contributing/README.md +5 -6
  5. package/docs/contributing/changes.md +1 -2
  6. package/docs/styleguide/ux/README.md +1 -1
  7. package/front_end/core/sdk/OverlayModel.ts +4 -2
  8. package/front_end/core/sdk/RemoteObject.ts +7 -1
  9. package/front_end/core/sdk/StorageKeyManager.ts +6 -1
  10. package/front_end/core/sdk/Target.ts +4 -2
  11. package/front_end/entrypoint_template.html +5 -1
  12. package/front_end/entrypoints/greendev_floaty/FloatyEntrypoint.ts +31 -40
  13. package/front_end/entrypoints/greendev_floaty/floaty.css +41 -1
  14. package/front_end/entrypoints/greendev_floaty/floaty.html +8 -1
  15. package/front_end/entrypoints/greendev_floaty/greendev_floaty.ts +5 -5
  16. package/front_end/entrypoints/node_app/app/NodeMain.ts +19 -1
  17. package/front_end/entrypoints/node_app/node_app.ts +34 -0
  18. package/front_end/generated/InspectorBackendCommands.ts +1 -1
  19. package/front_end/generated/SupportedCSSProperties.js +2 -0
  20. package/front_end/generated/protocol.ts +0 -6
  21. package/front_end/models/ai_assistance/AiConversation.ts +10 -0
  22. package/front_end/models/ai_assistance/agents/AiAgent.ts +2 -0
  23. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.snapshot.txt +26 -4
  24. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +85 -7
  25. package/front_end/models/ai_assistance/agents/NetworkAgent.ts +2 -6
  26. package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +66 -2
  27. package/front_end/models/computed_style/ComputedStyleModel.ts +26 -0
  28. package/front_end/models/greendev/Prototypes.ts +1 -10
  29. package/front_end/models/issues_manager/ConnectionAllowlistIssue.ts +75 -0
  30. package/front_end/models/issues_manager/CookieIssue.ts +0 -28
  31. package/front_end/models/issues_manager/FederatedAuthRequestIssue.ts +0 -30
  32. package/front_end/models/issues_manager/IssuesManager.ts +5 -0
  33. package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidAllowlistItemType.md +12 -0
  34. package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidHeader.md +12 -0
  35. package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidUrlPattern.md +8 -0
  36. package/front_end/models/issues_manager/descriptions/connectionAllowlistItemNotInnerList.md +12 -0
  37. package/front_end/models/issues_manager/descriptions/connectionAllowlistMoreThanOneList.md +7 -0
  38. package/front_end/models/issues_manager/descriptions/connectionAllowlistReportingEndpointNotToken.md +10 -0
  39. package/front_end/models/issues_manager/issues_manager.ts +2 -0
  40. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +93 -6
  41. package/front_end/panels/ai_assistance/components/ChatInput.ts +8 -4
  42. package/front_end/panels/application/ApplicationPanelSidebar.ts +13 -11
  43. package/front_end/panels/application/DOMStorageModel.ts +1 -1
  44. package/front_end/panels/application/ResourcesPanel.ts +10 -5
  45. package/front_end/panels/application/preloading/PreloadingView.ts +8 -1
  46. package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +4 -1
  47. package/front_end/panels/application/preloading/components/PreloadingGrid.ts +2 -1
  48. package/front_end/panels/application/preloading/components/PreloadingString.ts +12 -3
  49. package/front_end/panels/application/preloading/helper/PreloadingForward.ts +14 -0
  50. package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +37 -3
  51. package/front_end/panels/changes/ChangesSidebar.ts +2 -6
  52. package/front_end/panels/common/AiCodeCompletionTeaser.ts +13 -3
  53. package/front_end/panels/common/aiCodeCompletionTeaser.css +6 -0
  54. package/front_end/panels/console/ConsoleSidebar.ts +3 -11
  55. package/front_end/panels/console_counters/WarningErrorCounter.ts +16 -10
  56. package/front_end/panels/elements/ComputedStyleWidget.ts +55 -37
  57. package/front_end/panels/elements/PlatformFontsWidget.ts +23 -10
  58. package/front_end/panels/greendev/GreenDevPanel.css +42 -1
  59. package/front_end/panels/greendev/GreenDevPanel.ts +30 -1
  60. package/front_end/panels/lighthouse/LighthouseStartView.ts +3 -5
  61. package/front_end/panels/lighthouse/lighthouseStartView.css +6 -0
  62. package/front_end/panels/network/NetworkLogView.ts +6 -6
  63. package/front_end/panels/network/RequestInitiatorView.ts +27 -19
  64. package/front_end/panels/network/RequestTimingView.ts +1 -1
  65. package/front_end/panels/settings/AISettingsTab.ts +1 -5
  66. package/front_end/panels/settings/KeybindsSettingsTab.ts +4 -3
  67. package/front_end/panels/settings/SettingsScreen.ts +0 -51
  68. package/front_end/panels/sources/OutlineQuickOpen.ts +19 -0
  69. package/front_end/panels/timeline/AnimationsTrackAppender.ts +4 -1
  70. package/front_end/panels/timeline/InteractionsTrackAppender.ts +1 -1
  71. package/front_end/panels/timeline/TimelinePanel.ts +25 -0
  72. package/front_end/panels/timeline/TimelineUIUtils.ts +13 -16
  73. package/front_end/third_party/chromium/README.chromium +1 -1
  74. package/front_end/third_party/lighthouse/README.chromium +2 -2
  75. package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +145 -144
  76. package/front_end/third_party/lighthouse/report/bundle.js +12 -5
  77. package/front_end/third_party/lighthouse/report-assets/report-generator.mjs +2 -2
  78. package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +5 -1
  79. package/front_end/ui/legacy/ListControl.ts +28 -1
  80. package/front_end/ui/legacy/Toolbar.ts +4 -4
  81. package/front_end/ui/legacy/Treeoutline.ts +5 -5
  82. package/front_end/ui/legacy/UIUtils.ts +26 -10
  83. package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +10 -13
  84. package/front_end/ui/legacy/components/utils/Linkifier.ts +4 -7
  85. package/front_end/ui/visual_logging/KnownContextValues.ts +2 -0
  86. package/inspector_overlay/main.ts +18 -3
  87. package/inspector_overlay/tool_green_dev_anchors.css +54 -0
  88. package/inspector_overlay/tool_green_dev_anchors.ts +164 -0
  89. package/inspector_overlay/tool_persistent.ts +14 -0
  90. package/package.json +1 -1
  91. package/docs/contributing/design.md +0 -166
  92. package/docs/design_guidelines.md +0 -1
  93. package/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataHttpNotFound.md +0 -1
  94. package/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataInvalidResponse.md +0 -1
  95. package/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataNoResponse.md +0 -1
@@ -631,16 +631,6 @@ const GREENDEV_VIEW: View = (input, _output, target) => {
631
631
  ${renderPrototypeCheckboxes(input.settings, ['aiAnnotations', 'inDevToolsFloaty', 'copyToGemini'])}
632
632
  </div>
633
633
  </devtools-card>
634
-
635
- <devtools-card .heading=${'GreenDev widgets'}>
636
- <div class="experiments-warning-subsection">
637
- <devtools-icon .name=${'warning'}></devtools-icon>
638
- <span>${i18nString(UIStrings.greenDevUnstable)}</span>
639
- </div>
640
- <div class="settings-experiments-block greendev-widgets">
641
- ${renderWidgetOptions(input.settings)}
642
- </div>
643
- </devtools-card>
644
634
  </div>
645
635
  `, target);
646
636
  // clang-format on
@@ -649,50 +639,9 @@ const GREENDEV_VIEW: View = (input, _output, target) => {
649
639
  const GREENDEV_PROTOTYPE_NAMES: Record<keyof GreenDev.GreenDevSettings, string> = {
650
640
  inDevToolsFloaty: 'In DevTools context picker',
651
641
  aiAnnotations: 'AI auto-annotations',
652
- inlineWidgets: 'Inline widgets in AI Assistance',
653
- artifactViewer: 'Widgets in the Artifact viewer',
654
642
  copyToGemini: 'Copy changes to AI Prompt'
655
643
  };
656
644
 
657
- function renderWidgetOptions(settings: GreenDev.GreenDevSettings): TemplateResult {
658
- function onChange(nowActiveRadio: 'inlineWidgets'|'artifactViewer'|'none') {
659
- return () => {
660
- switch (nowActiveRadio) {
661
- case 'inlineWidgets': {
662
- settings.artifactViewer.set(false);
663
- settings.inlineWidgets.set(true);
664
- break;
665
- }
666
- case 'artifactViewer': {
667
- settings.artifactViewer.set(true);
668
- settings.inlineWidgets.set(false);
669
- break;
670
- }
671
- case 'none': {
672
- settings.artifactViewer.set(false);
673
- settings.inlineWidgets.set(false);
674
- }
675
- }
676
-
677
- UI.InspectorView.InspectorView.instance().displayReloadRequiredWarning(
678
- i18nString(UIStrings.settingsChangedReloadDevTools));
679
- };
680
- }
681
- // clang-format off
682
- return html`
683
- <p class="settings-experiment">
684
- <label><input type="radio" name="widgets-choice" @change=${onChange('inlineWidgets')}>${GREENDEV_PROTOTYPE_NAMES['inlineWidgets']}</label>
685
- </p>
686
- <p class="settings-experiment">
687
- <label><input type="radio" name="widgets-choice" @change=${onChange('artifactViewer')}>${GREENDEV_PROTOTYPE_NAMES['artifactViewer']}</label>
688
- </p>
689
- <p class="settings-experiment">
690
- <label><input type="radio" name="widgets-choice" @change=${onChange('none')}>None</label>
691
- </p>
692
- `;
693
- // clang-format on
694
- }
695
-
696
645
  function renderPrototypeCheckboxes(
697
646
  settings: GreenDev.GreenDevSettings,
698
647
  keys: Array<keyof GreenDev.GreenDevSettings>,
@@ -179,6 +179,25 @@ export function outline(state: CodeMirror.EditorState): OutlineItem[] {
179
179
  ])) {
180
180
  let title = state.sliceDoc(cursor.from, cursor.to);
181
181
  const {lineNumber, columnNumber} = toLineColumn(cursor.from);
182
+ let hasEquals = false;
183
+ let node: CodeMirror.SyntaxNode|null = cursor.node;
184
+ while (node && node.name !== 'AssignmentExpression' && node.name !== 'VariableDeclaration') {
185
+ let sibling = node.nextSibling;
186
+ while (sibling) {
187
+ if (sibling.name === 'Equals') {
188
+ hasEquals = true;
189
+ break;
190
+ }
191
+ sibling = sibling.nextSibling;
192
+ }
193
+ if (hasEquals) {
194
+ break;
195
+ }
196
+ node = node.parent;
197
+ }
198
+ if (!hasEquals) {
199
+ break;
200
+ }
182
201
  while (cursor.name as string !== 'Equals') {
183
202
  if (!cursor.next()) {
184
203
  return items;
@@ -48,7 +48,10 @@ export class AnimationsTrackAppender implements TrackAppender {
48
48
  }
49
49
 
50
50
  #appendTrackHeaderAtLevel(currentLevel: number, expanded?: boolean): void {
51
- const style = buildGroupStyle({useFirstLineForOverview: false});
51
+ const style = buildGroupStyle({
52
+ useFirstLineForOverview: false,
53
+ collapsible: PerfUI.FlameChart.GroupCollapsibleState.IF_MULTI_ROW,
54
+ });
52
55
  const group = buildTrackHeader(
53
56
  VisualLoggingTrackName.ANIMATIONS, currentLevel, i18nString(UIStrings.animations), style,
54
57
  /* selectable= */ true, expanded);
@@ -71,7 +71,7 @@ export class InteractionsTrackAppender implements TrackAppender {
71
71
  #appendTrackHeaderAtLevel(currentLevel: number, expanded?: boolean): void {
72
72
  const trackIsCollapsible = this.#parsedTrace.data.UserInteractions.interactionEvents.length > 0;
73
73
  const style = buildGroupStyle({
74
- collapsible: trackIsCollapsible ? PerfUI.FlameChart.GroupCollapsibleState.ALWAYS :
74
+ collapsible: trackIsCollapsible ? PerfUI.FlameChart.GroupCollapsibleState.IF_MULTI_ROW :
75
75
  PerfUI.FlameChart.GroupCollapsibleState.NEVER,
76
76
  useDecoratorsForOverview: true,
77
77
  });
@@ -3041,6 +3041,31 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
3041
3041
  this.#setActiveInsight({model: insightModel, insightSetKey}, {highlightInsight: true});
3042
3042
  }
3043
3043
 
3044
+ static async executeRecordAndReload(): Promise<Trace.TraceModel.ParsedTrace> {
3045
+ await UI.ViewManager.ViewManager.instance().showView('timeline');
3046
+ const panelInstance = TimelinePanel.instance();
3047
+
3048
+ const result: EventTypes[Events.RECORDING_COMPLETED] = await new Promise(resolve => {
3049
+ function listener(e: Common.EventTarget.EventTargetEvent<EventTypes[Events.RECORDING_COMPLETED]>): void {
3050
+ resolve(e.data);
3051
+ panelInstance.removeEventListener(Events.RECORDING_COMPLETED, listener);
3052
+ }
3053
+ panelInstance.addEventListener(Events.RECORDING_COMPLETED, listener);
3054
+ panelInstance.recordReload();
3055
+ });
3056
+
3057
+ if ('errorText' in result) {
3058
+ throw new Error(result.errorText);
3059
+ }
3060
+
3061
+ const trace = panelInstance.model.parsedTrace(result.traceIndex);
3062
+ if (!trace) {
3063
+ throw new Error('Failed to parse trace');
3064
+ }
3065
+
3066
+ return trace;
3067
+ }
3068
+
3044
3069
  static async *
3045
3070
  handleExternalRecordRequest(): AsyncGenerator<
3046
3071
  AiAssistanceModel.AiAgent.ExternalRequestResponse, AiAssistanceModel.AiAgent.ExternalRequestResponse> {
@@ -2502,24 +2502,21 @@ export class TimelineDetailsContentHelper {
2502
2502
  return null;
2503
2503
  }
2504
2504
 
2505
- let callFrameContents;
2506
- if (this.target) {
2507
- const stackTrace = await Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance()
2508
- .createStackTraceFromProtocolRuntime(runtimeStackTrace, this.target);
2509
- callFrameContents = new LegacyComponents.JSPresentationUtils.StackTracePreviewContent(
2510
- undefined, this.target ?? undefined, this.#linkifier, {tabStops: true, showColumnNumber: true});
2511
- callFrameContents.stackTrace = stackTrace;
2512
- } else {
2513
- // I _think_ this only happens during tests.
2514
- // See "TimelineFlameChartView > shows the details for a selected main thread event".
2515
- // For now, just defer to the still-supported legacy runtime stack trace. When
2516
- // that is removed, we could instead create a stub StackTrace ourselves, even
2517
- // without a `target`.
2518
- callFrameContents = new LegacyComponents.JSPresentationUtils.StackTracePreviewContent(
2519
- undefined, this.target ?? undefined, this.#linkifier,
2520
- {runtimeStackTrace, tabStops: true, showColumnNumber: true});
2505
+ // Fallback to the main page/root target. Maybe the main page has a source map we need.
2506
+ // Worst case the stack is identity mapped.
2507
+ const targetManager = SDK.TargetManager.TargetManager.instance();
2508
+ const target = this.target ?? targetManager.primaryPageTarget() ?? targetManager.rootTarget();
2509
+ if (!target) {
2510
+ return null;
2521
2511
  }
2522
2512
 
2513
+ const stackTrace =
2514
+ await Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().createStackTraceFromProtocolRuntime(
2515
+ runtimeStackTrace, target);
2516
+ const callFrameContents = new LegacyComponents.JSPresentationUtils.StackTracePreviewContent(
2517
+ undefined, target, this.#linkifier, {tabStops: true, showColumnNumber: true});
2518
+ callFrameContents.stackTrace = stackTrace;
2519
+
2523
2520
  await callFrameContents.updateComplete;
2524
2521
  if (!callFrameContents.hasContent()) {
2525
2522
  return null;
@@ -1,7 +1,7 @@
1
1
  Name: Dependencies sourced from the upstream `chromium` repository
2
2
  URL: https://chromium.googlesource.com/chromium/src
3
3
  Version: N/A
4
- Revision: eb058eb950a74d8f8ffe880684c8a41a4cea87f2
4
+ Revision: 294287c423bbeff3981714f04e193960f503e773
5
5
  Update Mechanism: Manual (https://crbug.com/428069060)
6
6
  License: BSD-3-Clause
7
7
  License File: LICENSE
@@ -1,7 +1,7 @@
1
1
  Name: Lighthouse
2
2
  Short Name: lighthouse
3
- Version: 13.0.1
4
- Revision: 6ca156ba2950a5220f9f2c8468eee88842eff39a
3
+ Version: 13.0.2
4
+ Revision: 440f8bf87117ef61dc970c3ce4cebf91d46eb181
5
5
  Update Mechanism: Manual
6
6
  URL: https://github.com/GoogleChrome/lighthouse
7
7
  License: Apache-2.0