mirror of
https://github.com/microsoft/playwright.git
synced 2024-10-27 13:50:25 +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 _page: Page;
|
||||
private _eventListeners: RegisteredListener[];
|
||||
private _startTime = 0;
|
||||
|
||||
constructor(session: FFSession, page: Page) {
|
||||
this._session = session;
|
||||
@ -81,16 +80,21 @@ export class FFNetworkManager {
|
||||
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 = {
|
||||
startTime: this._startTime / 1000,
|
||||
domainLookupStart: this._relativeTiming(event.timing.domainLookupStart),
|
||||
domainLookupEnd: this._relativeTiming(event.timing.domainLookupEnd),
|
||||
connectStart: this._relativeTiming(event.timing.connectStart),
|
||||
secureConnectionStart: this._relativeTiming(event.timing.secureConnectionStart),
|
||||
connectEnd: this._relativeTiming(event.timing.connectEnd),
|
||||
requestStart: this._relativeTiming(event.timing.requestStart),
|
||||
responseStart: this._relativeTiming(event.timing.responseStart),
|
||||
startTime: startTime / 1000,
|
||||
domainLookupStart: relativeToStart(event.timing.domainLookupStart),
|
||||
domainLookupEnd: relativeToStart(event.timing.domainLookupEnd),
|
||||
connectStart: relativeToStart(event.timing.connectStart),
|
||||
secureConnectionStart: relativeToStart(event.timing.secureConnectionStart),
|
||||
connectEnd: relativeToStart(event.timing.connectEnd),
|
||||
requestStart: relativeToStart(event.timing.requestStart),
|
||||
responseStart: relativeToStart(event.timing.responseStart),
|
||||
};
|
||||
const response = new network.Response(request.request, event.status, event.statusText, event.headers, timing, getResponseBody);
|
||||
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.
|
||||
const isRedirected = response.status() >= 300 && response.status() <= 399;
|
||||
const responseEndTime = event.responseEndTime ? event.responseEndTime / 1000 - response.timing().startTime : -1;
|
||||
if (isRedirected) {
|
||||
response._requestFinished(this._relativeTiming(event.responseEndTime));
|
||||
response._requestFinished(responseEndTime);
|
||||
} else {
|
||||
this._requests.delete(request._id);
|
||||
response._requestFinished(this._relativeTiming(event.responseEndTime));
|
||||
response._requestFinished(responseEndTime);
|
||||
}
|
||||
this._page._frameManager.reportRequestFinished(request.request, response);
|
||||
}
|
||||
@ -140,12 +145,6 @@ export class FFNetworkManager {
|
||||
request.request._setFailureText(event.errorCode);
|
||||
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} = {
|
||||
|
Loading…
Reference in New Issue
Block a user