@@ -79,7 +79,8 @@ export class BidiNetworkManager {
7979 route = new BidiRouteImpl ( this . _session , param . request . request ) ;
8080 }
8181 }
82- const request = new BidiRequest ( frame , redirectedFrom , param , route ) ;
82+ const getRequestBody = param . request . bodySize ? ( ) => getNetworkData ( this . _session , param . request , bidi . Network . DataType . Request ) : null ;
83+ const request = new BidiRequest ( frame , redirectedFrom , param , getRequestBody , route ) ;
8384 this . _requests . set ( request . _id , request ) ;
8485 this . _page . frameManager . requestStarted ( request . request , route ) ;
8586 }
@@ -88,11 +89,7 @@ export class BidiNetworkManager {
8889 const request = this . _requests . get ( params . request . request ) ;
8990 if ( ! request )
9091 return ;
91- const getResponseBody = async ( ) => {
92- const { bytes } = await this . _session . send ( 'network.getData' , { request : params . request . request , dataType : bidi . Network . DataType . Response } ) ;
93- const encoding = bytes . type === 'base64' ? 'base64' : 'utf8' ;
94- return Buffer . from ( bytes . value , encoding ) ;
95- } ;
92+ const getResponseBody = ( ) => getNetworkData ( this . _session , params . request , bidi . Network . DataType . Response ) ;
9693 const timings = params . request . timings ;
9794 const startTime = timings . requestTime ;
9895 function relativeToStart ( time : number ) : number {
@@ -236,14 +233,12 @@ class BidiRequest {
236233 // store the first and only Route in the chain (if any).
237234 _originalRequestRoute : BidiRouteImpl | undefined ;
238235
239- constructor ( frame : frames . Frame , redirectedFrom : BidiRequest | null , payload : bidi . Network . BeforeRequestSentParameters , route : BidiRouteImpl | undefined ) {
236+ constructor ( frame : frames . Frame , redirectedFrom : BidiRequest | null , payload : bidi . Network . BeforeRequestSentParameters , getRequestBody : ( ( ) => Promise < Buffer > ) | null , route : BidiRouteImpl | undefined ) {
240237 this . _id = payload . request . request ;
241238 if ( redirectedFrom )
242239 redirectedFrom . _redirectedTo = this ;
243- // TODO: missing in the spec?
244- const postDataBuffer = null ;
245240 this . request = new network . Request ( frame . _page . browserContext , frame , null , redirectedFrom ? redirectedFrom . request : null , payload . navigation ?? undefined , payload . request . url ,
246- resourceTypeFromBidi ( payload . request . destination , payload . request . initiatorType , payload . initiator ?. type ) , payload . request . method , postDataBuffer , fromBidiHeaders ( payload . request . headers ) ) ;
241+ resourceTypeFromBidi ( payload . request . destination , payload . request . initiatorType , payload . initiator ?. type ) , payload . request . method , getRequestBody , fromBidiHeaders ( payload . request . headers ) ) ;
247242 // "raw" headers are the same as "provisional" headers in Bidi.
248243 this . request . setRawRequestHeaders ( null ) ;
249244 this . request . _setBodySize ( payload . request . bodySize || 0 ) ;
@@ -390,3 +385,9 @@ function resourceTypeFromBidi(requestDestination: string, requestInitiatorType:
390385 default : return 'other' ;
391386 }
392387}
388+
389+ async function getNetworkData ( session : BidiSession , request : bidi . Network . RequestData , dataType : bidi . Network . DataType ) {
390+ const { bytes } = await session . send ( 'network.getData' , { request : request . request , dataType } ) ;
391+ const encoding = bytes . type === 'base64' ? 'base64' : 'utf8' ;
392+ return Buffer . from ( bytes . value , encoding ) ;
393+ }
0 commit comments