[issues] Link raw cookie lines to network panel
This CL adds a new network filter that allows users to search for
requests where the response includes a specified value in the
`Set-Cookie` header.
The issues panel uses the new filter to link issues with raw
cookie lines back to the network panel (should the issue be
associated with a network request).
Screenshots: https://imgur.com/a/zVZNrK1
[email protected]
Bug: 1179186
Change-Id: I9e275d31676a67a1b197c9aa195b65a144caeebf
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3068920
Commit-Queue: Simon Zünd <[email protected]>
Reviewed-by: Sigurd Schneider <[email protected]>
diff --git a/front_end/panels/network/NetworkLogView.ts b/front_end/panels/network/NetworkLogView.ts
index 2ba36dc..5e14fb8 100644
--- a/front_end/panels/network/NetworkLogView.ts
+++ b/front_end/panels/network/NetworkLogView.ts
@@ -620,6 +620,12 @@
return request.responseHeaderValue(value) !== undefined;
}
+ static _requestResponseHeaderSetCookieFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {
+ // Multiple Set-Cookie headers in the request are concatenated via space. Only
+ // filter via `includes` instead of strict equality.
+ return Boolean(request.responseHeaderValue('Set-Cookie')?.includes(value));
+ }
+
static _requestMethodFilter(value: string, request: SDK.NetworkRequest.NetworkRequest): boolean {
return request.requestMethod === value;
}
@@ -1431,8 +1437,11 @@
}
const responseHeaders = request.responseHeaders;
- for (let i = 0, l = responseHeaders.length; i < l; ++i) {
- this._suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.HasResponseHeader, responseHeaders[i].name);
+ for (const responseHeader of responseHeaders) {
+ this._suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.HasResponseHeader, responseHeader.name);
+ if (responseHeader.name === 'Set-Cookie') {
+ this._suggestionBuilder.addItem(NetworkForward.UIFilter.FilterType.ResponseHeaderValueSetCookie);
+ }
}
for (const cookie of request.responseCookies) {
@@ -1734,6 +1743,9 @@
case NetworkForward.UIFilter.FilterType.HasResponseHeader:
return NetworkLogView._requestResponseHeaderFilter.bind(null, value);
+ case NetworkForward.UIFilter.FilterType.ResponseHeaderValueSetCookie:
+ return NetworkLogView._requestResponseHeaderSetCookieFilter.bind(null, value);
+
case NetworkForward.UIFilter.FilterType.Is:
if (value.toLowerCase() === NetworkForward.UIFilter.IsFilterType.Running) {
return NetworkLogView._runningRequestFilter;