From a42a84998380f55d7aed4726776acbd80b72fb6d Mon Sep 17 00:00:00 2001 From: "smontagu%smontagu.org" Date: Tue, 25 Apr 2006 06:57:31 +0000 Subject: [PATCH] Don't propagate encoding up to the parent document viewer. Bug 315381, r+sr=jst git-svn-id: svn://10.0.0.236/trunk@195343 18797224-902f-48f8-a5cc-f745e15eee43 --- .../content/html/document/src/nsHTMLDocument.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp index 86cff7912be..83e346d60d2 100644 --- a/mozilla/content/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp @@ -792,6 +792,7 @@ nsHTMLDocument::StartDocumentLoad(const char* aCommand, // The following logic is mirrored in nsWebShell::Embed! // nsCOMPtr muCV; + PRBool muCVIsParent = PR_FALSE; nsCOMPtr cv; docShell->GetContentViewer(getter_AddRefs(cv)); if (cv) { @@ -813,6 +814,9 @@ nsHTMLDocument::StartDocumentLoad(const char* aCommand, if (NS_FAILED(rv)) { return rv; } if (parentContentViewer) { muCV = do_QueryInterface(parentContentViewer); + if (muCV) { + muCVIsParent = PR_TRUE; + } } } } @@ -822,6 +826,9 @@ nsHTMLDocument::StartDocumentLoad(const char* aCommand, nsCAutoString urlSpec; uri->GetSpec(urlSpec); +#ifdef DEBUG_charset + printf("Determining charset for %s\n", urlSpec.get()); +#endif PRInt32 charsetSource; nsCAutoString charset; @@ -899,7 +906,8 @@ nsHTMLDocument::StartDocumentLoad(const char* aCommand, SetDocumentCharacterSetSource(charsetSource); // set doc charset to muCV for next document. - if (muCV) + // Don't propagate this back up to the parent document if we have one. + if (muCV && !muCVIsParent) muCV->SetPrevDocCharacterSet(charset); if(cacheDescriptor) { @@ -916,10 +924,8 @@ nsHTMLDocument::StartDocumentLoad(const char* aCommand, } #ifdef DEBUG_charset - char* cCharset = ToNewCString(charset); - printf("set to parser charset = %s source %d\n", - cCharset, charsetSource); - Recycle(cCharset); + printf(" charset = %s source %d\n", + charset.get(), charsetSource); #endif mParser->SetDocumentCharset(charset, charsetSource); mParser->SetCommand(aCommand);