@@ -41,6 +41,7 @@ export class BidiBrowser extends Browser {
4141 readonly _contexts = new Map < string , BidiBrowserContext > ( ) ;
4242 readonly _bidiPages = new Map < bidi . BrowsingContext . BrowsingContext , BidiPage > ( ) ;
4343 private readonly _eventListeners : RegisteredListener [ ] ;
44+ private _cacheBehavior : bidi . Network . SetCacheBehaviorParameters [ 'cacheBehavior' ] = 'default' ;
4445
4546 static async connect ( parent : SdkObject , transport : ConnectionTransport , options : BrowserOptions ) : Promise < BidiBrowser > {
4647 const browser = new BidiBrowser ( parent , transport , options ) ;
@@ -74,6 +75,8 @@ export class BidiBrowser extends Browser {
7475 ] ,
7576 } ) ;
7677
78+ await browser . _browserSession . send ( 'network.addIntercept' , { phases : [ bidi . Network . InterceptPhase . AuthRequired ] } ) ;
79+
7780 await browser . _browserSession . send ( 'network.addDataCollector' , {
7881 dataTypes : [ bidi . Network . DataType . Response ] ,
7982 maxEncodedDataSize : 20_000_000 , // same default as in CDP: https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/inspector/inspector_network_agent.cc;l=134;drc=4128411589187a396829a827f59a655bed876aa7
@@ -132,6 +135,14 @@ export class BidiBrowser extends Browser {
132135 return ! this . _connection . isClosed ( ) ;
133136 }
134137
138+ async updateCacheBehavior ( ) {
139+ const cacheBehavior = [ ...this . _contexts . values ( ) ] . some ( context => context . requestInterceptors . length > 0 ) ? 'bypass' : 'default' ;
140+ if ( this . _cacheBehavior !== cacheBehavior ) {
141+ await this . _browserSession . send ( 'network.setCacheBehavior' , { cacheBehavior } ) ;
142+ this . _cacheBehavior = cacheBehavior ;
143+ }
144+ }
145+
135146 private _onBrowsingContextCreated ( event : bidi . BrowsingContext . Info ) {
136147 if ( event . parent ) {
137148 const parentFrameId = event . parent ;
@@ -415,18 +426,18 @@ export class BidiBrowserContext extends BrowserContext {
415426 }
416427
417428 async doUpdateRequestInterception ( ) : Promise < void > {
429+ let interceptPromise = Promise . resolve < any > ( undefined ) ;
418430 if ( this . requestInterceptors . length > 0 && ! this . _interceptId ) {
419- const { intercept } = await this . _browser . _browserSession . send ( 'network.addIntercept' , {
431+ interceptPromise = this . _browser . _browserSession . send ( 'network.addIntercept' , {
420432 phases : [ bidi . Network . InterceptPhase . BeforeRequestSent ] ,
421- urlPatterns : [ { type : 'pattern' } ] ,
422- } ) ;
423- this . _interceptId = intercept ;
433+ } ) . then ( ( { intercept } ) => this . _interceptId = intercept ) ;
424434 }
425435 if ( this . requestInterceptors . length === 0 && this . _interceptId ) {
426436 const intercept = this . _interceptId ;
427437 this . _interceptId = undefined ;
428- await this . _browser . _browserSession . send ( 'network.removeIntercept' , { intercept } ) ;
438+ interceptPromise = this . _browser . _browserSession . send ( 'network.removeIntercept' , { intercept } ) ;
429439 }
440+ await Promise . all ( [ this . _browser . updateCacheBehavior ( ) , interceptPromise ] ) ;
430441 }
431442
432443 override async doUpdateDefaultViewport ( ) {
0 commit comments