@@ -194,6 +194,53 @@ for (const [domain, events] of Object.entries(EXPECTED_EVENTS)) {
194194 }
195195 }
196196
197+ // Verify a user-supplied initiator (with stack) is preserved end-to-end.
198+ // Covers the success body of `if (ObjectGetObject(... "stack"))` in
199+ // NetworkAgent::createInitiatorFromObject (network_agent.cc L159).
200+ session . removeAllListeners ( 'Network.requestWillBeSent' ) ;
201+ const userInitiator = {
202+ type : 'script' ,
203+ stack : { callFrames : [ ] } ,
204+ url : 'https://nodejs.org/test.js' ,
205+ lineNumber : 12 ,
206+ columnNumber : 34 ,
207+ } ;
208+ session . on ( 'Network.requestWillBeSent' , common . mustCall ( ( { params } ) => {
209+ assert . strictEqual ( params . requestId , 'request-with-user-initiator' ) ;
210+ assert . deepStrictEqual ( params . initiator , userInitiator ) ;
211+ } ) ) ;
212+ inspector . Network . requestWillBeSent ( {
213+ requestId : 'request-with-user-initiator' ,
214+ request : {
215+ url : 'https://nodejs.org/en' ,
216+ method : 'GET' ,
217+ headers : { } ,
218+ } ,
219+ timestamp : 1000 ,
220+ wallTime : 1000 ,
221+ initiator : userInitiator ,
222+ } ) ;
223+
224+ // Verify a duplicate requestId is silently ignored. Covers the early
225+ // return when `requests_.contains(request_id)` (network_agent.cc L610).
226+ session . removeAllListeners ( 'Network.requestWillBeSent' ) ;
227+ const duplicateId = 'duplicate-request-id' ;
228+ const duplicateParams = {
229+ requestId : duplicateId ,
230+ request : {
231+ url : 'https://nodejs.org/en' ,
232+ method : 'GET' ,
233+ headers : { } ,
234+ } ,
235+ timestamp : 1000 ,
236+ wallTime : 1000 ,
237+ } ;
238+ session . on ( 'Network.requestWillBeSent' , common . mustCall ( ( { params } ) => {
239+ assert . strictEqual ( params . requestId , duplicateId ) ;
240+ } , 1 ) ) ;
241+ inspector . Network . requestWillBeSent ( duplicateParams ) ;
242+ inspector . Network . requestWillBeSent ( duplicateParams ) ;
243+
197244 // Check tht no events are emitted after disabling the domain.
198245 await session . post ( 'Network.disable' ) ;
199246 session . on ( 'Network.requestWillBeSent' , common . mustNotCall ( ) ) ;
0 commit comments