summaryrefslogtreecommitdiffstats
path: root/remote/test/puppeteer/packages/puppeteer-core/src/bidi/core/Request.ts
diff options
context:
space:
mode:
Diffstat (limited to 'remote/test/puppeteer/packages/puppeteer-core/src/bidi/core/Request.ts')
-rw-r--r--remote/test/puppeteer/packages/puppeteer-core/src/bidi/core/Request.ts33
1 files changed, 20 insertions, 13 deletions
diff --git a/remote/test/puppeteer/packages/puppeteer-core/src/bidi/core/Request.ts b/remote/test/puppeteer/packages/puppeteer-core/src/bidi/core/Request.ts
index 2a445f7d87..fd616b668d 100644
--- a/remote/test/puppeteer/packages/puppeteer-core/src/bidi/core/Request.ts
+++ b/remote/test/puppeteer/packages/puppeteer-core/src/bidi/core/Request.ts
@@ -66,10 +66,11 @@ export class Request extends EventEmitter<{
new EventEmitter(this.#session)
);
sessionEmitter.on('network.beforeRequestSent', event => {
- if (event.context !== this.#browsingContext.id) {
- return;
- }
- if (event.request.request !== this.id) {
+ if (
+ event.context !== this.#browsingContext.id ||
+ event.request.request !== this.id ||
+ event.redirectCount !== this.#event.redirectCount + 1
+ ) {
return;
}
this.#redirect = Request.from(this.#browsingContext, event);
@@ -77,10 +78,11 @@ export class Request extends EventEmitter<{
this.dispose();
});
sessionEmitter.on('network.fetchError', event => {
- if (event.context !== this.#browsingContext.id) {
- return;
- }
- if (event.request.request !== this.id) {
+ if (
+ event.context !== this.#browsingContext.id ||
+ event.request.request !== this.id ||
+ this.#event.redirectCount !== event.redirectCount
+ ) {
return;
}
this.#error = event.errorText;
@@ -88,14 +90,19 @@ export class Request extends EventEmitter<{
this.dispose();
});
sessionEmitter.on('network.responseCompleted', event => {
- if (event.context !== this.#browsingContext.id) {
- return;
- }
- if (event.request.request !== this.id) {
+ if (
+ event.context !== this.#browsingContext.id ||
+ event.request.request !== this.id ||
+ this.#event.redirectCount !== event.redirectCount
+ ) {
return;
}
this.#response = event.response;
this.emit('success', this.#response);
+ // In case this is a redirect.
+ if (this.#response.status >= 300 && this.#response.status < 400) {
+ return;
+ }
this.dispose();
});
}
@@ -126,7 +133,7 @@ export class Request extends EventEmitter<{
return this.#event.navigation ?? undefined;
}
get redirect(): Request | undefined {
- return this.redirect;
+ return this.#redirect;
}
get response(): Bidi.Network.ResponseData | undefined {
return this.#response;