Update references to DevTools protocol definition in V8
Bug: v8:9247
Change-Id: I0659eafb062be24777c5fd507c9749c5cfdc79a9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1665929
Reviewed-by: Joel Einbinder <einbinder@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#672427}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 022ef24f1d055234c33bdcede7c3eef79bbd631e
diff --git a/scripts/compile_frontend.py b/scripts/compile_frontend.py
index da85cb7..2b80a77 100755
--- a/scripts/compile_frontend.py
+++ b/scripts/compile_frontend.py
@@ -68,32 +68,32 @@
return output.strip().replace('\\', '\\\\')
-scripts_path = path.dirname(path.abspath(__file__))
-devtools_path = path.dirname(scripts_path)
-inspector_path = path.join(path.dirname(devtools_path), 'core', 'inspector')
+SCRIPTS_PATH = path.dirname(path.abspath(__file__))
+DEVTOOLS_PATH = path.dirname(SCRIPTS_PATH)
+INSPECTOR_PATH = path.join(path.dirname(DEVTOOLS_PATH), 'core', 'inspector')
# TODO(dgozman): move these checks to v8.
-v8_inspector_path = path.normpath(path.join(path.dirname(devtools_path), os.pardir, os.pardir, os.pardir, 'v8', 'src', 'inspector'))
-devtools_frontend_path = path.join(devtools_path, 'front_end')
-global_externs_file = to_platform_path(path.join(devtools_frontend_path, 'externs.js'))
-protocol_externs_file = path.join(devtools_frontend_path, 'protocol_externs.js')
-runtime_file = to_platform_path(path.join(devtools_frontend_path, 'Runtime.js'))
+V8_INCLUDE_PATH = path.normpath(path.join(path.dirname(DEVTOOLS_PATH), os.pardir, os.pardir, os.pardir, 'v8', 'include'))
+DEVTOOLS_FRONTEND_PATH = path.join(DEVTOOLS_PATH, 'front_end')
+GLOBAL_EXTERNS_FILE = to_platform_path(path.join(DEVTOOLS_FRONTEND_PATH, 'externs.js'))
+DEFAULT_PROTOCOL_EXTERNS_FILE = path.join(DEVTOOLS_FRONTEND_PATH, 'protocol_externs.js')
+RUNTIME_FILE = to_platform_path(path.join(DEVTOOLS_FRONTEND_PATH, 'Runtime.js'))
-closure_compiler_jar = to_platform_path(path.join(scripts_path, 'closure', 'compiler.jar'))
-closure_runner_jar = to_platform_path(path.join(scripts_path, 'closure', 'closure_runner', 'closure_runner.jar'))
-jsdoc_validator_jar = to_platform_path(path.join(scripts_path, 'jsdoc_validator', 'jsdoc_validator.jar'))
+CLOSURE_COMPILER_JAR = to_platform_path(path.join(SCRIPTS_PATH, 'closure', 'compiler.jar'))
+CLOSURE_RUNNER_JAR = to_platform_path(path.join(SCRIPTS_PATH, 'closure', 'closure_runner', 'closure_runner.jar'))
+JSDOC_VALIDATOR_JAR = to_platform_path(path.join(SCRIPTS_PATH, 'jsdoc_validator', 'jsdoc_validator.jar'))
-type_checked_jsdoc_tags_list = ['param', 'return', 'type', 'enum']
-type_checked_jsdoc_tags_or = '|'.join(type_checked_jsdoc_tags_list)
+TYPE_CHECKED_JSDOC_TAGS_LIST = ['param', 'return', 'type', 'enum']
+TYPE_CHECKED_JSDOC_TAGS_OR = '|'.join(TYPE_CHECKED_JSDOC_TAGS_LIST)
# Basic regex for invalid JsDoc types: an object type name ([A-Z][_A-Za-z0-9.]+[A-Za-z0-9]) not preceded by '!', '?', ':' (this, new), or '.' (object property).
-invalid_type_regex = re.compile(r'@(?:' + type_checked_jsdoc_tags_or +
+INVALID_TYPE_REGEX = re.compile(r'@(?:' + TYPE_CHECKED_JSDOC_TAGS_OR +
r')\s*\{.*(?<![!?:._A-Za-z0-9])([A-Z][_A-Za-z0-9.]+[A-Za-z0-9])[^/]*\}')
-invalid_type_designator_regex = re.compile(r'@(?:' + type_checked_jsdoc_tags_or + r')\s*.*(?<![{: ])([?!])=?\}')
-invalid_non_object_type_regex = re.compile(r'@(?:' + type_checked_jsdoc_tags_or + r')\s*\{.*(![a-z]+)[^/]*\}')
-error_warning_regex = re.compile(r'WARNING|ERROR')
-loaded_css_regex = re.compile(r'(?:registerRequiredCSS|WebInspector\.View\.createStyleElement)\s*\(\s*"(.+)"\s*\)')
+INVALID_TYPE_DESIGNATOR_REGEX = re.compile(r'@(?:' + TYPE_CHECKED_JSDOC_TAGS_OR + r')\s*.*(?<![{: ])([?!])=?\}')
+INVALID_NON_OBJECT_TYPE_REGEX = re.compile(r'@(?:' + TYPE_CHECKED_JSDOC_TAGS_OR + r')\s*\{.*(![a-z]+)[^/]*\}')
+ERROR_WARNING_REGEX = re.compile(r'WARNING|ERROR')
+LOADED_CSS_REGEX = re.compile(r'(?:registerRequiredCSS|WebInspector\.View\.createStyleElement)\s*\(\s*"(.+)"\s*\)')
-java_build_regex = re.compile(r'\w+ version "(\d+)\.(\d+)')
+JAVA_BUILD_REGEX = re.compile(r'\w+ version "(\d+)\.(\d+)')
def log_error(message):
@@ -107,7 +107,7 @@
sys.excepthook = error_excepthook
-application_descriptors = [
+APPLICATION_DESCRIPTORS = [
'inspector',
'toolbox',
'integration_test_runner',
@@ -115,7 +115,7 @@
'heap_snapshot_worker',
]
-skipped_namespaces = {
+SKIPPED_NAMESPACES = {
'Console', # Closure uses Console as a namespace item so we cannot override it right now.
'Gonzales', # third party module defined in front_end/externs.js
'Terminal', # third party module defined in front_end/externs.js
@@ -123,7 +123,7 @@
def has_errors(output):
- return re.search(error_warning_regex, output) != None
+ return re.search(ERROR_WARNING_REGEX, output) is not None
class JSDocChecker:
@@ -146,7 +146,7 @@
file_list.write('\n'.join(files))
finally:
file_list.close()
- proc = popen(self._java_exec + ['-jar', jsdoc_validator_jar, '--files-list-name', to_platform_path_exact(file_list.name)])
+ proc = popen(self._java_exec + ['-jar', JSDOC_VALIDATOR_JAR, '--files-list-name', to_platform_path_exact(file_list.name)])
(out, _) = proc.communicate()
if out:
print('JSDoc validator output:%s%s' % (os.linesep, out))
@@ -169,30 +169,30 @@
' ' * error_position + '^', os.linesep)
known_css = {}
- match = re.search(invalid_type_regex, line)
+ match = re.search(INVALID_TYPE_REGEX, line)
if match:
print_error('Type "%s" nullability not marked explicitly with "?" (nullable) or "!" (non-nullable)' % match.group(1),
match.start(1))
self._error_found = True
- match = re.search(invalid_non_object_type_regex, line)
+ match = re.search(INVALID_NON_OBJECT_TYPE_REGEX, line)
if match:
print_error('Non-object type explicitly marked with "!" (non-nullable), which is the default and should be omitted',
match.start(1))
self._error_found = True
- match = re.search(invalid_type_designator_regex, line)
+ match = re.search(INVALID_TYPE_DESIGNATOR_REGEX, line)
if match:
print_error('Type nullability indicator misplaced, should precede type', match.start(1))
self._error_found = True
- match = re.search(loaded_css_regex, line)
+ match = re.search(LOADED_CSS_REGEX, line)
if match:
- file = path.join(devtools_frontend_path, match.group(1))
- exists = known_css.get(file)
+ css_file = path.join(DEVTOOLS_FRONTEND_PATH, match.group(1))
+ exists = known_css.get(css_file)
if exists is None:
- exists = path.isfile(file)
- known_css[file] = exists
+ exists = path.isfile(css_file)
+ known_css[css_file] = exists
if not exists:
print_error('Dynamically loaded CSS stylesheet is missing in the source tree', match.start(1))
self._error_found = True
@@ -212,7 +212,7 @@
is_ok = False
java_version_out, _ = popen([java_path, '-version']).communicate()
# pylint: disable=E1103
- match = re.search(java_build_regex, java_version_out)
+ match = re.search(JAVA_BUILD_REGEX, java_version_out)
if match:
major = int(match.group(1))
minor = int(match.group(2))
@@ -268,18 +268,18 @@
return errors_found
-def prepare_closure_frontend_compile(temp_devtools_path, descriptors, namespace_externs_path):
+def prepare_closure_frontend_compile(temp_devtools_path, descriptors, namespace_externs_path, protocol_externs_file):
temp_frontend_path = path.join(temp_devtools_path, 'front_end')
- checker = dependency_preprocessor.DependencyPreprocessor(descriptors, temp_frontend_path, devtools_frontend_path)
+ checker = dependency_preprocessor.DependencyPreprocessor(descriptors, temp_frontend_path, DEVTOOLS_FRONTEND_PATH)
checker.enforce_dependencies()
command = common_closure_args + [
'--externs',
- to_platform_path(global_externs_file),
+ to_platform_path(GLOBAL_EXTERNS_FILE),
'--externs',
namespace_externs_path,
'--js',
- runtime_file,
+ RUNTIME_FILE,
]
all_files = descriptors.all_compiled_files()
@@ -289,7 +289,7 @@
if "InspectorBackend.js" in file:
args.extend(['--js', protocol_externs_file])
command += args
- command = [arg.replace(devtools_frontend_path, temp_frontend_path) for arg in command]
+ command = [arg.replace(DEVTOOLS_FRONTEND_PATH, temp_frontend_path) for arg in command]
compiler_args_file = tempfile.NamedTemporaryFile(mode='wt', delete=False)
try:
compiler_args_file.write('devtools_frontend %s' % (' '.join(command)))
@@ -311,7 +311,7 @@
return ''.join(x.title() for x in components)
all_namespaces = [map_module_to_namespace(module) for module in modules_by_name]
- namespaces = [namespace for namespace in all_namespaces if namespace not in skipped_namespaces]
+ namespaces = [namespace for namespace in all_namespaces if namespace not in SKIPPED_NAMESPACES]
namespaces.sort()
namespace_externs_file = tempfile.NamedTemporaryFile(mode='wt', delete=False)
try:
@@ -325,7 +325,7 @@
def main():
- global protocol_externs_file
+ protocol_externs_file = DEFAULT_PROTOCOL_EXTERNS_FILE
errors_found = False
parser = argparse.ArgumentParser()
parser.add_argument('--protocol-externs-file')
@@ -333,11 +333,10 @@
if args.protocol_externs_file:
protocol_externs_file = args.protocol_externs_file
else:
- generate_protocol_externs.generate_protocol_externs(protocol_externs_file,
- path.join(inspector_path, 'browser_protocol.pdl'),
- path.join(v8_inspector_path, 'js_protocol.pdl'))
- loader = modular_build.DescriptorLoader(devtools_frontend_path)
- descriptors = loader.load_applications(application_descriptors)
+ generate_protocol_externs.generate_protocol_externs(protocol_externs_file, path.join(
+ INSPECTOR_PATH, 'browser_protocol.pdl'), path.join(V8_INCLUDE_PATH, 'js_protocol.pdl'))
+ loader = modular_build.DescriptorLoader(DEVTOOLS_FRONTEND_PATH)
+ descriptors = loader.load_applications(APPLICATION_DESCRIPTORS)
modules_by_name = descriptors.modules
java_exec = find_java()
@@ -346,18 +345,22 @@
print 'Compiling frontend...'
temp_devtools_path = tempfile.mkdtemp()
namespace_externs_path = generate_namespace_externs(modules_by_name)
- compiler_args_file_path = prepare_closure_frontend_compile(temp_devtools_path, descriptors, namespace_externs_path)
+ compiler_args_file_path = prepare_closure_frontend_compile(temp_devtools_path, descriptors, namespace_externs_path,
+ protocol_externs_file)
frontend_compile_proc = popen(
- java_exec + ['-jar', closure_runner_jar, '--compiler-args-file', to_platform_path_exact(compiler_args_file_path)])
+ java_exec + ['-jar', CLOSURE_RUNNER_JAR, '--compiler-args-file',
+ to_platform_path_exact(compiler_args_file_path)])
print 'Compiling devtools_compatibility.js...'
- closure_compiler_command = java_exec + ['-jar', closure_compiler_jar] + common_closure_args
+ closure_compiler_command = java_exec + ['-jar', CLOSURE_COMPILER_JAR] + common_closure_args
devtools_js_compile_command = closure_compiler_command + [
- '--externs', to_platform_path(global_externs_file), '--externs',
- to_platform_path(path.join(devtools_frontend_path, 'host', 'InspectorFrontendHostAPI.js')),
- '--jscomp_off=externsValidation', '--js', to_platform_path(path.join(devtools_frontend_path, 'devtools_compatibility.js'))
+ '--externs',
+ to_platform_path(GLOBAL_EXTERNS_FILE), '--externs',
+ to_platform_path(path.join(DEVTOOLS_FRONTEND_PATH, 'host', 'InspectorFrontendHostAPI.js')),
+ '--jscomp_off=externsValidation', '--js',
+ to_platform_path(path.join(DEVTOOLS_FRONTEND_PATH, 'devtools_compatibility.js'))
]
devtools_js_compile_proc = popen(devtools_js_compile_command)