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;