add meta tag reload hack. reviewed by rickg

git-svn-id: svn://10.0.0.236/trunk@23945 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
ftang%netscape.com
1999-03-12 14:31:20 +00:00
parent bd55b34cd0
commit a7e0437a49
6 changed files with 94 additions and 0 deletions

View File

@@ -954,6 +954,8 @@ nsresult CNavDTD::WillHandleStartTag(CToken* aToken,eHTMLTags aTag,nsCParserNode
nsAutoString theCharset;
theValue.Mid(theCharset, charsetValueStart, charsetValueEnd - charsetValueStart);
theScanner->SetDocumentCharset(theCharset, kCharsetFromMetaTag);
// XXX this should be delete after META charset really work
nsParser::gHackMetaCharset = theCharset;
} //if
} //if
}

View File

@@ -125,6 +125,9 @@ public:
static CSharedParserObjects* gSharedParserObjects=0;
nsString nsParser::gHackMetaCharset = "";
nsString nsParser::gHackMetaCharsetURL = "";
//----------------------------------------
/**
@@ -545,6 +548,7 @@ nsresult nsParser::Parse(nsIURL* aURL,nsIStreamObserver* aListener,PRBool aVerif
charsetSource = kCharsetFromDocTypeDefault;
nsresult result=kBadURL;
mDTDVerification=aVerifyEnabled;
if(aURL) {
@@ -552,6 +556,18 @@ nsresult nsParser::Parse(nsIURL* aURL,nsIStreamObserver* aListener,PRBool aVerif
nsresult rv = aURL->GetSpec(&spec);
if (rv != NS_OK) return rv;
nsAutoString theName(spec);
// XXX begin of meta tag charset hack
if(theName.Equals(nsParser::gHackMetaCharsetURL) && (! nsParser::gHackMetaCharset.Equals("")))
{
charset = nsParser::gHackMetaCharset;
charsetSource = kCharsetFromMetaTag;
}
nsParser::gHackMetaCharsetURL = theName;
nsParser::gHackMetaCharset = "";
// XXX end of meta tag charset hack
CParserContext* pc=new CParserContext(new nsScanner(theName,PR_FALSE, charset, charsetSource),aURL,aListener);
if(pc) {
pc->mMultipart=PR_TRUE;
@@ -594,6 +610,17 @@ nsresult nsParser::Parse(fstream& aStream,PRBool aVerifyEnabled){
//ok, time to create our tokenizer and begin the process
nsAutoString theUnknownFilename("unknown");
// XXX begin of meta tag charset hack
if(theUnknownFilename.Equals(nsParser::gHackMetaCharsetURL) && (! nsParser::gHackMetaCharset.Equals("")))
{
charset = nsParser::gHackMetaCharset;
charsetSource = kCharsetFromMetaTag;
}
nsParser::gHackMetaCharsetURL = theUnknownFilename;
nsParser::gHackMetaCharset = "";
// XXX end of meta tag charset hack
CParserContext* pc=new CParserContext(new nsScanner(theUnknownFilename,aStream, charset, charsetSource,PR_FALSE),&aStream,0);
if(pc) {
PushContext(*pc);
@@ -645,6 +672,18 @@ nsresult nsParser::Parse(nsString& aSourceBuffer,void* aKey,const nsString& aCon
// XXX We should really put if doc == html for the following line
charset = "ISO-8859-1";
charsetSource = kCharsetFromDocTypeDefault;
// XXX begin of meta tag charset hack
nsAutoString theFakeURL("fromString");
if(theFakeURL.Equals(nsParser::gHackMetaCharsetURL) && (! nsParser::gHackMetaCharset.Equals("")))
{
charset = nsParser::gHackMetaCharset;
charsetSource = kCharsetFromMetaTag;
}
nsParser::gHackMetaCharsetURL = theFakeURL;
nsParser::gHackMetaCharset = "";
// XXX end of meta tag charset hack
//NOTE: Make sure that updates to this method don't cause
// bug #2361 to break again!

View File

@@ -225,6 +225,12 @@ friend class CTokenHandler;
*/
virtual nsITokenizer* GetTokenizer(void);
/*
* The following two should be removed once our Meta Charset work complete
*/
static nsString gHackMetaCharset;
static nsString gHackMetaCharsetURL;
protected:
/**