diff --git a/layout/build/nsContentDLF.cpp b/layout/build/nsContentDLF.cpp index 29fd8647964..7e55e2a6f39 100644 --- a/layout/build/nsContentDLF.cpp +++ b/layout/build/nsContentDLF.cpp @@ -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", diff --git a/parser/htmlparser/public/nsIParser.h b/parser/htmlparser/public/nsIParser.h index df12c314dad..098bcf230da 100644 --- a/parser/htmlparser/public/nsIParser.h +++ b/parser/htmlparser/public/nsIParser.h @@ -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" diff --git a/parser/htmlparser/src/nsExpatDriver.cpp b/parser/htmlparser/src/nsExpatDriver.cpp index eca64080332..edd3c461908 100644 --- a/parser/htmlparser/src/nsExpatDriver.cpp +++ b/parser/htmlparser/src/nsExpatDriver.cpp @@ -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 = { diff --git a/parser/htmlparser/src/nsParser.cpp b/parser/htmlparser/src/nsParser.cpp index 6ba3fe84c2e..a0133845d82 100644 --- a/parser/htmlparser/src/nsParser.cpp +++ b/parser/htmlparser/src/nsParser.cpp @@ -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.