diff --git a/mozilla/htmlparser/src/nsDTDUtils.cpp b/mozilla/htmlparser/src/nsDTDUtils.cpp
index 751b84987fc..7f0c3024098 100644
--- a/mozilla/htmlparser/src/nsDTDUtils.cpp
+++ b/mozilla/htmlparser/src/nsDTDUtils.cpp
@@ -501,7 +501,6 @@ CToken* CTokenRecycler::CreateTokenOfType(eHTMLTokenTypes aType,eHTMLTags aTag,
case eToken_cdatasection: result=new CCDATASectionToken(); break;
case eToken_error: result=new CErrorToken(); break;
case eToken_doctypeDecl: result=new CDoctypeDeclToken(); break;
- case eToken_xmlDecl: result=new CXMLDeclToken(); break;
default:
break;
}
@@ -543,7 +542,6 @@ CToken* CTokenRecycler::CreateTokenOfType(eHTMLTokenTypes aType,eHTMLTags aTag)
case eToken_cdatasection: result=new CCDATASectionToken(); break;
case eToken_error: result=new CErrorToken(); break;
case eToken_doctypeDecl: result=new CDoctypeDeclToken(); break;
- case eToken_xmlDecl: result=new CXMLDeclToken(); break;
default:
break;
}
diff --git a/mozilla/htmlparser/src/nsExpatTokenizer.cpp b/mozilla/htmlparser/src/nsExpatTokenizer.cpp
index 6ccb4164062..5ac2a87e0ed 100644
--- a/mozilla/htmlparser/src/nsExpatTokenizer.cpp
+++ b/mozilla/htmlparser/src/nsExpatTokenizer.cpp
@@ -132,7 +132,8 @@ void nsExpatTokenizer::SetupExpatCallbacks(void) {
XML_SetNotationDeclHandler(mExpatParser, HandleNotationDecl);
XML_SetExternalEntityRefHandler(mExpatParser, HandleExternalEntityRef);
XML_SetCommentHandler(mExpatParser, HandleComment);
- XML_SetUnknownEncodingHandler(mExpatParser, HandleUnknownEncoding, NULL);
+ XML_SetUnknownEncodingHandler(mExpatParser, HandleUnknownEncoding, NULL);
+ XML_SetDoctypeDeclHandler(mExpatParser, HandleStartDoctypeDecl, HandleEndDoctypeDecl);
}
}
@@ -475,37 +476,7 @@ void nsExpatTokenizer::HandleProcessingInstruction(void *userData, const XML_Cha
}
void nsExpatTokenizer::HandleDefault(void *userData, const XML_Char *s, int len) {
- nsString str = (PRUnichar*) s;
- CToken* token = (CToken*) userData;
- PRBool ProcessingDocTypeDecl = (token != nsnull);
-
- str.Truncate(len);
- if (ProcessingDocTypeDecl) {
- nsString& tokenStr = token->GetStringValueXXX();
- tokenStr.Append(str);
- if (str == "]") {
- tokenStr.Append(">");
- AddToken(token, NS_OK, *gTokenDeque, gTokenRecycler);
- XML_SetUserData(gExpatParser, nsnull);
- }
- }
- else if (0 == str.Find(kXMLDeclPrefix)) {
- str.CompressWhitespace(PR_TRUE, PR_TRUE);
- if (nsString::IsSpace(str[nsCRT::strlen(kXMLDeclPrefix)])) {
- // Create the XML decl token
- token = gTokenRecycler->CreateTokenOfType(eToken_xmlDecl, eHTMLTag_unknown);
- nsString& tokenStr = token->GetStringValueXXX();
- tokenStr.Append(str);
- AddToken(token, NS_OK, *gTokenDeque, gTokenRecycler);
- }
- }
- else if (0 == str.Find(kDocTypeDeclPrefix)) {
- // Create the DOCTYPE decl token
- token = gTokenRecycler->CreateTokenOfType(eToken_doctypeDecl, eHTMLTag_unknown);
- nsString& tokenStr = token->GetStringValueXXX();
- tokenStr.Append(str);
- XML_SetUserData(gExpatParser, (void*) token);
- }
+ NS_NOTYETIMPLEMENTED("Error: nsExpatTokenizer::HandleDefault() not yet implemented.");
}
void nsExpatTokenizer::HandleUnparsedEntityDecl(void *userData,
@@ -660,3 +631,21 @@ int nsExpatTokenizer::HandleUnknownEncoding(void *encodingHandlerData,
return result;
}
+void nsExpatTokenizer::HandleStartDoctypeDecl(void *userData,
+ const XML_Char *doctypeName)
+{
+ CToken* token=gTokenRecycler->CreateTokenOfType(eToken_doctypeDecl,eHTMLTag_unknown);
+ if (token) {
+ nsString& str = token->GetStringValueXXX();
+ str.Append(kDocTypeDeclPrefix);
+ str.Append(" ");
+ str.Append((PRUnichar*) doctypeName);
+ str.Append(">");
+ AddToken(token,NS_OK,*gTokenDeque,gTokenRecycler);
+ }
+}
+
+void nsExpatTokenizer::HandleEndDoctypeDecl(void *userData)
+{
+ // Do nothing
+}
diff --git a/mozilla/htmlparser/src/nsExpatTokenizer.h b/mozilla/htmlparser/src/nsExpatTokenizer.h
index 4dbc59a6f30..098ff8d9784 100644
--- a/mozilla/htmlparser/src/nsExpatTokenizer.h
+++ b/mozilla/htmlparser/src/nsExpatTokenizer.h
@@ -120,6 +120,9 @@ protected:
static int HandleUnknownEncoding(void *encodingHandlerData,
const XML_Char *name,
XML_Encoding *info);
+ static void HandleStartDoctypeDecl(void *userData,
+ const XML_Char *doctypeName);
+ static void HandleEndDoctypeDecl(void *userData);
XML_Parser mExpatParser;
PRUint32 mBytesParsed;
diff --git a/mozilla/htmlparser/src/nsHTMLTokens.cpp b/mozilla/htmlparser/src/nsHTMLTokens.cpp
index a0d9af0d70b..19f8f5763ad 100644
--- a/mozilla/htmlparser/src/nsHTMLTokens.cpp
+++ b/mozilla/htmlparser/src/nsHTMLTokens.cpp
@@ -1920,17 +1920,4 @@ const char* CDoctypeDeclToken::GetClassName(void) {
PRInt32 CDoctypeDeclToken::GetTokenType(void) {
return eToken_doctypeDecl;
-}
-
-// XML decl token
-
-CXMLDeclToken::CXMLDeclToken() : CHTMLToken(eHTMLTag_unknown) {
-}
-
-const char* CXMLDeclToken::GetClassName(void) {
- return "xmldecl";
-}
-
-PRInt32 CXMLDeclToken::GetTokenType(void) {
- return eToken_xmlDecl;
-}
+}
\ No newline at end of file
diff --git a/mozilla/htmlparser/src/nsHTMLTokens.h b/mozilla/htmlparser/src/nsHTMLTokens.h
index cd3ca90a0d3..5ba19c906c8 100644
--- a/mozilla/htmlparser/src/nsHTMLTokens.h
+++ b/mozilla/htmlparser/src/nsHTMLTokens.h
@@ -56,7 +56,7 @@ enum eHTMLTokenTypes {
eToken_start=1, eToken_end, eToken_comment, eToken_entity,
eToken_whitespace, eToken_newline, eToken_text, eToken_attribute,
eToken_script, eToken_style, eToken_skippedcontent, eToken_instruction,
- eToken_cdatasection, eToken_error, eToken_doctypeDecl, eToken_xmlDecl,
+ eToken_cdatasection, eToken_error, eToken_doctypeDecl,
eToken_last //make sure this stays the last token...
};
@@ -393,18 +393,4 @@ public:
virtual PRInt32 GetTokenType(void);
};
-/**
- * XXX This token is in here temporarily. It will be removed
- * once generic tokens are implemented. It is generated by the
- * expat tokenizer when it sees an XML declaration (").
- *
- */
-
-class CXMLDeclToken: public CHTMLToken {
-public:
- CXMLDeclToken();
- virtual const char* GetClassName(void);
- virtual PRInt32 GetTokenType(void);
-};
-
#endif
diff --git a/mozilla/htmlparser/src/nsWellFormedDTD.cpp b/mozilla/htmlparser/src/nsWellFormedDTD.cpp
index dfd13653e1c..075044b4996 100644
--- a/mozilla/htmlparser/src/nsWellFormedDTD.cpp
+++ b/mozilla/htmlparser/src/nsWellFormedDTD.cpp
@@ -566,13 +566,6 @@ NS_IMETHODIMP CWellFormedDTD::HandleToken(CToken* aToken,nsIParser* aParser) {
result = mSink->NotifyError(errTok->GetError());
}
break;
- case eToken_xmlDecl:
- {
- nsCOMPtr xmlSink(do_QueryInterface(mSink, &result));
- if (NS_SUCCEEDED(result))
- result = xmlSink->AddXMLDecl(theNode);
- }
- break;
case eToken_doctypeDecl:
result = mSink->AddDocTypeDecl(theNode, 0);
break;
diff --git a/mozilla/parser/htmlparser/src/nsDTDUtils.cpp b/mozilla/parser/htmlparser/src/nsDTDUtils.cpp
index 751b84987fc..7f0c3024098 100644
--- a/mozilla/parser/htmlparser/src/nsDTDUtils.cpp
+++ b/mozilla/parser/htmlparser/src/nsDTDUtils.cpp
@@ -501,7 +501,6 @@ CToken* CTokenRecycler::CreateTokenOfType(eHTMLTokenTypes aType,eHTMLTags aTag,
case eToken_cdatasection: result=new CCDATASectionToken(); break;
case eToken_error: result=new CErrorToken(); break;
case eToken_doctypeDecl: result=new CDoctypeDeclToken(); break;
- case eToken_xmlDecl: result=new CXMLDeclToken(); break;
default:
break;
}
@@ -543,7 +542,6 @@ CToken* CTokenRecycler::CreateTokenOfType(eHTMLTokenTypes aType,eHTMLTags aTag)
case eToken_cdatasection: result=new CCDATASectionToken(); break;
case eToken_error: result=new CErrorToken(); break;
case eToken_doctypeDecl: result=new CDoctypeDeclToken(); break;
- case eToken_xmlDecl: result=new CXMLDeclToken(); break;
default:
break;
}
diff --git a/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp b/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp
index 6ccb4164062..5ac2a87e0ed 100644
--- a/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp
+++ b/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp
@@ -132,7 +132,8 @@ void nsExpatTokenizer::SetupExpatCallbacks(void) {
XML_SetNotationDeclHandler(mExpatParser, HandleNotationDecl);
XML_SetExternalEntityRefHandler(mExpatParser, HandleExternalEntityRef);
XML_SetCommentHandler(mExpatParser, HandleComment);
- XML_SetUnknownEncodingHandler(mExpatParser, HandleUnknownEncoding, NULL);
+ XML_SetUnknownEncodingHandler(mExpatParser, HandleUnknownEncoding, NULL);
+ XML_SetDoctypeDeclHandler(mExpatParser, HandleStartDoctypeDecl, HandleEndDoctypeDecl);
}
}
@@ -475,37 +476,7 @@ void nsExpatTokenizer::HandleProcessingInstruction(void *userData, const XML_Cha
}
void nsExpatTokenizer::HandleDefault(void *userData, const XML_Char *s, int len) {
- nsString str = (PRUnichar*) s;
- CToken* token = (CToken*) userData;
- PRBool ProcessingDocTypeDecl = (token != nsnull);
-
- str.Truncate(len);
- if (ProcessingDocTypeDecl) {
- nsString& tokenStr = token->GetStringValueXXX();
- tokenStr.Append(str);
- if (str == "]") {
- tokenStr.Append(">");
- AddToken(token, NS_OK, *gTokenDeque, gTokenRecycler);
- XML_SetUserData(gExpatParser, nsnull);
- }
- }
- else if (0 == str.Find(kXMLDeclPrefix)) {
- str.CompressWhitespace(PR_TRUE, PR_TRUE);
- if (nsString::IsSpace(str[nsCRT::strlen(kXMLDeclPrefix)])) {
- // Create the XML decl token
- token = gTokenRecycler->CreateTokenOfType(eToken_xmlDecl, eHTMLTag_unknown);
- nsString& tokenStr = token->GetStringValueXXX();
- tokenStr.Append(str);
- AddToken(token, NS_OK, *gTokenDeque, gTokenRecycler);
- }
- }
- else if (0 == str.Find(kDocTypeDeclPrefix)) {
- // Create the DOCTYPE decl token
- token = gTokenRecycler->CreateTokenOfType(eToken_doctypeDecl, eHTMLTag_unknown);
- nsString& tokenStr = token->GetStringValueXXX();
- tokenStr.Append(str);
- XML_SetUserData(gExpatParser, (void*) token);
- }
+ NS_NOTYETIMPLEMENTED("Error: nsExpatTokenizer::HandleDefault() not yet implemented.");
}
void nsExpatTokenizer::HandleUnparsedEntityDecl(void *userData,
@@ -660,3 +631,21 @@ int nsExpatTokenizer::HandleUnknownEncoding(void *encodingHandlerData,
return result;
}
+void nsExpatTokenizer::HandleStartDoctypeDecl(void *userData,
+ const XML_Char *doctypeName)
+{
+ CToken* token=gTokenRecycler->CreateTokenOfType(eToken_doctypeDecl,eHTMLTag_unknown);
+ if (token) {
+ nsString& str = token->GetStringValueXXX();
+ str.Append(kDocTypeDeclPrefix);
+ str.Append(" ");
+ str.Append((PRUnichar*) doctypeName);
+ str.Append(">");
+ AddToken(token,NS_OK,*gTokenDeque,gTokenRecycler);
+ }
+}
+
+void nsExpatTokenizer::HandleEndDoctypeDecl(void *userData)
+{
+ // Do nothing
+}
diff --git a/mozilla/parser/htmlparser/src/nsExpatTokenizer.h b/mozilla/parser/htmlparser/src/nsExpatTokenizer.h
index 4dbc59a6f30..098ff8d9784 100644
--- a/mozilla/parser/htmlparser/src/nsExpatTokenizer.h
+++ b/mozilla/parser/htmlparser/src/nsExpatTokenizer.h
@@ -120,6 +120,9 @@ protected:
static int HandleUnknownEncoding(void *encodingHandlerData,
const XML_Char *name,
XML_Encoding *info);
+ static void HandleStartDoctypeDecl(void *userData,
+ const XML_Char *doctypeName);
+ static void HandleEndDoctypeDecl(void *userData);
XML_Parser mExpatParser;
PRUint32 mBytesParsed;
diff --git a/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp b/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp
index a0d9af0d70b..19f8f5763ad 100644
--- a/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp
+++ b/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp
@@ -1920,17 +1920,4 @@ const char* CDoctypeDeclToken::GetClassName(void) {
PRInt32 CDoctypeDeclToken::GetTokenType(void) {
return eToken_doctypeDecl;
-}
-
-// XML decl token
-
-CXMLDeclToken::CXMLDeclToken() : CHTMLToken(eHTMLTag_unknown) {
-}
-
-const char* CXMLDeclToken::GetClassName(void) {
- return "xmldecl";
-}
-
-PRInt32 CXMLDeclToken::GetTokenType(void) {
- return eToken_xmlDecl;
-}
+}
\ No newline at end of file
diff --git a/mozilla/parser/htmlparser/src/nsHTMLTokens.h b/mozilla/parser/htmlparser/src/nsHTMLTokens.h
index cd3ca90a0d3..5ba19c906c8 100644
--- a/mozilla/parser/htmlparser/src/nsHTMLTokens.h
+++ b/mozilla/parser/htmlparser/src/nsHTMLTokens.h
@@ -56,7 +56,7 @@ enum eHTMLTokenTypes {
eToken_start=1, eToken_end, eToken_comment, eToken_entity,
eToken_whitespace, eToken_newline, eToken_text, eToken_attribute,
eToken_script, eToken_style, eToken_skippedcontent, eToken_instruction,
- eToken_cdatasection, eToken_error, eToken_doctypeDecl, eToken_xmlDecl,
+ eToken_cdatasection, eToken_error, eToken_doctypeDecl,
eToken_last //make sure this stays the last token...
};
@@ -393,18 +393,4 @@ public:
virtual PRInt32 GetTokenType(void);
};
-/**
- * XXX This token is in here temporarily. It will be removed
- * once generic tokens are implemented. It is generated by the
- * expat tokenizer when it sees an XML declaration (").
- *
- */
-
-class CXMLDeclToken: public CHTMLToken {
-public:
- CXMLDeclToken();
- virtual const char* GetClassName(void);
- virtual PRInt32 GetTokenType(void);
-};
-
#endif
diff --git a/mozilla/parser/htmlparser/src/nsWellFormedDTD.cpp b/mozilla/parser/htmlparser/src/nsWellFormedDTD.cpp
index dfd13653e1c..075044b4996 100644
--- a/mozilla/parser/htmlparser/src/nsWellFormedDTD.cpp
+++ b/mozilla/parser/htmlparser/src/nsWellFormedDTD.cpp
@@ -566,13 +566,6 @@ NS_IMETHODIMP CWellFormedDTD::HandleToken(CToken* aToken,nsIParser* aParser) {
result = mSink->NotifyError(errTok->GetError());
}
break;
- case eToken_xmlDecl:
- {
- nsCOMPtr xmlSink(do_QueryInterface(mSink, &result));
- if (NS_SUCCEEDED(result))
- result = xmlSink->AddXMLDecl(theNode);
- }
- break;
case eToken_doctypeDecl:
result = mSink->AddDocTypeDecl(theNode, 0);
break;