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

Side by Side Diff: client/dom/scripts/systemhtml.py

Issue 9695015: Provide DartDomNameOfAttribute (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: fix native Created 8 years, 9 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 unified diff | Download patch | Annotate | Revision Log
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 the system to generate 6 """This module provides shared functionality for the system to generate
7 Dart:html APIs from the IDL database.""" 7 Dart:html APIs from the IDL database."""
8 8
9 from systemfrog import * 9 from systemfrog import *
10 from systeminterface import * 10 from systeminterface import *
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 emit_events, events = self._shared.GetEventAttributes(self._interface) 660 emit_events, events = self._shared.GetEventAttributes(self._interface)
661 if not emit_events: 661 if not emit_events:
662 return 662 return
663 elif events: 663 elif events:
664 self.AddEventAttributes(events) 664 self.AddEventAttributes(events)
665 else: 665 else:
666 self._EmitEventGetter(self._shared.GetParentEventsClass(self._interface)) 666 self._EmitEventGetter(self._shared.GetParentEventsClass(self._interface))
667 667
668 def AddAttribute(self, getter, setter): 668 def AddAttribute(self, getter, setter):
669 html_getter_name = self._shared.RenameInHtmlLibrary( 669 html_getter_name = self._shared.RenameInHtmlLibrary(
670 self._interface, getter.id, 'get:') 670 self._interface, DartDomNameOfAttribute(getter), 'get:')
671 html_setter_name = self._shared.RenameInHtmlLibrary( 671 html_setter_name = self._shared.RenameInHtmlLibrary(
672 self._interface, getter.id, 'set:') 672 self._interface, DartDomNameOfAttribute(getter), 'set:')
673 673
674 if not html_getter_name or self._shared.IsPrivate(html_getter_name): 674 if not html_getter_name or self._shared.IsPrivate(html_getter_name):
675 getter = None 675 getter = None
676 if not html_setter_name or self._shared.IsPrivate(html_setter_name): 676 if not html_setter_name or self._shared.IsPrivate(html_setter_name):
677 setter = None 677 setter = None
678 if not getter and not setter: 678 if not getter and not setter:
679 return 679 return
680 680
681 # We don't yet handle inconsistent renames of the getter and setter yet. 681 # We don't yet handle inconsistent renames of the getter and setter yet.
682 if html_getter_name and html_setter_name: 682 if html_getter_name and html_setter_name:
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
868 # TODO(sra): Use separate mixins for mutable implementations of List<T>. 868 # TODO(sra): Use separate mixins for mutable implementations of List<T>.
869 # TODO(sra): Use separate mixins for typed array implementations of List<T>. 869 # TODO(sra): Use separate mixins for typed array implementations of List<T>.
870 if self._interface.id != 'NodeList': 870 if self._interface.id != 'NodeList':
871 template_file = 'immutable_list_mixin.darttemplate' 871 template_file = 'immutable_list_mixin.darttemplate'
872 template = self._system._templates.Load(template_file) 872 template = self._system._templates.Load(template_file)
873 self._members_emitter.Emit(template, E=DartType(element_type)) 873 self._members_emitter.Emit(template, E=DartType(element_type))
874 874
875 def AddAttribute(self, getter, setter): 875 def AddAttribute(self, getter, setter):
876 876
877 html_getter_name = self._shared.RenameInHtmlLibrary( 877 html_getter_name = self._shared.RenameInHtmlLibrary(
878 self._interface, getter.id, 'get:') 878 self._interface, DartDomNameOfAttribute(getter), 'get:')
879 html_setter_name = self._shared.RenameInHtmlLibrary( 879 html_setter_name = self._shared.RenameInHtmlLibrary(
880 self._interface, getter.id, 'set:') 880 self._interface, DartDomNameOfAttribute(getter), 'set:')
881 881
882 if not html_getter_name: 882 if not html_getter_name:
883 getter = None 883 getter = None
884 if not html_setter_name: 884 if not html_setter_name:
885 setter = None 885 setter = None
886 886
887 if not getter and not setter: 887 if not getter and not setter:
888 return 888 return
889 889
890 if ((getter and (html_getter_name != getter.id or 890 if ((getter and (html_getter_name != getter.id or
(...skipping 15 matching lines...) Expand all
906 if getter and not setter and super_getter and not super_setter: 906 if getter and not setter and super_getter and not super_setter:
907 if DartType(getter.type.id) == DartType(super_getter.type.id): 907 if DartType(getter.type.id) == DartType(super_getter.type.id):
908 # Compatible getter, use the superclass property. This works because 908 # Compatible getter, use the superclass property. This works because
909 # JavaScript will do its own dynamic dispatch. 909 # JavaScript will do its own dynamic dispatch.
910 output_type = getter and self._NarrowOutputType(getter.type.id) 910 output_type = getter and self._NarrowOutputType(getter.type.id)
911 self._members_emitter.Emit( 911 self._members_emitter.Emit(
912 '\n' 912 '\n'
913 ' // Use implementation from $SUPER.\n' 913 ' // Use implementation from $SUPER.\n'
914 ' // final $TYPE $NAME;\n', 914 ' // final $TYPE $NAME;\n',
915 SUPER=super_getter_interface.id, 915 SUPER=super_getter_interface.id,
916 NAME=getter.id, 916 NAME=DartDomNameOfAttribute(getter),
917 TYPE=output_type) 917 TYPE=output_type)
918 return 918 return
919 919
920 self._members_emitter.Emit('\n // Shadowing definition.') 920 self._members_emitter.Emit('\n // Shadowing definition.')
921 self._AddAttributeUsingProperties(getter, setter) 921 self._AddAttributeUsingProperties(getter, setter)
922 return 922 return
923 923
924 output_type = getter and self._NarrowOutputType(getter.type.id) 924 output_type = getter and self._NarrowOutputType(getter.type.id)
925 input_type = setter and self._NarrowInputType(setter.type.id) 925 input_type = setter and self._NarrowInputType(setter.type.id)
926 if getter and setter and input_type == output_type: 926 if getter and setter and input_type == output_type:
927 self._members_emitter.Emit( 927 self._members_emitter.Emit(
928 '\n $TYPE $NAME;\n', 928 '\n $TYPE $NAME;\n',
929 NAME=getter.id, 929 NAME=DartDomNameOfAttribute(getter),
930 TYPE=output_type) 930 TYPE=output_type)
931 return 931 return
932 if getter and not setter: 932 if getter and not setter:
933 self._members_emitter.Emit( 933 self._members_emitter.Emit(
934 '\n final $TYPE $NAME;\n', 934 '\n final $TYPE $NAME;\n',
935 NAME=getter.id, 935 NAME=DartDomNameOfAttribute(getter),
936 TYPE=output_type) 936 TYPE=output_type)
937 return 937 return
938 self._AddAttributeUsingProperties(getter, setter) 938 self._AddAttributeUsingProperties(getter, setter)
939 939
940 def _AddAttributeUsingProperties(self, getter, setter): 940 def _AddAttributeUsingProperties(self, getter, setter):
941 if getter: 941 if getter:
942 self._AddGetter(getter) 942 self._AddGetter(getter)
943 if setter: 943 if setter:
944 self._AddSetter(setter) 944 self._AddSetter(setter)
945 945
946 def _AddGetter(self, attr): 946 def _AddGetter(self, attr):
947 self._AddRenamingGetter(attr, attr.id) 947 self._AddRenamingGetter(attr, DartDomNameOfAttribute(attr))
948 948
949 def _AddSetter(self, attr): 949 def _AddSetter(self, attr):
950 self._AddRenamingSetter(attr, attr.id) 950 self._AddRenamingSetter(attr, DartDomNameOfAttribute(attr))
951 951
952 def _AddRenamingGetter(self, attr, html_name): 952 def _AddRenamingGetter(self, attr, html_name):
953 return_type = self._NarrowOutputType(attr.type.id) 953 return_type = self._NarrowOutputType(attr.type.id)
954 if self._shared.MaybeReturnDocument(attr.type.id): 954 if self._shared.MaybeReturnDocument(attr.type.id):
955 self._members_emitter.Emit( 955 self._members_emitter.Emit(
956 '\n $TYPE get $(HTML_NAME)() => ' 956 '\n $TYPE get $(HTML_NAME)() => '
957 '_FixHtmlDocumentReference(_$(HTML_NAME));\n', 957 '_FixHtmlDocumentReference(_$(HTML_NAME));\n',
958 HTML_NAME=html_name, 958 HTML_NAME=html_name,
959 NAME=attr.id,
960 TYPE=return_type) 959 TYPE=return_type)
961 html_name = '_' + html_name 960 html_name = '_' + html_name
962 # For correctness this needs to be the return type of the native helper 961 # For correctness this needs to be the return type of the native helper
963 # method due to the fact that the real HTMLDocument object is not typed 962 # method due to the fact that the real HTMLDocument object is not typed
964 # as a document. TODO(jacobr): we could simplify this. 963 # as a document. TODO(jacobr): we could simplify this.
965 return_type = '_EventTargetImpl' 964 return_type = '_EventTargetImpl'
966 965
967 self._members_emitter.Emit( 966 self._members_emitter.Emit(
968 '\n $TYPE get $(HTML_NAME)() native "return $(THIS).$NAME;";\n', 967 '\n $TYPE get $(HTML_NAME)() native "return $(THIS).$NAME;";\n',
969 HTML_NAME=html_name, 968 HTML_NAME=html_name,
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
1369 if getter and html_getter_name: 1368 if getter and html_getter_name:
1370 self._AddGetter(getter, html_getter_name) 1369 self._AddGetter(getter, html_getter_name)
1371 if setter and html_setter_name: 1370 if setter and html_setter_name:
1372 self._AddSetter(setter, html_setter_name) 1371 self._AddSetter(setter, html_setter_name)
1373 1372
1374 def _AddGetter(self, attr, html_name): 1373 def _AddGetter(self, attr, html_name):
1375 if self._shared.MaybeReturnDocument(attr.type.id): 1374 if self._shared.MaybeReturnDocument(attr.type.id):
1376 self._members_emitter.Emit( 1375 self._members_emitter.Emit(
1377 '\n' 1376 '\n'
1378 ' $TYPE get $(HTML_NAME)() => ' 1377 ' $TYPE get $(HTML_NAME)() => '
1379 '_FixHtmlDocumentReference(_wrap($(THIS).$NAME));\n', 1378 '_FixHtmlDocumentReference(_wrap($(THIS).$DOM_NAME));\n',
1380 NAME=attr.id,
1381 HTML_NAME=html_name, 1379 HTML_NAME=html_name,
1380 DOM_NAME=DartDomNameOfAttribute(attr),
1382 TYPE=DartType(attr.type.id), 1381 TYPE=DartType(attr.type.id),
1383 THIS=self.DomObjectName()) 1382 THIS=self.DomObjectName())
1384 else: 1383 else:
1385 self._members_emitter.Emit( 1384 self._members_emitter.Emit(
1386 '\n' 1385 '\n'
1387 ' $TYPE get $(HTML_NAME)() => _wrap($(THIS).$NAME);\n', 1386 ' $TYPE get $(HTML_NAME)() => _wrap($(THIS).$DOM_NAME);\n',
1388 NAME=attr.id,
1389 HTML_NAME=html_name, 1387 HTML_NAME=html_name,
1388 DOM_NAME=DartDomNameOfAttribute(attr),
1390 TYPE=DartType(attr.type.id), 1389 TYPE=DartType(attr.type.id),
1391 THIS=self.DomObjectName()) 1390 THIS=self.DomObjectName())
1392 1391
1393 def _AddSetter(self, attr, html_name): 1392 def _AddSetter(self, attr, html_name):
1394 self._members_emitter.Emit( 1393 self._members_emitter.Emit(
1395 '\n' 1394 '\n'
1396 ' void set $(HTML_NAME)($TYPE value) { $(THIS).$NAME = _unwrap(value); }\n', 1395 ' void set $(HTML_NAME)($TYPE value) { '
1397 NAME=attr.id, 1396 '$(THIS).$DOM_NAME = _unwrap(value); }\n',
1398 HTML_NAME=html_name, 1397 HTML_NAME=html_name,
1398 DOM_NAME=DartDomNameOfAttribute(attr),
1399 TYPE=DartType(attr.type.id), 1399 TYPE=DartType(attr.type.id),
1400 THIS=self.DomObjectName()) 1400 THIS=self.DomObjectName())
1401 1401
1402 def AddSecondaryAttribute(self, interface, getter, setter): 1402 def AddSecondaryAttribute(self, interface, getter, setter):
1403 self._SecondaryContext(interface) 1403 self._SecondaryContext(interface)
1404 self.AddAttribute(getter, setter) 1404 self.AddAttribute(getter, setter)
1405 1405
1406 def AddSecondaryOperation(self, interface, info): 1406 def AddSecondaryOperation(self, interface, info):
1407 self._SecondaryContext(interface) 1407 self._SecondaryContext(interface)
1408 self.AddOperation(info) 1408 self.AddOperation(info)
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after
1772 # dispatch has removed f(X), leaving only f(Y), but there is no guarantee 1772 # dispatch has removed f(X), leaving only f(Y), but there is no guarantee
1773 # that Y = Z-X, so we need to check for Y. 1773 # that Y = Z-X, so we need to check for Y.
1774 true_code = emitter.Emit( 1774 true_code = emitter.Emit(
1775 '$(INDENT)if ($COND) {\n' 1775 '$(INDENT)if ($COND) {\n'
1776 '$!TRUE' 1776 '$!TRUE'
1777 '$(INDENT)}\n', 1777 '$(INDENT)}\n',
1778 COND=test, INDENT=indent) 1778 COND=test, INDENT=indent)
1779 self.GenerateDispatch( 1779 self.GenerateDispatch(
1780 true_code, info, indent + ' ', position + 1, positive) 1780 true_code, info, indent + ' ', position + 1, positive)
1781 return True 1781 return True
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698