Skip to content

Commit 03f1fbd

Browse files
Adriana IxbaDevtools-frontend LUCI CQ
authored andcommitted
[RPP] Include first party and extension badge for 3p table
https://screenshot.googleplex.com/9gkRsbanfZgLwz6 Bug:383567961 Change-Id: Ie31220369d88329765c9fee4d62c34a748088862 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6160474 Reviewed-by: Jack Franklin <[email protected]> Commit-Queue: Adriana Ixba <[email protected]>
1 parent eea8bc9 commit 03f1fbd

File tree

3 files changed

+59
-1
lines changed

3 files changed

+59
-1
lines changed

front_end/panels/timeline/ThirdPartyTreeView.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ export class ThirdPartyTreeViewWidget extends TimelineTreeView.TimelineTreeView
9797
{
9898
id: 'site',
9999
title: i18nString(UIStrings.firstOrThirdPartyName),
100-
width: '80px',
100+
width: '100px',
101101
fixedWidth: true,
102102
sortable: true,
103103
},
@@ -197,6 +197,24 @@ export class ThirdPartyTreeViewWidget extends TimelineTreeView.TimelineTreeView
197197
}
198198
return {transferSize: summary.transferSize, mainThreadTime: summary.mainThreadTime};
199199
}
200+
201+
nodeIsFirstParty(node: Trace.Extras.TraceTree.Node): boolean {
202+
const mapper = this.entityMapper();
203+
if (!mapper) {
204+
return false;
205+
}
206+
const firstParty = mapper.firstPartyEntity();
207+
return firstParty === mapper.entityForEvent(node.event);
208+
}
209+
210+
nodeIsExtension(node: Trace.Extras.TraceTree.Node): boolean {
211+
const mapper = this.entityMapper();
212+
if (!mapper) {
213+
return false;
214+
}
215+
const entity = mapper.entityForEvent(node.event);
216+
return Boolean(entity) && entity?.category === 'Chrome Extension';
217+
}
200218
}
201219

202220
export class ThirdPartyTreeView extends UI.Widget.WidgetElement<UI.Widget.Widget> {

front_end/panels/timeline/TimelineTreeView.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,23 @@ export class GridNode extends DataGrid.SortableDataGrid.SortableDataGridNode<Gri
698698
if (info.icon) {
699699
iconContainer.insertBefore(info.icon, icon);
700700
}
701+
702+
// Include badges with the name, if relevant.
703+
if (columnId === 'site' && (this.treeView as ThirdPartyTreeViewWidget)) {
704+
const thirdPartyTree = (this.treeView as ThirdPartyTreeViewWidget);
705+
let badgeText = '';
706+
707+
if (thirdPartyTree.nodeIsFirstParty(this.profileNode)) {
708+
badgeText = '1st party';
709+
} else if (thirdPartyTree.nodeIsExtension(this.profileNode)) {
710+
badgeText = 'Extension';
711+
}
712+
713+
if (badgeText) {
714+
const badge = container.createChild('div', 'entity-badge');
715+
badge.createChild('div', 'entity-badge-name').textContent = badgeText;
716+
}
717+
}
701718
} else if (event) {
702719
name.textContent = TimelineUIUtils.eventTitle(event);
703720
const parsedTrace = this.treeView.parsedTrace();

front_end/panels/timeline/components/timelineSummary.css

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,26 @@
9696
padding: var(--sys-size-4) var(--sys-size-8) var(--sys-size-4);
9797
gap: var(--sys-size-5);
9898
}
99+
100+
.name-container {
101+
display: flex;
102+
align-items: center;
103+
}
104+
105+
.entity-badge {
106+
margin-left: var(--sys-size-4);
107+
}
108+
109+
.entity-badge-name {
110+
font-weight: var(--ref-typeface-weight-bold);
111+
padding-left: var(--sys-size-3);
112+
padding-right: var(--sys-size-3);
113+
background-color: var(--sys-color-tonal-container);
114+
border-radius: var(--sys-shape-corner-extra-small);
115+
}
116+
117+
.activity-name {
118+
text-overflow: ellipsis;
119+
overflow: inherit;
120+
max-width: 60%;
121+
}

0 commit comments

Comments
 (0)