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

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: Further fixes to dartium. 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
Index: lib/html/scripts/systemhtml.py
diff --git a/lib/html/scripts/systemhtml.py b/lib/html/scripts/systemhtml.py
index 3ff19ada8bc2eecdab171a16b6391ecb118fb8f6..7390025735d12d5d0b23939eadc17d9b5513f410 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))
@@ -505,7 +507,7 @@ class HtmlDartInterfaceGenerator(BaseGenerator):
comment = ' extends'
extends_str = ''
if extends:
- extends_str += ' extends ' + ', '.join(extends)
+ extends_str += ' implements ' + ', '.join(extends)
comment = ','
if suppressed_extends:
extends_str += ' /*%s %s */' % (comment, ', '.join(suppressed_extends))
@@ -547,9 +549,6 @@ 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,
@@ -571,25 +570,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 +626,14 @@ 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,
- NAME=html_name,
- TYPE=self._DartType(attribute.type.id))
+ if read_only:
Anton Muhin 2012/09/17 10:11:29 nit: I'd prefer not to duplicate the logic here to
blois 2012/09/17 19:48:22 Done.
+ self._members_emitter.Emit('\n abstract $TYPE get $NAME;\n',
+ NAME=html_name,
+ TYPE=self._DartType(attribute.type.id))
+ else:
+ self._members_emitter.Emit('\n $TYPE $NAME;\n',
+ NAME=html_name,
+ TYPE=self._DartType(attribute.type.id))
self._backend.AddAttribute(attribute, html_name, read_only)
def AddSecondaryAttribute(self, interface, attribute):
@@ -699,7 +701,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)))

Powered by Google App Engine
This is Rietveld 408576698