mirror of
https://github.com/microsoft/playwright.git
synced 2024-10-27 21:58:52 +03:00
fix(firefox): use startTime of the same response when computing responseEndTime (#8642)
This commit is contained in:
parent
5f6ec04cfe
commit
f9312061bf
@ -29,7 +29,6 @@ export class FFNetworkManager {
|
|||||||
private _requests: Map<string, InterceptableRequest>;
|
private _requests: Map<string, InterceptableRequest>;
|
||||||
private _page: Page;
|
private _page: Page;
|
||||||
private _eventListeners: RegisteredListener[];
|
private _eventListeners: RegisteredListener[];
|
||||||
private _startTime = 0;
|
|
||||||
|
|
||||||
constructor(session: FFSession, page: Page) {
|
constructor(session: FFSession, page: Page) {
|
||||||
this._session = session;
|
this._session = session;
|
||||||
@ -81,16 +80,21 @@ export class FFNetworkManager {
|
|||||||
return Buffer.from(response.base64body, 'base64');
|
return Buffer.from(response.base64body, 'base64');
|
||||||
};
|
};
|
||||||
|
|
||||||
this._startTime = event.timing.startTime;
|
const startTime = event.timing.startTime;
|
||||||
|
function relativeToStart(time: number): number {
|
||||||
|
if (!time)
|
||||||
|
return -1;
|
||||||
|
return (time - startTime) / 1000;
|
||||||
|
}
|
||||||
const timing = {
|
const timing = {
|
||||||
startTime: this._startTime / 1000,
|
startTime: startTime / 1000,
|
||||||
domainLookupStart: this._relativeTiming(event.timing.domainLookupStart),
|
domainLookupStart: relativeToStart(event.timing.domainLookupStart),
|
||||||
domainLookupEnd: this._relativeTiming(event.timing.domainLookupEnd),
|
domainLookupEnd: relativeToStart(event.timing.domainLookupEnd),
|
||||||
connectStart: this._relativeTiming(event.timing.connectStart),
|
connectStart: relativeToStart(event.timing.connectStart),
|
||||||
secureConnectionStart: this._relativeTiming(event.timing.secureConnectionStart),
|
secureConnectionStart: relativeToStart(event.timing.secureConnectionStart),
|
||||||
connectEnd: this._relativeTiming(event.timing.connectEnd),
|
connectEnd: relativeToStart(event.timing.connectEnd),
|
||||||
requestStart: this._relativeTiming(event.timing.requestStart),
|
requestStart: relativeToStart(event.timing.requestStart),
|
||||||
responseStart: this._relativeTiming(event.timing.responseStart),
|
responseStart: relativeToStart(event.timing.responseStart),
|
||||||
};
|
};
|
||||||
const response = new network.Response(request.request, event.status, event.statusText, event.headers, timing, getResponseBody);
|
const response = new network.Response(request.request, event.status, event.statusText, event.headers, timing, getResponseBody);
|
||||||
if (event?.remoteIPAddress && typeof event?.remotePort === 'number') {
|
if (event?.remoteIPAddress && typeof event?.remotePort === 'number') {
|
||||||
@ -120,11 +124,12 @@ export class FFNetworkManager {
|
|||||||
|
|
||||||
// Keep redirected requests in the map for future reference as redirectedFrom.
|
// Keep redirected requests in the map for future reference as redirectedFrom.
|
||||||
const isRedirected = response.status() >= 300 && response.status() <= 399;
|
const isRedirected = response.status() >= 300 && response.status() <= 399;
|
||||||
|
const responseEndTime = event.responseEndTime ? event.responseEndTime / 1000 - response.timing().startTime : -1;
|
||||||
if (isRedirected) {
|
if (isRedirected) {
|
||||||
response._requestFinished(this._relativeTiming(event.responseEndTime));
|
response._requestFinished(responseEndTime);
|
||||||
} else {
|
} else {
|
||||||
this._requests.delete(request._id);
|
this._requests.delete(request._id);
|
||||||
response._requestFinished(this._relativeTiming(event.responseEndTime));
|
response._requestFinished(responseEndTime);
|
||||||
}
|
}
|
||||||
this._page._frameManager.reportRequestFinished(request.request, response);
|
this._page._frameManager.reportRequestFinished(request.request, response);
|
||||||
}
|
}
|
||||||
@ -140,12 +145,6 @@ export class FFNetworkManager {
|
|||||||
request.request._setFailureText(event.errorCode);
|
request.request._setFailureText(event.errorCode);
|
||||||
this._page._frameManager.requestFailed(request.request, event.errorCode === 'NS_BINDING_ABORTED');
|
this._page._frameManager.requestFailed(request.request, event.errorCode === 'NS_BINDING_ABORTED');
|
||||||
}
|
}
|
||||||
|
|
||||||
_relativeTiming(time: number): number {
|
|
||||||
if (!time)
|
|
||||||
return -1;
|
|
||||||
return (time - this._startTime) / 1000;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const causeToResourceType: {[key: string]: string} = {
|
const causeToResourceType: {[key: string]: string} = {
|
||||||
|
Loading…
Reference in New Issue
Block a user