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

Unified Diff: tools/dom/scripts/systemhtml.py

Issue 16638013: Adding annotations for native types of type Object or dynamic. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 6 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 | « tools/dom/scripts/logging.conf ('k') | tools/dom/templates/html/impl/impl_AudioContext.darttemplate » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/dom/scripts/systemhtml.py
diff --git a/tools/dom/scripts/systemhtml.py b/tools/dom/scripts/systemhtml.py
index cc0d179dc163b9e85eb2f830a80531dbd56d11db..e80e82f9ad42d224e321fe1b8137a6084167fffd 100644
--- a/tools/dom/scripts/systemhtml.py
+++ b/tools/dom/scripts/systemhtml.py
@@ -7,11 +7,15 @@
Dart:html APIs from the IDL database."""
import emitter
+import logging
import monitored
import os
+import re
from generator import *
from htmldartgenerator import *
+_logger = logging.getLogger('systemhtml')
+
HTML_LIBRARY_NAMES = ['chrome', 'html', 'indexed_db', 'svg',
'web_audio', 'web_gl', 'web_sql']
@@ -794,7 +798,7 @@ class Dart2JSBackend(HtmlDartGenerator):
output_type = self.SecureOutputType(attribute.type.id)
input_type = self._NarrowInputType(attribute.type.id)
- metadata = self._Metadata(attribute.type.id, attribute.id)
+ metadata = self._Metadata(attribute.type.id, attribute.id, output_type)
rename = self._RenamingAnnotation(attribute.id, html_name)
if not read_only:
self._members_emitter.Emit(
@@ -867,7 +871,7 @@ class Dart2JSBackend(HtmlDartGenerator):
"\n @JSName('$NAME')"
'\n $(METADATA)final $NATIVE_TYPE _get_$HTML_NAME;'
'\n',
- METADATA=self._Metadata(attr.type.id, html_name),
+ METADATA=self._Metadata(attr.type.id, html_name, conversion.input_type),
CONVERT=conversion.function_name,
HTML_NAME=html_name,
NAME=attr.id,
@@ -916,7 +920,8 @@ class Dart2JSBackend(HtmlDartGenerator):
'\n'
' $RENAME$METADATA$MODIFIERS$TYPE $NAME($PARAMS) native;\n',
RENAME=self._RenamingAnnotation(info.declared_name, html_name),
- METADATA=self._Metadata(info.type_name, info.declared_name),
+ METADATA=self._Metadata(info.type_name, info.declared_name,
+ self.SecureOutputType(info.type_name)),
MODIFIERS='static ' if info.IsStatic() else '',
TYPE=self.SecureOutputType(info.type_name),
NAME=html_name,
@@ -998,14 +1003,14 @@ class Dart2JSBackend(HtmlDartGenerator):
self._members_emitter.Emit(
' $RENAME$METADATA$MODIFIERS$TYPE$TARGET($PARAMS) native;\n',
RENAME=self._RenamingAnnotation(info.declared_name, target),
- METADATA=self._Metadata(info.type_name, info.declared_name),
+ METADATA=self._Metadata(info.type_name, info.declared_name, None),
MODIFIERS='static ' if info.IsStatic() else '',
TYPE=TypeOrNothing(native_return_type),
TARGET=target,
PARAMS=', '.join(target_parameters))
declaration = '%s%s%s %s(%s)' % (
- self._Metadata(info.type_name, info.declared_name),
+ self._Metadata(info.type_name, info.declared_name, return_type),
'static ' if info.IsStatic() else '',
return_type,
html_name,
@@ -1053,7 +1058,7 @@ class Dart2JSBackend(HtmlDartGenerator):
return "@JSName('%s')\n " % idl_name
return ''
- def _Metadata(self, idl_type, idl_member_name, indent=' '):
+ def _Metadata(self, idl_type, idl_member_name, dart_type, indent=' '):
anns = self._metadata.GetDart2JSMetadata(
idl_type, self._library_name, self._interface, idl_member_name)
@@ -1066,6 +1071,13 @@ class Dart2JSBackend(HtmlDartGenerator):
"@Returns('%s')" % native_type,
"@Creates('%s')" % native_type,
]
+ if dart_type == 'dynamic' or dart_type == 'Object':
+ def js_type_annotation(ann):
+ return re.search('^@.*Returns', ann) or re.search('^@.*Creates', ann)
+ if not filter(js_type_annotation, anns):
+ _logger.warn('Member with wildcard native type: %s.%s' %
+ (self._interface.id, idl_member_name))
+
return self._metadata.FormatMetadata(anns, indent);
def CustomJSMembers(self):
« no previous file with comments | « tools/dom/scripts/logging.conf ('k') | tools/dom/templates/html/impl/impl_AudioContext.darttemplate » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698