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

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

Issue 2875773003: Roll 50: Updated for push to origin/master. (Closed)
Patch Set: Roll 50: Updated to latest 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 side-by-side diff with in-line comments
Download patch
Index: tools/dom/scripts/generator.py
diff --git a/tools/dom/scripts/generator.py b/tools/dom/scripts/generator.py
index 8c5b4169c1f342ac103df79c9d27f3a1b989b9f5..0f27089118253e54c117ecd741e4e524327d3f2e 100644
--- a/tools/dom/scripts/generator.py
+++ b/tools/dom/scripts/generator.py
@@ -401,14 +401,19 @@ class ParamInfo(object):
self.name, self.type_id, self.is_optional)
return '<ParamInfo(%s)>' % content
-def GetCallbackInfo(interface):
- """For the given interface, find operations that take callbacks (for use in
- auto-transforming callbacks into futures)."""
+def GetCallbackHandlers(interface):
+ callback_handlers = []
callback_handlers = [operation for operation in interface.operations
if operation.id == 'handleEvent']
if callback_handlers == []:
callback_handlers = [operation for operation in interface.operations
if operation.id == 'handleItem']
+ return callback_handlers
+
+def GetCallbackInfo(interface):
+ """For the given interface, find operations that take callbacks (for use in
+ auto-transforming callbacks into futures)."""
+ callback_handlers = GetCallbackHandlers(interface)
return AnalyzeOperation(interface, callback_handlers)
# Given a list of overloaded arguments, render dart arguments.
@@ -504,7 +509,12 @@ def ConvertToFuture(info):
instead uses futures instead of callbacks."""
new_info = copy.deepcopy(info)
def IsNotCallbackType(param):
- return 'Callback' not in param.type_id
+ type_id = param.type_id
+ if type_id is None:
+ return False
+ else:
+ return 'Callback' not in type_id
+
# Success callback is the first argument (change if this no longer holds).
new_info.callback_args = filter(
lambda x: not IsNotCallbackType(x), new_info.param_infos)
@@ -641,6 +651,9 @@ class OperationInfo(object):
dart_type = 'dynamic'
else:
dart_type = rename_type(param.type_id) if param.type_id else 'dynamic'
+ # Special handling for setlike IDL forEach operation.
+ if dart_type is None and param.type_id.endswith('ForEachCallback'):
+ dart_type = param.type_id
return (TypeOrNothing(dart_type, param.type_id), param.name)
required = []
optional = []
@@ -1180,7 +1193,8 @@ class SequenceIDLTypeInfo(IDLTypeInfo):
self._item_info = item_info
def dart_type(self):
- return 'List<%s>' % self._item_info.dart_type()
+ darttype = self._item_info.dart_type()
+ return 'List' if darttype is None else 'List<%s>' % darttype
def interface_name(self):
return self.dart_type()
@@ -1517,6 +1531,7 @@ _idl_type_registry = monitored.Dict('generator._idl_type_registry', {
'NamedNodeMap': TypeData(clazz='Interface', item_type='Node'),
'NodeList': TypeData(clazz='Interface', item_type='Node',
suppress_interface=False, dart_type='List<Node>'),
+ 'NotificationAction': TypedListTypeData(''),
'SVGElementInstanceList': TypeData(clazz='Interface',
item_type='SVGElementInstance', suppress_interface=True),
'SourceBufferList': TypeData(clazz='Interface', item_type='SourceBuffer'),
@@ -1562,6 +1577,9 @@ _idl_type_registry = monitored.Dict('generator._idl_type_registry', {
'SVGTransform': TypeData(clazz='SVGTearOff', native_type="SVGPropertyTearOff<SVGTransform>"),
'SVGTransformList': TypeData(clazz='SVGTearOff', item_type='SVGTransform',
native_type='SVGTransformListPropertyTearOff'),
+
+ # Add any setlike forEach Callback types here.
+ 'FontFaceSetForEachCallback': TypeData(clazz='Interface', item_type='FontFaceSetForEachCallback'),
})
_svg_supplemental_includes = [

Powered by Google App Engine
This is Rietveld 408576698