Skip to content

Commit 6854c40

Browse files
authored
fix(chromium): handle backgroundPages() onClose (microsoft#685)
1 parent 78f4247 commit 6854c40

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

playwright/_impl/_browser_context.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ def __repr__(self) -> str:
9494
return f"<BrowserContext browser={self.browser}>"
9595

9696
def _on_page(self, page: Page) -> None:
97-
page._set_browser_context(self)
9897
self._pages.append(page)
9998
self.emit(BrowserContext.Events.Page, page)
10099
if page._opener and not page._opener.is_closed():

playwright/_impl/_page.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ def __init__(
111111
self, parent: ChannelOwner, type: str, guid: str, initializer: Dict
112112
) -> None:
113113
super().__init__(parent, type, guid, initializer)
114-
self._browser_context: BrowserContext = None # type: ignore
114+
self._browser_context: BrowserContext = parent
115115
self.accessibility = Accessibility(self._channel)
116116
self.keyboard = Keyboard(self._channel)
117117
self.mouse = Mouse(self._channel)
@@ -126,7 +126,9 @@ def __init__(
126126
self._bindings: Dict[str, Any] = {}
127127
self._routes: List[RouteHandlerEntry] = []
128128
self._owned_context: Optional["BrowserContext"] = None
129-
self._timeout_settings: TimeoutSettings = TimeoutSettings(None)
129+
self._timeout_settings: TimeoutSettings = TimeoutSettings(
130+
self._browser_context._timeout_settings
131+
)
130132
self._video: Optional[Video] = None
131133
self._opener = cast("Page", from_nullable_channel(initializer.get("opener")))
132134

@@ -217,10 +219,6 @@ def __init__(
217219
def __repr__(self) -> str:
218220
return f"<Page url={self.url!r}>"
219221

220-
def _set_browser_context(self, context: "BrowserContext") -> None:
221-
self._browser_context = context
222-
self._timeout_settings = TimeoutSettings(context._timeout_settings)
223-
224222
def _on_request_failed(
225223
self,
226224
request: Request,
@@ -271,7 +269,10 @@ def _on_worker(self, worker: "Worker") -> None:
271269

272270
def _on_close(self) -> None:
273271
self._is_closed = True
274-
self._browser_context._pages.remove(self)
272+
if self in self._browser_context._pages:
273+
self._browser_context._pages.remove(self)
274+
if self in self._browser_context._background_pages:
275+
self._browser_context._background_pages.remove(self)
275276
self.emit(Page.Events.Close)
276277

277278
def _on_crash(self) -> None:

0 commit comments

Comments
 (0)