chrome-devtools-frontend 1.0.1660788 → 1.0.1662289
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/.agents/skills/evaluate-ai-css-completion/SKILL.md +143 -0
- package/.agents/skills/evaluate-ai-css-completion/scripts/evaluate.js +104 -0
- package/.agents/skills/migrate-chromium-test/SKILL.md +7 -2
- package/.agents/skills/ui-eng-vision-local-lit-renderer/SKILL.md +7 -1
- package/docs/ui_engineering.md +75 -42
- package/eslint.config.mjs +7 -0
- package/extension-api/ExtensionAPI.d.ts +88 -0
- package/front_end/core/common/SettingRegistration.ts +0 -5
- package/front_end/core/host/InspectorFrontendHost.ts +1 -0
- package/front_end/core/host/InspectorFrontendHostStub.ts +2 -0
- package/front_end/core/platform/ArrayUtilities.ts +10 -0
- package/front_end/core/platform/StringUtilities.ts +20 -4
- package/front_end/core/sdk/CPUThrottlingManager.ts +2 -0
- package/front_end/core/sdk/DOMDebuggerModel.ts +2 -0
- package/front_end/core/sdk/DOMModel.ts +1 -0
- package/front_end/core/sdk/DebuggerModel.ts +4 -4
- package/front_end/core/sdk/EventBreakpointsModel.ts +2 -0
- package/front_end/core/sdk/FrameManager.ts +1 -0
- package/front_end/core/sdk/IsolateManager.ts +1 -0
- package/front_end/core/sdk/NetworkManager.ts +2 -0
- package/front_end/core/sdk/NetworkRequest.ts +1 -0
- package/front_end/core/sdk/PageResourceLoader.ts +2 -0
- package/front_end/core/sdk/SourceMap.ts +5 -5
- package/front_end/core/sdk/SourceMapManager.ts +3 -2
- package/front_end/core/sdk/TargetManager.ts +4 -0
- package/front_end/entrypoints/main/MainImpl.ts +2 -1
- package/front_end/foundation/README.md +86 -0
- package/front_end/generated/InspectorBackendCommands.ts +4 -5
- package/front_end/generated/protocol.ts +20 -38
- package/front_end/models/bindings/CompilerScriptMapping.ts +5 -5
- package/front_end/models/bindings/ContentProviderBasedProject.ts +2 -3
- package/front_end/models/bindings/DebuggerLanguagePlugins.ts +3 -3
- package/front_end/models/bindings/DefaultScriptMapping.ts +3 -3
- package/front_end/models/bindings/ResourceMapping.ts +3 -3
- package/front_end/models/bindings/ResourceScriptMapping.ts +2 -2
- package/front_end/models/bindings/SASSSourceMapping.ts +3 -3
- package/front_end/models/bindings/TempFile.ts +8 -3
- package/front_end/models/extensions/ExtensionAPI.ts +110 -46
- package/front_end/models/extensions/RecorderExtensionEndpoint.ts +7 -5
- package/front_end/models/formatter/ScriptFormatter.ts +8 -11
- package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +14 -5
- package/front_end/models/issues_manager/CheckFormsIssuesTrigger.ts +8 -9
- package/front_end/models/issues_manager/CookieIssue.ts +21 -9
- package/front_end/models/issues_manager/Issue.ts +3 -4
- package/front_end/models/issues_manager/IssueAggregator.ts +0 -9
- package/front_end/models/issues_manager/IssueResolver.ts +2 -2
- package/front_end/models/issues_manager/IssuesManager.ts +136 -137
- package/front_end/models/issues_manager/RelatedIssue.ts +10 -8
- package/front_end/models/issues_manager/issues_manager.ts +0 -2
- package/front_end/models/javascript_metadata/NativeFunctions.js +1 -1
- package/front_end/models/logs/RequestResolver.ts +2 -2
- package/front_end/models/source_map_scopes/FunctionCodeResolver.ts +12 -9
- package/front_end/models/trace/handlers/FramesHandler.ts +4 -7
- package/front_end/models/trace/handlers/ModelHandlers.ts +0 -1
- package/front_end/models/trace/handlers/RendererHandler.ts +2 -15
- package/front_end/models/trace/handlers/Threads.ts +4 -11
- package/front_end/models/trace/insights/DOMSize.ts +1 -1
- package/front_end/models/workspace_diff/WorkspaceDiff.ts +10 -4
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +2 -1
- package/front_end/panels/application/ApplicationPanelSidebar.ts +0 -44
- package/front_end/panels/application/CookieItemsView.ts +1 -1
- package/front_end/panels/application/ServiceWorkersView.ts +494 -411
- package/front_end/panels/application/WebMCPView.ts +38 -43
- package/front_end/panels/application/application.ts +0 -6
- package/front_end/panels/application/components/AdsView.ts +201 -30
- package/front_end/panels/application/components/adsView.css +25 -0
- package/front_end/panels/application/components/components.ts +0 -2
- package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +1 -1
- package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +2 -2
- package/front_end/panels/application/serviceWorkersView.css +40 -4
- package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +147 -123
- package/front_end/panels/common/ExtensionServer.ts +3 -3
- package/front_end/panels/console/ConsoleView.ts +3 -2
- package/front_end/panels/console/PromptBuilder.ts +2 -1
- package/front_end/panels/emulation/DeviceModeView.ts +164 -113
- package/front_end/panels/issues/AffectedResourcesView.ts +1 -1
- package/front_end/panels/issues/IssueView.ts +0 -2
- package/front_end/panels/issues/IssuesPane.ts +1 -8
- package/front_end/panels/js_timeline/js_timeline-meta.ts +3 -2
- package/front_end/panels/lighthouse/LighthouseProtocolService.ts +53 -12
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorController.ts +3 -3
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorPane.ts +5 -5
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +4 -4
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +2 -2
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +6 -6
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +3 -3
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +8 -9
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplayUtils.ts +2 -2
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +1 -1
- package/front_end/panels/linear_memory_inspector/linear_memory_inspector-meta.ts +2 -2
- package/front_end/panels/network/RequestPayloadView.ts +92 -52
- package/front_end/panels/network/RequestTimingView.ts +95 -127
- package/front_end/panels/network/components/ResponseHeaderSection.ts +5 -3
- package/front_end/panels/profiler/HeapSnapshotView.ts +3 -3
- package/front_end/panels/profiler/WritableProfileHeader.ts +2 -2
- package/front_end/panels/recorder/{components/ControlButton.ts → ControlButton.ts} +9 -10
- package/front_end/panels/recorder/{components/CreateRecordingView.ts → CreateRecordingView.ts} +48 -47
- package/front_end/panels/recorder/{components/ExtensionView.ts → ExtensionView.ts} +8 -8
- package/front_end/panels/recorder/RecorderController.ts +302 -127
- package/front_end/panels/recorder/RecorderPanel.ts +1 -1
- package/front_end/panels/recorder/{components/RecordingListView.ts → RecordingListView.ts} +19 -20
- package/front_end/panels/recorder/{components/RecordingView.ts → RecordingView.ts} +88 -88
- package/front_end/panels/recorder/{components/ReplaySection.ts → ReplaySection.ts} +11 -11
- package/front_end/panels/recorder/{components/SelectorPicker.ts → SelectorPicker.ts} +13 -13
- package/front_end/panels/recorder/{components/StepEditor.ts → StepEditor.ts} +15 -15
- package/front_end/panels/recorder/{components/StepView.ts → StepView.ts} +10 -10
- package/front_end/panels/recorder/{components/TimelineSection.ts → TimelineSection.ts} +2 -2
- package/front_end/panels/recorder/recorder.ts +23 -1
- package/front_end/panels/recorder/util/util.ts +113 -0
- package/front_end/panels/sources/SourcesView.ts +0 -17
- package/front_end/panels/sources/TabbedEditorContainer.ts +1 -1
- package/front_end/panels/sources/UISourceCodeFrame.ts +42 -0
- package/front_end/panels/sources/sources.ts +0 -2
- package/front_end/panels/timeline/CompatibilityTracksAppender.ts +0 -17
- package/front_end/panels/timeline/IsolateSelector.ts +10 -8
- package/front_end/panels/timeline/ThreadAppender.ts +0 -106
- package/front_end/panels/timeline/TimelinePanel.ts +18 -7
- package/front_end/panels/timeline/TimelineUIUtils.ts +144 -129
- package/front_end/panels/timeline/timeline-meta.ts +3 -2
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/ui/components/report_view/ReportView.ts +11 -5
- package/front_end/ui/components/report_view/report.css +4 -1
- package/front_end/ui/legacy/TextPrompt.ts +49 -1
- package/front_end/ui/legacy/Treeoutline.ts +3 -0
- package/front_end/ui/legacy/UIUtils.ts +11 -1
- package/front_end/ui/legacy/Widget.ts +14 -15
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +2 -2
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +11 -7
- package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +2 -1
- package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +10 -1
- package/front_end/ui/legacy/textPrompt.css +10 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
- package/package.json +1 -1
- package/front_end/models/issues_manager/AttributionReportingIssue.ts +0 -247
- package/front_end/models/issues_manager/descriptions/arInsecureContext.md +0 -7
- package/front_end/models/issues_manager/descriptions/arInvalidInfoHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arInvalidRegisterOsSourceHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arInvalidRegisterOsTriggerHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arInvalidRegisterSourceHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arInvalidRegisterTriggerHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arNavigationRegistrationUniqueScopeAlreadySet.md +0 -5
- package/front_end/models/issues_manager/descriptions/arNavigationRegistrationWithoutTransientUserActivation.md +0 -6
- package/front_end/models/issues_manager/descriptions/arNoRegisterOsSourceHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arNoRegisterOsTriggerHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arNoRegisterSourceHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arNoRegisterTriggerHeader.md +0 -5
- package/front_end/models/issues_manager/descriptions/arNoWebOrOsSupport.md +0 -4
- package/front_end/models/issues_manager/descriptions/arOsSourceIgnored.md +0 -18
- package/front_end/models/issues_manager/descriptions/arOsTriggerIgnored.md +0 -19
- package/front_end/models/issues_manager/descriptions/arPermissionPolicyDisabled.md +0 -8
- package/front_end/models/issues_manager/descriptions/arSourceAndTriggerHeaders.md +0 -9
- package/front_end/models/issues_manager/descriptions/arSourceIgnored.md +0 -13
- package/front_end/models/issues_manager/descriptions/arTriggerIgnored.md +0 -12
- package/front_end/models/issues_manager/descriptions/arUntrustworthyReportingOrigin.md +0 -10
- package/front_end/models/issues_manager/descriptions/arWebAndOsHeaders.md +0 -11
- package/front_end/models/trace/handlers/AuctionWorkletsHandler.ts +0 -183
- package/front_end/panels/application/InterestGroupStorageModel.ts +0 -81
- package/front_end/panels/application/InterestGroupStorageView.ts +0 -151
- package/front_end/panels/application/InterestGroupTreeElement.ts +0 -65
- package/front_end/panels/application/components/InterestGroupAccessGrid.ts +0 -135
- package/front_end/panels/application/components/interestGroupAccessGrid.css +0 -27
- package/front_end/panels/application/interestGroupStorageView.css +0 -9
- package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +0 -182
- package/front_end/panels/recorder/components/components.ts +0 -25
- package/front_end/panels/recorder/components/util.ts +0 -116
- package/front_end/panels/sources/InplaceFormatterEditorAction.ts +0 -149
- /package/front_end/panels/recorder/{components/controlButton.css → controlButton.css} +0 -0
- /package/front_end/panels/recorder/{components/createRecordingView.css → createRecordingView.css} +0 -0
- /package/front_end/panels/recorder/{components/extensionView.css → extensionView.css} +0 -0
- /package/front_end/panels/recorder/{components/recordingListView.css → recordingListView.css} +0 -0
- /package/front_end/panels/recorder/{components/recordingView.css → recordingView.css} +0 -0
- /package/front_end/panels/recorder/{components/replaySection.css → replaySection.css} +0 -0
- /package/front_end/panels/recorder/{components/selectorPicker.css → selectorPicker.css} +0 -0
- /package/front_end/panels/recorder/{components/startView.css → startView.css} +0 -0
- /package/front_end/panels/recorder/{components/stepEditor.css → stepEditor.css} +0 -0
- /package/front_end/panels/recorder/{components/stepView.css → stepView.css} +0 -0
- /package/front_end/panels/recorder/{components/timelineSection.css → timelineSection.css} +0 -0
|
@@ -4,14 +4,18 @@
|
|
|
4
4
|
/* eslint-disable @devtools/no-imperative-dom-api */
|
|
5
5
|
|
|
6
6
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
7
|
+
import * as Platform from '../../core/platform/platform.js';
|
|
7
8
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
8
9
|
import * as Protocol from '../../generated/protocol.js';
|
|
9
10
|
import * as Buttons from '../../ui/components/buttons/buttons.js';
|
|
10
11
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
12
|
+
import {Directives, html, render} from '../../ui/lit/lit.js';
|
|
11
13
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
12
14
|
|
|
13
15
|
import xhrBreakpointsSidebarPaneStyles from './xhrBreakpointsSidebarPane.css.js';
|
|
14
16
|
|
|
17
|
+
const {classMap, ifDefined, ref} = Directives;
|
|
18
|
+
|
|
15
19
|
const UIStrings = {
|
|
16
20
|
/**
|
|
17
21
|
* @description Title of the 'XHR/fetch Breakpoints' tool in the bottom sidebar of the Sources tool
|
|
@@ -63,8 +67,6 @@ const str_ = i18n.i18n.registerUIStrings('panels/browser_debugger/XHRBreakpoints
|
|
|
63
67
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
64
68
|
const containerToBreakpointEntry = new WeakMap<Element, HTMLElement>();
|
|
65
69
|
|
|
66
|
-
const breakpointEntryToCheckbox = new WeakMap<Element, UI.UIUtils.CheckboxLabel>();
|
|
67
|
-
|
|
68
70
|
let xhrBreakpointsSidebarPaneInstance: XHRBreakpointsSidebarPane|null = null;
|
|
69
71
|
|
|
70
72
|
export class XHRBreakpointsSidebarPane extends UI.Widget.VBox implements UI.ContextFlavorListener.ContextFlavorListener,
|
|
@@ -75,9 +77,8 @@ export class XHRBreakpointsSidebarPane extends UI.Widget.VBox implements UI.Cont
|
|
|
75
77
|
readonly #emptyElement: HTMLElement;
|
|
76
78
|
readonly #breakpointElements: Map<string, Element>;
|
|
77
79
|
readonly #addButton: UI.Toolbar.ToolbarButton;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
#hitBreakpoint?: any;
|
|
80
|
+
#hitBreakpoint?: string;
|
|
81
|
+
#editingBreakpoint: string|null = null;
|
|
81
82
|
|
|
82
83
|
private constructor() {
|
|
83
84
|
super({
|
|
@@ -138,14 +139,11 @@ export class XHRBreakpointsSidebarPane extends UI.Widget.VBox implements UI.Cont
|
|
|
138
139
|
|
|
139
140
|
const inputElementContainer = document.createElement('p');
|
|
140
141
|
inputElementContainer.classList.add('breakpoint-condition');
|
|
141
|
-
inputElementContainer.textContent = i18nString(UIStrings.breakWhenUrlContains);
|
|
142
142
|
inputElementContainer.setAttribute('jslog', `${VisualLogging.value('condition').track({change: true})}`);
|
|
143
|
-
|
|
144
|
-
const inputElement = inputElementContainer.createChild('span', 'breakpoint-condition-input');
|
|
145
|
-
UI.ARIAUtils.setLabel(inputElement, i18nString(UIStrings.urlBreakpoint));
|
|
146
143
|
this.addListElement(inputElementContainer, this.#list.element.firstChild as Element | null);
|
|
147
144
|
|
|
148
|
-
const commit = (
|
|
145
|
+
const commit = (e: UI.TextPrompt.TextPromptElement.CommitEvent): void => {
|
|
146
|
+
const newText = e.detail;
|
|
149
147
|
this.removeListElement(inputElementContainer);
|
|
150
148
|
SDK.DOMDebuggerModel.DOMDebuggerManager.instance().addXHRBreakpoint(newText, true);
|
|
151
149
|
this.setBreakpoint(newText);
|
|
@@ -157,8 +155,24 @@ export class XHRBreakpointsSidebarPane extends UI.Widget.VBox implements UI.Cont
|
|
|
157
155
|
this.update();
|
|
158
156
|
};
|
|
159
157
|
|
|
160
|
-
|
|
161
|
-
|
|
158
|
+
// clang-format off
|
|
159
|
+
/* eslint-disable-next-line @devtools/no-lit-render-outside-of-view */
|
|
160
|
+
render(
|
|
161
|
+
html`
|
|
162
|
+
${i18nString(UIStrings.breakWhenUrlContains)}
|
|
163
|
+
<devtools-prompt
|
|
164
|
+
value=""
|
|
165
|
+
render-as-block
|
|
166
|
+
?editing=${true}
|
|
167
|
+
aria-label=${i18nString(UIStrings.urlBreakpoint)}
|
|
168
|
+
class="breakpoint-condition-input"
|
|
169
|
+
@commit=${commit}
|
|
170
|
+
@cancel=${cancel}>
|
|
171
|
+
</devtools-prompt>
|
|
172
|
+
`,
|
|
173
|
+
inputElementContainer
|
|
174
|
+
);
|
|
175
|
+
// clang-format on
|
|
162
176
|
}
|
|
163
177
|
|
|
164
178
|
heightForItem(_item: string): number {
|
|
@@ -173,15 +187,7 @@ export class XHRBreakpointsSidebarPane extends UI.Widget.VBox implements UI.Cont
|
|
|
173
187
|
if (this.#breakpoints.indexOf(breakKeyword) !== -1) {
|
|
174
188
|
this.#list.refreshItem(breakKeyword);
|
|
175
189
|
} else {
|
|
176
|
-
this.#breakpoints.insertWithComparator(breakKeyword,
|
|
177
|
-
if (a > b) {
|
|
178
|
-
return 1;
|
|
179
|
-
}
|
|
180
|
-
if (a < b) {
|
|
181
|
-
return -1;
|
|
182
|
-
}
|
|
183
|
-
return 0;
|
|
184
|
-
});
|
|
190
|
+
this.#breakpoints.insertWithComparator(breakKeyword, Platform.ArrayUtilities.DEFAULT_COMPARATOR);
|
|
185
191
|
}
|
|
186
192
|
if (!this.#list.selectedItem() || !this.hasFocus()) {
|
|
187
193
|
this.#list.selectItem(this.#breakpoints.at(0));
|
|
@@ -191,54 +197,95 @@ export class XHRBreakpointsSidebarPane extends UI.Widget.VBox implements UI.Cont
|
|
|
191
197
|
createElementForItem(item: string): Element {
|
|
192
198
|
const listItemElement = document.createElement('div');
|
|
193
199
|
UI.ARIAUtils.markAsListitem(listItemElement);
|
|
194
|
-
const element = listItemElement.createChild('div', 'breakpoint-entry');
|
|
195
|
-
containerToBreakpointEntry.set(listItemElement, element);
|
|
196
200
|
const enabled = SDK.DOMDebuggerModel.DOMDebuggerManager.instance().xhrBreakpoints().get(item) || false;
|
|
197
|
-
UI.ARIAUtils.markAsCheckbox(element);
|
|
198
|
-
UI.ARIAUtils.setChecked(element, enabled);
|
|
199
|
-
element.addEventListener('contextmenu', this.contextMenu.bind(this, item), true);
|
|
200
|
-
|
|
201
201
|
const title = item ? i18nString(UIStrings.urlContainsS, {PH1: item}) : i18nString(UIStrings.anyXhrOrFetch);
|
|
202
|
-
|
|
203
|
-
UI.
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
checkbox.addEventListener('click', this.checkboxClicked.bind(this, item, enabled), false);
|
|
207
|
-
element.addEventListener('click', event => {
|
|
208
|
-
if (event.target === element) {
|
|
209
|
-
this.checkboxClicked(item, enabled);
|
|
210
|
-
}
|
|
211
|
-
}, false);
|
|
212
|
-
breakpointEntryToCheckbox.set(element, checkbox);
|
|
213
|
-
checkbox.tabIndex = -1;
|
|
214
|
-
element.tabIndex = -1;
|
|
215
|
-
if (item === this.#list.selectedItem()) {
|
|
216
|
-
element.tabIndex = 0;
|
|
217
|
-
this.setDefaultFocusedElement(element);
|
|
218
|
-
}
|
|
219
|
-
element.addEventListener('keydown', event => {
|
|
220
|
-
let handled = false;
|
|
221
|
-
if (event.key === ' ') {
|
|
222
|
-
this.checkboxClicked(item, enabled);
|
|
223
|
-
handled = true;
|
|
224
|
-
} else if (event.key === 'Enter') {
|
|
225
|
-
this.labelClicked(item);
|
|
226
|
-
handled = true;
|
|
202
|
+
|
|
203
|
+
const commit = (e: UI.TextPrompt.TextPromptElement.CommitEvent): void => {
|
|
204
|
+
if (this.#editingBreakpoint !== item) {
|
|
205
|
+
return;
|
|
227
206
|
}
|
|
207
|
+
const newText = e.detail;
|
|
208
|
+
this.#editingBreakpoint = null;
|
|
209
|
+
this.#removeBreakpoint(item);
|
|
210
|
+
this.#addBreakpoint(newText, enabled);
|
|
211
|
+
this.#list.selectItem(newText);
|
|
212
|
+
this.focus();
|
|
213
|
+
};
|
|
228
214
|
|
|
229
|
-
|
|
230
|
-
|
|
215
|
+
const cancel = (): void => {
|
|
216
|
+
if (this.#editingBreakpoint !== item) {
|
|
217
|
+
return;
|
|
231
218
|
}
|
|
232
|
-
|
|
219
|
+
this.#editingBreakpoint = null;
|
|
220
|
+
this.#list.refreshItem(item);
|
|
221
|
+
this.focus();
|
|
222
|
+
};
|
|
233
223
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
224
|
+
// clang-format off
|
|
225
|
+
/* eslint-disable-next-line @devtools/no-lit-render-outside-of-view */
|
|
226
|
+
render(
|
|
227
|
+
html`
|
|
228
|
+
<div class=${classMap({'breakpoint-entry': true, 'breakpoint-hit': item === this.#hitBreakpoint})}
|
|
229
|
+
role="checkbox"
|
|
230
|
+
aria-checked=${enabled ? 'true' : 'false'}
|
|
231
|
+
aria-label=${title}
|
|
232
|
+
aria-description=${ifDefined(item === this.#hitBreakpoint ? i18nString(UIStrings.breakpointHit) : undefined)}
|
|
233
|
+
tabindex=${item === this.#list.selectedItem() ? '0' : '-1'}
|
|
234
|
+
?autofocus=${item === this.#list.selectedItem()}
|
|
235
|
+
${ref((el?: Element) => {
|
|
236
|
+
if (el instanceof HTMLElement) {
|
|
237
|
+
containerToBreakpointEntry.set(listItemElement, el);
|
|
238
|
+
this.#breakpointElements.set(item, listItemElement);
|
|
239
|
+
}
|
|
240
|
+
})}
|
|
241
|
+
@click=${(event: Event) => {
|
|
242
|
+
if (event.target === event.currentTarget) {
|
|
243
|
+
this.checkboxClicked(item, enabled);
|
|
244
|
+
}
|
|
245
|
+
}}
|
|
246
|
+
@contextmenu=${(e: Event) => this.contextMenu(item, e)}
|
|
247
|
+
@keydown=${(event: KeyboardEvent) => {
|
|
248
|
+
let handled = false;
|
|
249
|
+
if (event.key === ' ') {
|
|
250
|
+
this.checkboxClicked(item, enabled);
|
|
251
|
+
handled = true;
|
|
252
|
+
} else if (event.key === 'Enter') {
|
|
253
|
+
this.#startEditing(item);
|
|
254
|
+
handled = true;
|
|
255
|
+
}
|
|
256
|
+
if (handled) {
|
|
257
|
+
event.consume(true);
|
|
258
|
+
}
|
|
259
|
+
}}>
|
|
260
|
+
<devtools-checkbox
|
|
261
|
+
class="cursor-auto"
|
|
262
|
+
aria-hidden="true"
|
|
263
|
+
.checked=${enabled}
|
|
264
|
+
.small=${true}
|
|
265
|
+
.title=${title}
|
|
266
|
+
@click=${(e: Event) => e.stopPropagation()}
|
|
267
|
+
@change=${() => this.checkboxClicked(item, enabled)}
|
|
268
|
+
@dblclick=${() => this.#startEditing(item)}
|
|
269
|
+
tabindex="-1"
|
|
270
|
+
jslog=${VisualLogging.toggle().track({click: true})}>
|
|
271
|
+
<devtools-prompt
|
|
272
|
+
value=${item}
|
|
273
|
+
render-as-block
|
|
274
|
+
?editing=${item === this.#editingBreakpoint}
|
|
275
|
+
aria-label=${title}
|
|
276
|
+
class=${classMap({'breakpoint-condition-input': item === this.#editingBreakpoint})}
|
|
277
|
+
jslog=${VisualLogging.value('condition').track({change: true})}
|
|
278
|
+
@commit=${commit}
|
|
279
|
+
@cancel=${cancel}>
|
|
280
|
+
${title}
|
|
281
|
+
</devtools-prompt>
|
|
282
|
+
</devtools-checkbox>
|
|
283
|
+
</div>
|
|
284
|
+
`,
|
|
285
|
+
listItemElement
|
|
286
|
+
);
|
|
287
|
+
// clang-format on
|
|
238
288
|
|
|
239
|
-
checkbox.classList.add('cursor-auto');
|
|
240
|
-
checkbox.addEventListener('dblclick', this.labelClicked.bind(this, item), false);
|
|
241
|
-
this.#breakpointElements.set(item, listItemElement);
|
|
242
289
|
listItemElement.setAttribute('jslog', `${VisualLogging.item().track({
|
|
243
290
|
click: true,
|
|
244
291
|
dblclick: true,
|
|
@@ -262,9 +309,15 @@ export class XHRBreakpointsSidebarPane extends UI.Widget.VBox implements UI.Cont
|
|
|
262
309
|
if (!breakpointEntryElement) {
|
|
263
310
|
throw new Error('Expected breakpoint entry to be found for an element');
|
|
264
311
|
}
|
|
265
|
-
|
|
312
|
+
const prompt =
|
|
313
|
+
_to === this.#editingBreakpoint ? toElement.querySelector('devtools-prompt') as HTMLElement | null : null;
|
|
314
|
+
this.setDefaultFocusedElement(prompt || breakpointEntryElement);
|
|
266
315
|
breakpointEntryElement.tabIndex = 0;
|
|
267
316
|
if (this.hasFocus()) {
|
|
317
|
+
if (prompt) {
|
|
318
|
+
prompt.focus();
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
268
321
|
breakpointEntryElement.focus();
|
|
269
322
|
}
|
|
270
323
|
}
|
|
@@ -297,84 +350,55 @@ export class XHRBreakpointsSidebarPane extends UI.Widget.VBox implements UI.Cont
|
|
|
297
350
|
}
|
|
298
351
|
}
|
|
299
352
|
|
|
300
|
-
|
|
301
|
-
|
|
353
|
+
#addBreakpoint(url: string, enabled = true): void {
|
|
354
|
+
SDK.DOMDebuggerModel.DOMDebuggerManager.instance().addXHRBreakpoint(url, enabled);
|
|
355
|
+
this.setBreakpoint(url);
|
|
356
|
+
}
|
|
302
357
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
358
|
+
#removeBreakpoint(url: string): void {
|
|
359
|
+
SDK.DOMDebuggerModel.DOMDebuggerManager.instance().removeXHRBreakpoint(url);
|
|
360
|
+
this.removeBreakpoint(url);
|
|
361
|
+
}
|
|
307
362
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
this.removeBreakpoint(url);
|
|
312
|
-
}
|
|
313
|
-
this.update();
|
|
363
|
+
#removeAllBreakpoints(): void {
|
|
364
|
+
for (const url of this.#breakpointElements.keys()) {
|
|
365
|
+
this.#removeBreakpoint(url);
|
|
314
366
|
}
|
|
367
|
+
this.update();
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
#toggleBreakpoint(url: string, checked: boolean): void {
|
|
371
|
+
SDK.DOMDebuggerModel.DOMDebuggerManager.instance().toggleXHRBreakpoint(url, checked);
|
|
372
|
+
this.#list.refreshItem(url);
|
|
373
|
+
this.#list.selectItem(url);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
private contextMenu(breakKeyword: string, event: Event): void {
|
|
377
|
+
const contextMenu = new UI.ContextMenu.ContextMenu(event);
|
|
315
378
|
const removeAllTitle = i18nString(UIStrings.removeAllBreakpoints);
|
|
316
379
|
|
|
317
380
|
contextMenu.defaultSection().appendItem(
|
|
318
381
|
i18nString(UIStrings.addBreakpoint), this.addButtonClicked.bind(this),
|
|
319
382
|
{jslogContext: 'sources.add-xhr-fetch-breakpoint'});
|
|
320
|
-
contextMenu.defaultSection().appendItem(
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
contextMenu.defaultSection().appendItem(
|
|
324
|
-
|
|
383
|
+
contextMenu.defaultSection().appendItem(i18nString(UIStrings.removeBreakpoint),
|
|
384
|
+
this.#removeBreakpoint.bind(this, breakKeyword),
|
|
385
|
+
{jslogContext: 'sources.remove-xhr-fetch-breakpoint'});
|
|
386
|
+
contextMenu.defaultSection().appendItem(removeAllTitle, this.#removeAllBreakpoints.bind(this),
|
|
387
|
+
{jslogContext: 'sources.remove-all-xhr-fetch-breakpoints'});
|
|
325
388
|
void contextMenu.show();
|
|
326
389
|
}
|
|
327
390
|
|
|
328
391
|
private checkboxClicked(breakKeyword: string, checked: boolean): void {
|
|
329
392
|
const hadFocus = this.hasFocus();
|
|
330
|
-
|
|
331
|
-
this.#list.refreshItem(breakKeyword);
|
|
332
|
-
this.#list.selectItem(breakKeyword);
|
|
393
|
+
this.#toggleBreakpoint(breakKeyword, !checked);
|
|
333
394
|
if (hadFocus) {
|
|
334
395
|
this.focus();
|
|
335
396
|
}
|
|
336
397
|
}
|
|
337
398
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
inputElement.classList.add('breakpoint-condition');
|
|
342
|
-
inputElement.textContent = breakKeyword;
|
|
343
|
-
inputElement.setAttribute('jslog', `${VisualLogging.value('condition').track({change: true})}`);
|
|
344
|
-
if (element) {
|
|
345
|
-
this.#list.element.insertBefore(inputElement, element);
|
|
346
|
-
element.classList.add('hidden');
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
const commit = (inputElement: Element, newText: string, _oldText: string|null, element?: Element): void => {
|
|
350
|
-
this.removeListElement(inputElement);
|
|
351
|
-
SDK.DOMDebuggerModel.DOMDebuggerManager.instance().removeXHRBreakpoint(breakKeyword);
|
|
352
|
-
this.removeBreakpoint(breakKeyword);
|
|
353
|
-
let enabled = true;
|
|
354
|
-
if (element) {
|
|
355
|
-
const breakpointEntryElement = containerToBreakpointEntry.get(element);
|
|
356
|
-
const checkboxElement =
|
|
357
|
-
breakpointEntryElement ? breakpointEntryToCheckbox.get(breakpointEntryElement) : undefined;
|
|
358
|
-
if (checkboxElement) {
|
|
359
|
-
enabled = checkboxElement.checked;
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
SDK.DOMDebuggerModel.DOMDebuggerManager.instance().addXHRBreakpoint(newText, enabled);
|
|
363
|
-
this.setBreakpoint(newText);
|
|
364
|
-
this.#list.selectItem(newText);
|
|
365
|
-
this.focus();
|
|
366
|
-
};
|
|
367
|
-
|
|
368
|
-
const cancel = (inputElement: Element, element?: Element): void => {
|
|
369
|
-
this.removeListElement(inputElement);
|
|
370
|
-
if (element) {
|
|
371
|
-
element.classList.remove('hidden');
|
|
372
|
-
}
|
|
373
|
-
this.focus();
|
|
374
|
-
};
|
|
375
|
-
|
|
376
|
-
const config = new UI.InplaceEditor.Config(commit, cancel, element);
|
|
377
|
-
UI.InplaceEditor.InplaceEditor.startEditing(inputElement, config);
|
|
399
|
+
#startEditing(item: string): void {
|
|
400
|
+
this.#editingBreakpoint = item;
|
|
401
|
+
this.#list.refreshItem(item);
|
|
378
402
|
}
|
|
379
403
|
|
|
380
404
|
flavorChanged(_object: Object|null): void {
|
|
@@ -446,9 +446,9 @@ export class ExtensionServer extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
|
446
446
|
}
|
|
447
447
|
const {pluginName, mediaType, port, capabilities} = message;
|
|
448
448
|
const extensionOrigin = this.getExtensionOrigin(_shared_port);
|
|
449
|
-
Extensions.RecorderPluginManager.RecorderPluginManager.instance()
|
|
450
|
-
|
|
451
|
-
|
|
449
|
+
const recorderPluginManager = Extensions.RecorderPluginManager.RecorderPluginManager.instance();
|
|
450
|
+
recorderPluginManager.addPlugin(new Extensions.RecorderExtensionEndpoint.RecorderExtensionEndpoint(
|
|
451
|
+
pluginName, port, capabilities, extensionOrigin, recorderPluginManager, mediaType));
|
|
452
452
|
return this.status.OK();
|
|
453
453
|
}
|
|
454
454
|
|
|
@@ -345,8 +345,9 @@ export class ConsoleView extends UI.Widget.VBox implements
|
|
|
345
345
|
private pendingSidebarMessages: ConsoleViewMessage[] = [];
|
|
346
346
|
private userHasOpenedSidebarAtLeastOnce = false;
|
|
347
347
|
private issueToolbarThrottle: Common.Throttler.Throttler;
|
|
348
|
-
private requestResolver = new Logs.RequestResolver.RequestResolver();
|
|
349
|
-
private issueResolver =
|
|
348
|
+
private requestResolver = new Logs.RequestResolver.RequestResolver(Logs.NetworkLog.NetworkLog.instance());
|
|
349
|
+
private issueResolver =
|
|
350
|
+
new IssuesManager.IssueResolver.IssueResolver(IssuesManager.IssuesManager.IssuesManager.instance());
|
|
350
351
|
#isDetached = false;
|
|
351
352
|
#onIssuesCountUpdateBound = this.#onIssuesCountUpdate.bind(this);
|
|
352
353
|
#collapseAllButton: UI.Toolbar.ToolbarButton;
|
|
@@ -68,8 +68,9 @@ export class PromptBuilder {
|
|
|
68
68
|
const firstNewline = text.indexOf('\n');
|
|
69
69
|
if (text.length > MAX_CODE_SIZE && (firstNewline < 0 || firstNewline > MAX_CODE_SIZE)) {
|
|
70
70
|
// Use formatter
|
|
71
|
+
const settings = runtimeModel.target().targetManager().settings;
|
|
71
72
|
const {formattedContent, formattedMapping} = await Formatter.ScriptFormatter.formatScriptContent(
|
|
72
|
-
mappedLocation?.uiSourceCode.mimeType() ?? 'text/javascript', text);
|
|
73
|
+
settings, mappedLocation?.uiSourceCode.mimeType() ?? 'text/javascript', text);
|
|
73
74
|
const [lineNumber, columnNumber] =
|
|
74
75
|
formattedMapping.originalToFormatted(mappedLocation?.lineNumber ?? 0, mappedLocation?.columnNumber ?? 0);
|
|
75
76
|
return {text: formattedContent, columnNumber, lineNumber};
|