Skip to content

Commit

Permalink
[Py] Generate new Devtools support.
Browse files Browse the repository at this point in the history
  • Loading branch information
AutomatedTester committed Oct 2, 2020
1 parent d912be8 commit f5ba665
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 14 deletions.
44 changes: 30 additions & 14 deletions py/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@ py_library(
exclude = ["generate.py"],
),
data = [
":create-cdp-srcs",
":create-cdp-srcs-84",
":create-cdp-srcs-85",
":create-cdp-srcs-86",
":find-elements",
":firefox-driver-prefs",
":get-attribute",
Expand Down Expand Up @@ -125,28 +127,42 @@ py_binary(
)

genrule(
name = "create-cdp-srcs",
name = "create-cdp-srcs-84",
srcs = [
":browser_protocol",
":js_protocol",
"//common/devtools/chromium/v84:browser_protocol",
"//common/devtools/chromium/v84:js_protocol",
],
outs = ["selenium/webdriver/common/devtools"],
cmd = "python3 $(location :generate) $(location :browser_protocol) $(location :js_protocol) $@",
outs = ["selenium/webdriver/common/devtools/v84"],
cmd="python3 $(location :generate) $(location //common/devtools/chromium/v84:browser_protocol) $(location //common/devtools/chromium/v84:js_protocol) $@",
tools = [
":generate",
],
)

copy_file(
name = "browser_protocol",
src = "//common/devtools:browser_protocol.json",
out = "browser_protocol.json",
genrule(
name="create-cdp-srcs-85",
srcs=[
"//common/devtools/chromium/v85:browser_protocol",
"//common/devtools/chromium/v85:js_protocol",
],
outs=["selenium/webdriver/common/devtools/v85"],
cmd="python3 $(location :generate) $(location //common/devtools/chromium/v85:browser_protocol) $(location //common/devtools/chromium/v85:js_protocol) $@",
tools=[
":generate",
],
)

copy_file(
name = "js_protocol",
src = "//common/devtools:js_protocol.json",
out = "js_protocol.json",
genrule(
name="create-cdp-srcs-86",
srcs=[
"//common/devtools/chromium/v86:browser_protocol",
"//common/devtools/chromium/v86:js_protocol",
],
outs=["selenium/webdriver/common/devtools/v86"],
cmd="python3 $(location :generate) $(location //common/devtools/chromium/v86:browser_protocol) $(location //common/devtools/chromium/v86:js_protocol) $@",
tools=[
":generate",
],
)

py_test_suite(
Expand Down
18 changes: 18 additions & 0 deletions py/selenium/webdriver/common/devtools/v84/util.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import typing


T_JSON_DICT = typing.Dict[str, typing.Any]
_event_parsers = dict()


def event_class(method):
''' A decorator that registers a class as an event class. '''
def decorate(cls):
_event_parsers[method] = cls
return cls
return decorate


def parse_json_event(json: T_JSON_DICT) -> typing.Any:
''' Parse a JSON dictionary into a CDP event. '''
return _event_parsers[json['method']].from_json(json['params'])
18 changes: 18 additions & 0 deletions py/selenium/webdriver/common/devtools/v85/util.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import typing


T_JSON_DICT = typing.Dict[str, typing.Any]
_event_parsers = dict()


def event_class(method):
''' A decorator that registers a class as an event class. '''
def decorate(cls):
_event_parsers[method] = cls
return cls
return decorate


def parse_json_event(json: T_JSON_DICT) -> typing.Any:
''' Parse a JSON dictionary into a CDP event. '''
return _event_parsers[json['method']].from_json(json['params'])
18 changes: 18 additions & 0 deletions py/selenium/webdriver/common/devtools/v86/util.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import typing


T_JSON_DICT = typing.Dict[str, typing.Any]
_event_parsers = dict()


def event_class(method):
''' A decorator that registers a class as an event class. '''
def decorate(cls):
_event_parsers[method] = cls
return cls
return decorate


def parse_json_event(json: T_JSON_DICT) -> typing.Any:
''' Parse a JSON dictionary into a CDP event. '''
return _event_parsers[json['method']].from_json(json['params'])

0 comments on commit f5ba665

Please sign in to comment.