diff --git a/extension/src/background.ts b/extension/src/background.ts index d604dbb..f9b2a1d 100644 --- a/extension/src/background.ts +++ b/extension/src/background.ts @@ -600,6 +600,12 @@ async function handleCommand(msg: ExtensionCommandMessage): Promise { const debuggee = targetTabId ? { tabId: targetTabId } : undefined + // TODO disable network things? + // if (msg.params.method === 'Network.enable' && msg.params.source !== 'playwriter') { + // logger.debug('Skipping Network.enable from non-playwriter CDP client:', msg.params.sessionId) + // return {} + // } + switch (msg.params.method) { case 'Runtime.enable': { if (!debuggee) { diff --git a/playwriter/src/cdp-relay.ts b/playwriter/src/cdp-relay.ts index b9fd938..f78aefa 100644 --- a/playwriter/src/cdp-relay.ts +++ b/playwriter/src/cdp-relay.ts @@ -267,7 +267,7 @@ export async function startPlayWriterCDPRelayServer({ port = 19988, host = '127. } } - async function routeCdpCommand({ method, params, sessionId }: { method: string; params: any; sessionId?: string }) { + async function routeCdpCommand({ method, params, sessionId, source }: { method: string; params: any; sessionId?: string; source?: 'playwriter' }) { switch (method) { case 'Browser.getVersion': { return { @@ -349,14 +349,14 @@ export async function startPlayWriterCDPRelayServer({ port = 19988, host = '127. case 'Target.createTarget': { return await sendToExtension({ method: 'forwardCDPCommand', - params: { method, params } + params: { method, params, source } }) } case 'Target.closeTarget': { return await sendToExtension({ method: 'forwardCDPCommand', - params: { method, params } + params: { method, params, source } }) } @@ -386,7 +386,7 @@ export async function startPlayWriterCDPRelayServer({ port = 19988, host = '127. const result = await sendToExtension({ method: 'forwardCDPCommand', - params: { sessionId, method, params } + params: { sessionId, method, params, source } }) await contextCreatedPromise @@ -397,7 +397,7 @@ export async function startPlayWriterCDPRelayServer({ port = 19988, host = '127. return await sendToExtension({ method: 'forwardCDPCommand', - params: { sessionId, method, params } + params: { sessionId, method, params, source } }) } @@ -582,7 +582,7 @@ export async function startPlayWriterCDPRelayServer({ port = 19988, host = '127. return } - const { id, sessionId, method, params } = message + const { id, sessionId, method, params, source } = message logCdpMessage({ direction: 'from-playwright', @@ -607,7 +607,7 @@ export async function startPlayWriterCDPRelayServer({ port = 19988, host = '127. } try { - const result: any = await routeCdpCommand({ method, params, sessionId }) + const result: any = await routeCdpCommand({ method, params, sessionId, source }) if (method === 'Target.setAutoAttach' && !sessionId) { for (const target of connectedTargets.values()) { diff --git a/playwriter/src/cdp-session.ts b/playwriter/src/cdp-session.ts index 4edda2e..a171221 100644 --- a/playwriter/src/cdp-session.ts +++ b/playwriter/src/cdp-session.ts @@ -73,7 +73,13 @@ export class CDPSession implements ICDPSession { params?: ProtocolMapping.Commands[K]['paramsType'][0], ): Promise { const id = ++this.messageId - const message: Record = { id, method, params } + const message: { + id: number + method: K + params?: ProtocolMapping.Commands[K]['paramsType'][0] + sessionId?: string + source?: 'playwriter' + } = { id, method, params, source: 'playwriter' } if (this.sessionId) { message.sessionId = this.sessionId } diff --git a/playwriter/src/cdp-types.ts b/playwriter/src/cdp-types.ts index 6b8e477..3b5b2a8 100644 --- a/playwriter/src/cdp-types.ts +++ b/playwriter/src/cdp-types.ts @@ -1,11 +1,14 @@ import type { Protocol } from 'devtools-protocol'; import type { ProtocolMapping } from 'devtools-protocol/types/protocol-mapping.js'; +export type CDPCommandSource = 'playwriter'; + export type CDPCommandFor = { id: number; sessionId?: string; method: T; params?: ProtocolMapping.Commands[T]['paramsType'][0]; + source?: CDPCommandSource; }; export type CDPCommand = { diff --git a/playwriter/src/protocol.ts b/playwriter/src/protocol.ts index f86330a..376f203 100644 --- a/playwriter/src/protocol.ts +++ b/playwriter/src/protocol.ts @@ -11,6 +11,7 @@ type ForwardCDPCommand = method: K sessionId?: string params?: ProtocolMapping.Commands[K]['paramsType'][0] + source?: 'playwriter' } } }[keyof ProtocolMapping.Commands]