| Index: tools/dom/scripts/htmleventgenerator.py
|
| diff --git a/tools/dom/scripts/htmleventgenerator.py b/tools/dom/scripts/htmleventgenerator.py
|
| index 509e717f5acc213f5da7f4b816f91179f1f37bea..eee08c619708b92f88743633887e4167c8accfbc 100644
|
| --- a/tools/dom/scripts/htmleventgenerator.py
|
| +++ b/tools/dom/scripts/htmleventgenerator.py
|
| @@ -272,7 +272,8 @@ class HtmlEventGenerator(object):
|
| TYPE=event_type)
|
|
|
| def EmitStreamGetters(self, interface, custom_events,
|
| - members_emitter, library_name):
|
| + members_emitter, library_name, stream_getter_signatures_emitter=None,
|
| + element_stream_getters_emitter=None):
|
| events = self._GetEvents(interface, custom_events)
|
| if not events:
|
| return
|
| @@ -292,14 +293,33 @@ class HtmlEventGenerator(object):
|
| annotations = self._metadata.GetFormattedMetadata(
|
| library_name, interface, annotation_name, ' ')
|
|
|
| - members_emitter.Emit(
|
| - "\n"
|
| - " $(ANNOTATIONS)Stream<$TYPE> get $(NAME) => "
|
| - "$PROVIDER.forTarget(this);\n",
|
| - ANNOTATIONS=annotations,
|
| - NAME=getter_name,
|
| - PROVIDER=provider,
|
| - TYPE=event_type)
|
| + isElement = False
|
| + for parent in self._database.Hierarchy(interface):
|
| + if parent.id == 'Element':
|
| + isElement = True
|
| + # We add the same event stream getters Element, ElementList, and
|
| + # _FrozenElementList. So, in impl_Element.darttemplate, we have two
|
| + # additional emitters to add the correct variation of the stream getter
|
| + # for that context.
|
| + for emitter in [members_emitter, stream_getter_signatures_emitter,
|
| + element_stream_getters_emitter]:
|
| + if emitter == None:
|
| + continue
|
| + elem_type = 'Element' if isElement else ''
|
| + call_name = 'forElement' if isElement else 'forTarget'
|
| + if emitter == element_stream_getters_emitter:
|
| + call_name = '_forElementList'
|
| + emitter.Emit(
|
| + "\n"
|
| + " $(ANNOTATIONS)$(ELEM_TYPE)Stream<$TYPE> get $(NAME)$BODY;\n",
|
| + ANNOTATIONS=annotations,
|
| + ELEM_TYPE=elem_type,
|
| + NAME=getter_name,
|
| + BODY = ('' if emitter == stream_getter_signatures_emitter else
|
| + ' => %s.%s(this)' % (((''
|
| + if emitter != element_stream_getters_emitter else 'Element.')
|
| + + provider), call_name)),
|
| + TYPE=event_type)
|
|
|
| def _GetRawEvents(self, interface):
|
| all_interfaces = ([ interface ] +
|
|
|