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

Unified Diff: lib/html/scripts/systemhtml.py

Issue 10969073: Fixing up WheelEvent to follow W3C standards and work on all platforms. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Incorporating review feedback Created 8 years, 3 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 | « lib/html/scripts/htmlrenamer.py ('k') | lib/html/scripts/systemnative.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/html/scripts/systemhtml.py
diff --git a/lib/html/scripts/systemhtml.py b/lib/html/scripts/systemhtml.py
index e1e4d4259d7c59fbaa8c8db79536ddfaf747a0b4..af82148fd633c38709ab2bf1b6f047485610e900 100644
--- a/lib/html/scripts/systemhtml.py
+++ b/lib/html/scripts/systemhtml.py
@@ -16,6 +16,7 @@ _js_custom_members = set([
'Element.insertAdjacentElement',
'Element.insertAdjacentHTML',
'Element.insertAdjacentText',
+ 'ElementEvents.mouseWheel',
'IDBDatabase.transaction',
'IFrameElement.contentWindow',
'MouseEvent.offsetX',
@@ -710,12 +711,16 @@ class HtmlDartInterfaceGenerator(BaseGenerator):
PARENTS=', '.join(
self._shared.GetParentsEventsClasses(self._interface)))
- # TODO(jacobr): specify the type of _ptr as EventTarget
- implementation_events_members = self._implementation_emitter.Emit(
+ template_file = 'impl_%s.darttemplate' % events_interface
+ template = (self._backend._system._templates.TryLoad(template_file) or
'\n'
'class $CLASSNAME extends $SUPER implements $INTERFACE {\n'
' $CLASSNAME(_ptr) : super(_ptr);\n'
- '$!MEMBERS}\n',
+ '$!MEMBERS}\n')
+
+ # TODO(jacobr): specify the type of _ptr as EventTarget
+ implementation_events_members = self._implementation_emitter.Emit(
+ template,
CLASSNAME=events_class,
INTERFACE=events_interface,
SUPER=parent_events_class)
@@ -723,13 +728,15 @@ class HtmlDartInterfaceGenerator(BaseGenerator):
event_attrs = DomToHtmlEvents(self._html_interface_name, event_attrs)
for event_name in event_attrs:
if event_name in _html_event_names:
+ dart_event_name = _html_event_names[event_name]
events_members.Emit('\n EventListenerList get $NAME;\n',
- NAME=_html_event_names[event_name])
- implementation_events_members.Emit(
- "\n"
- " EventListenerList get $NAME => this['$DOM_NAME'];\n",
- NAME=_html_event_names[event_name],
- DOM_NAME=event_name)
+ NAME=dart_event_name)
+ if not self._backend.HasCustomEventImplementation(dart_event_name):
+ implementation_events_members.Emit(
+ "\n"
+ " EventListenerList get $NAME => this['$DOM_NAME'];\n",
+ NAME=dart_event_name,
+ DOM_NAME=event_name)
else:
raise Exception('No known html even name for event: ' + event_name)
@@ -1210,6 +1217,10 @@ class HtmlDart2JSClassGenerator(Dart2JSInterfaceGenerator):
member_name = '%s.%s' % (self._html_interface_name, member_name)
return member_name in _js_custom_members
+ def HasCustomEventImplementation(self, member_name):
+ member_name = '%sEvents.%s' % (self._html_interface_name, member_name)
+ return member_name in _js_custom_members
+
def _HasJavaScriptIndexingBehaviour(self):
"""Returns True if the native object has an indexer and length property."""
(element_type, requires_indexer) = ListImplementationInfo(
« no previous file with comments | « lib/html/scripts/htmlrenamer.py ('k') | lib/html/scripts/systemnative.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698