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

Unified Diff: lib/dom/scripts/generator.py

Issue 10331015: Remove ParameterAdapters for bindings classes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: . Created 8 years, 8 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
« no previous file with comments | « no previous file | lib/dom/scripts/systemnative.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/dom/scripts/generator.py
diff --git a/lib/dom/scripts/generator.py b/lib/dom/scripts/generator.py
index ab4eee27d2f51069f009bf3150121cd2f340acb4..653f3f289f2ec24204688cc98c60eb80745f80a5 100644
--- a/lib/dom/scripts/generator.py
+++ b/lib/dom/scripts/generator.py
@@ -448,10 +448,42 @@ class IDLTypeInfo(object):
def native_type(self):
return self._native_type or self._idl_type
- def parameter_adapter_info(self):
- adapter_type = 'ParameterAdapter<Dart%s>' % self._idl_type
- include = '"Dart%s.h"' % self._idl_type
- return (adapter_type, include)
+ def emit_to_native(self, emitter, idl_node, name, handle, interface_name):
+ if 'Callback' in idl_node.ext_attrs:
+ if 'RequiredCppParameter' in idl_node.ext_attrs:
+ flag = 'DartUtilities::ConvertNullToDefaultValue'
+ else:
+ flag = 'DartUtilities::ConvertNone'
+ emitter.Emit(
+ '\n'
+ ' RefPtr<$TYPE> $NAME = Dart$IDL_TYPE::create($HANDLE, $FLAG, exception);\n'
+ ' if (exception)\n'
+ ' goto fail;\n',
+ TYPE=self.native_type(),
+ NAME=name,
+ IDL_TYPE=self.idl_type(),
+ HANDLE=handle,
+ FLAG=flag)
+ return name
+
+ argument = name
+ if self.custom_to_native():
+ type = 'RefPtr<%s>' % self.native_type()
+ argument = '%s.get()' % name
+ else:
+ type = '%s*' % self.native_type()
+ if isinstance(self, SVGTearOffIDLTypeInfo) and not interface_name.endswith('List'):
+ argument = '%s->propertyReference()' % name
+ emitter.Emit(
+ '\n'
+ ' $TYPE $NAME = Dart$IDL_TYPE::toNative($HANDLE, exception);\n'
+ ' if (exception)\n'
+ ' goto fail;\n',
+ TYPE=type,
+ NAME=name,
+ IDL_TYPE=self.idl_type(),
+ HANDLE=handle)
+ return argument
def custom_to_native(self):
return self._custom_to_native
@@ -525,9 +557,21 @@ class PrimitiveIDLTypeInfo(IDLTypeInfo):
self._webcore_getter_name = webcore_getter_name
self._webcore_setter_name = webcore_setter_name
- def parameter_adapter_info(self):
- adapter_type = 'ParameterAdapter<%s>' % self.native_type()
- return (adapter_type, None)
+ def emit_to_native(self, emitter, idl_node, name, handle, interface_name):
+ arguments = [handle]
+ if idl_node.ext_attrs.get('Optional') == 'DefaultIsNullString' or 'RequiredCppParameter' in idl_node.ext_attrs:
+ arguments.append('DartUtilities::ConvertNullToDefaultValue')
+ emitter.Emit(
+ '\n'
+ ' const ParameterAdapter<$TYPE> $NAME($ARGUMENTS);\n'
+ ' if (!$NAME.conversionSuccessful()) {\n'
+ ' exception = $NAME.exception();\n'
+ ' goto fail;\n'
+ ' }\n',
+ TYPE=self.native_type(),
+ NAME=name,
+ ARGUMENTS=', '.join(arguments))
+ return name
def parameter_type(self):
if self.native_type() == 'String':
@@ -646,7 +690,6 @@ _idl_type_registry = {
'HTMLElement': IDLTypeInfo('HTMLElement', custom_to_dart=True),
'IDBAny': IDLTypeInfo('IDBAny', dart_type='Dynamic', custom_to_native=True),
'IDBKey': IDLTypeInfo('IDBKey', dart_type='Dynamic', custom_to_native=True),
- 'MediaQueryListListener': IDLTypeInfo('MediaQueryListListener', custom_to_native=True),
'StyleSheet': IDLTypeInfo('StyleSheet', conversion_includes=['CSSStyleSheet']),
'SVGElement': IDLTypeInfo('SVGElement', custom_to_dart=True),
« no previous file with comments | « no previous file | lib/dom/scripts/systemnative.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698