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

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

Issue 1903893003: Fix strong mode errors in SVG (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 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 | « sdk/lib/svg/dart2js/svg_dart2js.dart ('k') | no next file » | 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 64351a8ac06ebeadf1d99f8a60baba4c11d3cdba..62896ba9ebc8c99b3c9c9fb7260fee2a21951b92 100644
--- a/tools/dom/scripts/systemhtml.py
+++ b/tools/dom/scripts/systemhtml.py
@@ -19,6 +19,22 @@ _logger = logging.getLogger('systemhtml')
HTML_LIBRARY_NAMES = ['html', 'indexed_db', 'svg',
'web_audio', 'web_gl', 'web_sql']
+#
+# The following two sets let us avoid shadowing fields with properties.
+# This information could be derived from the IDL files but would require
+# a significant refactor to compute accurately. Instead we manually compute
+# these sets based on manual triage ofstrong mode errors.
Alan Knight 2016/04/21 19:37:07 extreme nit: typo in ofstrong
Jacob 2016/04/21 19:42:41 it isdone
+_force_property_members = monitored.Set('systemhtml._force_property_members', [
+ 'Element.outerHtml',
+ 'Element.isContentEditable',
+ 'AudioContext.createGain',
+ 'AudioContext.createScriptProcessor',
+ ])
+_safe_to_ignore_shadowing_members = monitored.Set('systemhtml._safe_to_ignore_shadowing_members', [
+ 'SVGElement.tabIndex',
+ 'SVGStyleElement.title',
+ ])
+
_js_custom_members = monitored.Set('systemhtml._js_custom_members', [
'AudioBufferSourceNode.start',
'AudioBufferSourceNode.stop',
@@ -895,8 +911,13 @@ class Dart2JSBackend(HtmlDartGenerator):
# is renamed.
(super_attribute, super_attribute_interface) = self._FindShadowedAttribute(
attribute)
+ if self._ForcePropertyMember(html_name):
+ self._members_emitter.Emit('\n // Using property as subclass shadows.');
+ self._AddAttributeUsingProperties(attribute, html_name, read_only)
+ return
+
if super_attribute:
- if read_only:
+ if read_only or self._SafeToIgnoreShadowingMember(html_name):
if attribute.type.id == super_attribute.type.id:
# Compatible attribute, use the superclass property. This works
# because JavaScript will do its own dynamic dispatch.
@@ -1161,6 +1182,14 @@ class Dart2JSBackend(HtmlDartGenerator):
member_name = '%s.%s' % (self._interface.doc_js_name, member_name)
return member_name in _js_custom_members
+ def _ForcePropertyMember(self, member_name):
+ member_name = '%s.%s' % (self._interface.doc_js_name, member_name)
+ return member_name in _force_property_members
+
+ def _SafeToIgnoreShadowingMember(self, member_name):
+ member_name = '%s.%s' % (self._interface.doc_js_name, member_name)
+ return member_name in _safe_to_ignore_shadowing_members
+
def _RenamingAnnotation(self, idl_name, member_name):
if member_name != idl_name:
return "@JSName('%s')\n " % idl_name
« no previous file with comments | « sdk/lib/svg/dart2js/svg_dart2js.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698