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

Side by Side Diff: tools/dom/scripts/htmldartgenerator.py

Issue 1682783002: Dartium 45 roll (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: removed htmlcommon Created 4 years, 10 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
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 from generator import AnalyzeOperation, ConstantOutputOrder, \ 10 from generator import AnalyzeOperation, ConstantOutputOrder, \
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 # We don't yet handle inconsistent renames of the getter and setter yet. 304 # We don't yet handle inconsistent renames of the getter and setter yet.
305 assert(not html_setter_name or attr_name == html_setter_name) 305 assert(not html_setter_name or attr_name == html_setter_name)
306 306
307 if declare_only: 307 if declare_only:
308 self.DeclareAttribute(attribute, 308 self.DeclareAttribute(attribute,
309 self.SecureOutputType(attribute.type.id), attr_name, read_only) 309 self.SecureOutputType(attribute.type.id), attr_name, read_only)
310 else: 310 else:
311 self.EmitAttribute(attribute, attr_name, read_only) 311 self.EmitAttribute(attribute, attr_name, read_only)
312 312
313 def AddOperation(self, info, declare_only=False, dart_js_interop=False): 313 def AddOperation(self, info, declare_only=False, dart_js_interop=False):
314 # TODO(terry): Hack window has 2 overloaded getter one returns Window and
315 # and other object (we'll always return Window)?
316 if self._interface.id == "Window" and info.name == '__getter__':
317 info.operations[1].type = info.operations[0].type;
318
314 """ Adds an operation to the generated class. 319 """ Adds an operation to the generated class.
315 Arguments: 320 Arguments:
316 info - The operation info of the operation to be added. 321 info - The operation info of the operation to be added.
317 declare_only- True if the operation should be declared as an abstract 322 declare_only- True if the operation should be declared as an abstract
318 member and not include invocation code. 323 member and not include invocation code.
319 """ 324 """
320 # FIXME: When we pass in operations[0] below, we're assuming all 325 # FIXME: When we pass in operations[0] below, we're assuming all
321 # overloaded operations have the same security attributes. This 326 # overloaded operations have the same security attributes. This
322 # is currently true, but we should consider filtering earlier or 327 # is currently true, but we should consider filtering earlier or
323 # merging the relevant data into info itself. 328 # merging the relevant data into info itself.
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 factory_name to call (calls an autogenerated FactoryProvider 526 factory_name to call (calls an autogenerated FactoryProvider
522 if unspecified) 527 if unspecified)
523 """ 528 """
524 for constructor_info in constructors: 529 for constructor_info in constructors:
525 self._AddConstructor( 530 self._AddConstructor(
526 constructor_info, factory_name, factory_constructor_name) 531 constructor_info, factory_name, factory_constructor_name)
527 532
528 def _AddConstructor(self, 533 def _AddConstructor(self,
529 constructor_info, factory_name, factory_constructor_name): 534 constructor_info, factory_name, factory_constructor_name):
530 # Hack to ignore the Image constructor used by JavaScript. 535 # Hack to ignore the Image constructor used by JavaScript.
531 if ((self._interface.id == 'HTMLImageElement' or self._interface.id == 'Blob ') 536 if ((self._interface.id == 'HTMLImageElement' or
537 self._interface.id == 'Blob' or
538 self._interface.id == 'DOMException')
532 and not constructor_info.pure_dart_constructor): 539 and not constructor_info.pure_dart_constructor):
533 return 540 return
534 541
535 if self.GenerateCustomFactory(constructor_info): 542 if self.GenerateCustomFactory(constructor_info):
536 return 543 return
537 544
538 metadata = self._metadata.GetFormattedMetadata( 545 metadata = self._metadata.GetFormattedMetadata(
539 self._library_name, self._interface, self._interface.id, ' ') 546 self._library_name, self._interface, self._interface.id, ' ')
540 547
541 if not factory_constructor_name: 548 if not factory_constructor_name:
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 '$(INDENT)$TYPE $NAME = $CONVERT($ARG);\n', 850 '$(INDENT)$TYPE $NAME = $CONVERT($ARG);\n',
844 TYPE=TypeOrVar(temp_type), 851 TYPE=TypeOrVar(temp_type),
845 NAME=temp_name, 852 NAME=temp_name,
846 CONVERT=conversion.function_name, 853 CONVERT=conversion.function_name,
847 ARG=info.param_infos[position].name) 854 ARG=info.param_infos[position].name)
848 converted_arguments.append(temp_name) 855 converted_arguments.append(temp_name)
849 param_type = temp_type 856 param_type = temp_type
850 verified_type = temp_type # verified by assignment in checked mode. 857 verified_type = temp_type # verified by assignment in checked mode.
851 else: 858 else:
852 converted_arguments.append(info.param_infos[position].name) 859 converted_arguments.append(info.param_infos[position].name)
853 param_type = self._NarrowInputType(arg.type.id) 860 if self._database.HasTypeDef(arg.type.id):
854 # Verified by argument checking on entry to the dispatcher. 861 param_type = 'dynamic'
855 862 else:
856 verified_type = self._InputType( 863 param_type = self._NarrowInputType(arg.type.id)
857 info.param_infos[position].type_id, info) 864 # Verified by argument checking on entry to the dispatcher.
858 # The native method does not need an argument type if we know the type. 865
859 # But we do need the native methods to have correct function types, so 866 verified_type = self._InputType(
860 # be conservative. 867 info.param_infos[position].type_id, info)
861 if param_type == verified_type: 868 # The native method does not need an argument type if we know the type .
862 if param_type in ['String', 'num', 'int', 'double', 'bool', 'Object']: 869 # But we do need the native methods to have correct function types, so
863 param_type = 'dynamic' 870 # be conservative.
871 if param_type == verified_type:
872 if param_type in ['String', 'num', 'int', 'double', 'bool', 'Object' ]:
873 param_type = 'dynamic'
864 874
865 target_parameters.append( 875 target_parameters.append(
866 '%s%s' % (TypeOrNothing(param_type), param_name)) 876 '%s%s' % (TypeOrNothing(param_type), param_name))
867 877
868 return target_parameters, converted_arguments 878 return target_parameters, converted_arguments
869 879
870 def _InputType(self, type_name, info): 880 def _InputType(self, type_name, info):
871 conversion = self._InputConversion(type_name, info.declared_name) 881 conversion = self._InputConversion(type_name, info.declared_name)
872 if conversion: 882 if conversion:
873 return conversion.input_type 883 return conversion.input_type
874 else: 884 else:
875 return self._NarrowInputType(type_name) if type_name else 'dynamic' 885 # If typedef it's a union return dynamic.
886 if self._database.HasTypeDef(type_name):
887 return 'dynamic'
888 else:
889 return self._NarrowInputType(type_name) if type_name else 'dynamic'
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698