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

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

Issue 10915245: Removing interfaces from dart:html (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/generator.py ('k') | lib/html/src/KeyLocation.dart » ('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 3ff19ada8bc2eecdab171a16b6391ecb118fb8f6..02b9e2840d194c1f72fc9ad78a5df51d242d2703 100644
--- a/lib/html/scripts/systemhtml.py
+++ b/lib/html/scripts/systemhtml.py
@@ -332,14 +332,16 @@ def HtmlElementConstructorInfos(typename):
def EmitHtmlElementFactoryConstructors(emitter, infos, typename, class_name):
for info in infos:
constructor_info = info.ConstructorInfo(typename)
+
inits = emitter.Emit(
'\n'
- ' factory $CONSTRUCTOR($PARAMS) {\n'
+ ' static $RETURN_TYPE $CONSTRUCTOR($PARAMS) {\n'
' $CLASS _e = _document.$dom_createElement("$TAG");\n'
'$!INITS'
' return _e;\n'
' }\n',
- CONSTRUCTOR=constructor_info.ConstructorFullName(),
+ RETURN_TYPE=constructor_info.type_name,
+ CONSTRUCTOR=constructor_info.ConstructorFactoryName(DartType),
CLASS=class_name,
TAG=info.tag,
PARAMS=constructor_info.ParametersInterfaceDeclaration(DartType))
@@ -486,29 +488,30 @@ class HtmlDartInterfaceGenerator(BaseGenerator):
typename = self._html_interface_name
- extends = []
- suppressed_extends = []
+ implements = []
+ suppressed_implements = []
for parent in self._interface.parents:
# TODO(vsm): Remove source_filter.
if MatchSourceFilter(parent):
# Parent is a DOM type.
- extends.append(self._DartType(parent.type.id))
+ implements.append(self._DartType(parent.type.id))
elif '<' in parent.type.id:
# Parent is a Dart collection type.
# TODO(vsm): Make this check more robust.
- extends.append(self._DartType(parent.type.id))
+ implements.append(self._DartType(parent.type.id))
else:
- suppressed_extends.append('%s.%s' %
+ suppressed_implements.append('%s.%s' %
(self._common_prefix, self._DartType(parent.type.id)))
comment = ' extends'
- extends_str = ''
- if extends:
- extends_str += ' extends ' + ', '.join(extends)
+ implements_str = ''
+ if implements:
+ implements_str += ' implements ' + ', '.join(implements)
comment = ','
- if suppressed_extends:
- extends_str += ' /*%s %s */' % (comment, ', '.join(suppressed_extends))
+ if suppressed_implements:
+ implements_str += ' /*%s %s */' % (comment,
+ ', '.join(suppressed_implements))
factory_provider = None
if typename in interface_factories:
@@ -547,16 +550,13 @@ class HtmlDartInterfaceGenerator(BaseGenerator):
else:
factory_provider = info.factory_provider_name
- if factory_provider:
- extends_str += ' default ' + factory_provider
-
# TODO(vsm): Add appropriate package / namespace syntax.
(self._type_comment_emitter,
self._members_emitter,
self._top_level_emitter) = self._interface_emitter.Emit(
interface_template + '$!TOP_LEVEL',
ID=typename,
- EXTENDS=extends_str)
+ EXTENDS=implements_str)
self._type_comment_emitter.Emit("/// @domName $DOMNAME",
DOMNAME=self._interface.doc_js_name)
@@ -571,25 +571,25 @@ class HtmlDartInterfaceGenerator(BaseGenerator):
self._implementation_members_emitter = self._backend.StartInterface()
for constructor_info in constructors:
- self._members_emitter.Emit(
- '\n'
- ' $CTOR($PARAMS);\n',
- CTOR=self._DartType(constructor_info.ConstructorFullName()),
- PARAMS=constructor_info.ParametersInterfaceDeclaration(self._DartType))
+ constructor_info.GenerateFactoryInvocation(
+ self._DartType, self._members_emitter, factory_provider)
element_type = MaybeTypedArrayElementTypeInHierarchy(
self._interface, self._system._database)
if element_type:
self._members_emitter.Emit(
'\n'
- ' $CTOR(int length);\n'
+ ' factory $CTOR(int length) =>\n'
+ ' $FACTORY.create$(CTOR)(length);\n'
'\n'
- ' $CTOR.fromList(List<$TYPE> list);\n'
+ ' factory $CTOR.fromList(List<$TYPE> list) =>\n'
+ ' $FACTORY.create$(CTOR)_fromList(list);\n'
'\n'
- ' $CTOR.fromBuffer(ArrayBuffer buffer,'
- ' [int byteOffset, int length]);\n',
+ ' factory $CTOR.fromBuffer(ArrayBuffer buffer, [int byteOffset, int length]) => \n'
+ ' $FACTORY.create$(CTOR)_fromBuffer(buffer, byteOffset, length);\n',
CTOR=self._interface.id,
- TYPE=self._DartType(element_type))
+ TYPE=self._DartType(element_type),
+ FACTORY=factory_provider)
self._GenerateEvents()
@@ -627,11 +627,15 @@ class HtmlDartInterfaceGenerator(BaseGenerator):
self._members_emitter.Emit('\n /** @domName $DOMINTERFACE.$DOMNAME */',
DOMINTERFACE=attribute.doc_js_interface_name,
DOMNAME=dom_name)
- modifier = 'final ' if read_only else ''
- self._members_emitter.Emit('\n $MODIFIER$TYPE $NAME;\n',
- MODIFIER=modifier,
+ if read_only:
+ template = '\n abstract $TYPE get $NAME;\n'
+ else:
+ template = '\n $TYPE $NAME;\n'
+
+ self._members_emitter.Emit(template,
NAME=html_name,
TYPE=self._DartType(attribute.type.id))
+
self._backend.AddAttribute(attribute, html_name, read_only)
def AddSecondaryAttribute(self, interface, attribute):
@@ -699,7 +703,7 @@ class HtmlDartInterfaceGenerator(BaseGenerator):
self._EmitEventGetter(events_interface, events_class)
events_members = self._interface_emitter.Emit(
- '\ninterface $INTERFACE extends $PARENTS {\n$!MEMBERS}\n',
+ '\nabstract class $INTERFACE implements $PARENTS {\n$!MEMBERS}\n',
INTERFACE=events_interface,
PARENTS=', '.join(
self._shared.GetParentsEventsClasses(self._interface)))
« no previous file with comments | « lib/html/scripts/generator.py ('k') | lib/html/src/KeyLocation.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698