chrome-devtools-frontend 1.0.1571573 → 1.0.1572937
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.
- package/front_end/Images/geminiInDevTools.png +0 -0
- package/front_end/Images/geminiInDevTools_2x.png +0 -0
- package/front_end/Images/src/database-off.svg +1 -0
- package/front_end/Images/src/lock-person.svg +1 -1
- package/front_end/core/common/Debouncer.ts +10 -1
- package/front_end/core/common/SettingRegistration.ts +1 -1
- package/front_end/core/host/AidaClient.ts +8 -0
- package/front_end/core/host/InspectorFrontendHostAPI.ts +0 -6
- package/front_end/core/host/UserMetrics.ts +0 -30
- package/front_end/core/root/ExperimentNames.ts +30 -0
- package/front_end/core/root/Runtime.ts +12 -27
- package/front_end/core/root/root.ts +2 -0
- package/front_end/core/sdk/CSSModel.ts +36 -13
- package/front_end/core/sdk/CSSProperty.ts +1 -1
- package/front_end/core/sdk/CSSPropertyParserMatchers.ts +9 -0
- package/front_end/core/sdk/CookieModel.ts +2 -1
- package/front_end/core/sdk/DOMModel.ts +1 -1
- package/front_end/core/sdk/DebuggerModel.ts +1 -1
- package/front_end/core/sdk/OverlayModel.ts +1 -1
- package/front_end/core/sdk/SourceMap.ts +1 -1
- package/front_end/devtools_compatibility.js +0 -6
- package/front_end/entrypoints/main/MainImpl.ts +34 -25
- package/front_end/entrypoints/main/main-meta.ts +1 -1
- package/front_end/generated/SupportedCSSProperties.js +4 -8
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +0 -180
- package/front_end/models/ai_assistance/ai_assistance.ts +0 -2
- package/front_end/models/breakpoints/BreakpointManager.ts +3 -3
- package/front_end/models/issues_manager/ContrastCheckTrigger.ts +2 -2
- package/front_end/models/source_map_scopes/NamesResolver.ts +1 -1
- package/front_end/models/trace/EventsSerializer.ts +5 -1
- package/front_end/models/trace/types/TraceEvents.ts +4 -0
- package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +1 -1
- package/front_end/panels/accessibility/AccessibilitySidebarView.ts +1 -1
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +8 -63
- package/front_end/panels/ai_assistance/aiAssistancePanel.css +0 -16
- package/front_end/panels/ai_assistance/ai_assistance.ts +0 -1
- package/front_end/panels/ai_assistance/components/ChatView.ts +123 -108
- package/front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts +1 -145
- package/front_end/panels/application/DeviceBoundSessionsModel.ts +23 -1
- package/front_end/panels/application/DeviceBoundSessionsTreeElement.ts +23 -0
- package/front_end/panels/application/FrameDetailsView.ts +11 -10
- package/front_end/panels/application/components/BackForwardCacheView.ts +6 -8
- package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +4 -3
- package/front_end/panels/application/components/ProtocolHandlersView.ts +5 -6
- package/front_end/panels/application/components/ReportsGrid.ts +8 -9
- package/front_end/panels/application/components/SharedStorageAccessGrid.ts +5 -4
- package/front_end/panels/application/components/TrustTokensView.ts +4 -6
- package/front_end/panels/application/preloading/PreloadingView.ts +9 -8
- package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +237 -230
- package/front_end/panels/application/preloading/components/PreloadingGrid.ts +3 -2
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +6 -10
- package/front_end/panels/application/resourcesSidebar.css +8 -0
- package/front_end/panels/autofill/AutofillView.ts +4 -3
- package/front_end/panels/common/AiCodeGenerationTeaser.ts +35 -4
- package/front_end/panels/common/BadgeNotification.ts +17 -14
- package/front_end/panels/common/GdpSignUpDialog.ts +5 -6
- package/front_end/panels/common/GeminiRebrandPromoDialog.ts +192 -0
- package/front_end/panels/common/aiCodeGenerationTeaser.css +16 -1
- package/front_end/panels/common/common.ts +1 -0
- package/front_end/panels/common/geminiRebrandPromoDialog.css +47 -0
- package/front_end/panels/console/ErrorStackParser.ts +11 -16
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +2 -2
- package/front_end/panels/css_overview/CSSOverviewModel.ts +1 -1
- package/front_end/panels/elements/ComputedStyleModel.ts +7 -54
- package/front_end/panels/elements/ElementsPanel.ts +33 -6
- package/front_end/panels/elements/ElementsTreeOutline.ts +1 -1
- package/front_end/panels/elements/StylePropertiesSection.ts +16 -8
- package/front_end/panels/elements/StylePropertyTreeElement.ts +67 -32
- package/front_end/panels/elements/StylesSidebarPane.ts +28 -11
- package/front_end/panels/elements/components/CSSHintDetailsView.ts +3 -2
- package/front_end/panels/elements/components/CSSPropertyDocsView.ts +3 -2
- package/front_end/panels/elements/elements-meta.ts +1 -1
- package/front_end/panels/issues/IssueView.ts +6 -6
- package/front_end/panels/network/RequestConditionsDrawer.ts +4 -3
- package/front_end/panels/network/RequestCookiesView.ts +3 -4
- package/front_end/panels/network/RequestTimingView.ts +2 -7
- package/front_end/panels/network/components/HeaderSectionRow.ts +3 -2
- package/front_end/panels/network/components/RequestHeaderSection.ts +3 -1
- package/front_end/panels/profiler/HeapProfileView.ts +3 -3
- package/front_end/panels/profiler/HeapSnapshotView.ts +1 -1
- package/front_end/panels/profiler/profiler-meta.ts +3 -3
- package/front_end/panels/protocol_monitor/protocol_monitor-meta.ts +1 -1
- package/front_end/panels/recorder/RecorderController.ts +2 -7
- package/front_end/panels/recorder/components/CreateRecordingView.ts +6 -6
- package/front_end/panels/recorder/components/RecordingView.ts +0 -38
- package/front_end/panels/recorder/components/ReplaySection.ts +0 -14
- package/front_end/panels/recorder/components/StepEditor.ts +2 -40
- package/front_end/panels/recorder/recorderController.css +3 -3
- package/front_end/panels/security/CookieReportView.ts +14 -14
- package/front_end/panels/security/cookieControlsView.css +1 -1
- package/front_end/panels/security/cookieReportView.css +1 -1
- package/front_end/panels/settings/AISettingsTab.ts +8 -10
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +4 -12
- package/front_end/panels/settings/settings-meta.ts +1 -1
- package/front_end/panels/sources/BreakpointEditDialog.ts +4 -3
- package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +1 -1
- package/front_end/panels/sources/NavigatorView.ts +4 -4
- package/front_end/panels/sources/SourcesPanel.ts +5 -4
- package/front_end/panels/sources/components/HeadersView.ts +2 -2
- package/front_end/panels/timeline/CompatibilityTracksAppender.ts +3 -2
- package/front_end/panels/timeline/ThreadAppender.ts +2 -1
- package/front_end/panels/timeline/TimelineController.ts +3 -3
- package/front_end/panels/timeline/TimelinePanel.ts +6 -4
- package/front_end/panels/timeline/TimelineUIUtils.ts +2 -2
- package/front_end/panels/timeline/components/ExportTraceOptions.ts +4 -4
- package/front_end/panels/timeline/components/FieldSettingsDialog.ts +13 -6
- package/front_end/panels/timeline/components/LiveMetricsView.ts +13 -9
- package/front_end/panels/timeline/components/exportTraceOptions.css +1 -1
- package/front_end/panels/timeline/components/fieldSettingsDialog.css +1 -1
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +2 -19
- package/front_end/panels/timeline/components/insights/InsightRenderer.ts +3 -4
- package/front_end/panels/timeline/components/insights/baseInsightComponent.css +0 -5
- package/front_end/panels/timeline/components/liveMetricsView.css +1 -1
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/ui/components/buttons/button.css +4 -0
- package/front_end/ui/components/panel_feedback/PreviewToggle.ts +5 -5
- package/front_end/ui/components/panel_feedback/previewToggle.css +2 -2
- package/front_end/ui/components/text_editor/AiCodeGenerationParser.ts +27 -8
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +36 -6
- package/front_end/ui/legacy/ActionRegistration.ts +1 -1
- package/front_end/ui/legacy/ContextMenu.ts +2 -2
- package/front_end/ui/legacy/EmptyWidget.ts +3 -3
- package/front_end/ui/legacy/LinkContextMenuProvider.ts +42 -0
- package/front_end/ui/legacy/ViewRegistration.ts +1 -1
- package/front_end/ui/legacy/XLink.ts +0 -27
- package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +1 -1
- package/front_end/ui/legacy/components/color_picker/ContrastOverlay.ts +4 -4
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +2 -2
- package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +1 -1
- package/front_end/ui/legacy/inspectorCommon.css +2 -1
- package/front_end/ui/legacy/legacy.ts +3 -1
- package/front_end/ui/visual_logging/KnownContextValues.ts +2 -0
- package/front_end/ui/visual_logging/LoggingDriver.ts +3 -0
- package/package.json +1 -1
- package/front_end/models/ai_assistance/ArtifactsManager.ts +0 -67
- package/front_end/panels/ai_assistance/components/ArtifactsViewer.ts +0 -183
- package/front_end/panels/ai_assistance/components/CollapsibleAssistanceContentWidget.ts +0 -89
- package/front_end/panels/ai_assistance/components/PerformanceAgentFlameChart.ts +0 -133
- package/front_end/panels/ai_assistance/components/artifactsViewer.css +0 -15
- package/front_end/panels/ai_assistance/components/collapsibleAssistanceContentWidget.css +0 -32
|
@@ -249,7 +249,7 @@ interface AiSettingParams {
|
|
|
249
249
|
|
|
250
250
|
interface ViewInput {
|
|
251
251
|
disabledReasons: string[];
|
|
252
|
-
sharedDisclaimerBulletPoints: Array<{icon: string, text: Common.UIString.LocalizedString|Lit.
|
|
252
|
+
sharedDisclaimerBulletPoints: Array<{icon: string, text: Common.UIString.LocalizedString|Lit.LitTemplate}>;
|
|
253
253
|
settingToParams: Map<Common.Settings.Setting<boolean>, AiSettingParams>;
|
|
254
254
|
expandSetting(setting: Common.Settings.Setting<boolean>): void;
|
|
255
255
|
toggleSetting(setting: Common.Settings.Setting<boolean>, ev: Event): void;
|
|
@@ -658,13 +658,11 @@ export class AISettingsTab extends UI.Widget.VBox {
|
|
|
658
658
|
this.requestUpdate();
|
|
659
659
|
}
|
|
660
660
|
|
|
661
|
-
#getSharedDisclaimerBulletPoints(): Array<{icon: string, text: Common.UIString.LocalizedString|Lit.
|
|
662
|
-
const tosLink =
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
'https://policies.google.com/privacy', i18nString(UIStrings.privacyNotice), undefined, undefined,
|
|
667
|
-
'privacy-notice');
|
|
661
|
+
#getSharedDisclaimerBulletPoints(): Array<{icon: string, text: Common.UIString.LocalizedString|Lit.LitTemplate}> {
|
|
662
|
+
const tosLink = html`<devtools-link href="https://policies.google.com/terms" .jslogContext=${'terms-of-service'}>${
|
|
663
|
+
i18nString(UIStrings.termsOfService)}</devtools-link>`;
|
|
664
|
+
const privacyNoticeLink = html`<devtools-link href="https://policies.google.com/privacy" .jslogContext=${
|
|
665
|
+
'privacy-notice'}>${i18nString(UIStrings.privacyNotice)}</devtools-link>`;
|
|
668
666
|
const noLogging = Root.Runtime.hostConfig.aidaAvailability?.enterprisePolicyValue ===
|
|
669
667
|
Root.Runtime.GenAiEnterprisePolicyValue.ALLOW_WITHOUT_LOGGING;
|
|
670
668
|
|
|
@@ -680,10 +678,10 @@ export class AISettingsTab extends UI.Widget.VBox {
|
|
|
680
678
|
},
|
|
681
679
|
{
|
|
682
680
|
icon: 'policy',
|
|
683
|
-
text:
|
|
681
|
+
text: uiI18n.getFormatLocalizedStringTemplate(str_, UIStrings.termsOfServicePrivacyNotice, {
|
|
684
682
|
PH1: tosLink,
|
|
685
683
|
PH2: privacyNoticeLink,
|
|
686
|
-
})
|
|
684
|
+
}),
|
|
687
685
|
},
|
|
688
686
|
];
|
|
689
687
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
/* eslint-disable @devtools/no-lit-render-outside-of-view*/
|
|
5
5
|
|
|
6
|
+
import '../../../../ui/kit/kit.js';
|
|
6
7
|
import '../../../../ui/legacy/legacy.js';
|
|
7
8
|
|
|
8
9
|
import * as i18n from '../../../../core/i18n/i18n.js';
|
|
@@ -488,13 +489,6 @@ export class UserAgentClientHintsForm extends HTMLElement {
|
|
|
488
489
|
this.dispatchEvent(new ClientHintsChangeEvent());
|
|
489
490
|
};
|
|
490
491
|
|
|
491
|
-
#handleLinkPress = (event: KeyboardEvent): void => {
|
|
492
|
-
if (event.code === 'Space' || event.code === 'Enter') {
|
|
493
|
-
event.preventDefault();
|
|
494
|
-
(event.target as HTMLAnchorElement).click();
|
|
495
|
-
}
|
|
496
|
-
};
|
|
497
|
-
|
|
498
492
|
#handleSubmit = (event: Event): void => {
|
|
499
493
|
event.preventDefault();
|
|
500
494
|
if (this.#showSubmitButton) {
|
|
@@ -869,17 +863,15 @@ export class UserAgentClientHintsForm extends HTMLElement {
|
|
|
869
863
|
${i18nString(UIStrings.title)}
|
|
870
864
|
</div>
|
|
871
865
|
<devtools-icon tabindex=${this.#isFormDisabled ? '-1' : '0'} class=info-icon name=info aria-label=${i18nString(UIStrings.userAgentClientHintsInfo)} title=${i18nString(UIStrings.userAgentClientHintsInfo)}></devtools-icon>
|
|
872
|
-
<
|
|
866
|
+
<devtools-link
|
|
873
867
|
tabindex=${this.#isFormDisabled ? '-1' : '0'}
|
|
874
868
|
href="https://web.dev/user-agent-client-hints/"
|
|
875
|
-
target="_blank"
|
|
876
869
|
class="link"
|
|
877
|
-
@keypress=${this.#handleLinkPress}
|
|
878
870
|
aria-label=${i18nString(UIStrings.learnMore)}
|
|
879
|
-
|
|
871
|
+
.jslogContext=${'learn-more'}
|
|
880
872
|
>
|
|
881
873
|
${i18nString(UIStrings.learnMore)}
|
|
882
|
-
</
|
|
874
|
+
</devtools-link>
|
|
883
875
|
</div>
|
|
884
876
|
<form
|
|
885
877
|
id="form-container"
|
|
@@ -141,7 +141,7 @@ UI.ViewManager.registerViewExtension({
|
|
|
141
141
|
title: i18nLazyString(UIStrings.experiments),
|
|
142
142
|
commandPrompt: i18nLazyString(UIStrings.showExperiments),
|
|
143
143
|
order: 3,
|
|
144
|
-
experiment: Root.
|
|
144
|
+
experiment: Root.ExperimentNames.ExperimentName.ALL,
|
|
145
145
|
async loadView() {
|
|
146
146
|
const Settings = await loadSettingsModule();
|
|
147
147
|
return new Settings.SettingsScreen.ExperimentsSettingsTab();
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
/* eslint-disable @devtools/no-imperative-dom-api */
|
|
5
5
|
|
|
6
|
+
import '../../ui/kit/kit.js';
|
|
6
7
|
import '../../ui/legacy/legacy.js';
|
|
7
8
|
|
|
8
9
|
import * as Common from '../../core/common/common.js';
|
|
@@ -141,9 +142,9 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
|
|
|
141
142
|
</div>
|
|
142
143
|
<div class=link-wrapper>
|
|
143
144
|
<devtools-icon name=open-externally class=link-icon></devtools-icon>
|
|
144
|
-
<
|
|
145
|
-
|
|
146
|
-
i18nString(UIStrings.learnMoreOnBreakpointTypes)}</
|
|
145
|
+
<devtools-link class="devtools-link" href="https://goo.gle/devtools-loc"
|
|
146
|
+
.jslogContext=${'learn-more'}>${
|
|
147
|
+
i18nString(UIStrings.learnMoreOnBreakpointTypes)}</devtools-link>
|
|
147
148
|
</div>
|
|
148
149
|
`,
|
|
149
150
|
// clang-format on
|
|
@@ -74,7 +74,7 @@ export class FilteredUISourceCodeListProvider extends QuickOpen.FilteredListWidg
|
|
|
74
74
|
if (this.uiSourceCodeIds.has(uiSourceCode.canonicalScriptId())) {
|
|
75
75
|
return false;
|
|
76
76
|
}
|
|
77
|
-
if (Root.Runtime.experiments.isEnabled(Root.
|
|
77
|
+
if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.JUST_MY_CODE) &&
|
|
78
78
|
Workspace.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(
|
|
79
79
|
uiSourceCode)) {
|
|
80
80
|
return false;
|
|
@@ -179,7 +179,7 @@ export class NavigatorView extends UI.Widget.VBox implements SDK.TargetManager.O
|
|
|
179
179
|
private authoredNode?: NavigatorGroupTreeNode;
|
|
180
180
|
private deployedNode?: NavigatorGroupTreeNode;
|
|
181
181
|
private navigatorGroupByFolderSetting: Common.Settings.Setting<boolean>;
|
|
182
|
-
private navigatorGroupByAuthoredExperiment?: Root.
|
|
182
|
+
private navigatorGroupByAuthoredExperiment?: Root.ExperimentNames.ExperimentName;
|
|
183
183
|
#workspace!: Workspace.Workspace.WorkspaceImpl;
|
|
184
184
|
private groupByFrame?: boolean;
|
|
185
185
|
private groupByAuthored?: boolean;
|
|
@@ -217,7 +217,7 @@ export class NavigatorView extends UI.Widget.VBox implements SDK.TargetManager.O
|
|
|
217
217
|
this.navigatorGroupByFolderSetting = Common.Settings.Settings.instance().moduleSetting('navigator-group-by-folder');
|
|
218
218
|
this.navigatorGroupByFolderSetting.addChangeListener(this.groupingChanged.bind(this));
|
|
219
219
|
if (enableAuthoredGrouping) {
|
|
220
|
-
this.navigatorGroupByAuthoredExperiment = Root.
|
|
220
|
+
this.navigatorGroupByAuthoredExperiment = Root.ExperimentNames.ExperimentName.AUTHORED_DEPLOYED_GROUPING;
|
|
221
221
|
}
|
|
222
222
|
|
|
223
223
|
Workspace.IgnoreListManager.IgnoreListManager.instance().addChangeListener(this.ignoreListChanged.bind(this));
|
|
@@ -457,7 +457,7 @@ export class NavigatorView extends UI.Widget.VBox implements SDK.TargetManager.O
|
|
|
457
457
|
}
|
|
458
458
|
|
|
459
459
|
private addUISourceCode(uiSourceCode: Workspace.UISourceCode.UISourceCode): void {
|
|
460
|
-
if (Root.Runtime.experiments.isEnabled(Root.
|
|
460
|
+
if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.JUST_MY_CODE) &&
|
|
461
461
|
Workspace.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(
|
|
462
462
|
uiSourceCode)) {
|
|
463
463
|
return;
|
|
@@ -1188,7 +1188,7 @@ export class NavigatorView extends UI.Widget.VBox implements SDK.TargetManager.O
|
|
|
1188
1188
|
}
|
|
1189
1189
|
|
|
1190
1190
|
private ignoreListChanged(): void {
|
|
1191
|
-
if (Root.Runtime.experiments.isEnabled(Root.
|
|
1191
|
+
if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.JUST_MY_CODE)) {
|
|
1192
1192
|
this.groupingChanged();
|
|
1193
1193
|
} else {
|
|
1194
1194
|
this.rootNode.updateTitleRecursive();
|
|
@@ -639,7 +639,7 @@ export class SourcesPanel extends UI.Panel.Panel implements
|
|
|
639
639
|
}
|
|
640
640
|
|
|
641
641
|
private addExperimentMenuItem(
|
|
642
|
-
menuSection: UI.ContextMenu.Section, experiment: Root.
|
|
642
|
+
menuSection: UI.ContextMenu.Section, experiment: Root.ExperimentNames.ExperimentName,
|
|
643
643
|
menuItem: Common.UIString.LocalizedString): void {
|
|
644
644
|
/** menu handler **/
|
|
645
645
|
function toggleExperiment(): void {
|
|
@@ -670,10 +670,11 @@ export class SourcesPanel extends UI.Panel.Panel implements
|
|
|
670
670
|
{checked: groupByFolderSetting.get(), jslogContext: groupByFolderSetting.name});
|
|
671
671
|
|
|
672
672
|
this.addExperimentMenuItem(
|
|
673
|
-
contextMenu.viewSection(), Root.
|
|
673
|
+
contextMenu.viewSection(), Root.ExperimentNames.ExperimentName.AUTHORED_DEPLOYED_GROUPING,
|
|
674
674
|
i18nString(UIStrings.groupByAuthored));
|
|
675
675
|
this.addExperimentMenuItem(
|
|
676
|
-
contextMenu.viewSection(), Root.
|
|
676
|
+
contextMenu.viewSection(), Root.ExperimentNames.ExperimentName.JUST_MY_CODE,
|
|
677
|
+
i18nString(UIStrings.hideIgnoreListed));
|
|
677
678
|
}
|
|
678
679
|
|
|
679
680
|
updateLastModificationTime(): void {
|
|
@@ -968,7 +969,7 @@ export class SourcesPanel extends UI.Panel.Panel implements
|
|
|
968
969
|
const eventTarget = (event.target as Node);
|
|
969
970
|
if (!uiSourceCode.project().isServiceProject() &&
|
|
970
971
|
!eventTarget.isSelfOrDescendant(this.navigatorTabbedLocation.widget().element) &&
|
|
971
|
-
!(Root.Runtime.experiments.isEnabled(Root.
|
|
972
|
+
!(Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.JUST_MY_CODE) &&
|
|
972
973
|
Workspace.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(
|
|
973
974
|
uiSourceCode))) {
|
|
974
975
|
contextMenu.revealSection().appendItem(
|
|
@@ -377,10 +377,10 @@ export class HeadersViewComponent extends HTMLElement {
|
|
|
377
377
|
${i18nString(UIStrings.addOverrideRule)}
|
|
378
378
|
</devtools-button>
|
|
379
379
|
<div class="learn-more-row">
|
|
380
|
-
<
|
|
380
|
+
<devtools-link
|
|
381
381
|
href="https://goo.gle/devtools-override"
|
|
382
382
|
class="link"
|
|
383
|
-
|
|
383
|
+
jslogContext=${'learn-more'}>${i18nString(UIStrings.learnMore)}</devtools-link>
|
|
384
384
|
</div>
|
|
385
385
|
`, this.#shadow, {host: this});
|
|
386
386
|
// clang-format on
|
|
@@ -42,7 +42,7 @@ function isShowPostMessageEventsEnabled(): boolean {
|
|
|
42
42
|
// cache is updated automatically.
|
|
43
43
|
if (showPostMessageEvents === undefined) {
|
|
44
44
|
showPostMessageEvents =
|
|
45
|
-
Root.Runtime.experiments.isEnabled(Root.
|
|
45
|
+
Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_POST_MESSAGE_EVENTS);
|
|
46
46
|
}
|
|
47
47
|
return showPostMessageEvents;
|
|
48
48
|
}
|
|
@@ -327,7 +327,8 @@ export class CompatibilityTracksAppender {
|
|
|
327
327
|
}
|
|
328
328
|
};
|
|
329
329
|
const threads = Trace.Handlers.Threads.threadsInTrace(this.#parsedTrace.data);
|
|
330
|
-
const showAllEvents =
|
|
330
|
+
const showAllEvents =
|
|
331
|
+
Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_ALL_EVENTS);
|
|
331
332
|
|
|
332
333
|
for (const {pid, tid, name, type, entries, tree} of threads) {
|
|
333
334
|
if (this.#parsedTrace.data.Meta.traceIsGeneric) {
|
|
@@ -151,7 +151,8 @@ export class ThreadAppender implements TrackAppender {
|
|
|
151
151
|
#headerAppended = false;
|
|
152
152
|
readonly threadType: Trace.Handlers.Threads.ThreadType = Trace.Handlers.Threads.ThreadType.MAIN_THREAD;
|
|
153
153
|
readonly isOnMainFrame: boolean;
|
|
154
|
-
#showAllEventsEnabled =
|
|
154
|
+
#showAllEventsEnabled =
|
|
155
|
+
Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_ALL_EVENTS);
|
|
155
156
|
#url = '';
|
|
156
157
|
#headerNestingLevel: number|null = null;
|
|
157
158
|
constructor(
|
|
@@ -229,7 +229,7 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
|
|
|
229
229
|
// 'disabled-by-default-v8.cpu_profiler'
|
|
230
230
|
// └ default: on, option: enableJSSampling
|
|
231
231
|
const categoriesArray = [
|
|
232
|
-
Root.Runtime.experiments.isEnabled(Root.
|
|
232
|
+
Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_ALL_EVENTS) ? '*' : '-*',
|
|
233
233
|
Trace.Types.Events.Categories.Console,
|
|
234
234
|
Trace.Types.Events.Categories.Loading,
|
|
235
235
|
Trace.Types.Events.Categories.UserTiming,
|
|
@@ -251,14 +251,14 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
|
|
|
251
251
|
'navigation,rail',
|
|
252
252
|
];
|
|
253
253
|
|
|
254
|
-
if (Root.Runtime.experiments.isEnabled(Root.
|
|
254
|
+
if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_V8_RUNTIME_CALL_STATS) &&
|
|
255
255
|
options.enableJSSampling) {
|
|
256
256
|
categoriesArray.push(disabledByDefault('v8.runtime_stats_sampling'));
|
|
257
257
|
}
|
|
258
258
|
if (options.enableJSSampling) {
|
|
259
259
|
categoriesArray.push(disabledByDefault('v8.cpu_profiler'));
|
|
260
260
|
}
|
|
261
|
-
if (Root.Runtime.experiments.isEnabled(Root.
|
|
261
|
+
if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_INVALIDATION_TRACKING)) {
|
|
262
262
|
categoriesArray.push(disabledByDefault('devtools.timeline.invalidationTracking'));
|
|
263
263
|
}
|
|
264
264
|
if (options.capturePictures) {
|
|
@@ -732,10 +732,11 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
732
732
|
|
|
733
733
|
#instantiateNewModel(): Trace.TraceModel.Model {
|
|
734
734
|
const config = Trace.Types.Configuration.defaults();
|
|
735
|
-
config.showAllEvents =
|
|
735
|
+
config.showAllEvents =
|
|
736
|
+
Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_ALL_EVENTS);
|
|
736
737
|
config.includeRuntimeCallStats =
|
|
737
|
-
Root.Runtime.experiments.isEnabled(Root.
|
|
738
|
-
config.debugMode = Root.Runtime.experiments.isEnabled(Root.
|
|
738
|
+
Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_V8_RUNTIME_CALL_STATS);
|
|
739
|
+
config.debugMode = Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_DEBUG_MODE);
|
|
739
740
|
|
|
740
741
|
const traceEngineModel = Trace.TraceModel.Model.createWithAllHandlers(config);
|
|
741
742
|
|
|
@@ -2090,7 +2091,8 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
2090
2091
|
|
|
2091
2092
|
#applyActiveFilters(traceIsGeneric: boolean, exclusiveFilter: Trace.Extras.TraceFilter.TraceFilter|null = null):
|
|
2092
2093
|
void {
|
|
2093
|
-
if (traceIsGeneric ||
|
|
2094
|
+
if (traceIsGeneric ||
|
|
2095
|
+
Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_ALL_EVENTS)) {
|
|
2094
2096
|
return;
|
|
2095
2097
|
}
|
|
2096
2098
|
|
|
@@ -505,7 +505,7 @@ export class TimelineUIUtils {
|
|
|
505
505
|
static getGetDebugModeEnabled(): boolean {
|
|
506
506
|
if (TimelineUIUtils.debugModeEnabled === undefined) {
|
|
507
507
|
TimelineUIUtils.debugModeEnabled =
|
|
508
|
-
Root.Runtime.experiments.isEnabled(Root.
|
|
508
|
+
Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_DEBUG_MODE);
|
|
509
509
|
}
|
|
510
510
|
return TimelineUIUtils.debugModeEnabled;
|
|
511
511
|
}
|
|
@@ -1527,7 +1527,7 @@ export class TimelineUIUtils {
|
|
|
1527
1527
|
await TimelineUIUtils.generateCauses(event, contentHelper, parsedTrace);
|
|
1528
1528
|
}
|
|
1529
1529
|
|
|
1530
|
-
if (Root.Runtime.experiments.isEnabled(Root.
|
|
1530
|
+
if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_DEBUG_MODE)) {
|
|
1531
1531
|
TimelineUIUtils.renderEventJson(event, contentHelper);
|
|
1532
1532
|
}
|
|
1533
1533
|
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
/* eslint-disable @devtools/no-lit-render-outside-of-view */
|
|
5
5
|
|
|
6
|
+
import '../../../ui/kit/kit.js';
|
|
6
7
|
import '../../../ui/components/tooltips/tooltips.js';
|
|
7
8
|
import '../../../ui/components/buttons/buttons.js';
|
|
8
9
|
|
|
@@ -14,7 +15,6 @@ import * as Dialogs from '../../../ui/components/dialogs/dialogs.js';
|
|
|
14
15
|
import * as ComponentHelpers from '../../../ui/components/helpers/helpers.js';
|
|
15
16
|
import * as UI from '../../../ui/legacy/legacy.js';
|
|
16
17
|
import * as Lit from '../../../ui/lit/lit.js';
|
|
17
|
-
import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
|
|
18
18
|
|
|
19
19
|
import exportTraceOptionsStyles from './exportTraceOptions.css.js';
|
|
20
20
|
|
|
@@ -299,12 +299,12 @@ export class ExportTraceOptions extends HTMLElement {
|
|
|
299
299
|
${this.#renderCheckbox('compress-with-gzip', this.#shouldCompressCheckbox, i18nString(UIStrings.shouldCompress), this.#state.shouldCompress)}
|
|
300
300
|
<div class='export-trace-options-row export-trace-options-row-last'>
|
|
301
301
|
<div class="export-trace-explanation">
|
|
302
|
-
<
|
|
302
|
+
<devtools-link
|
|
303
303
|
href="https://developer.chrome.com/docs/devtools/performance/save-trace"
|
|
304
304
|
class=devtools-link
|
|
305
|
-
|
|
305
|
+
.jslogContext=${'save-trace-explanation'}>
|
|
306
306
|
${i18nString(UIStrings.explanation)}
|
|
307
|
-
</
|
|
307
|
+
</devtools-link>
|
|
308
308
|
</div>
|
|
309
309
|
<devtools-button
|
|
310
310
|
class="setup-button"
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
/* eslint-disable @devtools/no-lit-render-outside-of-view */
|
|
5
5
|
|
|
6
|
+
import '../../../ui/kit/kit.js';
|
|
6
7
|
import './OriginMap.js';
|
|
7
8
|
|
|
8
9
|
import * as i18n from '../../../core/i18n/i18n.js';
|
|
@@ -12,7 +13,6 @@ import * as Dialogs from '../../../ui/components/dialogs/dialogs.js';
|
|
|
12
13
|
import * as ComponentHelpers from '../../../ui/components/helpers/helpers.js';
|
|
13
14
|
import * as Input from '../../../ui/components/input/input.js';
|
|
14
15
|
import * as uiI18n from '../../../ui/i18n/i18n.js';
|
|
15
|
-
import * as UI from '../../../ui/legacy/legacy.js';
|
|
16
16
|
import * as Lit from '../../../ui/lit/lit.js';
|
|
17
17
|
import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
|
|
18
18
|
|
|
@@ -332,10 +332,6 @@ export class FieldSettingsDialog extends HTMLElement {
|
|
|
332
332
|
}
|
|
333
333
|
|
|
334
334
|
#render = (): void => {
|
|
335
|
-
const linkEl =
|
|
336
|
-
UI.XLink.XLink.create('https://developer.chrome.com/docs/crux', i18n.i18n.lockedString('Chrome UX Report'));
|
|
337
|
-
const descriptionEl = uiI18n.getFormatLocalizedString(str_, UIStrings.fetchAggregated, {PH1: linkEl});
|
|
338
|
-
|
|
339
335
|
// clang-format off
|
|
340
336
|
const output = html`
|
|
341
337
|
<style>${fieldSettingsDialogStyles}</style>
|
|
@@ -356,7 +352,18 @@ export class FieldSettingsDialog extends HTMLElement {
|
|
|
356
352
|
})}
|
|
357
353
|
>
|
|
358
354
|
<div class="content">
|
|
359
|
-
<div
|
|
355
|
+
<div>
|
|
356
|
+
${uiI18n.getFormatLocalizedStringTemplate(
|
|
357
|
+
str_,
|
|
358
|
+
UIStrings.fetchAggregated,
|
|
359
|
+
{
|
|
360
|
+
PH1: html`<devtools-link
|
|
361
|
+
href="https://developer.chrome.com/docs/crux"
|
|
362
|
+
>${i18n.i18n.lockedString('Chrome UX Report')}</devtools-link
|
|
363
|
+
>`,
|
|
364
|
+
},
|
|
365
|
+
)}
|
|
366
|
+
</div>
|
|
360
367
|
<div class="privacy-disclosure">
|
|
361
368
|
<h3 class="section-title">${i18nString(UIStrings.privacyDisclosure)}</h3>
|
|
362
369
|
<div>${i18nString(UIStrings.whenPerformanceIsShown)}</div>
|
|
@@ -867,10 +867,10 @@ export class LiveMetricsView extends LegacyWrapper.LegacyWrapper.WrappableCompon
|
|
|
867
867
|
tmp.searchParams.set('device', device);
|
|
868
868
|
const cruxVis = `${tmp.origin}/#/${tmp.search}`;
|
|
869
869
|
return html`
|
|
870
|
-
(<
|
|
870
|
+
(<devtools-link href=${cruxVis}
|
|
871
871
|
class="local-field-link"
|
|
872
872
|
title=${i18nString(UIStrings.fieldDataHistoryTooltip)}
|
|
873
|
-
>${i18nString(UIStrings.fieldDataHistoryLink)}</
|
|
873
|
+
>${i18nString(UIStrings.fieldDataHistoryLink)}</devtools-link>)
|
|
874
874
|
`;
|
|
875
875
|
}
|
|
876
876
|
|
|
@@ -904,13 +904,17 @@ export class LiveMetricsView extends LegacyWrapper.LegacyWrapper.WrappableCompon
|
|
|
904
904
|
return this.#renderCollectionPeriod();
|
|
905
905
|
}
|
|
906
906
|
|
|
907
|
-
|
|
908
|
-
UI.XLink.XLink.create('https://developer.chrome.com/docs/crux', i18n.i18n.lockedString('Chrome UX Report'));
|
|
909
|
-
const messageEl = uiI18n.getFormatLocalizedString(str_, UIStrings.seeHowYourLocalMetricsCompare, {PH1: linkEl});
|
|
910
|
-
|
|
907
|
+
// clang-format off
|
|
911
908
|
return html`
|
|
912
|
-
<div class="field-data-message"
|
|
909
|
+
<div class="field-data-message">
|
|
910
|
+
${uiI18n.getFormatLocalizedStringTemplate(
|
|
911
|
+
str_,
|
|
912
|
+
UIStrings.seeHowYourLocalMetricsCompare,
|
|
913
|
+
{ PH1: html`<devtools-link href="https://developer.chrome.com/docs/crux">${i18n.i18n.lockedString('Chrome UX Report')}</devtools-link>` },
|
|
914
|
+
)}
|
|
915
|
+
</div>
|
|
913
916
|
`;
|
|
917
|
+
// clang-format on
|
|
914
918
|
}
|
|
915
919
|
|
|
916
920
|
#renderLogSection(): Lit.LitTemplate {
|
|
@@ -1174,11 +1178,11 @@ export class LiveMetricsView extends LegacyWrapper.LegacyWrapper.WrappableCompon
|
|
|
1174
1178
|
${this.#renderInpCard()}
|
|
1175
1179
|
</div>
|
|
1176
1180
|
</div>
|
|
1177
|
-
<
|
|
1181
|
+
<devtools-link
|
|
1178
1182
|
href=${helpLink}
|
|
1179
1183
|
class="local-field-link"
|
|
1180
1184
|
title=${i18nString(UIStrings.localFieldLearnMoreTooltip)}
|
|
1181
|
-
>${i18nString(UIStrings.localFieldLearnMoreLink)}</
|
|
1185
|
+
>${i18nString(UIStrings.localFieldLearnMoreLink)}</devtools-link>
|
|
1182
1186
|
${this.#renderLogSection()}
|
|
1183
1187
|
</main>
|
|
1184
1188
|
<aside class="next-steps" aria-labelledby="next-steps-section-title">
|
|
@@ -69,7 +69,6 @@ interface ViewInput {
|
|
|
69
69
|
internalName: string;
|
|
70
70
|
model: InsightModel;
|
|
71
71
|
selected: boolean;
|
|
72
|
-
isAIAssistanceContext: boolean;
|
|
73
72
|
showAskAI: boolean;
|
|
74
73
|
estimatedSavingsString: string|null;
|
|
75
74
|
estimatedSavingsAriaLabel: string|null;
|
|
@@ -88,7 +87,6 @@ const DEFAULT_VIEW: View = (input, output, target) => {
|
|
|
88
87
|
selected,
|
|
89
88
|
estimatedSavingsString,
|
|
90
89
|
estimatedSavingsAriaLabel,
|
|
91
|
-
isAIAssistanceContext,
|
|
92
90
|
showAskAI,
|
|
93
91
|
dispatchInsightToggle,
|
|
94
92
|
renderContent,
|
|
@@ -98,8 +96,7 @@ const DEFAULT_VIEW: View = (input, output, target) => {
|
|
|
98
96
|
|
|
99
97
|
const containerClasses = Lit.Directives.classMap({
|
|
100
98
|
insight: true,
|
|
101
|
-
closed: !selected
|
|
102
|
-
'ai-assistance-context': isAIAssistanceContext,
|
|
99
|
+
closed: !selected,
|
|
103
100
|
});
|
|
104
101
|
|
|
105
102
|
let ariaLabel = `${i18nString(UIStrings.viewDetails, {PH1: model.title})}`;
|
|
@@ -139,10 +136,6 @@ const DEFAULT_VIEW: View = (input, output, target) => {
|
|
|
139
136
|
}
|
|
140
137
|
|
|
141
138
|
function renderHoverIcon(): Lit.LitTemplate {
|
|
142
|
-
if (isAIAssistanceContext) {
|
|
143
|
-
return Lit.nothing;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
139
|
const containerClasses = Lit.Directives.classMap({
|
|
147
140
|
'insight-hover-icon': true,
|
|
148
141
|
active: selected,
|
|
@@ -205,10 +198,6 @@ export interface BaseInsightData {
|
|
|
205
198
|
export abstract class BaseInsightComponent<T extends InsightModel> extends UI.Widget.Widget {
|
|
206
199
|
#view: View;
|
|
207
200
|
abstract internalName: string;
|
|
208
|
-
|
|
209
|
-
// Tracks if this component is rendered withing the AI assistance panel.
|
|
210
|
-
// Currently only relevant to GreenDev.
|
|
211
|
-
#isAIAssistanceContext = false;
|
|
212
201
|
#selected = false;
|
|
213
202
|
#model: T|null = null;
|
|
214
203
|
#agentFocus: AIAssistance.AIContext.AgentFocus|null = null;
|
|
@@ -243,11 +232,6 @@ export abstract class BaseInsightComponent<T extends InsightModel> extends UI.Wi
|
|
|
243
232
|
return false;
|
|
244
233
|
}
|
|
245
234
|
|
|
246
|
-
set isAIAssistanceContext(isAIAssistanceContext: boolean) {
|
|
247
|
-
this.#isAIAssistanceContext = isAIAssistanceContext;
|
|
248
|
-
this.requestUpdate();
|
|
249
|
-
}
|
|
250
|
-
|
|
251
235
|
set selected(selected: boolean) {
|
|
252
236
|
if (!this.#selected && selected) {
|
|
253
237
|
const options = this.getOverlayOptionsForInitialOverlays();
|
|
@@ -408,7 +392,6 @@ export abstract class BaseInsightComponent<T extends InsightModel> extends UI.Wi
|
|
|
408
392
|
selected: this.#selected,
|
|
409
393
|
estimatedSavingsString: this.getEstimatedSavingsString(),
|
|
410
394
|
estimatedSavingsAriaLabel: this.#getEstimatedSavingsAriaLabel(),
|
|
411
|
-
isAIAssistanceContext: this.#isAIAssistanceContext,
|
|
412
395
|
showAskAI: this.#canShowAskAI(),
|
|
413
396
|
dispatchInsightToggle: () => this.#dispatchInsightToggle(),
|
|
414
397
|
renderContent: () => this.renderContent(),
|
|
@@ -514,7 +497,7 @@ export abstract class BaseInsightComponent<T extends InsightModel> extends UI.Wi
|
|
|
514
497
|
}
|
|
515
498
|
|
|
516
499
|
#canShowAskAI(): boolean {
|
|
517
|
-
if (
|
|
500
|
+
if (!this.hasAskAiSupport()) {
|
|
518
501
|
return false;
|
|
519
502
|
}
|
|
520
503
|
|
|
@@ -61,9 +61,9 @@ export class InsightRenderer {
|
|
|
61
61
|
renderInsightToWidgetElement(
|
|
62
62
|
parsedTrace: Trace.TraceModel.ParsedTrace, insightSet: Trace.Insights.Types.InsightSet,
|
|
63
63
|
model: Trace.Insights.Types.InsightModel, insightName: string,
|
|
64
|
-
options: Partial<
|
|
65
|
-
BaseInsightComponent<Trace.Insights.Types.InsightModel>,
|
|
66
|
-
|
|
64
|
+
options: Partial<
|
|
65
|
+
Pick<BaseInsightComponent<Trace.Insights.Types.InsightModel>, 'selected'|'agentFocus'|'fieldMetrics'>>):
|
|
66
|
+
InsightWidgetElement {
|
|
67
67
|
let widgetElement = this.#insightWidgetCache.get(model);
|
|
68
68
|
if (!widgetElement) {
|
|
69
69
|
widgetElement = document.createElement('devtools-widget') as InsightWidgetElement;
|
|
@@ -85,7 +85,6 @@ export class InsightRenderer {
|
|
|
85
85
|
insightSetKey: insightSet.id,
|
|
86
86
|
agentFocus: options.agentFocus ?? null,
|
|
87
87
|
fieldMetrics: options.fieldMetrics ?? null,
|
|
88
|
-
isAIAssistanceContext: options.isAIAssistanceContext ?? false,
|
|
89
88
|
});
|
|
90
89
|
|
|
91
90
|
return widgetElement;
|
|
@@ -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:
|
|
4
|
+
Revision: 1eaa7f85927d5066cf8a8c7dfc076e8b2b3665d6
|
|
5
5
|
Update Mechanism: Manual (https://crbug.com/428069060)
|
|
6
6
|
License: BSD-3-Clause
|
|
7
7
|
License File: LICENSE
|