@@ -33,21 +33,26 @@ class Network:
3333 def __init__ (self , driver ):
3434 self .network = None
3535 self .driver = driver
36- self .intercept = None
37- self .scope = None
36+ self .scopes = {}
3837 self .conn = None
3938
40- async def add_request_handler (self , request_filter = lambda _ : True , handler = default_request_handler , conn = None ):
39+ async def add_request_handler (
40+ self ,
41+ request_filter = lambda _ : True ,
42+ handler = default_request_handler ,
43+ conn = None ,
44+ task_status = trio .TASK_STATUS_IGNORED
45+ ):
4146 if not self .conn :
4247 self .conn = conn
4348 with trio .CancelScope () as scope :
44- self .scope = scope
4549 self .network = network .Network (conn )
4650 params = AddInterceptParameters (["beforeRequestSent" ])
4751 callback = self ._callback (request_filter , handler )
4852 result = await self .network .add_intercept (event = BeforeRequestSent , params = params )
4953 intercept = result ["intercept" ]
50- self .intercept = intercept
54+ self .scopes [intercept ] = scope
55+ task_status .started (intercept )
5156 await self .add_listener (event = BeforeRequestSent , callback = callback )
5257 return intercept
5358
@@ -63,12 +68,13 @@ async def get(self, url, conn):
6368 params = NavigateParameters (context = self .driver .current_window_handle , url = url , wait = "complete" )
6469 await conn .execute (Navigate (params ).cmd ())
6570
66- async def remove_request_handler (self ):
71+ async def remove_request_handler (self , intercept ):
6772 await self .network .remove_intercept (
6873 event = BeforeRequestSent ,
6974 params = network .RemoveInterceptParameters (self .intercept ),
7075 )
71- self .scope .cancel ()
76+ self .scopes [intercept ].cancel ()
77+ self .scopes .pop (intercept )
7278
7379 def _callback (self , request_filter , handler ):
7480 async def callback (request ):
0 commit comments