chore: enable _client for Chrome BiDi (#10688)

This commit is contained in:
Nikolay Vitkov 2023-08-04 15:09:10 +02:00 committed by GitHub
parent f4c711e25b
commit 512a0f2a9d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 39 additions and 7 deletions

View File

@ -4,9 +4,8 @@ import ProtocolMapping from 'devtools-protocol/types/protocol-mapping.js';
import {WaitForOptions} from '../../api/Page.js';
import {assert} from '../../util/assert.js';
import {Deferred} from '../../util/Deferred.js';
import type {CDPSession, Connection as CDPConnection} from '../Connection.js';
import {CDPSession, Connection as CDPConnection} from '../Connection.js';
import {ProtocolError, TargetCloseError, TimeoutError} from '../Errors.js';
import {EventEmitter} from '../EventEmitter.js';
import {PuppeteerLifeCycleEvent} from '../LifecycleWatcher.js';
import {getPageContent, setPageContent, waitWithTimeout} from '../util.js';
@ -44,7 +43,7 @@ export const cdpSessions = new Map<string, CDPSessionWrapper>();
/**
* @internal
*/
export class CDPSessionWrapper extends EventEmitter implements CDPSession {
export class CDPSessionWrapper extends CDPSession {
#context: BrowsingContext;
#sessionId = Deferred.create<string>();
#detached = false;
@ -70,11 +69,11 @@ export class CDPSessionWrapper extends EventEmitter implements CDPSession {
}
}
connection(): CDPConnection | undefined {
override connection(): CDPConnection | undefined {
return undefined;
}
async send<T extends keyof ProtocolMapping.Commands>(
override async send<T extends keyof ProtocolMapping.Commands>(
method: T,
...paramArgs: ProtocolMapping.Commands[T]['paramsType']
): Promise<ProtocolMapping.Commands[T]['returnType']> {
@ -92,7 +91,7 @@ export class CDPSessionWrapper extends EventEmitter implements CDPSession {
return result.result;
}
async detach(): Promise<void> {
override async detach(): Promise<void> {
cdpSessions.delete(this.id());
await this.#context.cdpSession.send('Target.detachFromTarget', {
sessionId: this.id(),
@ -100,7 +99,7 @@ export class CDPSessionWrapper extends EventEmitter implements CDPSession {
this.#detached = true;
}
id(): string {
override id(): string {
const val = this.#sessionId.value();
return val instanceof Error || val === undefined ? '' : val;
}

View File

@ -19,6 +19,7 @@ import * as Bidi from 'chromium-bidi/lib/cjs/protocol/protocol.js';
import {ElementHandle} from '../../api/ElementHandle.js';
import {Frame as BaseFrame} from '../../api/Frame.js';
import {Deferred} from '../../util/Deferred.js';
import {CDPSession} from '../Connection.js';
import {UTILITY_WORLD_NAME} from '../FrameManager.js';
import {PuppeteerLifeCycleEvent} from '../LifecycleWatcher.js';
import {TimeoutSettings} from '../TimeoutSettings.js';
@ -74,6 +75,10 @@ export class Frame extends BaseFrame {
context.setFrame(this);
}
override _client(): CDPSession {
return this.context().cdpSession;
}
override mainRealm(): Sandbox {
return this.sandboxes[MAIN_SANDBOX];
}

View File

@ -132,6 +132,10 @@ export class Page extends PageBase {
#browsingContext: BrowsingContext;
#browserContext: BrowserContext;
_client(): CDPSession {
return this.mainFrame().context().cdpSession;
}
constructor(
browsingContext: BrowsingContext,
browserContext: BrowserContext

View File

@ -1193,6 +1193,18 @@
"parameters": ["webDriverBiDi"],
"expectations": ["PASS"]
},
{
"testIdPattern": "[page.spec] Page Page.close should set the page close state",
"platforms": ["darwin", "linux", "win32"],
"parameters": ["webDriverBiDi"],
"expectations": ["PASS"]
},
{
"testIdPattern": "[page.spec] Page Page.close should terminate network waiters",
"platforms": ["darwin", "linux", "win32"],
"parameters": ["webDriverBiDi"],
"expectations": ["PASS"]
},
{
"testIdPattern": "[page.spec] Page Page.close should terminate network waiters",
"platforms": ["darwin", "linux", "win32"],
@ -2177,6 +2189,12 @@
"parameters": ["chrome", "webDriverBiDi"],
"expectations": ["PASS"]
},
{
"testIdPattern": "[frame.spec] Frame specs Frame.client should return the client instance",
"platforms": ["darwin", "linux", "win32"],
"parameters": ["chrome", "webDriverBiDi"],
"expectations": ["PASS"]
},
{
"testIdPattern": "[frame.spec] Frame specs Frame.evaluate should throw for detached frames",
"platforms": ["darwin", "linux", "win32"],
@ -3203,6 +3221,12 @@
"parameters": ["cdp", "firefox"],
"expectations": ["SKIP"]
},
{
"testIdPattern": "[page.spec] Page Page.client should return the client instance",
"platforms": ["darwin", "linux", "win32"],
"parameters": ["chrome", "webDriverBiDi"],
"expectations": ["PASS"]
},
{
"testIdPattern": "[page.spec] Page Page.close should not be visible in browser.pages",
"platforms": ["darwin", "linux", "win32"],