Skip to content

Commit d478d28

Browse files
committed
Accept object-shaped Mod domain params
1 parent 2d0dc5d commit d478d28

2 files changed

Lines changed: 52 additions & 17 deletions

File tree

python/modcdp/client/ModCDPClient.py

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -102,27 +102,30 @@ def __init__(self, client: "ModCDPClient") -> None:
102102

103103
def evaluate(
104104
self,
105-
*,
106-
expression: str,
107105
params: Mapping[str, Any] | None = None,
106+
*,
107+
expression: str | None = None,
108+
evaluate_params: Mapping[str, Any] | None = None,
108109
cdpSessionId: str | None = None,
109110
) -> AwaitableDict | AwaitableValue:
110-
payload: dict[str, Any] = {"expression": expression}
111-
if params is not None:
112-
payload["params"] = dict(params)
111+
payload: dict[str, Any] = dict(params or {})
112+
if expression is not None:
113+
payload["expression"] = expression
114+
if evaluate_params is not None:
115+
payload["params"] = dict(evaluate_params)
113116
if cdpSessionId is not None:
114117
payload["cdpSessionId"] = cdpSessionId
115118
return self._client._send_command("Mod.evaluate", payload)
116119

117120
def addCustomCommand(
118121
self,
119-
name: str,
122+
name: str | Mapping[str, Any],
120123
*,
121124
params_schema: Any | None = None,
122125
result_schema: Any | None = None,
123126
expression: str | None = None,
124127
) -> AwaitableDict | AwaitableValue:
125-
payload: dict[str, Any] = {"name": name}
128+
payload: dict[str, Any] = dict(name) if isinstance(name, Mapping) else {"name": name}
126129
if params_schema is not None:
127130
payload["params_schema"] = params_schema
128131
if result_schema is not None:
@@ -131,20 +134,30 @@ def addCustomCommand(
131134
payload["expression"] = expression
132135
return self._client._send_command("Mod.addCustomCommand", payload)
133136

134-
def addCustomEvent(self, name: str, *, event_schema: Any | None = None) -> AwaitableDict | AwaitableValue:
135-
payload: dict[str, Any] = {"name": name}
137+
def addCustomEvent(
138+
self,
139+
name: str | Mapping[str, Any],
140+
*,
141+
event_schema: Any | None = None,
142+
) -> AwaitableDict | AwaitableValue:
143+
payload: dict[str, Any] = dict(name) if isinstance(name, Mapping) else {"name": name}
136144
if event_schema is not None:
137145
payload["event_schema"] = event_schema
138146
return self._client._send_command("Mod.addCustomEvent", payload)
139147

140148
def addMiddleware(
141149
self,
150+
params: Mapping[str, Any] | None = None,
142151
*,
143-
phase: str,
144-
expression: str,
152+
phase: str | None = None,
153+
expression: str | None = None,
145154
name: str | None = None,
146155
) -> AwaitableDict | AwaitableValue:
147-
payload: dict[str, Any] = {"phase": phase, "expression": expression}
156+
payload: dict[str, Any] = dict(params or {})
157+
if phase is not None:
158+
payload["phase"] = phase
159+
if expression is not None:
160+
payload["expression"] = expression
148161
if name is not None:
149162
payload["name"] = name
150163
return self._client._send_command("Mod.addMiddleware", payload)

python/tests/test_ModCDPClientRoutedDefaultOverrides.py

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,19 @@ def test_service_worker_routed_standard_cdp_commands_and_events_can_be_transform
120120
self.assertTrue(raw_target_infos)
121121
self.assertFalse(any("tabId" in target_info for target_info in raw_target_infos))
122122

123-
cdp.Mod.addCustomCommand("Custom.tabIdFromTargetId", expression=TAB_ID_FROM_TARGET_ID_COMMAND)
124-
cdp.Mod.addMiddleware(name="*", phase="response", expression=ADD_TAB_ID_MIDDLEWARE)
123+
cdp.Mod.addCustomCommand(
124+
{
125+
"name": "Custom.tabIdFromTargetId",
126+
"expression": TAB_ID_FROM_TARGET_ID_COMMAND,
127+
}
128+
)
129+
cdp.Mod.addMiddleware(
130+
{
131+
"name": "*",
132+
"phase": "response",
133+
"expression": ADD_TAB_ID_MIDDLEWARE,
134+
}
135+
)
125136
middleware_targets = cdp.send("Target.getTargets")
126137
self.assertTrue(
127138
any(
@@ -130,8 +141,19 @@ def test_service_worker_routed_standard_cdp_commands_and_events_can_be_transform
130141
)
131142
)
132143

133-
cdp.Mod.addMiddleware(name="*", phase="event", expression=ADD_TAB_ID_MIDDLEWARE)
134-
cdp.Mod.addCustomCommand("Target.getTargets", expression=GET_TARGETS_OVERRIDE)
144+
cdp.Mod.addMiddleware(
145+
{
146+
"name": "*",
147+
"phase": "event",
148+
"expression": ADD_TAB_ID_MIDDLEWARE,
149+
}
150+
)
151+
cdp.Mod.addCustomCommand(
152+
{
153+
"name": "Target.getTargets",
154+
"expression": GET_TARGETS_OVERRIDE,
155+
}
156+
)
135157

136158
enriched_targets = cdp.send("Target.getTargets")
137159
enriched_target_infos = target_infos_from_result(enriched_targets)
@@ -154,7 +176,7 @@ def test_service_worker_routed_standard_cdp_commands_and_events_can_be_transform
154176
self.assertTrue(any(root.get("kind") == "document" for root in roots.values()))
155177
self.assertTrue(any(context.get("world") == "piercer" for context in contexts.values()))
156178

157-
cdp.Mod.addCustomEvent("Target.targetCreated")
179+
cdp.Mod.addCustomEvent({"name": "Target.targetCreated"})
158180
transformed_events: Queue[dict] = Queue()
159181

160182
def on_target_created(params):

0 commit comments

Comments
 (0)