add source param in CDP messages

This commit is contained in:
Tommy D. Rossi
2026-01-26 13:07:59 +01:00
parent dc771ddc1d
commit 4d2606253b
5 changed files with 24 additions and 8 deletions
+6
View File
@@ -600,6 +600,12 @@ async function handleCommand(msg: ExtensionCommandMessage): Promise<any> {
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) {
+7 -7
View File
@@ -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()) {
+7 -1
View File
@@ -73,7 +73,13 @@ export class CDPSession implements ICDPSession {
params?: ProtocolMapping.Commands[K]['paramsType'][0],
): Promise<ProtocolMapping.Commands[K]['returnType']> {
const id = ++this.messageId
const message: Record<string, unknown> = { 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
}
+3
View File
@@ -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<T extends keyof ProtocolMapping.Commands> = {
id: number;
sessionId?: string;
method: T;
params?: ProtocolMapping.Commands[T]['paramsType'][0];
source?: CDPCommandSource;
};
export type CDPCommand = {
+1
View File
@@ -11,6 +11,7 @@ type ForwardCDPCommand =
method: K
sessionId?: string
params?: ProtocolMapping.Commands[K]['paramsType'][0]
source?: 'playwriter'
}
}
}[keyof ProtocolMapping.Commands]