Skip to content

Commit

Permalink
fix: support for other interception
Browse files Browse the repository at this point in the history
  • Loading branch information
Lightning00Blade committed Jul 10, 2024
1 parent e734c31 commit 4209c28
Showing 1 changed file with 42 additions and 23 deletions.
65 changes: 42 additions & 23 deletions src/bidiMapper/modules/network/NetworkRequest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -553,25 +553,11 @@ export class NetworkRequest {
async continueRequest(
overrides: Omit<Network.ContinueRequestParameters, 'request'> = {}
) {
let overrideHeaders: Network.Header[] | undefined = overrides.headers;
const cookieHeader = networkHeaderFromCookieHeaders(overrides.cookies);

if (cookieHeader && !overrideHeaders) {
overrideHeaders = this.#requestHeaders;
}
if (cookieHeader && overrideHeaders) {
overrideHeaders.filter(
(header) =>
header.name.localeCompare('cookie', undefined, {
sensitivity: 'base',
}) !== 0
);
overrideHeaders.push(cookieHeader);
}

let headers: Protocol.Fetch.HeaderEntry[] | undefined =
cdpFetchHeadersFromBidiNetworkHeaders(overrideHeaders);

const overrideHeaders = this.#getOverrideHeader(
overrides.headers,
overrides.cookies
);
const headers = cdpFetchHeadersFromBidiNetworkHeaders(overrideHeaders);
const postData = getCdpBodyFromBiDiBytesValue(overrides.body);

await this.#continueRequest({
Expand Down Expand Up @@ -630,8 +616,12 @@ export class NetworkRequest {
}

if (this.#interceptPhase === Network.InterceptPhase.ResponseStarted) {
const responseHeaders: Protocol.Fetch.HeaderEntry[] | undefined =
cdpFetchHeadersFromBidiNetworkHeaders(overrides.headers);
const overrideHeaders = this.#getOverrideHeader(
overrides.headers,
overrides.cookies
);
const responseHeaders =
cdpFetchHeadersFromBidiNetworkHeaders(overrideHeaders);

await this.#continueResponse({
responseCode: overrides.statusCode,
Expand Down Expand Up @@ -707,8 +697,12 @@ export class NetworkRequest {

// TODO: Step 6
// https://w3c.github.io/webdriver-bidi/#command-network-continueResponse
const responseHeaders: Protocol.Fetch.HeaderEntry[] | undefined =
cdpFetchHeadersFromBidiNetworkHeaders(overrides.headers);
const overrideHeaders = this.#getOverrideHeader(
overrides.headers,
overrides.cookies
);
const responseHeaders =
cdpFetchHeadersFromBidiNetworkHeaders(overrideHeaders);

const responseCode = overrides.statusCode ?? this.#statusCode ?? 200;

Expand Down Expand Up @@ -904,6 +898,31 @@ export class NetworkRequest {
);
}

#getOverrideHeader(
headers: Network.Header[] | undefined,
cookies: Network.CookieHeader[] | undefined
): Network.Header[] | undefined {
if (!headers && !cookies) {
return [];
}
let overrideHeaders: Network.Header[] | undefined = headers;
const cookieHeader = networkHeaderFromCookieHeaders(cookies);
if (cookieHeader && !overrideHeaders) {
overrideHeaders = this.#requestHeaders;
}
if (cookieHeader && overrideHeaders) {
overrideHeaders.filter(
(header) =>
header.name.localeCompare('cookie', undefined, {
sensitivity: 'base',
}) !== 0
);
overrideHeaders.push(cookieHeader);
}

return overrideHeaders;
}

static #getInitiatorType(
initiatorType: Protocol.Network.Initiator['type']
): Network.Initiator['type'] {
Expand Down

0 comments on commit 4209c28

Please sign in to comment.