diff options
author | Gaming4JC <g4jc@hyperbola.info> | 2020-01-18 23:50:33 -0500 |
---|---|---|
committer | Gaming4JC <g4jc@hyperbola.info> | 2020-01-26 15:50:41 -0500 |
commit | 9bf83c6a785ba7463822a159cdaf9eb06ece3690 (patch) | |
tree | 492974b82299ba177ecb14d0ed911d6bedfeec22 /parser/html/java/htmlparser/translator-src | |
parent | bec4d0ecdc2576e09b02baaf24961e70dceec605 (diff) | |
download | UXP-9bf83c6a785ba7463822a159cdaf9eb06ece3690.tar UXP-9bf83c6a785ba7463822a159cdaf9eb06ece3690.tar.gz UXP-9bf83c6a785ba7463822a159cdaf9eb06ece3690.tar.lz UXP-9bf83c6a785ba7463822a159cdaf9eb06ece3690.tar.xz UXP-9bf83c6a785ba7463822a159cdaf9eb06ece3690.zip |
Bug 483155 - Put Gecko content creator function pointers on ElementName.
Tag UXP Issue #1344
Diffstat (limited to 'parser/html/java/htmlparser/translator-src')
3 files changed, 40 insertions, 3 deletions
diff --git a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java index dc524820f..432f08b90 100644 --- a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java +++ b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java @@ -92,6 +92,18 @@ public class AnnotationHelperVisitor<T> extends VoidVisitorAdapter<T> { return hasAnnotation("CharacterName"); } + protected boolean creator() { + return hasAnnotation("Creator"); + } + + protected boolean htmlCreator() { + return hasAnnotation("HtmlCreator"); + } + + protected boolean svgCreator() { + return hasAnnotation("SvgCreator"); + } + private boolean hasAnnotation(String anno) { if (currentAnnotations == null) { return false; diff --git a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java index 7943368f7..963d1ac68 100644 --- a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java +++ b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java @@ -117,7 +117,8 @@ public class CppTypes { "nsHtml5String", "nsNameSpaceManager", "nsIContent", "nsTraceRefcnt", "jArray", "nsHtml5ArrayCopy", "nsAHtml5TreeBuilderState", "nsHtml5Atoms", "nsHtml5ByteReadable", "nsIUnicodeDecoder", - "nsHtml5Macros", "nsIContentHandle", "nsHtml5Portability" }; + "nsHtml5Macros", "nsIContentHandle", "nsHtml5Portability", + "nsHtml5ContentCreatorFunction"}; private static final String[] OTHER_DECLATIONS = {}; @@ -232,6 +233,18 @@ public class CppTypes { return "nsIContentHandle*"; } + public String htmlCreatorType() { + return "mozilla::dom::HTMLContentCreatorFunction"; + } + + public String svgCreatorType() { + return "mozilla::dom::SVGContentCreatorFunction"; + } + + public String creatorType() { + return "nsHtml5ContentCreatorFunction"; + } + public String xhtmlNamespaceLiteral() { return "kNameSpaceID_XHTML"; } diff --git a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java index 2a37e5ce1..a97a9eba1 100644 --- a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java +++ b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java @@ -480,7 +480,15 @@ public class CppVisitor extends AnnotationHelperVisitor<LocalSymbolTable> { name = cppTypes.stringType(); } } else if ("T".equals(name) || "Object".equals(name)) { - name = cppTypes.nodeType(); + if (htmlCreator()) { + name = cppTypes.htmlCreatorType(); + } else if (svgCreator()) { + name = cppTypes.svgCreatorType(); + } else if (creator()) { + name = cppTypes.creatorType(); + } else { + name = cppTypes.nodeType(); + } } else if ("TokenHandler".equals(name)) { name = cppTypes.classPrefix() + "TreeBuilder*"; } else if ("EncodingDeclarationHandler".equals(name)) { @@ -1073,6 +1081,9 @@ public class CppVisitor extends AnnotationHelperVisitor<LocalSymbolTable> { if ("DocumentMode".equals(scope.toString())) { // printer.print(cppTypes.documentModeType()); // printer.print("."); + } else if ("creator".equals(scope.toString()) || "this.creator".equals(scope.toString())) { + scope.accept(this, arg); + printer.print("."); } else { scope.accept(this, arg); printer.print("->"); @@ -1324,7 +1335,8 @@ public class CppVisitor extends AnnotationHelperVisitor<LocalSymbolTable> { if (clazzName == null) { scope.accept(this, arg); if ("length".equals(n.getName()) - || "charAt".equals(n.getName())) { + || "charAt".equals(n.getName()) + || "creator".equals(scope.toString())) { printer.print("."); } else { printer.print("->"); |