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

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

Issue 21607003: Add Event delegation to Elements and groups of elements. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 4 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 | « tests/html/element_test.dart ('k') | tools/dom/scripts/systemhtml.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 ] +
« no previous file with comments | « tests/html/element_test.dart ('k') | tools/dom/scripts/systemhtml.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698