Sync up the MIME type list in parser with what nsContentDLF has, and improve

the error handling for cases when a mismatch does happen.  Bug 306502,
r=mrbkap, sr=brendan
This commit is contained in:
bzbarsky%mit.edu 2005-08-31 17:33:54 +00:00
Родитель 8e7e3173cf
Коммит 49f8f0912e
4 изменённых файлов: 20 добавлений и 6 удалений

Просмотреть файл

@ -86,6 +86,8 @@ static NS_DEFINE_IID(kXULDocumentCID, NS_XULDOCUMENT_CID);
nsresult
NS_NewDocumentViewer(nsIDocumentViewer** aResult);
// XXXbz if you change the MIME types here, be sure to update
// nsIParser.h and DetermineParseMode in nsParser.cpp accordingly.
static const char* const gHTMLTypes[] = {
"text/html",
"text/plain",

Просмотреть файл

@ -383,7 +383,8 @@ const PRUnichar kLeftSquareBracket = '[';
const PRUnichar kRightSquareBracket = ']';
const PRUnichar kNullCh = '\0';
// XXXbz these type defines should really just go away....
// XXXbz these type defines should really just go away.... Until they
// do, changes here should be reflected in nsContentDLF.cpp
#define kHTMLTextContentType "text/html"
#define kXMLTextContentType "text/xml"
#define kXMLApplicationContentType "application/xml"
@ -396,7 +397,10 @@ const PRUnichar kNullCh = '\0';
#define kViewSourceCommand "view-source"
#define kViewFragmentCommand "view-fragment"
#define kTextCSSContentType "text/css"
#define kApplicationJSContentType "application/x-javascript"
#define kApplicationJSContentType "application/javascript"
#define kApplicationXJSContentType "application/x-javascript"
#define kTextECMAScriptContentType "text/ecmascript"
#define kApplicationECMAScriptContentType "application/ecmascript"
#define kTextJSContentType "text/javascript"
#define kSGMLTextContentType "text/sgml"
#define kSVGTextContentType "image/svg+xml"

Просмотреть файл

@ -1003,10 +1003,13 @@ nsExpatDriver::WillBuildModel(const CParserContext& aParserContext,
nsITokenizer* aTokenizer,
nsIContentSink* aSink)
{
NS_ENSURE_ARG_POINTER(aSink);
mSink = do_QueryInterface(aSink);
NS_ENSURE_TRUE(mSink, NS_ERROR_FAILURE);
if (!mSink) {
NS_ERROR("nsExpatDriver didn't get an nsIExpatSink");
// Make sure future calls to us bail out as needed
mInternalState = NS_ERROR_UNEXPECTED;
return mInternalState;
}
static const XML_Memory_Handling_Suite memsuite =
{

Просмотреть файл

@ -1151,6 +1151,9 @@ void DetermineParseMode(const nsString& aBuffer,
} else if (aMimeType.EqualsLiteral(kPlainTextContentType) ||
aMimeType.EqualsLiteral(kTextCSSContentType) ||
aMimeType.EqualsLiteral(kApplicationJSContentType) ||
aMimeType.EqualsLiteral(kApplicationXJSContentType) ||
aMimeType.EqualsLiteral(kTextECMAScriptContentType) ||
aMimeType.EqualsLiteral(kApplicationECMAScriptContentType) ||
aMimeType.EqualsLiteral(kTextJSContentType)) {
aDocType = ePlainText;
aParseMode = eDTDMode_quirks;
@ -2716,7 +2719,9 @@ nsresult nsParser::OnStopRequest(nsIRequest *request, nsISupports* aContext,
if (mParserFilter)
mParserFilter->Finish();
rv = ResumeParse(PR_TRUE, PR_TRUE);
if (NS_SUCCEEDED(rv)) {
rv = ResumeParse(PR_TRUE, PR_TRUE);
}
// If the parser isn't enabled, we don't finish parsing till
// it is reenabled.