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

Side by Side Diff: sdk/lib/html/scripts/generator.py

Issue 11411347: Refine types of EventTarget (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sdk/lib/html/dart2js/html_dart2js.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 shared functionality for systems to generate 6 """This module provides shared functionality for systems to generate
7 Dart APIs from the IDL database.""" 7 Dart APIs from the IDL database."""
8 8
9 import copy 9 import copy
10 import re 10 import re
(...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 return None 587 return None
588 588
589 # ------------------------------------------------------------------------------ 589 # ------------------------------------------------------------------------------
590 590
591 # Annotations to be placed on native members. The table is indexed by the IDL 591 # Annotations to be placed on native members. The table is indexed by the IDL
592 # interface and member name, and by IDL return or field type name. Both are 592 # interface and member name, and by IDL return or field type name. Both are
593 # used to assemble the annotations: 593 # used to assemble the annotations:
594 # 594 #
595 # INTERFACE.MEMBER: annotations for member. 595 # INTERFACE.MEMBER: annotations for member.
596 # +TYPE: add annotations only if there are member annotations. 596 # +TYPE: add annotations only if there are member annotations.
597 # -TYPE: add annotations only if there are no member annotations.
597 # TYPE: add regardless of member annotations. 598 # TYPE: add regardless of member annotations.
598 599
599 dart2js_annotations = { 600 dart2js_annotations = {
600 601
601 'CanvasRenderingContext2D.createImageData': 602 'CanvasRenderingContext2D.createImageData':
602 "@Creates('ImageData|=Object')", 603 "@Creates('ImageData|=Object')",
603 604
604 'CanvasRenderingContext2D.getImageData': 605 'CanvasRenderingContext2D.getImageData':
605 "@Creates('ImageData|=Object')", 606 "@Creates('ImageData|=Object')",
606 607
607 'CanvasRenderingContext2D.webkitGetImageDataHD': 608 'CanvasRenderingContext2D.webkitGetImageDataHD':
608 "@Creates('ImageData|=Object')", 609 "@Creates('ImageData|=Object')",
609 610
610 # Methods returning Window can return a local window, or a cross-frame 611 # Methods returning Window can return a local window, or a cross-frame
611 # window (=Object) that needs wrapping. 612 # window (=Object) that needs wrapping.
612 'DOMWindow': 613 'DOMWindow':
613 "@Creates('LocalWindow|=Object') @Returns('LocalWindow|=Object')", 614 "@Creates('LocalWindow|=Object') @Returns('LocalWindow|=Object')",
614 615
615 'DOMWindow.openDatabase': "@Creates('Database') @Creates('DatabaseSync')", 616 'DOMWindow.openDatabase': "@Creates('Database') @Creates('DatabaseSync')",
616 617
617 # Cross-frame windows are EventTargets. 618 # Cross-frame windows are EventTargets.
618 'EventTarget': 619 '-EventTarget':
619 #"@Creates('Null') @Returns('EventTarget|=Object')",
620 "@Creates('EventTarget|=Object') @Returns('EventTarget|=Object')", 620 "@Creates('EventTarget|=Object') @Returns('EventTarget|=Object')",
621 621
622 # To be in callback with the browser-created Event, we had to have called
623 # addEventListener on the target, so we avoid
624 'Event.currentTarget':
625 "@Creates('Null') @Returns('EventTarget|=Object')",
626
627 # Only nodes in the DOM bubble and have target !== currentTarget.
628 'Event.target':
629 "@Creates('Node') @Returns('EventTarget|=Object')",
630
631 'MouseEvent.relatedTarget':
632 "@Creates('Node') @Returns('EventTarget|=Object')",
633
634 # Touch targets are Elements in a Document, or the Document.
635 'Touch.target':
636 "@Creates('Element|Document') @Returns('Element|Document')",
637
638
622 'FileReader.result': "@Creates('String|ArrayBuffer|Null')", 639 'FileReader.result': "@Creates('String|ArrayBuffer|Null')",
623 640
624 # Rather than have the result of an IDBRequest as a union over all possible 641 # Rather than have the result of an IDBRequest as a union over all possible
625 # results, we mark the result as instantiating any classes, and mark 642 # results, we mark the result as instantiating any classes, and mark
626 # each operation with the classes that it could cause to be asynchronously 643 # each operation with the classes that it could cause to be asynchronously
627 # instantiated. 644 # instantiated.
628 'IDBRequest.result': "@Creates('Null')", 645 'IDBRequest.result': "@Creates('Null')",
629 646
630 # The source is usually a participant in the operation that generated the 647 # The source is usually a participant in the operation that generated the
631 # IDBRequest. 648 # IDBRequest.
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 ann1 = dart2js_annotations.get("%s.%s" % (interface_name, member_name)) 697 ann1 = dart2js_annotations.get("%s.%s" % (interface_name, member_name))
681 if ann1: 698 if ann1:
682 ann2 = dart2js_annotations.get('+' + idl_type) 699 ann2 = dart2js_annotations.get('+' + idl_type)
683 if ann2: 700 if ann2:
684 return ann2 + ' ' + ann1 701 return ann2 + ' ' + ann1
685 ann2 = dart2js_annotations.get(idl_type) 702 ann2 = dart2js_annotations.get(idl_type)
686 if ann2: 703 if ann2:
687 return ann2 + ' ' + ann1 704 return ann2 + ' ' + ann1
688 return ann1 705 return ann1
689 706
707 ann2 = dart2js_annotations.get('-' + idl_type)
708 if ann2:
709 return ann2
690 ann2 = dart2js_annotations.get(idl_type) 710 ann2 = dart2js_annotations.get(idl_type)
691 return ann2 711 return ann2
692 712
693 # ------------------------------------------------------------------------------ 713 # ------------------------------------------------------------------------------
694 714
695 class IDLTypeInfo(object): 715 class IDLTypeInfo(object):
696 def __init__(self, idl_type, data): 716 def __init__(self, idl_type, data):
697 self._idl_type = idl_type 717 self._idl_type = idl_type
698 self._data = data 718 self._data = data
699 719
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after
1225 self) 1245 self)
1226 1246
1227 if type_data.clazz == 'SVGTearOff': 1247 if type_data.clazz == 'SVGTearOff':
1228 dart_interface_name = self._renamer.RenameInterface( 1248 dart_interface_name = self._renamer.RenameInterface(
1229 self._database.GetInterface(type_name)) 1249 self._database.GetInterface(type_name))
1230 return SVGTearOffIDLTypeInfo( 1250 return SVGTearOffIDLTypeInfo(
1231 type_name, type_data, dart_interface_name, self) 1251 type_name, type_data, dart_interface_name, self)
1232 1252
1233 class_name = '%sIDLTypeInfo' % type_data.clazz 1253 class_name = '%sIDLTypeInfo' % type_data.clazz
1234 return globals()[class_name](type_name, type_data) 1254 return globals()[class_name](type_name, type_data)
OLDNEW
« no previous file with comments | « sdk/lib/html/dart2js/html_dart2js.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698