mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
fix: avoid double subscription to frame manager in Page (#11091)
This commit is contained in:
parent
9c0c299f0b
commit
5887649891
@ -246,7 +246,16 @@ export class CdpPage extends Page {
|
|||||||
this.#coverage = new Coverage(client);
|
this.#coverage = new Coverage(client);
|
||||||
this.#viewport = null;
|
this.#viewport = null;
|
||||||
|
|
||||||
this.#setupEventListeners();
|
for (const [eventName, handler] of this.#frameManagerHandlers) {
|
||||||
|
this.#frameManager.on(eventName, handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [eventName, handler] of this.#networkManagerHandlers) {
|
||||||
|
// TODO: Remove any.
|
||||||
|
this.#frameManager.networkManager.on(eventName, handler as any);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.#setupPrimaryTargetListeners();
|
||||||
|
|
||||||
this.#tabSession?.on(CDPSessionEvent.Swapped, async newSession => {
|
this.#tabSession?.on(CDPSessionEvent.Swapped, async newSession => {
|
||||||
this.#client = newSession;
|
this.#client = newSession;
|
||||||
@ -264,7 +273,7 @@ export class CdpPage extends Page {
|
|||||||
this.#tracing.updateClient(newSession);
|
this.#tracing.updateClient(newSession);
|
||||||
this.#coverage.updateClient(newSession);
|
this.#coverage.updateClient(newSession);
|
||||||
await this.#frameManager.swapFrameTree(newSession);
|
await this.#frameManager.swapFrameTree(newSession);
|
||||||
this.#setupEventListeners();
|
this.#setupPrimaryTargetListeners();
|
||||||
});
|
});
|
||||||
this.#tabSession?.on(CDPSessionEvent.Ready, session => {
|
this.#tabSession?.on(CDPSessionEvent.Ready, session => {
|
||||||
assert(session instanceof CdpCDPSession);
|
assert(session instanceof CdpCDPSession);
|
||||||
@ -278,27 +287,22 @@ export class CdpPage extends Page {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#setupEventListeners() {
|
/**
|
||||||
|
* Sets up listeners for the primary target. The primary target can change
|
||||||
|
* during a navigation to a prerended page.
|
||||||
|
*/
|
||||||
|
#setupPrimaryTargetListeners() {
|
||||||
this.#client.on(CDPSessionEvent.Ready, this.#onAttachedToTarget);
|
this.#client.on(CDPSessionEvent.Ready, this.#onAttachedToTarget);
|
||||||
|
|
||||||
this.#target
|
|
||||||
._targetManager()
|
|
||||||
.on(TargetManagerEvent.TargetGone, this.#onDetachedFromTarget);
|
|
||||||
|
|
||||||
for (const [eventName, handler] of this.#frameManagerHandlers) {
|
|
||||||
this.#frameManager.on(eventName, handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const [eventName, handler] of this.#networkManagerHandlers) {
|
|
||||||
// TODO: Remove any.
|
|
||||||
this.#frameManager.networkManager.on(eventName, handler as any);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const [eventName, handler] of this.#sessionHandlers) {
|
for (const [eventName, handler] of this.#sessionHandlers) {
|
||||||
// TODO: Remove any.
|
// TODO: Remove any.
|
||||||
this.#client.on(eventName, handler as any);
|
this.#client.on(eventName, handler as any);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.#target
|
||||||
|
._targetManager()
|
||||||
|
.on(TargetManagerEvent.TargetGone, this.#onDetachedFromTarget);
|
||||||
|
|
||||||
this.#target._isClosedDeferred
|
this.#target._isClosedDeferred
|
||||||
.valueOrThrow()
|
.valueOrThrow()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
Loading…
Reference in New Issue
Block a user