Skip to content

Commit f5ba665

Browse files
[Py] Generate new Devtools support.
1 parent d912be8 commit f5ba665

4 files changed

Lines changed: 84 additions & 14 deletions

File tree

py/BUILD.bazel

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ py_library(
3535
exclude = ["generate.py"],
3636
),
3737
data = [
38-
":create-cdp-srcs",
38+
":create-cdp-srcs-84",
39+
":create-cdp-srcs-85",
40+
":create-cdp-srcs-86",
3941
":find-elements",
4042
":firefox-driver-prefs",
4143
":get-attribute",
@@ -125,28 +127,42 @@ py_binary(
125127
)
126128

127129
genrule(
128-
name = "create-cdp-srcs",
130+
name = "create-cdp-srcs-84",
129131
srcs = [
130-
":browser_protocol",
131-
":js_protocol",
132+
"//common/devtools/chromium/v84:browser_protocol",
133+
"//common/devtools/chromium/v84:js_protocol",
132134
],
133-
outs = ["selenium/webdriver/common/devtools"],
134-
cmd = "python3 $(location :generate) $(location :browser_protocol) $(location :js_protocol) $@",
135+
outs = ["selenium/webdriver/common/devtools/v84"],
136+
cmd="python3 $(location :generate) $(location //common/devtools/chromium/v84:browser_protocol) $(location //common/devtools/chromium/v84:js_protocol) $@",
135137
tools = [
136138
":generate",
137139
],
138140
)
139141

140-
copy_file(
141-
name = "browser_protocol",
142-
src = "//common/devtools:browser_protocol.json",
143-
out = "browser_protocol.json",
142+
genrule(
143+
name="create-cdp-srcs-85",
144+
srcs=[
145+
"//common/devtools/chromium/v85:browser_protocol",
146+
"//common/devtools/chromium/v85:js_protocol",
147+
],
148+
outs=["selenium/webdriver/common/devtools/v85"],
149+
cmd="python3 $(location :generate) $(location //common/devtools/chromium/v85:browser_protocol) $(location //common/devtools/chromium/v85:js_protocol) $@",
150+
tools=[
151+
":generate",
152+
],
144153
)
145154

146-
copy_file(
147-
name = "js_protocol",
148-
src = "//common/devtools:js_protocol.json",
149-
out = "js_protocol.json",
155+
genrule(
156+
name="create-cdp-srcs-86",
157+
srcs=[
158+
"//common/devtools/chromium/v86:browser_protocol",
159+
"//common/devtools/chromium/v86:js_protocol",
160+
],
161+
outs=["selenium/webdriver/common/devtools/v86"],
162+
cmd="python3 $(location :generate) $(location //common/devtools/chromium/v86:browser_protocol) $(location //common/devtools/chromium/v86:js_protocol) $@",
163+
tools=[
164+
":generate",
165+
],
150166
)
151167

152168
py_test_suite(
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import typing
2+
3+
4+
T_JSON_DICT = typing.Dict[str, typing.Any]
5+
_event_parsers = dict()
6+
7+
8+
def event_class(method):
9+
''' A decorator that registers a class as an event class. '''
10+
def decorate(cls):
11+
_event_parsers[method] = cls
12+
return cls
13+
return decorate
14+
15+
16+
def parse_json_event(json: T_JSON_DICT) -> typing.Any:
17+
''' Parse a JSON dictionary into a CDP event. '''
18+
return _event_parsers[json['method']].from_json(json['params'])
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import typing
2+
3+
4+
T_JSON_DICT = typing.Dict[str, typing.Any]
5+
_event_parsers = dict()
6+
7+
8+
def event_class(method):
9+
''' A decorator that registers a class as an event class. '''
10+
def decorate(cls):
11+
_event_parsers[method] = cls
12+
return cls
13+
return decorate
14+
15+
16+
def parse_json_event(json: T_JSON_DICT) -> typing.Any:
17+
''' Parse a JSON dictionary into a CDP event. '''
18+
return _event_parsers[json['method']].from_json(json['params'])
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import typing
2+
3+
4+
T_JSON_DICT = typing.Dict[str, typing.Any]
5+
_event_parsers = dict()
6+
7+
8+
def event_class(method):
9+
''' A decorator that registers a class as an event class. '''
10+
def decorate(cls):
11+
_event_parsers[method] = cls
12+
return cls
13+
return decorate
14+
15+
16+
def parse_json_event(json: T_JSON_DICT) -> typing.Any:
17+
''' Parse a JSON dictionary into a CDP event. '''
18+
return _event_parsers[json['method']].from_json(json['params'])

0 commit comments

Comments
 (0)