| OLD | NEW |
| 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 systems to generate | 6 """This module provides shared functionality for the systems to generate |
| 7 native binding from the IDL database.""" | 7 native binding from the IDL database.""" |
| 8 | 8 |
| 9 import emitter | 9 import emitter |
| 10 import os | 10 import os |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 self._dart_impl_emitter = dart_impl_emitter | 222 self._dart_impl_emitter = dart_impl_emitter |
| 223 self._dart_impl_template = dart_impl_template | 223 self._dart_impl_template = dart_impl_template |
| 224 self._cpp_header_emitter = cpp_header_emitter | 224 self._cpp_header_emitter = cpp_header_emitter |
| 225 self._cpp_impl_emitter = cpp_impl_emitter | 225 self._cpp_impl_emitter = cpp_impl_emitter |
| 226 self._base_members = base_members | 226 self._base_members = base_members |
| 227 self._templates = templates | 227 self._templates = templates |
| 228 self._current_secondary_parent = None | 228 self._current_secondary_parent = None |
| 229 self._html_system = self._system._html_system | 229 self._html_system = self._system._html_system |
| 230 self._html_renames = self._html_system._html_renames | 230 self._html_renames = self._html_system._html_renames |
| 231 | 231 |
| 232 def FactoryConstructorElementClassName(self): |
| 233 return self._HTMLInterfaceName(self._interface.id) |
| 234 |
| 232 def StartInterface(self): | 235 def StartInterface(self): |
| 233 self._interface_type_info = GetIDLTypeInfo(self._interface.id) | 236 self._interface_type_info = GetIDLTypeInfo(self._interface.id) |
| 234 self._members_emitter = emitter.Emitter() | 237 self._members_emitter = emitter.Emitter() |
| 235 self._cpp_declarations_emitter = emitter.Emitter() | 238 self._cpp_declarations_emitter = emitter.Emitter() |
| 236 self._cpp_impl_includes = set() | 239 self._cpp_impl_includes = set() |
| 237 self._cpp_definitions_emitter = emitter.Emitter() | 240 self._cpp_definitions_emitter = emitter.Emitter() |
| 238 self._cpp_resolver_emitter = emitter.Emitter() | 241 self._cpp_resolver_emitter = emitter.Emitter() |
| 239 | 242 |
| 240 self._GenerateConstructors() | 243 self._GenerateConstructors() |
| 241 self._GenerateEvents() | 244 self._GenerateEvents() |
| 242 | 245 |
| 243 def _GenerateConstructors(self): | 246 def _GenerateConstructors(self): |
| 244 html_interface_name = self._HTMLInterfaceName(self._interface.id) | 247 html_interface_name = self._HTMLInterfaceName(self._interface.id) |
| 245 infos = HtmlElementConstructorInfos(html_interface_name) | |
| 246 if infos: | |
| 247 self._EmitHtmlElementFactoryConstructors(infos, html_interface_name) | |
| 248 | 248 |
| 249 if not self._IsConstructable(): | 249 if not self._IsConstructable(): |
| 250 return | 250 return |
| 251 | 251 |
| 252 # TODO(antonm): currently we don't have information about number of argument
s expected by | 252 # TODO(antonm): currently we don't have information about number of argument
s expected by |
| 253 # the constructor, so name only dispatch. | 253 # the constructor, so name only dispatch. |
| 254 self._cpp_resolver_emitter.Emit( | 254 self._cpp_resolver_emitter.Emit( |
| 255 ' if (name == "$(INTERFACE_NAME)_constructor_Callback")\n' | 255 ' if (name == "$(INTERFACE_NAME)_constructor_Callback")\n' |
| 256 ' return Dart$(INTERFACE_NAME)Internal::constructorCallback;\n', | 256 ' return Dart$(INTERFACE_NAME)Internal::constructorCallback;\n', |
| 257 INTERFACE_NAME=self._interface.id) | 257 INTERFACE_NAME=self._interface.id) |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 335 ' goto fail;\n' | 335 ' goto fail;\n' |
| 336 ' }', | 336 ' }', |
| 337 FEATURE=_ToWebKitName(ext_attrs['synthesizedV8EnabledAtRuntime'])) | 337 FEATURE=_ToWebKitName(ext_attrs['synthesizedV8EnabledAtRuntime'])) |
| 338 | 338 |
| 339 self._GenerateNativeCallback(callback_name='constructorCallback', | 339 self._GenerateNativeCallback(callback_name='constructorCallback', |
| 340 parameter_definitions=parameter_definitions_emitter.Fragments(), | 340 parameter_definitions=parameter_definitions_emitter.Fragments(), |
| 341 needs_receiver=False, invocation=invocation, | 341 needs_receiver=False, invocation=invocation, |
| 342 raises_exceptions=raises_exceptions, | 342 raises_exceptions=raises_exceptions, |
| 343 runtime_check=runtime_check) | 343 runtime_check=runtime_check) |
| 344 | 344 |
| 345 def _EmitHtmlElementFactoryConstructors(self, infos, html_interface_name): | |
| 346 EmitHtmlElementFactoryConstructors( | |
| 347 self._system._EmitterForFactoryProviderBody( | |
| 348 infos[0].factory_provider_name), | |
| 349 infos, | |
| 350 html_interface_name, | |
| 351 html_interface_name) | |
| 352 | |
| 353 def _GenerateEvents(self): | 345 def _GenerateEvents(self): |
| 354 if self._interface.id == 'DocumentFragment': | 346 if self._interface.id == 'DocumentFragment': |
| 355 # Interface DocumentFragment extends Element in dart:html but this fact | 347 # Interface DocumentFragment extends Element in dart:html but this fact |
| 356 # is not reflected in idls. | 348 # is not reflected in idls. |
| 357 self._EmitEventGetter('_ElementEventsImpl') | 349 self._EmitEventGetter('_ElementEventsImpl') |
| 358 return | 350 return |
| 359 | 351 |
| 360 events_attributes = [attr for attr in self._interface.attributes | 352 events_attributes = [attr for attr in self._interface.attributes |
| 361 if attr.type.id == 'EventListener'] | 353 if attr.type.id == 'EventListener'] |
| 362 if not 'EventTarget' in self._interface.ext_attrs and not events_attributes: | 354 if not 'EventTarget' in self._interface.ext_attrs and not events_attributes: |
| (...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1087 | 1079 |
| 1088 def _IsArgumentOptionalInWebCore(argument): | 1080 def _IsArgumentOptionalInWebCore(argument): |
| 1089 return IsOptional(argument) and not 'Callback' in argument.ext_attrs | 1081 return IsOptional(argument) and not 'Callback' in argument.ext_attrs |
| 1090 | 1082 |
| 1091 def _ToWebKitName(name): | 1083 def _ToWebKitName(name): |
| 1092 name = name[0].lower() + name[1:] | 1084 name = name[0].lower() + name[1:] |
| 1093 name = re.sub(r'^(hTML|uRL|jS|xML|xSLT)', lambda s: s.group(1).lower(), | 1085 name = re.sub(r'^(hTML|uRL|jS|xML|xSLT)', lambda s: s.group(1).lower(), |
| 1094 name) | 1086 name) |
| 1095 return re.sub(r'^(create|exclusive)', lambda s: 'is' + s.group(1).capitalize()
, | 1087 return re.sub(r'^(create|exclusive)', lambda s: 'is' + s.group(1).capitalize()
, |
| 1096 name) | 1088 name) |
| OLD | NEW |