From ad0e6cd33807afdedf515d6952749d38b8783164 Mon Sep 17 00:00:00 2001 From: "cata%netscape.com" Date: Wed, 17 May 2000 06:56:34 +0000 Subject: [PATCH] Charset override implementation. git-svn-id: svn://10.0.0.236/trunk@70365 18797224-902f-48f8-a5cc-f745e15eee43 --- .../html/document/src/nsHTMLDocument.cpp | 25 ++++++++++++++++++- .../html/document/src/nsHTMLDocument.cpp | 25 ++++++++++++++++++- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp index e55246c92d7..a9b1da769f7 100644 --- a/mozilla/content/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp @@ -100,6 +100,8 @@ #include "nsIPref.h" #include "nsLayoutUtils.h" +#include "nsIDocumentCharsetInfo.h" + #include "nsIDocumentEncoder.h" //for outputting selection @@ -570,6 +572,20 @@ nsHTMLDocument::StartDocumentLoad(const char* aCommand, } } + nsCOMPtr dcInfo; + docShell->GetDocumentCharsetInfo(getter_AddRefs(dcInfo)); + PRBool override = PR_FALSE; + + nsCOMPtr prf(do_GetService(NS_PREF_PROGID)); + if (prf) { + char * toOverride = nsnull; + if(NS_SUCCEEDED(prf->CopyCharPref("intl.charset.override", &toOverride))) + { + if (toOverride[0] != 0) override = PR_TRUE; + PR_FREEIF(toOverride); + } + } + // // The following logic is mirrored in nsWebShell::Embed! // @@ -658,7 +674,14 @@ nsHTMLDocument::StartDocumentLoad(const char* aCommand, Recycle(forceCharsetFromWebShell); //TODO: we should define appropriate constant for force charset charsetSource = kCharsetFromPreviousLoading; - } + } else if ((dcInfo != NULL) && (override)) { + nsCOMPtr csAtom; + dcInfo->GetForcedCharset(getter_AddRefs(csAtom)); + if (csAtom != NULL) { + csAtom->ToString(charset); + charsetSource = kCharsetFromPreviousLoading; + } + } } nsresult rv_detect = NS_OK; if(! gInitDetector) diff --git a/mozilla/layout/html/document/src/nsHTMLDocument.cpp b/mozilla/layout/html/document/src/nsHTMLDocument.cpp index e55246c92d7..a9b1da769f7 100644 --- a/mozilla/layout/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/layout/html/document/src/nsHTMLDocument.cpp @@ -100,6 +100,8 @@ #include "nsIPref.h" #include "nsLayoutUtils.h" +#include "nsIDocumentCharsetInfo.h" + #include "nsIDocumentEncoder.h" //for outputting selection @@ -570,6 +572,20 @@ nsHTMLDocument::StartDocumentLoad(const char* aCommand, } } + nsCOMPtr dcInfo; + docShell->GetDocumentCharsetInfo(getter_AddRefs(dcInfo)); + PRBool override = PR_FALSE; + + nsCOMPtr prf(do_GetService(NS_PREF_PROGID)); + if (prf) { + char * toOverride = nsnull; + if(NS_SUCCEEDED(prf->CopyCharPref("intl.charset.override", &toOverride))) + { + if (toOverride[0] != 0) override = PR_TRUE; + PR_FREEIF(toOverride); + } + } + // // The following logic is mirrored in nsWebShell::Embed! // @@ -658,7 +674,14 @@ nsHTMLDocument::StartDocumentLoad(const char* aCommand, Recycle(forceCharsetFromWebShell); //TODO: we should define appropriate constant for force charset charsetSource = kCharsetFromPreviousLoading; - } + } else if ((dcInfo != NULL) && (override)) { + nsCOMPtr csAtom; + dcInfo->GetForcedCharset(getter_AddRefs(csAtom)); + if (csAtom != NULL) { + csAtom->ToString(charset); + charsetSource = kCharsetFromPreviousLoading; + } + } } nsresult rv_detect = NS_OK; if(! gInitDetector)