Skip to content

Commit cba9702

Browse files
committed
clean up internal continue
1 parent 6ccab70 commit cba9702

2 files changed

Lines changed: 46 additions & 51 deletions

File tree

playwright/_impl/_browser_context.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ async def inner_route() -> None:
171171
asyncio.create_task(self._disable_interception())
172172
if handled:
173173
return
174-
route._internal_continue()
174+
await route._internal_continue(is_internal=True)
175175

176176
asyncio.create_task(inner_route())
177177

playwright/_impl/_network.py

Lines changed: 45 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -315,63 +315,58 @@ async def continue_(
315315
headers: Dict[str, str] = None,
316316
postData: Union[str, bytes] = None,
317317
) -> None:
318+
overrides = cast(FallbackOverrideParameters, locals_to_params(locals()))
318319
# FIXME: This is getting triggered when it shouldn't be
319320
# self._check_not_handled()
320-
overrides: FallbackOverrideParameters = {}
321-
if url:
322-
overrides["url"] = url
323-
if method:
324-
overrides["method"] = method
325-
if headers:
326-
overrides["headers"] = headers
327-
if postData:
328-
overrides["postData"] = postData
329-
330-
# 1. request.url et. al. may be called after contine by user and it should reflect the overrides
331-
# 2. existing overrides should be used when continueing
332321
self.request._apply_fallback_overrides(overrides)
333-
334-
post_data_for_wire: Optional[str] = None
335-
post_data_from_overrides = self.request._fallback_overrides.get("postData")
336-
if post_data_from_overrides is not None:
337-
post_data_for_wire = (
338-
base64.b64encode(post_data_from_overrides.encode()).decode()
339-
if isinstance(post_data_from_overrides, str)
340-
else base64.b64encode(post_data_from_overrides).decode()
341-
)
342-
await self._race_with_page_close(
343-
self._channel.send(
344-
"continue",
345-
cast(
346-
Any,
347-
locals_to_params(
348-
{
349-
"url": self.request._fallback_overrides.get("url"),
350-
"method": self.request._fallback_overrides.get("method"),
351-
"headers": serialize_headers(
352-
cast(
353-
Dict[str, str],
354-
self.request._fallback_overrides["headers"],
355-
)
356-
)
357-
if self.request._fallback_overrides.get("headers")
358-
else None,
359-
"postData": post_data_for_wire,
360-
}
361-
),
362-
),
363-
)
364-
)
322+
await self._internal_continue()
365323
self._report_handled(True)
366324

367-
def _internal_continue(self) -> None:
325+
def _internal_continue(
326+
self, is_internal: bool = False
327+
) -> Coroutine[Any, Any, None]:
368328
async def continue_route() -> None:
369329
try:
370-
await self.continue_()
371-
except Exception:
372-
pass
373-
374-
asyncio.create_task(continue_route())
330+
post_data_for_wire: Optional[str] = None
331+
post_data_from_overrides = self.request._fallback_overrides.get(
332+
"postData"
333+
)
334+
if post_data_from_overrides is not None:
335+
post_data_for_wire = (
336+
base64.b64encode(post_data_from_overrides.encode()).decode()
337+
if isinstance(post_data_from_overrides, str)
338+
else base64.b64encode(post_data_from_overrides).decode()
339+
)
340+
await self._race_with_page_close(
341+
self._channel.send(
342+
"continue",
343+
cast(
344+
Any,
345+
locals_to_params(
346+
{
347+
"url": self.request._fallback_overrides.get("url"),
348+
"method": self.request._fallback_overrides.get(
349+
"method"
350+
),
351+
"headers": serialize_headers(
352+
cast(
353+
Dict[str, str],
354+
self.request._fallback_overrides["headers"],
355+
)
356+
)
357+
if self.request._fallback_overrides.get("headers")
358+
else None,
359+
"postData": post_data_for_wire,
360+
}
361+
),
362+
),
363+
)
364+
)
365+
except Exception as e:
366+
if not is_internal:
367+
raise e
368+
369+
return continue_route()
375370

376371
# FIXME: Port corresponding tests, and call this method
377372
async def _redirected_navigation_request(self, url: str) -> None:

0 commit comments

Comments
 (0)