summaryrefslogtreecommitdiffstats
path: root/parser/html/java/htmlparser/translator-src/nu
diff options
context:
space:
mode:
authorGaming4JC <g4jc@hyperbola.info>2020-01-18 23:50:33 -0500
committerGaming4JC <g4jc@hyperbola.info>2020-01-26 15:50:41 -0500
commit9bf83c6a785ba7463822a159cdaf9eb06ece3690 (patch)
tree492974b82299ba177ecb14d0ed911d6bedfeec22 /parser/html/java/htmlparser/translator-src/nu
parentbec4d0ecdc2576e09b02baaf24961e70dceec605 (diff)
downloadUXP-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/nu')
-rw-r--r--parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java12
-rw-r--r--parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java15
-rw-r--r--parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java16
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("->");