Skip to content

Commit e174355

Browse files
authored
Update Network list to use x-fb-friendly-name header (#221)
1 parent 59c63cb commit e174355

File tree

2 files changed

+73
-2
lines changed

2 files changed

+73
-2
lines changed

front_end/panels/network/NetworkDataGridNode.test.ts

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,4 +506,69 @@ describeWithEnvironment('NetworkLogView', () => {
506506
const backgroundColorOfIcon = iconStyle.backgroundColor.toString();
507507
assert.strictEqual(backgroundColorOfIcon, 'var(--icon-warning)');
508508
});
509+
510+
it('uses x-fb-friendly-name from response headers when present', async () => {
511+
const request = SDK.NetworkRequest.NetworkRequest.create(
512+
'requestId' as Protocol.Network.RequestId, urlString`https://www.example.com/api/v1/users/12345`, urlString``,
513+
null, null, null);
514+
request.statusCode = 200;
515+
request.responseHeaders = [{name: 'x-fb-friendly-name', value: 'GetUserProfile'}];
516+
517+
const networkRequestNode = new Network.NetworkDataGridNode.NetworkRequestNode(
518+
{} as Network.NetworkDataGridNode.NetworkLogViewInterface, request);
519+
const el = document.createElement('div');
520+
networkRequestNode.renderCell(el, 'name');
521+
522+
// The cell should contain the friendly name instead of the default URL name
523+
assert.include(el.textContent, 'GetUserProfile');
524+
});
525+
526+
it('uses x-fb-friendly-name from request headers when not in response', async () => {
527+
const request = SDK.NetworkRequest.NetworkRequest.create(
528+
'requestId' as Protocol.Network.RequestId, urlString`https://www.example.com/graphql`, urlString``, null, null,
529+
null);
530+
request.statusCode = 200;
531+
request.setRequestHeaders([{name: 'x-fb-friendly-name', value: 'CreatePost'}]);
532+
533+
const networkRequestNode = new Network.NetworkDataGridNode.NetworkRequestNode(
534+
{} as Network.NetworkDataGridNode.NetworkLogViewInterface, request);
535+
const el = document.createElement('div');
536+
networkRequestNode.renderCell(el, 'name');
537+
538+
// The cell should contain the friendly name from request headers
539+
assert.include(el.textContent, 'CreatePost');
540+
});
541+
542+
it('uses default name when x-fb-friendly-name is not present', async () => {
543+
const request = SDK.NetworkRequest.NetworkRequest.create(
544+
'requestId' as Protocol.Network.RequestId, urlString`https://www.example.com/test.js`, urlString``, null, null,
545+
null);
546+
request.statusCode = 200;
547+
548+
const networkRequestNode = new Network.NetworkDataGridNode.NetworkRequestNode(
549+
{} as Network.NetworkDataGridNode.NetworkLogViewInterface, request);
550+
const el = document.createElement('div');
551+
networkRequestNode.renderCell(el, 'name');
552+
553+
// The cell should contain the default name (test.js)
554+
assert.include(el.textContent, 'test.js');
555+
});
556+
557+
it('prefers response header x-fb-friendly-name over request header', async () => {
558+
const request = SDK.NetworkRequest.NetworkRequest.create(
559+
'requestId' as Protocol.Network.RequestId, urlString`https://www.example.com/api/data`, urlString``, null, null,
560+
null);
561+
request.statusCode = 200;
562+
request.responseHeaders = [{name: 'x-fb-friendly-name', value: 'ResponseName'}];
563+
request.setRequestHeaders([{name: 'x-fb-friendly-name', value: 'RequestName'}]);
564+
565+
const networkRequestNode = new Network.NetworkDataGridNode.NetworkRequestNode(
566+
{} as Network.NetworkDataGridNode.NetworkLogViewInterface, request);
567+
const el = document.createElement('div');
568+
networkRequestNode.renderCell(el, 'name');
569+
570+
// The cell should contain the response header value, not the request header value
571+
assert.include(el.textContent, 'ResponseName');
572+
assert.notInclude(el.textContent, 'RequestName');
573+
});
509574
});

front_end/panels/network/NetworkDataGridNode.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -882,7 +882,10 @@ export class NetworkRequestNode extends NetworkNode {
882882
}
883883

884884
override displayName(): string {
885-
return this.requestInternal.name();
885+
// [RN] Check for x-fb-friendly-name header in response or request headers
886+
const friendlyName = this.requestInternal.responseHeaderValue('x-fb-friendly-name') ||
887+
this.requestInternal.requestHeaderValue('x-fb-friendly-name');
888+
return friendlyName || this.requestInternal.name();
886889
}
887890

888891
override request(): SDK.NetworkRequest.NetworkRequest {
@@ -1126,7 +1129,10 @@ export class NetworkRequestNode extends NetworkNode {
11261129
cell.appendChild(secondIconElement);
11271130
}
11281131
}
1129-
const name = Platform.StringUtilities.trimMiddle(this.requestInternal.name(), 100);
1132+
// [RN] Check for x-fb-friendly-name header in response or request headers
1133+
const friendlyName = this.requestInternal.responseHeaderValue('x-fb-friendly-name') ||
1134+
this.requestInternal.requestHeaderValue('x-fb-friendly-name');
1135+
const name = Platform.StringUtilities.trimMiddle(friendlyName || this.requestInternal.name(), 100);
11301136
const networkManager = SDK.NetworkManager.NetworkManager.forRequest(this.requestInternal);
11311137
UI.UIUtils.createTextChild(cell, networkManager ? networkManager.target().decorateLabel(name) : name);
11321138
this.appendSubtitle(cell, this.requestInternal.path());

0 commit comments

Comments
 (0)