chrome-devtools-frontend 1.0.1019968 → 1.0.1020516
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/core/i18n/locales/en-US.json +0 -3
- package/front_end/core/i18n/locales/en-XL.json +0 -3
- package/front_end/panels/elements/ComputedStyleWidget.ts +2 -0
- package/front_end/panels/elements/ElementsTreeOutline.ts +7 -41
- package/front_end/panels/elements/TopLayerContainer.ts +1 -9
- package/front_end/panels/elements/components/AdornerManager.ts +0 -7
- package/front_end/panels/elements/computedStyleSidebarPane.css +4 -0
- package/front_end/panels/elements/elementsTreeOutline.css +0 -4
- package/front_end/panels/lighthouse/LighthousePanel.ts +2 -0
- package/front_end/panels/lighthouse/LighthouseStartView.ts +1 -0
- package/front_end/panels/network/RequestHeadersView.ts +1 -36
- package/front_end/panels/network/requestHeadersTree.css +1 -9
- package/front_end/panels/sources/CSSPlugin.ts +2 -2
- package/front_end/panels/sources/DebuggerPlugin.ts +12 -12
- package/package.json +1 -1
@@ -7511,9 +7511,6 @@
|
|
7511
7511
|
"panels/network/RequestHeadersView.ts | provisionalHeadersAreShownS": {
|
7512
7512
|
"message": "Provisional headers are shown. Disable cache to see full headers."
|
7513
7513
|
},
|
7514
|
-
"panels/network/RequestHeadersView.ts | recordedAttribution": {
|
7515
|
-
"message": "Recorded attribution with trigger-data: {PH1}"
|
7516
|
-
},
|
7517
7514
|
"panels/network/RequestHeadersView.ts | referrerPolicy": {
|
7518
7515
|
"message": "Referrer Policy"
|
7519
7516
|
},
|
@@ -7511,9 +7511,6 @@
|
|
7511
7511
|
"panels/network/RequestHeadersView.ts | provisionalHeadersAreShownS": {
|
7512
7512
|
"message": "P̂ŕôv́îśîón̂ál̂ h́êád̂ér̂ś âŕê śĥóŵń. D̂íŝáb̂ĺê ćâćĥé t̂ó ŝéê f́ûĺl̂ h́êád̂ér̂ś."
|
7513
7513
|
},
|
7514
|
-
"panels/network/RequestHeadersView.ts | recordedAttribution": {
|
7515
|
-
"message": "R̂éĉór̂d́êd́ ât́t̂ŕîb́ût́îón̂ ẃît́ĥ trigger-data: {PH1}"
|
7516
|
-
},
|
7517
7514
|
"panels/network/RequestHeadersView.ts | referrerPolicy": {
|
7518
7515
|
"message": "R̂éf̂ér̂ŕêŕ P̂ól̂íĉý"
|
7519
7516
|
},
|
@@ -206,6 +206,8 @@ export class ComputedStyleWidget extends UI.ThrottledWidget.ThrottledWidget {
|
|
206
206
|
constructor() {
|
207
207
|
super(true);
|
208
208
|
|
209
|
+
this.contentElement.classList.add('styles-sidebar-computed-style-widget');
|
210
|
+
|
209
211
|
this.computedStyleModel = new ComputedStyleModel();
|
210
212
|
this.computedStyleModel.addEventListener(Events.ComputedStyleChanged, this.update, this);
|
211
213
|
|
@@ -35,12 +35,10 @@
|
|
35
35
|
import * as Common from '../../core/common/common.js';
|
36
36
|
import * as i18n from '../../core/i18n/i18n.js';
|
37
37
|
import * as SDK from '../../core/sdk/sdk.js';
|
38
|
-
import * as Adorners from '../../ui/components/adorners/adorners.js';
|
39
38
|
import * as CodeHighlighter from '../../ui/components/code_highlighter/code_highlighter.js';
|
40
|
-
import * as IconButton from '../../ui/components/icon_button/icon_button.js';
|
41
39
|
import * as UI from '../../ui/legacy/legacy.js';
|
42
40
|
|
43
|
-
import
|
41
|
+
import {linkifyDeferredNodeReference} from './DOMLinkifier.js';
|
44
42
|
import {ElementsPanel} from './ElementsPanel.js';
|
45
43
|
import {ElementsTreeElement, InitialChildrenLimit} from './ElementsTreeElement.js';
|
46
44
|
import elementsTreeOutlineStyles from './elementsTreeOutline.css.js';
|
@@ -1631,45 +1629,13 @@ export class ShortcutTreeElement extends UI.TreeOutline.TreeElement {
|
|
1631
1629
|
text = '<' + text + '>';
|
1632
1630
|
}
|
1633
1631
|
title.textContent = '\u21AA ' + text;
|
1632
|
+
|
1633
|
+
const link = (linkifyDeferredNodeReference(nodeShortcut.deferredNode) as Element);
|
1634
|
+
UI.UIUtils.createTextChild(this.listItemElement, ' ');
|
1635
|
+
link.classList.add('elements-tree-shortcut-link');
|
1636
|
+
link.textContent = i18nString(UIStrings.reveal);
|
1637
|
+
this.listItemElement.appendChild(link);
|
1634
1638
|
this.nodeShortcut = nodeShortcut;
|
1635
|
-
this.addRevealAdorner();
|
1636
|
-
}
|
1637
|
-
|
1638
|
-
addRevealAdorner(): void {
|
1639
|
-
const adorner = new Adorners.Adorner.Adorner();
|
1640
|
-
adorner.classList.add('adorner-reveal');
|
1641
|
-
const config = ElementsComponents.AdornerManager.getRegisteredAdorner(
|
1642
|
-
ElementsComponents.AdornerManager.RegisteredAdorners.REVEAL);
|
1643
|
-
const name = config.name;
|
1644
|
-
const adornerContent = document.createElement('span');
|
1645
|
-
const linkIcon = new IconButton.Icon.Icon();
|
1646
|
-
linkIcon
|
1647
|
-
.data = {iconName: 'ic_show_node_16x16', color: 'var(--color-text-disabled)', width: '12px', height: '12px'};
|
1648
|
-
const slotText = document.createElement('span');
|
1649
|
-
slotText.textContent = name;
|
1650
|
-
adornerContent.append(linkIcon);
|
1651
|
-
adornerContent.append(slotText);
|
1652
|
-
adornerContent.classList.add('adorner-with-icon');
|
1653
|
-
adorner.data = {
|
1654
|
-
name,
|
1655
|
-
content: adornerContent,
|
1656
|
-
};
|
1657
|
-
this.listItemElement.appendChild(adorner);
|
1658
|
-
const onClick = (((): void => {
|
1659
|
-
this.nodeShortcut.deferredNode.resolve(
|
1660
|
-
node => {
|
1661
|
-
void Common.Revealer.reveal(node);
|
1662
|
-
},
|
1663
|
-
);
|
1664
|
-
}) as EventListener);
|
1665
|
-
adorner.addInteraction(onClick, {
|
1666
|
-
isToggle: false,
|
1667
|
-
shouldPropagateOnKeydown: false,
|
1668
|
-
ariaLabelDefault: i18nString(UIStrings.reveal),
|
1669
|
-
ariaLabelActive: i18nString(UIStrings.reveal),
|
1670
|
-
});
|
1671
|
-
adorner.addEventListener('mousedown', e => e.consume(), false);
|
1672
|
-
ElementsPanel.instance().registerAdorner(adorner);
|
1673
1639
|
}
|
1674
1640
|
|
1675
1641
|
get hovered(): boolean {
|
@@ -3,7 +3,6 @@
|
|
3
3
|
// found in the LICENSE file.
|
4
4
|
import * as i18n from '../../core/i18n/i18n.js';
|
5
5
|
import * as SDK from '../../core/sdk/sdk.js';
|
6
|
-
import * as IconButton from '../../ui/components/icon_button/icon_button.js';
|
7
6
|
import * as UI from '../../ui/legacy/legacy.js';
|
8
7
|
|
9
8
|
import * as ElementsComponents from './components/components.js';
|
@@ -80,14 +79,7 @@ export class TopLayerContainer extends UI.TreeOutline.TreeElement {
|
|
80
79
|
const config = ElementsComponents.AdornerManager.getRegisteredAdorner(
|
81
80
|
ElementsComponents.AdornerManager.RegisteredAdorners.TOP_LAYER);
|
82
81
|
const adornerContent = document.createElement('span');
|
83
|
-
adornerContent.
|
84
|
-
const linkIcon = new IconButton.Icon.Icon();
|
85
|
-
linkIcon
|
86
|
-
.data = {iconName: 'ic_show_node_16x16', color: 'var(--color-text-disabled)', width: '12px', height: '12px'};
|
87
|
-
const adornerText = document.createElement('span');
|
88
|
-
adornerText.textContent = ` top-layer (${topLayerElementIndex}) `;
|
89
|
-
adornerContent.append(linkIcon);
|
90
|
-
adornerContent.append(adornerText);
|
82
|
+
adornerContent.textContent = ` top-layer (${topLayerElementIndex}) `;
|
91
83
|
const adorner = element?.adorn(config, adornerContent);
|
92
84
|
if (adorner) {
|
93
85
|
const onClick = (((): void => {
|
@@ -31,7 +31,6 @@ export enum RegisteredAdorners {
|
|
31
31
|
CONTAINER = 'container',
|
32
32
|
SLOT = 'slot',
|
33
33
|
TOP_LAYER = 'top-layer',
|
34
|
-
REVEAL = 'reveal',
|
35
34
|
}
|
36
35
|
|
37
36
|
// This enum-like const object serves as the authoritative registry for all the
|
@@ -80,12 +79,6 @@ export function getRegisteredAdorner(which: RegisteredAdorners): RegisteredAdorn
|
|
80
79
|
category: AdornerCategories.LAYOUT,
|
81
80
|
enabledByDefault: true,
|
82
81
|
};
|
83
|
-
case RegisteredAdorners.REVEAL:
|
84
|
-
return {
|
85
|
-
name: 'reveal',
|
86
|
-
category: AdornerCategories.DEFAULT,
|
87
|
-
enabledByDefault: true,
|
88
|
-
};
|
89
82
|
}
|
90
83
|
}
|
91
84
|
|
@@ -302,6 +302,8 @@ export class LighthousePanel extends UI.Panel.Panel {
|
|
302
302
|
}
|
303
303
|
|
304
304
|
const reportContainer = this.auditResultsElement.createChild('div', 'lh-vars lh-root lh-devtools');
|
305
|
+
// @ts-ignore Expose LHR on DOM for e2e tests
|
306
|
+
reportContainer._lighthouseResultForTesting = lighthouseResult;
|
305
307
|
|
306
308
|
const dom = new LighthouseReport.DOM(this.auditResultsElement.ownerDocument as Document, reportContainer);
|
307
309
|
const renderer = new LighthouseReportRenderer(dom) as LighthouseReport.ReportRenderer;
|
@@ -143,6 +143,7 @@ export class StartView extends UI.Widget.Widget {
|
|
143
143
|
const checkbox = new UI.Toolbar.ToolbarSettingCheckbox(preset.setting, preset.description());
|
144
144
|
const row = formElements.createChild('div', 'vbox lighthouse-launcher-row');
|
145
145
|
row.appendChild(checkbox.element);
|
146
|
+
checkbox.element.setAttribute('data-lh-category', preset.configID);
|
146
147
|
this.checkboxes.push({preset, checkbox});
|
147
148
|
if (mode && !preset.supportedModes.includes(mode)) {
|
148
149
|
checkbox.setEnabled(false);
|
@@ -195,13 +195,6 @@ const UIStrings = {
|
|
195
195
|
*/
|
196
196
|
toUseThisResourceFromADifferentOrigin:
|
197
197
|
'To use this resource from a different origin, the server may relax the cross-origin resource policy response header:',
|
198
|
-
/**
|
199
|
-
* @description Shown in the network panel for network requests that meet special criteria.
|
200
|
-
* 'Attribution' is a term used by the "Attribution Reporting API" and refers to an event, e.g.
|
201
|
-
* buying an item in an online store after an ad was clicked.
|
202
|
-
* @example {foo} PH1
|
203
|
-
*/
|
204
|
-
recordedAttribution: 'Recorded attribution with `trigger-data`: {PH1}',
|
205
198
|
/**
|
206
199
|
*@description Label for a link from the network panel's headers view to the file in which
|
207
200
|
* header overrides are defined in the sources panel.
|
@@ -322,22 +315,7 @@ export class RequestHeadersView extends UI.Widget.VBox {
|
|
322
315
|
private formatHeaderObject(header: BlockedReasonDetailDescriptor): DocumentFragment {
|
323
316
|
const fragment = document.createDocumentFragment();
|
324
317
|
if (header.headerNotSet) {
|
325
|
-
fragment.createChild('div', 'header-badge header-badge-
|
326
|
-
}
|
327
|
-
// Highlight successful Attribution Reporting API redirects. If the request was
|
328
|
-
// not canceled, then something went wrong.
|
329
|
-
if (header.name.toLowerCase() === 'location' && this.request.canceled) {
|
330
|
-
const url = new URL(header.value?.toString() || '', this.request.parsedURL.securityOrigin());
|
331
|
-
const triggerData = getTriggerDataFromAttributionRedirect(url);
|
332
|
-
if (triggerData) {
|
333
|
-
fragment.createChild('div', 'header-badge header-badge-success header-badge-text').textContent =
|
334
|
-
'Attribution Reporting API';
|
335
|
-
header.details = {
|
336
|
-
explanation: (): string => i18nString(UIStrings.recordedAttribution, {PH1: triggerData}),
|
337
|
-
examples: [],
|
338
|
-
link: null,
|
339
|
-
};
|
340
|
-
}
|
318
|
+
fragment.createChild('div', 'header-badge header-badge-text').textContent = 'not-set';
|
341
319
|
}
|
342
320
|
const colon = header.value ? ': ' : '';
|
343
321
|
fragment.createChild('div', 'header-name').textContent = header.name + colon;
|
@@ -817,19 +795,6 @@ export class Category extends UI.TreeOutline.TreeElement {
|
|
817
795
|
}
|
818
796
|
}
|
819
797
|
|
820
|
-
/**
|
821
|
-
* Returns the value for the `trigger-data` search parameter iff the provided
|
822
|
-
* url is a valid attribution redirect as specified by the Attribution
|
823
|
-
* Reporting API.
|
824
|
-
*/
|
825
|
-
function getTriggerDataFromAttributionRedirect(url: URL): string|null {
|
826
|
-
if (url.pathname === '/.well-known/attribution-reporting/trigger-attribution' &&
|
827
|
-
url.searchParams.has('trigger-data')) {
|
828
|
-
return url.searchParams.get('trigger-data');
|
829
|
-
}
|
830
|
-
return null;
|
831
|
-
}
|
832
|
-
|
833
798
|
interface BlockedReasonDetailDescriptor {
|
834
799
|
name: string;
|
835
800
|
value: Object|null;
|
@@ -112,21 +112,13 @@
|
|
112
112
|
.tree-outline .header-badge {
|
113
113
|
display: inline;
|
114
114
|
margin-right: 0.75em;
|
115
|
+
background-color: var(--override-error-background-color);
|
115
116
|
color: var(--override-error-text-color);
|
116
117
|
border-radius: 100vh;
|
117
118
|
padding-left: 6px;
|
118
119
|
padding-right: 6px;
|
119
120
|
}
|
120
121
|
|
121
|
-
.tree-outline .header-badge-error {
|
122
|
-
background-color: var(--override-error-background-color);
|
123
|
-
}
|
124
|
-
|
125
|
-
.tree-outline .header-badge-success {
|
126
|
-
background-color: var(--color-accent-green);
|
127
|
-
text-transform: uppercase;
|
128
|
-
}
|
129
|
-
|
130
122
|
.tree-outline .header-value {
|
131
123
|
display: inline;
|
132
124
|
margin-right: 1em;
|
@@ -121,11 +121,11 @@ function findColorsAndCurves(
|
|
121
121
|
if (content) {
|
122
122
|
const parsedColor = Common.Color.Color.parse(content);
|
123
123
|
if (parsedColor) {
|
124
|
-
onColor(from, parsedColor, content);
|
124
|
+
onColor(node.from, parsedColor, content);
|
125
125
|
} else {
|
126
126
|
const parsedCurve = UI.Geometry.CubicBezier.parse(content);
|
127
127
|
if (parsedCurve) {
|
128
|
-
onCurve(from, parsedCurve, content);
|
128
|
+
onCurve(node.from, parsedCurve, content);
|
129
129
|
}
|
130
130
|
}
|
131
131
|
}
|
@@ -179,7 +179,7 @@ export class DebuggerPlugin extends Plugin {
|
|
179
179
|
private readonly breakpointManager: Bindings.BreakpointManager.BreakpointManager;
|
180
180
|
// Manages pop-overs shown when the debugger is active and the user
|
181
181
|
// hovers over an expression
|
182
|
-
private
|
182
|
+
private popoverHelper: UI.PopoverHelper.PopoverHelper|null = null;
|
183
183
|
private scriptFileForDebuggerModel:
|
184
184
|
Map<SDK.DebuggerModel.DebuggerModel, Bindings.ResourceScriptMapping.ResourceScriptFile>;
|
185
185
|
// The current set of breakpoints for this file. The locations in
|
@@ -214,12 +214,6 @@ export class DebuggerPlugin extends Plugin {
|
|
214
214
|
this.scriptsPanel = SourcesPanel.instance();
|
215
215
|
this.breakpointManager = Bindings.BreakpointManager.BreakpointManager.instance();
|
216
216
|
|
217
|
-
this.popoverHelper =
|
218
|
-
new UI.PopoverHelper.PopoverHelper(this.scriptsPanel.element, this.getPopoverRequest.bind(this));
|
219
|
-
this.popoverHelper.setDisableOnClick(true);
|
220
|
-
this.popoverHelper.setTimeout(250, 250);
|
221
|
-
this.popoverHelper.setHasPadding(true);
|
222
|
-
|
223
217
|
this.breakpointManager.addEventListener(
|
224
218
|
Bindings.BreakpointManager.Events.BreakpointAdded, this.breakpointChange, this);
|
225
219
|
this.breakpointManager.addEventListener(
|
@@ -349,6 +343,12 @@ export class DebuggerPlugin extends Plugin {
|
|
349
343
|
void this.refreshBreakpoints();
|
350
344
|
}
|
351
345
|
void this.callFrameChanged();
|
346
|
+
|
347
|
+
this.popoverHelper?.dispose();
|
348
|
+
this.popoverHelper = new UI.PopoverHelper.PopoverHelper(editor, this.getPopoverRequest.bind(this));
|
349
|
+
this.popoverHelper.setDisableOnClick(true);
|
350
|
+
this.popoverHelper.setTimeout(250, 250);
|
351
|
+
this.popoverHelper.setHasPadding(true);
|
352
352
|
}
|
353
353
|
|
354
354
|
static accepts(uiSourceCode: Workspace.UISourceCode.UISourceCode): boolean {
|
@@ -422,7 +422,7 @@ export class DebuggerPlugin extends Plugin {
|
|
422
422
|
}
|
423
423
|
|
424
424
|
willHide(): void {
|
425
|
-
this.popoverHelper
|
425
|
+
this.popoverHelper?.hidePopover();
|
426
426
|
}
|
427
427
|
|
428
428
|
populateLineGutterContextMenu(contextMenu: UI.ContextMenu.ContextMenu, editorLineNumber: number): void {
|
@@ -739,7 +739,7 @@ export class DebuggerPlugin extends Plugin {
|
|
739
739
|
this.setControlDown(false);
|
740
740
|
}
|
741
741
|
if (event.key === Platform.KeyboardUtilities.ESCAPE_KEY) {
|
742
|
-
if (this.popoverHelper.isPopoverVisible()) {
|
742
|
+
if (this.popoverHelper && this.popoverHelper.isPopoverVisible()) {
|
743
743
|
this.popoverHelper.hidePopover();
|
744
744
|
event.consume();
|
745
745
|
return true;
|
@@ -1000,7 +1000,7 @@ export class DebuggerPlugin extends Plugin {
|
|
1000
1000
|
// Highlight the locations the debugger can continue to (when
|
1001
1001
|
// Control is held)
|
1002
1002
|
private async showContinueToLocations(): Promise<void> {
|
1003
|
-
this.popoverHelper
|
1003
|
+
this.popoverHelper?.hidePopover();
|
1004
1004
|
const executionContext = UI.Context.Context.instance().flavor(SDK.RuntimeModel.ExecutionContext);
|
1005
1005
|
if (!executionContext || !this.editor) {
|
1006
1006
|
return;
|
@@ -1581,8 +1581,8 @@ export class DebuggerPlugin extends Plugin {
|
|
1581
1581
|
}
|
1582
1582
|
this.scriptFileForDebuggerModel.clear();
|
1583
1583
|
|
1584
|
-
this.popoverHelper
|
1585
|
-
this.popoverHelper
|
1584
|
+
this.popoverHelper?.hidePopover();
|
1585
|
+
this.popoverHelper?.dispose();
|
1586
1586
|
|
1587
1587
|
this.breakpointManager.removeEventListener(
|
1588
1588
|
Bindings.BreakpointManager.Events.BreakpointAdded, this.breakpointChange, this);
|
package/package.json
CHANGED