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

Side by Side Diff: lib/html/scripts/systemhtml.py

Issue 11108017: Rename Dartium dart:html implementation classes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: . Created 8 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « lib/html/scripts/generator.py ('k') | lib/html/scripts/systemnative.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 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
3 # for details. All rights reserved. Use of this source code is governed by a 3 # for details. All rights reserved. Use of this source code is governed by a
4 # BSD-style license that can be found in the LICENSE file. 4 # BSD-style license that can be found in the LICENSE file.
5 5
6 """This module provides shared functionality for the system to generate 6 """This module provides shared functionality for the system to generate
7 Dart:html APIs from the IDL database.""" 7 Dart:html APIs from the IDL database."""
8 8
9 import emitter 9 import emitter
10 import os 10 import os
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 constructor_info, factory_provider, factory_provider_emitter) 283 constructor_info, factory_provider, factory_provider_emitter)
284 284
285 infos = HtmlElementConstructorInfos(interface_name) 285 infos = HtmlElementConstructorInfos(interface_name)
286 if infos: 286 if infos:
287 template = self._template_loader.Load( 287 template = self._template_loader.Load(
288 'factoryprovider_Elements.darttemplate') 288 'factoryprovider_Elements.darttemplate')
289 EmitHtmlElementFactoryConstructors( 289 EmitHtmlElementFactoryConstructors(
290 self._library_emitter.FileEmitter('_Elements', template), 290 self._library_emitter.FileEmitter('_Elements', template),
291 infos, 291 infos,
292 self._interface.id, 292 self._interface.id,
293 self._backend.ImplementationClassName(), 293 self._interface_type_info.implementation_name(),
294 self._DartType) 294 self._DartType)
295 295
296 for info in infos: 296 for info in infos:
297 constructors.append(info.ConstructorInfo(self._interface.id)) 297 constructors.append(info.ConstructorInfo(self._interface.id))
298 if factory_provider: 298 if factory_provider:
299 assert factory_provider == info.factory_provider_name 299 assert factory_provider == info.factory_provider_name
300 else: 300 else:
301 factory_provider = info.factory_provider_name 301 factory_provider = info.factory_provider_name
302 302
303 # TODO(vsm): Add appropriate package / namespace syntax. 303 # TODO(vsm): Add appropriate package / namespace syntax.
304 (self._type_comment_emitter, 304 (self._type_comment_emitter,
305 self._members_emitter, 305 self._members_emitter,
306 self._top_level_emitter) = interface_emitter.Emit( 306 self._top_level_emitter) = interface_emitter.Emit(
307 interface_template + '$!TOP_LEVEL', 307 interface_template + '$!TOP_LEVEL',
308 ID=interface_name, 308 ID=interface_name,
309 EXTENDS=implements_str) 309 EXTENDS=implements_str)
310 310
311 self._type_comment_emitter.Emit("/// @domName $DOMNAME", 311 self._type_comment_emitter.Emit("/// @domName $DOMNAME",
312 DOMNAME=self._interface.doc_js_name) 312 DOMNAME=self._interface.doc_js_name)
313 313
314 implementation_emitter = self._ImplementationEmitter() 314 implementation_emitter = self._ImplementationEmitter()
315 base_class = self._backend.BaseClassName() 315 base_class = self._backend.BaseClassName()
316 interface_type_info = self._type_registry.TypeInfo(self._interface.id) 316 interface_type_info = self._type_registry.TypeInfo(self._interface.id)
317 implemented_interfaces = [interface_type_info.interface_name()] +\ 317 implemented_interfaces = [interface_type_info.interface_name()] +\
318 self._backend.AdditionalImplementedInterfaces() 318 self._backend.AdditionalImplementedInterfaces()
319 self._implementation_members_emitter = implementation_emitter.Emit( 319 self._implementation_members_emitter = implementation_emitter.Emit(
320 self._backend.ImplementationTemplate(), 320 self._backend.ImplementationTemplate(),
321 CLASSNAME=self._backend.ImplementationClassName(), 321 CLASSNAME=self._interface_type_info.implementation_name(),
322 EXTENDS=' extends %s' % base_class if base_class else '', 322 EXTENDS=' extends %s' % base_class if base_class else '',
323 IMPLEMENTS=' implements ' + ', '.join(implemented_interfaces), 323 IMPLEMENTS=' implements ' + ', '.join(implemented_interfaces),
324 NATIVESPEC=self._backend.NativeSpec()) 324 NATIVESPEC=self._backend.NativeSpec())
325 self._backend.StartInterface(self._implementation_members_emitter) 325 self._backend.StartInterface(self._implementation_members_emitter)
326 326
327 for constructor_info in constructors: 327 for constructor_info in constructors:
328 constructor_info.GenerateFactoryInvocation( 328 constructor_info.GenerateFactoryInvocation(
329 self._DartType, self._members_emitter, factory_provider) 329 self._DartType, self._members_emitter, factory_provider)
330 330
331 element_type = MaybeTypedArrayElementTypeInHierarchy( 331 element_type = MaybeTypedArrayElementTypeInHierarchy(
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 self._backend.AddOperation(info, '_item') 475 self._backend.AddOperation(info, '_item')
476 return 476 return
477 477
478 if not self._IsPrivate(html_name) and not skip_declaration: 478 if not self._IsPrivate(html_name) and not skip_declaration:
479 self._members_emitter.Emit('\n /** @domName $DOMINTERFACE.$DOMNAME */', 479 self._members_emitter.Emit('\n /** @domName $DOMINTERFACE.$DOMNAME */',
480 DOMINTERFACE=info.overloads[0].doc_js_interface_name, 480 DOMINTERFACE=info.overloads[0].doc_js_interface_name,
481 DOMNAME=info.name) 481 DOMNAME=info.name)
482 482
483 if info.IsStatic(): 483 if info.IsStatic():
484 # FIXME: provide a type. 484 # FIXME: provide a type.
485 self._members_emitter.Emit('\n' 485 self._members_emitter.Emit(
486 ' static final $NAME = $IMPL_CLASS_NAME.$NAME ;\n', 486 '\n'
487 IMPL_CLASS_NAME=self._backend.ImplementationCl assName(), 487 ' static final $NAME = $IMPL_CLASS_NAME.$NAME;\n',
488 NAME=html_name) 488 IMPL_CLASS_NAME=self._interface_type_info.implementation_name(),
489 NAME=html_name)
489 else: 490 else:
490 self._members_emitter.Emit('\n' 491 self._members_emitter.Emit(
491 ' $TYPE $NAME($PARAMS);\n', 492 '\n'
492 TYPE=SecureOutputType(self, info.type_name), 493 ' $TYPE $NAME($PARAMS);\n',
493 NAME=html_name, 494 TYPE=SecureOutputType(self, info.type_name),
494 PARAMS=info.ParametersInterfaceDeclaration(sel f._DartType)) 495 NAME=html_name,
496 PARAMS=info.ParametersInterfaceDeclaration(self._DartType))
495 self._backend.AddOperation(info, html_name) 497 self._backend.AddOperation(info, html_name)
496 498
497 def AddSecondaryOperation(self, interface, info): 499 def AddSecondaryOperation(self, interface, info):
498 self._backend.SecondaryContext(interface) 500 self._backend.SecondaryContext(interface)
499 self.AddOperation(info, True) 501 self.AddOperation(info, True)
500 502
501 def AddConstant(self, constant): 503 def AddConstant(self, constant):
502 type = TypeOrNothing(self._DartType(constant.type.id), constant.type.id) 504 type = TypeOrNothing(self._DartType(constant.type.id), constant.type.id)
503 self._members_emitter.Emit('\n static const $TYPE$NAME = $VALUE;\n', 505 self._members_emitter.Emit('\n static const $TYPE$NAME = $VALUE;\n',
504 NAME=constant.id, 506 NAME=constant.id,
505 TYPE=type, 507 TYPE=type,
506 VALUE=constant.value) 508 VALUE=constant.value)
507 509
508 def _ImplementationEmitter(self): 510 def _ImplementationEmitter(self):
509 if IsPureInterface(self._interface.id): 511 if IsPureInterface(self._interface.id):
510 return emitter.Emitter() 512 return emitter.Emitter()
511
512 basename = self._interface_type_info.implementation_name() 513 basename = self._interface_type_info.implementation_name()
513 if self._interface_type_info.merged_into(): 514 if (self._interface_type_info.merged_into() and
514 if self._backend.ImplementsMergedMembers(): 515 self._backend.ImplementsMergedMembers()):
515 # Merged members are implemented in target interface implementation. 516 # Merged members are implemented in target interface implementation.
516 return emitter.Emitter() 517 return emitter.Emitter()
517 basename = '%s_Merged' % basename
518 return self._library_emitter.FileEmitter(basename.lstrip('_')) 518 return self._library_emitter.FileEmitter(basename.lstrip('_'))
519 519
520 def _EmitEventGetter(self, events_interface, events_class): 520 def _EmitEventGetter(self, events_interface, events_class):
521 self._members_emitter.Emit( 521 self._members_emitter.Emit(
522 '\n /**' 522 '\n /**'
523 '\n * @domName EventTarget.addEventListener, ' 523 '\n * @domName EventTarget.addEventListener, '
524 'EventTarget.removeEventListener, EventTarget.dispatchEvent' 524 'EventTarget.removeEventListener, EventTarget.dispatchEvent'
525 '\n */' 525 '\n */'
526 '\n $TYPE get on;\n', 526 '\n $TYPE get on;\n',
527 TYPE=events_interface) 527 TYPE=events_interface)
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 """ 578 """
579 579
580 def __init__(self, interface, options): 580 def __init__(self, interface, options):
581 self._interface = interface 581 self._interface = interface
582 self._database = options.database 582 self._database = options.database
583 self._template_loader = options.templates 583 self._template_loader = options.templates
584 self._type_registry = options.type_registry 584 self._type_registry = options.type_registry
585 self._interface_type_info = self._type_registry.TypeInfo(self._interface.id) 585 self._interface_type_info = self._type_registry.TypeInfo(self._interface.id)
586 self._current_secondary_parent = None 586 self._current_secondary_parent = None
587 587
588 def ImplementationClassName(self):
589 return self._interface_type_info.implementation_name()
590
591 def ImplementsMergedMembers(self): 588 def ImplementsMergedMembers(self):
592 return True 589 return True
593 590
594 def GenerateCallback(self, info): 591 def GenerateCallback(self, info):
595 pass 592 pass
596 593
597 def BaseClassName(self): 594 def BaseClassName(self):
598 if not self._interface.parents: 595 if not self._interface.parents:
599 return None 596 return None
600 supertype = self._interface.parents[0].type.id 597 supertype = self._interface.parents[0].type.id
601 if IsDartCollectionType(supertype): 598 if IsDartCollectionType(supertype):
602 # List methods are injected in AddIndexer. 599 # List methods are injected in AddIndexer.
603 return None 600 return None
604 if IsPureInterface(supertype): 601 if IsPureInterface(supertype):
605 return None 602 return None
606 return self._type_registry.TypeInfo(supertype).implementation_name() 603 type_info = self._type_registry.TypeInfo(supertype)
604 if type_info.merged_into():
605 type_info = self._type_registry.TypeInfo(type_info.merged_into())
606 return type_info.implementation_name()
607 607
608 def AdditionalImplementedInterfaces(self): 608 def AdditionalImplementedInterfaces(self):
609 # TODO: Include all implemented interfaces, including other Lists. 609 # TODO: Include all implemented interfaces, including other Lists.
610 implements = [] 610 implements = []
611 element_type = MaybeTypedArrayElementType(self._interface) 611 element_type = MaybeTypedArrayElementType(self._interface)
612 if element_type: 612 if element_type:
613 implements.append('List<%s>' % self._DartType(element_type)) 613 implements.append('List<%s>' % self._DartType(element_type))
614 if self._HasJavaScriptIndexingBehaviour(): 614 if self._HasJavaScriptIndexingBehaviour():
615 implements.append('JavaScriptIndexingBehavior') 615 implements.append('JavaScriptIndexingBehavior')
616 return implements 616 return implements
(...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after
1117 1117
1118 library_emitter = self._multiemitter.FileEmitter(library_file_path) 1118 library_emitter = self._multiemitter.FileEmitter(library_file_path)
1119 library_file_dir = os.path.dirname(library_file_path) 1119 library_file_dir = os.path.dirname(library_file_path)
1120 auxiliary_dir = os.path.relpath(auxiliary_dir, library_file_dir) 1120 auxiliary_dir = os.path.relpath(auxiliary_dir, library_file_dir)
1121 imports_emitter = library_emitter.Emit( 1121 imports_emitter = library_emitter.Emit(
1122 self._template, AUXILIARY_DIR=massage_path(auxiliary_dir)) 1122 self._template, AUXILIARY_DIR=massage_path(auxiliary_dir))
1123 for path in sorted(self._path_to_emitter.keys()): 1123 for path in sorted(self._path_to_emitter.keys()):
1124 relpath = os.path.relpath(path, library_file_dir) 1124 relpath = os.path.relpath(path, library_file_dir)
1125 imports_emitter.Emit( 1125 imports_emitter.Emit(
1126 "#source('$PATH');\n", PATH=massage_path(relpath)) 1126 "#source('$PATH');\n", PATH=massage_path(relpath))
OLDNEW
« no previous file with comments | « lib/html/scripts/generator.py ('k') | lib/html/scripts/systemnative.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698