@@ -54,7 +54,7 @@ export class BidiNetworkManager {
5454 eventsHelper . removeEventListeners ( this . _eventListeners ) ;
5555 }
5656
57- private _onBeforeRequestSent ( param : bidi . Network . BeforeRequestSentParameters ) {
57+ private async _onBeforeRequestSent ( param : bidi . Network . BeforeRequestSentParameters ) {
5858 if ( param . request . url . startsWith ( 'data:' ) )
5959 return ;
6060 const redirectedFrom = param . redirectCount ? ( this . _requests . get ( param . request . request ) || null ) : null ;
@@ -79,7 +79,7 @@ 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 request = new BidiRequest ( frame , redirectedFrom , param , route , await getNetworkData ( this . _session , param . request , bidi . Network . DataType . Request ) ) ;
8383 this . _requests . set ( request . _id , request ) ;
8484 this . _page . frameManager . requestStarted ( request . request , route ) ;
8585 }
@@ -88,11 +88,7 @@ export class BidiNetworkManager {
8888 const request = this . _requests . get ( params . request . request ) ;
8989 if ( ! request )
9090 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- } ;
91+ const getResponseBody = async ( ) => ( await getNetworkData ( this . _session , params . request , bidi . Network . DataType . Response ) ) ! ;
9692 const timings = params . request . timings ;
9793 const startTime = timings . requestTime ;
9894 function relativeToStart ( time : number ) : number {
@@ -236,14 +232,12 @@ class BidiRequest {
236232 // store the first and only Route in the chain (if any).
237233 _originalRequestRoute : BidiRouteImpl | undefined ;
238234
239- constructor ( frame : frames . Frame , redirectedFrom : BidiRequest | null , payload : bidi . Network . BeforeRequestSentParameters , route : BidiRouteImpl | undefined ) {
235+ constructor ( frame : frames . Frame , redirectedFrom : BidiRequest | null , payload : bidi . Network . BeforeRequestSentParameters , route : BidiRouteImpl | undefined , postData : Buffer | null ) {
240236 this . _id = payload . request . request ;
241237 if ( redirectedFrom )
242238 redirectedFrom . _redirectedTo = this ;
243- // TODO: missing in the spec?
244- const postDataBuffer = null ;
245239 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 ) ) ;
240+ resourceTypeFromBidi ( payload . request . destination , payload . request . initiatorType , payload . initiator ?. type ) , payload . request . method , postData , fromBidiHeaders ( payload . request . headers ) ) ;
247241 // "raw" headers are the same as "provisional" headers in Bidi.
248242 this . request . setRawRequestHeaders ( null ) ;
249243 this . request . _setBodySize ( payload . request . bodySize || 0 ) ;
@@ -390,3 +384,11 @@ function resourceTypeFromBidi(requestDestination: string, requestInitiatorType:
390384 default : return 'other' ;
391385 }
392386}
387+
388+ async function getNetworkData ( session : BidiSession , request : bidi . Network . RequestData , dataType : bidi . Network . DataType ) : Promise < Buffer | null > {
389+ if ( dataType === 'request' && ! request . bodySize )
390+ return null ;
391+ const { bytes } = await session . send ( 'network.getData' , { request : request . request , dataType } ) ;
392+ const encoding = bytes . type === 'base64' ? 'base64' : 'utf8' ;
393+ return Buffer . from ( bytes . value , encoding ) ;
394+ }
0 commit comments