From b0eca57bf64846fd3ade4adb51fa87f01660bbda Mon Sep 17 00:00:00 2001 From: "mrbkap%gmail.com" Date: Wed, 23 Feb 2005 05:42:37 +0000 Subject: [PATCH] bug 272815: Make sure the parser is aware when we encounter a meta tag, so that other meta tags in the document don't override the first (correct) charset. r=bzbarsky sr=jst git-svn-id: svn://10.0.0.236/trunk@169635 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/intl/chardet/src/nsMetaCharsetObserver.cpp | 3 +++ mozilla/parser/htmlparser/public/nsIElementObserver.h | 3 +++ mozilla/parser/htmlparser/src/nsDTDUtils.cpp | 7 +++++++ 3 files changed, 13 insertions(+) diff --git a/mozilla/intl/chardet/src/nsMetaCharsetObserver.cpp b/mozilla/intl/chardet/src/nsMetaCharsetObserver.cpp index ba168649d35..9f1758a93d2 100644 --- a/mozilla/intl/chardet/src/nsMetaCharsetObserver.cpp +++ b/mozilla/intl/chardet/src/nsMetaCharsetObserver.cpp @@ -307,6 +307,9 @@ NS_IMETHODIMP nsMetaCharsetObserver::Notify( } } // if(NS_SUCCEEDED(res) } + } + else { + res = NS_HTMLPARSER_VALID_META_CHARSET; } // if EqualIgnoreCase } // if !newCharset.IsEmpty() } // if diff --git a/mozilla/parser/htmlparser/public/nsIElementObserver.h b/mozilla/parser/htmlparser/public/nsIElementObserver.h index ce995842128..73ba01e80ca 100644 --- a/mozilla/parser/htmlparser/public/nsIElementObserver.h +++ b/mozilla/parser/htmlparser/public/nsIElementObserver.h @@ -86,5 +86,8 @@ public: }; +#define NS_HTMLPARSER_VALID_META_CHARSET NS_ERROR_GENERATE_SUCCESS( \ + NS_ERROR_MODULE_HTMLPARSER,3000) + #endif /* nsIElementObserver_h__ */ diff --git a/mozilla/parser/htmlparser/src/nsDTDUtils.cpp b/mozilla/parser/htmlparser/src/nsDTDUtils.cpp index f670c3c7844..75834542ff1 100644 --- a/mozilla/parser/htmlparser/src/nsDTDUtils.cpp +++ b/mozilla/parser/htmlparser/src/nsDTDUtils.cpp @@ -1575,6 +1575,13 @@ nsObserverEntry::Notify(nsIParserNode* aNode, if (NS_FAILED(result)) { break; } + + if (result == NS_HTMLPARSER_VALID_META_CHARSET) { + // Inform the parser that this meta tag contained a valid + // charset. See bug 272815 + aParser->SetDocumentCharset(charset, kCharsetFromMetaTag); + result = NS_OK; + } } } }