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

Side by Side Diff: headless/lib/browser/devtools_api/client_api_generator.py

Issue 2854823006: headless: Remove deprecated DevTools domain bindings (Closed)
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « headless/BUILD.gn ('k') | headless/lib/browser/devtools_api/client_api_generator_unittest.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2016 The Chromium Authors. All rights reserved. 1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import argparse 5 import argparse
6 import collections 6 import collections
7 import os.path 7 import os.path
8 import re 8 import re
9 import sys 9 import sys
10 try: 10 try:
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 for command in domain.get('commands', []): 437 for command in domain.get('commands', []):
438 if not 'parameters' in command: 438 if not 'parameters' in command:
439 command['parameters'] = [] 439 command['parameters'] = []
440 if not 'returns' in command: 440 if not 'returns' in command:
441 command['returns'] = [] 441 command['returns'] = []
442 for event in domain.get('events', []): 442 for event in domain.get('events', []):
443 if not 'parameters' in event: 443 if not 'parameters' in event:
444 event['parameters'] = [] 444 event['parameters'] = []
445 445
446 446
447 def Generate(jinja_env, output_dirname, json_api,
448 class_name, file_types, file_name=None):
449 if file_name is None:
450 file_name = class_name
451 EnsureDirectoryExists(output_dirname)
452 template_context = {
453 'api': json_api,
454 'join_arrays': JoinArrays,
455 'resolve_type': ResolveType,
456 'type_definition': TypeDefinition,
457 }
458 for file_type in file_types:
459 template = jinja_env.get_template('/%s_%s.template' % (
460 class_name, file_type))
461 output_file = '%s/%s.%s' % (output_dirname, file_name, file_type)
462 with open(output_file, 'w') as f:
463 f.write(template.render(template_context))
464
465
466 def GeneratePerDomain(jinja_env, output_dirname, json_api, class_name, 447 def GeneratePerDomain(jinja_env, output_dirname, json_api, class_name,
467 file_types, domain_name_to_file_name_func): 448 file_types, domain_name_to_file_name_func):
468 EnsureDirectoryExists(output_dirname) 449 EnsureDirectoryExists(output_dirname)
469 for file_type in file_types: 450 for file_type in file_types:
470 template = jinja_env.get_template('/%s_%s.template' % ( 451 template = jinja_env.get_template('/%s_%s.template' % (
471 class_name, file_type)) 452 class_name, file_type))
472 for domain in json_api['domains']: 453 for domain in json_api['domains']:
473 template_context = { 454 template_context = {
474 'domain': domain, 455 'domain': domain,
475 'resolve_type': ResolveType, 456 'resolve_type': ResolveType,
476 } 457 }
477 domain_name = CamelCaseToHackerStyle(domain['domain']) 458 domain_name = CamelCaseToHackerStyle(domain['domain'])
478 output_file = '%s/%s.%s' % (output_dirname, 459 output_file = '%s/%s.%s' % (output_dirname,
479 domain_name_to_file_name_func(domain_name), 460 domain_name_to_file_name_func(domain_name),
480 file_type) 461 file_type)
481 with open(output_file, 'w') as f: 462 with open(output_file, 'w') as f:
482 f.write(template.render(template_context)) 463 f.write(template.render(template_context))
483 464
484 465
485 def GenerateDomains(jinja_env, output_dirname, json_api): 466 def GenerateDomains(jinja_env, output_dirname, json_api):
486 GeneratePerDomain( 467 GeneratePerDomain(
487 jinja_env, os.path.join(output_dirname, 'devtools', 'domains'), json_api, 468 jinja_env, os.path.join(output_dirname, 'devtools', 'domains'), json_api,
488 'domain', ['cc', 'h'], 469 'domain', ['cc', 'h'],
489 lambda domain_name: domain_name) 470 lambda domain_name: domain_name)
490 471
491 # TODO(altimin): Remove this in 2017.
492 # Generate DOMAIN.h in the old directory for backwards compatibility.
493 GeneratePerDomain(
494 jinja_env, os.path.join(output_dirname, 'domains'), json_api,
495 'deprecated_domain', ['h'], lambda domain_name: domain_name)
496
497 472
498 def GenerateTypes(jinja_env, output_dirname, json_api): 473 def GenerateTypes(jinja_env, output_dirname, json_api):
499 # Generate forward declarations for types. 474 # Generate forward declarations for types.
500 GeneratePerDomain( 475 GeneratePerDomain(
501 jinja_env, os.path.join(output_dirname, 'devtools', 'internal'), 476 jinja_env, os.path.join(output_dirname, 'devtools', 'internal'),
502 json_api, 'domain_types_forward_declarations', ['h'], 477 json_api, 'domain_types_forward_declarations', ['h'],
503 lambda domain_name: 'types_forward_declarations_%s' % (domain_name, )) 478 lambda domain_name: 'types_forward_declarations_%s' % (domain_name, ))
504 # Generate types on per-domain basis. 479 # Generate types on per-domain basis.
505 GeneratePerDomain( 480 GeneratePerDomain(
506 jinja_env, os.path.join(output_dirname, 'devtools', 'domains'), 481 jinja_env, os.path.join(output_dirname, 'devtools', 'domains'),
507 json_api, 'domain_types', ['h', 'cc'], 482 json_api, 'domain_types', ['h', 'cc'],
508 lambda domain_name: 'types_%s' % (domain_name, )) 483 lambda domain_name: 'types_%s' % (domain_name, ))
509 484
510 # TODO(altimin): Remove this in 2017.
511 # Generate types.h for backwards compatibility.
512 Generate(jinja_env, os.path.join(output_dirname, 'domains'), json_api,
513 'deprecated_types', ['h'], 'types')
514
515 485
516 def GenerateTypeConversions(jinja_env, output_dirname, json_api): 486 def GenerateTypeConversions(jinja_env, output_dirname, json_api):
517 # Generate type conversions on per-domain basis. 487 # Generate type conversions on per-domain basis.
518 GeneratePerDomain( 488 GeneratePerDomain(
519 jinja_env, os.path.join(output_dirname, 'devtools', 'internal'), 489 jinja_env, os.path.join(output_dirname, 'devtools', 'internal'),
520 json_api, 'domain_type_conversions', ['h'], 490 json_api, 'domain_type_conversions', ['h'],
521 lambda domain_name: 'type_conversions_%s' % (domain_name, )) 491 lambda domain_name: 'type_conversions_%s' % (domain_name, ))
522 492
523 # TODO(altimin): Remove this in 2017.
524 # Generate type_conversions.h for backwards compatibility.
525 Generate(jinja_env, os.path.join(output_dirname, 'domains'), json_api,
526 'deprecated_type_conversions', ['h'], 'type_conversions')
527
528 493
529 if __name__ == '__main__': 494 if __name__ == '__main__':
530 json_api, output_dirname = ParseArguments(sys.argv[1:]) 495 json_api, output_dirname = ParseArguments(sys.argv[1:])
531 jinja_env = InitializeJinjaEnv(output_dirname) 496 jinja_env = InitializeJinjaEnv(output_dirname)
532 InitializeDomainDependencies(json_api) 497 InitializeDomainDependencies(json_api)
533 PatchExperimentalCommandsAndEvents(json_api) 498 PatchExperimentalCommandsAndEvents(json_api)
534 EnsureCommandsHaveParametersAndReturnTypes(json_api) 499 EnsureCommandsHaveParametersAndReturnTypes(json_api)
535 SynthesizeCommandTypes(json_api) 500 SynthesizeCommandTypes(json_api)
536 SynthesizeEventTypes(json_api) 501 SynthesizeEventTypes(json_api)
537 PatchFullQualifiedRefs(json_api) 502 PatchFullQualifiedRefs(json_api)
538 CreateTypeDefinitions(json_api) 503 CreateTypeDefinitions(json_api)
539 GenerateDomains(jinja_env, output_dirname, json_api) 504 GenerateDomains(jinja_env, output_dirname, json_api)
540 GenerateTypes(jinja_env, output_dirname, json_api) 505 GenerateTypes(jinja_env, output_dirname, json_api)
541 GenerateTypeConversions(jinja_env, output_dirname, json_api) 506 GenerateTypeConversions(jinja_env, output_dirname, json_api)
OLDNEW
« no previous file with comments | « headless/BUILD.gn ('k') | headless/lib/browser/devtools_api/client_api_generator_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698