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

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

Issue 10698049: Unfork html events generation in dart2js and dartium. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 6 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: lib/dom/scripts/systemnative.py
diff --git a/lib/dom/scripts/systemnative.py b/lib/dom/scripts/systemnative.py
index dd57e041a33c13d8c00bcba19a93105d097e6ad8..9a7178a73a02a67464d1554bb8ad212b614f5c03 100644
--- a/lib/dom/scripts/systemnative.py
+++ b/lib/dom/scripts/systemnative.py
@@ -200,6 +200,9 @@ class NativeImplementationGenerator(systembase.BaseGenerator):
def SetImplementationEmitter(self, implementation_emitter):
self._dart_impl_emitter = implementation_emitter
+ def AddMergedMembers(self, merged_interface):
Anton Muhin 2012/07/02 10:49:48 why it doesn't need any implementation?
podivilov 2012/07/02 17:08:18 Underlying c++ object doesn't implement merged met
+ pass
+
def StartInterface(self):
# Create emitters for c++ implementation.
if self.HasImplementation():
@@ -221,7 +224,7 @@ class NativeImplementationGenerator(systembase.BaseGenerator):
self._cpp_resolver_emitter = emitter.Emitter()
self._GenerateConstructors()
- self._GenerateEvents()
+ return self._members_emitter
def _GenerateConstructors(self):
html_interface_name = self._HTMLInterfaceName(self._interface.id)
@@ -322,68 +325,6 @@ class NativeImplementationGenerator(systembase.BaseGenerator):
raises_exceptions=raises_exceptions,
runtime_check=runtime_check)
- def _GenerateEvents(self):
- if self._interface.id == 'DocumentFragment':
- # Interface DocumentFragment extends Element in dart:html but this fact
- # is not reflected in idls.
- self._EmitEventGetter('_ElementEventsImpl')
- return
-
- events_attributes = [attr for attr in self._interface.attributes
- if attr.type.id == 'EventListener']
- if not 'EventTarget' in self._interface.ext_attrs and not events_attributes:
- return
-
- def IsEventTarget(interface):
- return ('EventTarget' in interface.ext_attrs and
- interface.id != 'EventTarget')
- is_root = not _FindParent(self._interface, self._database, IsEventTarget)
- if is_root:
- self._members_emitter.Emit(' _EventsImpl _on;\n')
-
- if not events_attributes:
- if is_root:
- self._EmitEventGetter('_EventsImpl')
- return
-
- events_class = '_%sEventsImpl' % self._interface.id
- self._EmitEventGetter(events_class)
-
- def HasEventAttributes(interface):
- return any([a.type.id == 'EventListener' for a in interface.attributes])
- parent = _FindParent(self._interface, self._database, HasEventAttributes)
- if parent:
- parent_events_class = '_%sEventsImpl' % parent.id
- else:
- parent_events_class = '_EventsImpl'
-
- html_inteface = self._HTMLInterfaceName(self._interface.id)
- events_members = self._dart_impl_emitter.Emit(
- '\n'
- 'class $EVENTS_CLASS extends $PARENT_EVENTS_CLASS implements $EVENTS_INTERFACE {\n'
- ' $EVENTS_CLASS(_ptr) : super(_ptr);\n'
- '$!MEMBERS\n'
- '}\n',
- EVENTS_CLASS=events_class,
- PARENT_EVENTS_CLASS=parent_events_class,
- EVENTS_INTERFACE='%sEvents' % html_inteface)
-
- events_attributes = DomToHtmlEvents(self._interface.id, events_attributes)
- for event_name in events_attributes:
- events_members.Emit(
- ' EventListenerList get $HTML_NAME() => this[\'$DOM_NAME\'];\n',
- HTML_NAME=DomToHtmlEvent(event_name),
- DOM_NAME=event_name)
-
- def _EmitEventGetter(self, events_class):
- self._members_emitter.Emit(
- '\n'
- ' $EVENTS_CLASS get on() {\n'
- ' if (_on === null) _on = new $EVENTS_CLASS(this);\n'
- ' return _on;\n'
- ' }\n',
- EVENTS_CLASS=events_class)
-
def _ImplClassName(self, interface_name):
return '_%sImpl' % interface_name
@@ -409,16 +350,6 @@ class NativeImplementationGenerator(systembase.BaseGenerator):
if IsDartListType(supertype) or IsDartCollectionType(supertype):
return root_class
- if supertype == 'EventTarget':
- # Most implementors of EventTarget specify the EventListener operations
- # again. If the operations are not specified, try to inherit from the
- # EventTarget implementation.
- #
- # Applies to MessagePort.
- if not [op for op in self._interface.operations if op.id == 'addEventListener']:
- return self._ImplClassName(supertype)
- return root_class
-
return self._ImplClassName(supertype)
def _HTMLInterfaceName(self, interface_name):

Powered by Google App Engine
This is Rietveld 408576698