| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 3 # for details. All rights reserved. Use of this source code is governed by a | 3 # for details. All rights reserved. Use of this source code is governed by a |
| 4 # BSD-style license that can be found in the LICENSE file. | 4 # BSD-style license that can be found in the LICENSE file. |
| 5 | 5 |
| 6 """This module provides functionality to generate dart:html event classes.""" | 6 """This module provides functionality to generate dart:html event classes.""" |
| 7 | 7 |
| 8 import logging | 8 import logging |
| 9 import monitored | 9 import monitored |
| 10 | 10 |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 _html_explicit_event_classes = set(['DocumentFragment']) | 237 _html_explicit_event_classes = set(['DocumentFragment']) |
| 238 | 238 |
| 239 class HtmlEventGenerator(object): | 239 class HtmlEventGenerator(object): |
| 240 | 240 |
| 241 def __init__(self, database, renamer, metadata, template_loader): | 241 def __init__(self, database, renamer, metadata, template_loader): |
| 242 self._event_classes = set() | 242 self._event_classes = set() |
| 243 self._database = database | 243 self._database = database |
| 244 self._renamer = renamer | 244 self._renamer = renamer |
| 245 self._metadata = metadata | 245 self._metadata = metadata |
| 246 self._template_loader = template_loader | 246 self._template_loader = template_loader |
| 247 self._media_events = None |
| 247 | 248 |
| 248 def EmitStreamProviders(self, interface, custom_events, | 249 def EmitStreamProviders(self, interface, custom_events, |
| 249 members_emitter, library_name): | 250 members_emitter, library_name): |
| 250 events = self._GetEvents(interface, custom_events) | 251 events = self._GetEvents(interface, custom_events) |
| 251 if not events: | 252 if not events: |
| 252 return | 253 return |
| 253 | 254 |
| 254 for event_info in events: | 255 for event_info in events: |
| 255 (dom_name, html_name, event_type) = event_info | 256 (dom_name, html_name, event_type) = event_info |
| 256 annotation_name = dom_name + 'Event' | 257 annotation_name = dom_name + 'Event' |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 """ Checks if the event should not be emitted. | 381 """ Checks if the event should not be emitted. |
| 381 """ | 382 """ |
| 382 if self._renamer.ShouldSuppressMember(interface, event_name, 'on:'): | 383 if self._renamer.ShouldSuppressMember(interface, event_name, 'on:'): |
| 383 return True | 384 return True |
| 384 | 385 |
| 385 if (interface.doc_js_name == 'Window' or | 386 if (interface.doc_js_name == 'Window' or |
| 386 interface.doc_js_name == 'Element' or | 387 interface.doc_js_name == 'Element' or |
| 387 interface.doc_js_name == 'Document' or | 388 interface.doc_js_name == 'Document' or |
| 388 interface.doc_js_name == 'GlobalEventHandlers'): | 389 interface.doc_js_name == 'GlobalEventHandlers'): |
| 389 media_interface = self._database.GetInterface('HTMLMediaElement') | 390 media_interface = self._database.GetInterface('HTMLMediaElement') |
| 390 media_events = self._GetEvents(media_interface, []) | 391 if not self._media_events: |
| 391 if self._HasEvent(media_events, event_name, event_type): | 392 self._media_events = self._GetEvents(media_interface, []) |
| 393 if self._HasEvent(self._media_events, event_name, event_type): |
| 392 return True | 394 return True |
| 393 | 395 |
| 394 def _GetEventRedirection(self, interface, event_name, event_type): | 396 def _GetEventRedirection(self, interface, event_name, event_type): |
| 395 """ For events which are declared in one place, but exposed elsewhere, | 397 """ For events which are declared in one place, but exposed elsewhere, |
| 396 this gets the source of the event (where the provider is declared) | 398 this gets the source of the event (where the provider is declared) |
| 397 """ | 399 """ |
| 398 if interface.doc_js_name == 'Window' or interface.doc_js_name == 'Document': | 400 if interface.doc_js_name == 'Window' or interface.doc_js_name == 'Document': |
| 399 element_interface = self._database.GetInterface('Element') | 401 element_interface = self._database.GetInterface('Element') |
| 400 element_events = self._GetEvents(element_interface, []) | 402 element_events = self._GetEvents(element_interface, []) |
| 401 if self._HasEvent(element_events, event_name, event_type): | 403 if self._HasEvent(element_events, event_name, event_type): |
| 402 return 'Element' | 404 return 'Element' |
| 403 return None | 405 return None |
| 404 | 406 |
| 405 def _FindEventInfo(self, html_interface_name, dom_event_name): | 407 def _FindEventInfo(self, html_interface_name, dom_event_name): |
| 406 """ Finds the event info (event name and type). | 408 """ Finds the event info (event name and type). |
| 407 """ | 409 """ |
| 408 key = '%s.%s' % (html_interface_name, dom_event_name) | 410 key = '%s.%s' % (html_interface_name, dom_event_name) |
| 409 if key in _html_event_types: | 411 if key in _html_event_types: |
| 410 return _html_event_types[key] | 412 return _html_event_types[key] |
| 411 key = '*.%s' % dom_event_name | 413 key = '*.%s' % dom_event_name |
| 412 if key in _html_event_types: | 414 if key in _html_event_types: |
| 413 return _html_event_types[key] | 415 return _html_event_types[key] |
| 414 _logger.warn('Cannot resolve event type for %s.%s' % | 416 _logger.warn('Cannot resolve event type for %s.%s' % |
| 415 (html_interface_name, dom_event_name)) | 417 (html_interface_name, dom_event_name)) |
| 416 return None | 418 return None |
| OLD | NEW |