summaryrefslogtreecommitdiffstats
path: root/remote/test/puppeteer/packages/puppeteer-core/src/bidi/Target.ts
diff options
context:
space:
mode:
Diffstat (limited to 'remote/test/puppeteer/packages/puppeteer-core/src/bidi/Target.ts')
-rw-r--r--remote/test/puppeteer/packages/puppeteer-core/src/bidi/Target.ts173
1 files changed, 96 insertions, 77 deletions
diff --git a/remote/test/puppeteer/packages/puppeteer-core/src/bidi/Target.ts b/remote/test/puppeteer/packages/puppeteer-core/src/bidi/Target.ts
index fb01c34638..b9d78538aa 100644
--- a/remote/test/puppeteer/packages/puppeteer-core/src/bidi/Target.ts
+++ b/remote/test/puppeteer/packages/puppeteer-core/src/bidi/Target.ts
@@ -4,48 +4,46 @@
* SPDX-License-Identifier: Apache-2.0
*/
-import type {CDPSession} from '../api/CDPSession.js';
-import type {Page} from '../api/Page.js';
import {Target, TargetType} from '../api/Target.js';
import {UnsupportedOperation} from '../common/Errors.js';
+import type {CDPSession} from '../puppeteer-core.js';
import type {BidiBrowser} from './Browser.js';
import type {BidiBrowserContext} from './BrowserContext.js';
-import {type BrowsingContext, CdpSessionWrapper} from './BrowsingContext.js';
+import type {BidiFrame} from './Frame.js';
import {BidiPage} from './Page.js';
+import type {BidiWebWorker} from './WebWorker.js';
/**
* @internal
*/
-export abstract class BidiTarget extends Target {
- protected _browserContext: BidiBrowserContext;
+export class BidiBrowserTarget extends Target {
+ #browser: BidiBrowser;
- constructor(browserContext: BidiBrowserContext) {
+ constructor(browser: BidiBrowser) {
super();
- this._browserContext = browserContext;
+ this.#browser = browser;
}
- _setBrowserContext(browserContext: BidiBrowserContext): void {
- this._browserContext = browserContext;
+ override asPage(): Promise<BidiPage> {
+ throw new UnsupportedOperation();
}
-
- override asPage(): Promise<Page> {
+ override url(): string {
+ return '';
+ }
+ override createCDPSession(): Promise<CDPSession> {
throw new UnsupportedOperation();
}
-
+ override type(): TargetType {
+ return TargetType.BROWSER;
+ }
override browser(): BidiBrowser {
- return this._browserContext.browser();
+ return this.#browser;
}
-
override browserContext(): BidiBrowserContext {
- return this._browserContext;
- }
-
- override opener(): never {
- throw new UnsupportedOperation();
+ return this.#browser.defaultBrowserContext();
}
-
- override createCDPSession(): Promise<CDPSession> {
+ override opener(): Target | undefined {
throw new UnsupportedOperation();
}
}
@@ -53,39 +51,39 @@ export abstract class BidiTarget extends Target {
/**
* @internal
*/
-export class BiDiBrowserTarget extends Target {
- #browser: BidiBrowser;
+export class BidiPageTarget extends Target {
+ #page: BidiPage;
- constructor(browser: BidiBrowser) {
+ constructor(page: BidiPage) {
super();
- this.#browser = browser;
+ this.#page = page;
}
+ override async page(): Promise<BidiPage> {
+ return this.#page;
+ }
+ override async asPage(): Promise<BidiPage> {
+ return BidiPage.from(
+ this.browserContext(),
+ this.#page.mainFrame().browsingContext
+ );
+ }
override url(): string {
- return '';
+ return this.#page.url();
}
-
- override type(): TargetType {
- return TargetType.BROWSER;
+ override createCDPSession(): Promise<CDPSession> {
+ return this.#page.createCDPSession();
}
-
- override asPage(): Promise<Page> {
- throw new UnsupportedOperation();
+ override type(): TargetType {
+ return TargetType.PAGE;
}
-
override browser(): BidiBrowser {
- return this.#browser;
+ return this.browserContext().browser();
}
-
override browserContext(): BidiBrowserContext {
- return this.#browser.defaultBrowserContext();
- }
-
- override opener(): never {
- throw new UnsupportedOperation();
+ return this.#page.browserContext();
}
-
- override createCDPSession(): Promise<CDPSession> {
+ override opener(): Target | undefined {
throw new UnsupportedOperation();
}
}
@@ -93,59 +91,80 @@ export class BiDiBrowserTarget extends Target {
/**
* @internal
*/
-export class BiDiBrowsingContextTarget extends BidiTarget {
- protected _browsingContext: BrowsingContext;
+export class BidiFrameTarget extends Target {
+ #frame: BidiFrame;
+ #page: BidiPage | undefined;
- constructor(
- browserContext: BidiBrowserContext,
- browsingContext: BrowsingContext
- ) {
- super(browserContext);
-
- this._browsingContext = browsingContext;
+ constructor(frame: BidiFrame) {
+ super();
+ this.#frame = frame;
}
+ override async page(): Promise<BidiPage> {
+ if (this.#page === undefined) {
+ this.#page = BidiPage.from(
+ this.browserContext(),
+ this.#frame.browsingContext
+ );
+ }
+ return this.#page;
+ }
+ override async asPage(): Promise<BidiPage> {
+ return BidiPage.from(this.browserContext(), this.#frame.browsingContext);
+ }
override url(): string {
- return this._browsingContext.url;
+ return this.#frame.url();
}
-
- override async createCDPSession(): Promise<CDPSession> {
- const {sessionId} = await this._browsingContext.cdpSession.send(
- 'Target.attachToTarget',
- {
- targetId: this._browsingContext.id,
- flatten: true,
- }
- );
- return new CdpSessionWrapper(this._browsingContext, sessionId);
+ override createCDPSession(): Promise<CDPSession> {
+ return this.#frame.createCDPSession();
}
-
override type(): TargetType {
return TargetType.PAGE;
}
+ override browser(): BidiBrowser {
+ return this.browserContext().browser();
+ }
+ override browserContext(): BidiBrowserContext {
+ return this.#frame.page().browserContext();
+ }
+ override opener(): Target | undefined {
+ throw new UnsupportedOperation();
+ }
}
/**
* @internal
*/
-export class BiDiPageTarget extends BiDiBrowsingContextTarget {
- #page: BidiPage;
-
- constructor(
- browserContext: BidiBrowserContext,
- browsingContext: BrowsingContext
- ) {
- super(browserContext, browsingContext);
+export class BidiWorkerTarget extends Target {
+ #worker: BidiWebWorker;
- this.#page = new BidiPage(browsingContext, browserContext, this);
+ constructor(worker: BidiWebWorker) {
+ super();
+ this.#worker = worker;
}
override async page(): Promise<BidiPage> {
- return this.#page;
+ throw new UnsupportedOperation();
}
-
- override _setBrowserContext(browserContext: BidiBrowserContext): void {
- super._setBrowserContext(browserContext);
- this.#page._setBrowserContext(browserContext);
+ override async asPage(): Promise<BidiPage> {
+ throw new UnsupportedOperation();
+ }
+ override url(): string {
+ return this.#worker.url();
+ }
+ override createCDPSession(): Promise<CDPSession> {
+ throw new UnsupportedOperation();
+ }
+ override type(): TargetType {
+ return TargetType.OTHER;
+ }
+ override browser(): BidiBrowser {
+ return this.browserContext().browser();
+ }
+ override browserContext(): BidiBrowserContext {
+ return this.#worker.frame.page().browserContext();
+ }
+ override opener(): Target | undefined {
+ throw new UnsupportedOperation();
}
}