diff --git a/mozilla/htmlparser/src/nsExpatTokenizer.cpp b/mozilla/htmlparser/src/nsExpatTokenizer.cpp index 80d360944f4..8dad05d59c0 100644 --- a/mozilla/htmlparser/src/nsExpatTokenizer.cpp +++ b/mozilla/htmlparser/src/nsExpatTokenizer.cpp @@ -60,8 +60,6 @@ typedef struct _XMLParserState { And now for the main class -- nsExpatTokenizer... ************************************************************************/ -static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); -static NS_DEFINE_IID(kITokenizerIID, NS_ITOKENIZER_IID); static NS_DEFINE_IID(kHTMLTokenizerIID, NS_HTMLTOKENIZER_IID); static NS_DEFINE_IID(kClassIID, NS_EXPATTOKENIZER_IID); @@ -100,10 +98,10 @@ nsresult nsExpatTokenizer::QueryInterface(const nsIID& aIID, void** aInstancePtr return NS_ERROR_NULL_POINTER; } - if(aIID.Equals(kISupportsIID)) { //do IUnknown... + if(aIID.Equals(NS_GET_IID(nsISupports))) { //do IUnknown... *aInstancePtr = (nsExpatTokenizer*)(this); } - else if(aIID.Equals(kITokenizerIID)) { //do ITokenizer base class... + else if(aIID.Equals(NS_GET_IID(nsITokenizer))) { //do ITokenizer base class... *aInstancePtr = (nsITokenizer*)(this); } else if(aIID.Equals(kHTMLTokenizerIID)) { //do nsHTMLTokenizer base class... @@ -627,12 +625,19 @@ void nsExpatTokenizer::HandleCharacterData(void *userData, const XML_Char *s, in void nsExpatTokenizer::HandleComment(void *userData, const XML_Char *name) { XMLParserState* state = (XMLParserState*) userData; - CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_comment, eHTMLTag_unknown, nsLiteralString((PRUnichar*)name)); - if(theToken) { - AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); - } - else{ - //THROW A HUGE ERROR IF WE CANT CREATE A TOKEN! + if (state->indoctype) { + // We do not want comments popping out of the doctype... + state->doctypeText.Append(NS_LITERAL_STRING("")); + } else { + CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_comment, eHTMLTag_unknown, nsLiteralString((PRUnichar*)name)); + if(theToken) { + AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); + } + else{ + //THROW A HUGE ERROR IF WE CANT CREATE A TOKEN! + } } } diff --git a/mozilla/htmlparser/src/nsITokenizer.h b/mozilla/htmlparser/src/nsITokenizer.h index c6f6ad1a088..0fd976d31c5 100644 --- a/mozilla/htmlparser/src/nsITokenizer.h +++ b/mozilla/htmlparser/src/nsITokenizer.h @@ -57,6 +57,7 @@ public: class nsITokenizer : public nsISupports { public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_ITOKENIZER_IID) virtual nsresult WillTokenize(PRBool aIsFinalChunk,nsTokenAllocator* aTokenAllocator)=0; virtual nsresult ConsumeToken(nsScanner& aScanner,PRBool& aFlushTokens)=0; diff --git a/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp b/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp index 80d360944f4..8dad05d59c0 100644 --- a/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp +++ b/mozilla/parser/htmlparser/src/nsExpatTokenizer.cpp @@ -60,8 +60,6 @@ typedef struct _XMLParserState { And now for the main class -- nsExpatTokenizer... ************************************************************************/ -static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); -static NS_DEFINE_IID(kITokenizerIID, NS_ITOKENIZER_IID); static NS_DEFINE_IID(kHTMLTokenizerIID, NS_HTMLTOKENIZER_IID); static NS_DEFINE_IID(kClassIID, NS_EXPATTOKENIZER_IID); @@ -100,10 +98,10 @@ nsresult nsExpatTokenizer::QueryInterface(const nsIID& aIID, void** aInstancePtr return NS_ERROR_NULL_POINTER; } - if(aIID.Equals(kISupportsIID)) { //do IUnknown... + if(aIID.Equals(NS_GET_IID(nsISupports))) { //do IUnknown... *aInstancePtr = (nsExpatTokenizer*)(this); } - else if(aIID.Equals(kITokenizerIID)) { //do ITokenizer base class... + else if(aIID.Equals(NS_GET_IID(nsITokenizer))) { //do ITokenizer base class... *aInstancePtr = (nsITokenizer*)(this); } else if(aIID.Equals(kHTMLTokenizerIID)) { //do nsHTMLTokenizer base class... @@ -627,12 +625,19 @@ void nsExpatTokenizer::HandleCharacterData(void *userData, const XML_Char *s, in void nsExpatTokenizer::HandleComment(void *userData, const XML_Char *name) { XMLParserState* state = (XMLParserState*) userData; - CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_comment, eHTMLTag_unknown, nsLiteralString((PRUnichar*)name)); - if(theToken) { - AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); - } - else{ - //THROW A HUGE ERROR IF WE CANT CREATE A TOKEN! + if (state->indoctype) { + // We do not want comments popping out of the doctype... + state->doctypeText.Append(NS_LITERAL_STRING("")); + } else { + CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_comment, eHTMLTag_unknown, nsLiteralString((PRUnichar*)name)); + if(theToken) { + AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); + } + else{ + //THROW A HUGE ERROR IF WE CANT CREATE A TOKEN! + } } } diff --git a/mozilla/parser/htmlparser/src/nsITokenizer.h b/mozilla/parser/htmlparser/src/nsITokenizer.h index c6f6ad1a088..0fd976d31c5 100644 --- a/mozilla/parser/htmlparser/src/nsITokenizer.h +++ b/mozilla/parser/htmlparser/src/nsITokenizer.h @@ -57,6 +57,7 @@ public: class nsITokenizer : public nsISupports { public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_ITOKENIZER_IID) virtual nsresult WillTokenize(PRBool aIsFinalChunk,nsTokenAllocator* aTokenAllocator)=0; virtual nsresult ConsumeToken(nsScanner& aScanner,PRBool& aFlushTokens)=0;