Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(270)

Unified Diff: headless/lib/browser/devtools_api/client_api_generator.py

Issue 2902583002: Add some closureised JS bindings for DevTools for use by headless embedder (Closed)
Patch Set: Refactored the test Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: headless/lib/browser/devtools_api/client_api_generator.py
diff --git a/headless/lib/browser/devtools_api/client_api_generator.py b/headless/lib/browser/devtools_api/client_api_generator.py
index 6b9936d6aafe2488bcc4f5a84177bb1e8471c014..3763110c8b7d3335acdd334c0ff9e68dacd1198a 100644
--- a/headless/lib/browser/devtools_api/client_api_generator.py
+++ b/headless/lib/browser/devtools_api/client_api_generator.py
@@ -120,6 +120,7 @@ def PatchFullQualifiedRefs(json_api):
def CreateUserTypeDefinition(domain, type):
namespace = CamelCaseToHackerStyle(domain['domain'])
return {
+ 'js_type': '!chromium.DevTools.%s.%s' % (domain['domain'], type['id']),
'return_type': 'std::unique_ptr<headless::%s::%s>' % (
namespace, type['id']),
'pass_type': 'std::unique_ptr<headless::%s::%s>' % (
@@ -137,6 +138,7 @@ def CreateUserTypeDefinition(domain, type):
def CreateEnumTypeDefinition(domain_name, type):
namespace = CamelCaseToHackerStyle(domain_name)
return {
+ 'js_type': '!chromium.DevTools.%s.%s' % (domain_name, type['id']),
'return_type': 'headless::%s::%s' % (namespace, type['id']),
'pass_type': 'headless::%s::%s' % (namespace, type['id']),
'to_raw_type': '%s',
@@ -151,6 +153,7 @@ def CreateEnumTypeDefinition(domain_name, type):
def CreateObjectTypeDefinition():
return {
+ 'js_type': '%s',
'return_type': 'std::unique_ptr<base::DictionaryValue>',
'pass_type': 'std::unique_ptr<base::DictionaryValue>',
'to_raw_type': '*%s',
@@ -166,6 +169,7 @@ def CreateObjectTypeDefinition():
def WrapObjectTypeDefinition(type):
id = type.get('id', 'base::Value')
return {
+ 'js_type': '!Object',
'return_type': 'std::unique_ptr<%s>' % id,
'pass_type': 'std::unique_ptr<%s>' % id,
'to_raw_type': '*%s',
@@ -180,6 +184,7 @@ def WrapObjectTypeDefinition(type):
def CreateAnyTypeDefinition():
return {
+ 'js_type': '*',
'return_type': 'std::unique_ptr<base::Value>',
'pass_type': 'std::unique_ptr<base::Value>',
'to_raw_type': '*%s',
@@ -194,6 +199,7 @@ def CreateAnyTypeDefinition():
def CreateStringTypeDefinition():
return {
+ 'js_type': 'string',
'return_type': 'std::string',
'pass_type': 'const std::string&',
'to_pass_type': '%s',
@@ -212,7 +218,13 @@ def CreatePrimitiveTypeDefinition(type):
'integer': 'int',
'boolean': 'bool',
}
+ js_typedefs = {
+ 'number': 'number',
+ 'integer': 'number',
+ 'boolean': 'boolean',
+ }
return {
+ 'js_type': js_typedefs[type],
'return_type': typedefs[type],
'pass_type': typedefs[type],
'to_pass_type': '%s',
@@ -236,6 +248,7 @@ type_definitions['any'] = CreateAnyTypeDefinition()
def WrapArrayDefinition(type):
return {
+ 'js_type': '!Array.<%s>' % type['js_type'],
'return_type': 'std::vector<%s>' % type['type'],
'pass_type': 'std::vector<%s>' % type['type'],
'to_raw_type': '%s',
@@ -470,6 +483,10 @@ def GenerateDomains(jinja_env, output_dirname, json_api):
jinja_env, os.path.join(output_dirname, 'devtools', 'domains'), json_api,
'domain', ['cc', 'h'],
lambda domain_name: domain_name)
+ GeneratePerDomain(
+ jinja_env, os.path.join(output_dirname, 'devtools_js'), json_api,
+ 'domain', ['js'],
+ lambda domain_name: domain_name)
def GenerateTypes(jinja_env, output_dirname, json_api):

Powered by Google App Engine
This is Rietveld 408576698