Skip to content

Commit 2a578eb

Browse files
Lightning00BladeDevtools-frontend LUCI CQ
authored andcommitted
[AI Assistance] Fix issue with initiated graph
This was creating a recursive pattern. While this may introduce a scenario that we send less data, we avoid complete failure. Bug: 399554771 Change-Id: I3cde4da47efb6c829496f470a8e92d0507328cd2 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6310325 Commit-Queue: Nikolay Vitkov <[email protected]> Commit-Queue: Alex Rudenko <[email protected]> Reviewed-by: Alex Rudenko <[email protected]> Auto-Submit: Nikolay Vitkov <[email protected]>
1 parent c8af4ee commit 2a578eb

File tree

3 files changed

+30
-19
lines changed

3 files changed

+30
-19
lines changed

front_end/panels/ai_assistance/data_formatters/NetworkRequestFormatter.ts

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -83,15 +83,15 @@ Request initiator chain:\n${this.formatRequestInitiatorChain()}`;
8383
const allowedOrigin = new URL(this.#request.url()).origin;
8484
let initiatorChain = '';
8585
let lineStart = '- URL: ';
86-
const initiators = Logs.NetworkLog.NetworkLog.instance().initiatorGraphForRequest(this.#request).initiators;
86+
const graph = Logs.NetworkLog.NetworkLog.instance().initiatorGraphForRequest(this.#request);
8787

88-
for (const initiator of Array.from(initiators).reverse()) {
88+
for (const initiator of Array.from(graph.initiators).reverse()) {
8989
initiatorChain = initiatorChain + lineStart +
9090
NetworkRequestFormatter.formatInitiatorUrl(initiator.url(), allowedOrigin) + '\n';
9191
lineStart = '\t' + lineStart;
9292
if (initiator === this.#request) {
93-
initiatorChain = this.#formatRequestInitiated(initiator, initiatorChain, lineStart, allowedOrigin);
94-
break;
93+
initiatorChain =
94+
this.#formatRequestInitiated(graph.initiated, this.#request, initiatorChain, lineStart, allowedOrigin);
9595
}
9696
}
9797

@@ -150,17 +150,28 @@ Request initiator chain:\n${this.formatRequestInitiatorChain()}`;
150150
}
151151

152152
#formatRequestInitiated(
153-
request: SDK.NetworkRequest.NetworkRequest, initiatorChain: string, lineStart: string,
154-
allowedOrigin: string): string {
155-
const initiated = Logs.NetworkLog.NetworkLog.instance().initiatorGraphForRequest(request).initiated;
156-
initiated.forEach((v, initiatedRequest) => {
157-
if (request === v) {
158-
initiatorChain = initiatorChain + lineStart +
159-
NetworkRequestFormatter.formatInitiatorUrl(initiatedRequest.url(), allowedOrigin) + '\n';
160-
initiatorChain =
161-
this.#formatRequestInitiated(initiatedRequest, initiatorChain, '\t' + lineStart, allowedOrigin);
153+
initiated: Map<SDK.NetworkRequest.NetworkRequest, SDK.NetworkRequest.NetworkRequest>,
154+
parentRequest: SDK.NetworkRequest.NetworkRequest,
155+
initiatorChain: string,
156+
lineStart: string,
157+
allowedOrigin: string,
158+
): string {
159+
const visited = new Set<SDK.NetworkRequest.NetworkRequest>();
160+
161+
// this.request should be already in the tree when build initiator part
162+
visited.add(this.#request);
163+
for (const [keyRequest, initiatedRequest] of initiated.entries()) {
164+
if (initiatedRequest === parentRequest) {
165+
if (!visited.has(keyRequest)) {
166+
visited.add(keyRequest);
167+
initiatorChain = initiatorChain + lineStart +
168+
NetworkRequestFormatter.formatInitiatorUrl(keyRequest.url(), allowedOrigin) + '\n';
169+
initiatorChain =
170+
this.#formatRequestInitiated(initiated, keyRequest, initiatorChain, '\t' + lineStart, allowedOrigin);
171+
}
162172
}
163-
});
173+
}
174+
164175
return initiatorChain;
165176
}
166177
}

front_end/panels/network/RequestInitiatorView.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ export class RequestInitiatorView extends UI.Widget.VBox {
9999
}
100100

101101
const initiated = initiatorGraph.initiated;
102-
this.depthFirstSearchTreeBuilder(initiated, (parent), this.request);
102+
this.depthFirstSearchTreeBuilder(initiated, parent, this.request);
103103
return root;
104104
}
105105

front_end/testing/AiAssistanceHelpers.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ export function createNetworkRequest(opts?: {
111111
includeInitiators?: boolean,
112112
}): SDK.NetworkRequest.NetworkRequest {
113113
const networkRequest = SDK.NetworkRequest.NetworkRequest.create(
114-
'requestId' as Protocol.Network.RequestId,
114+
'requestId-0' as Protocol.Network.RequestId,
115115
opts?.url ?? Platform.DevToolsPath.urlString`https://www.example.com/script.js`,
116116
Platform.DevToolsPath.urlString``, null, null, null);
117117
networkRequest.statusCode = 200;
@@ -120,13 +120,13 @@ export function createNetworkRequest(opts?: {
120120

121121
if (opts?.includeInitiators) {
122122
const initiatorNetworkRequest = SDK.NetworkRequest.NetworkRequest.create(
123-
'requestId' as Protocol.Network.RequestId, Platform.DevToolsPath.urlString`https://www.initiator.com`,
123+
'requestId-1' as Protocol.Network.RequestId, Platform.DevToolsPath.urlString`https://www.initiator.com`,
124124
Platform.DevToolsPath.urlString``, null, null, null);
125125
const initiatedNetworkRequest1 = SDK.NetworkRequest.NetworkRequest.create(
126-
'requestId' as Protocol.Network.RequestId, Platform.DevToolsPath.urlString`https://www.example.com/1`,
126+
'requestId-2' as Protocol.Network.RequestId, Platform.DevToolsPath.urlString`https://www.example.com/1`,
127127
Platform.DevToolsPath.urlString``, null, null, null);
128128
const initiatedNetworkRequest2 = SDK.NetworkRequest.NetworkRequest.create(
129-
'requestId' as Protocol.Network.RequestId, Platform.DevToolsPath.urlString`https://www.example.com/2`,
129+
'requestId-3' as Protocol.Network.RequestId, Platform.DevToolsPath.urlString`https://www.example.com/2`,
130130
Platform.DevToolsPath.urlString``, null, null, null);
131131

132132
sinon.stub(Logs.NetworkLog.NetworkLog.instance(), 'initiatorGraphForRequest')

0 commit comments

Comments
 (0)