322 element_stream_getters_emitter=None):
323
324 events = self.GetEvents(interface, custom_events)
325 if not events:
326 return
327
328 for event_info in events:
329 (dom_name, html_name, event_type) = event_info
330 getter_name = 'on%s%s' % (html_name[:1].upper(), html_name[1:])
331 annotation_name = 'on' + dom_name
332
333
334 redirection = self._GetEventRedirection(interface, html_name,
335 event_type)
336 if redirection:
337 provider = '%s.%sEvent' % (redirection, html_name)
338 else:
339 provider = html_name + 'Event'
340
341 annotations = self._metadata.GetFormattedMetadata(
342 library_name, interface, annotation_name, ' ')
343
344 isElement = False
345 for parent in self._database.Hierarchy(interface):
346 if parent.id == 'Element':
347 isElement = True
348
349
350
351
352 for emitter in [
353 members_emitter, stream_getter_signatures_emitter,
354 element_stream_getters_emitter
355 ]:
356 if emitter == None:
357 continue
358 elem_type = 'Element' if isElement else ''
359 call_name = 'forElement' if isElement else 'forTarget'
360 if emitter == element_stream_getters_emitter:
361 call_name = '_forElementList'
362 emitter.Emit(
363 "\n"
364 " $(ANNOTATIONS)$(ELEM_TYPE)Stream<$TYPE> get $(NAME)$BODY;\n",
365 ANNOTATIONS=annotations,
366 ELEM_TYPE=elem_type,
367 NAME=getter_name,
368 BODY=('' if emitter == stream_getter_signatures_emitter else
369 ' => %s.%s(this)' % ((
370 ('' if emitter != element_stream_getters_emitter
371 else 'Element.') + provider), call_name)),
372 TYPE=event_type)
373