diff --git a/mozilla/htmlparser/src/nsParser.cpp b/mozilla/htmlparser/src/nsParser.cpp
index 50f71ca121f..be031ee32fd 100644
--- a/mozilla/htmlparser/src/nsParser.cpp
+++ b/mozilla/htmlparser/src/nsParser.cpp
@@ -33,6 +33,11 @@
#include "nsViewSourceHTML.h"
#include "nsHTMLContentSinkStream.h" //this is here so we can get a null sink, which really should be gotten from nsICOntentSink.h
#include "nsIStringStream.h"
+#ifdef NECKO
+#include "nsIChannel.h"
+#include "nsIProgressEventSink.h"
+#include "nsIBufferInputStream.h"
+#endif
#undef rickgdebug
#ifdef rickgdebug
@@ -179,6 +184,9 @@ nsParser::nsParser(nsITokenObserver* anObserver) : mCommand(""), mUnusedInput(""
NS_INIT_REFCNT();
mParserFilter = 0;
mObserver = 0;
+#ifdef NECKO
+ mProgressEventSink = nsnull;
+#endif
mSink=0;
mParserContext=0;
mTokenObserver=anObserver;
@@ -198,6 +206,9 @@ nsParser::nsParser(nsITokenObserver* anObserver) : mCommand(""), mUnusedInput(""
*/
nsParser::~nsParser() {
NS_IF_RELEASE(mObserver);
+#ifdef NECKO
+ NS_IF_RELEASE(mProgressEventSink);
+#endif
NS_IF_RELEASE(mSink);
//don't forget to add code here to delete
@@ -619,10 +630,17 @@ nsresult nsParser::Parse(nsIURL* aURL,nsIStreamObserver* aListener,PRBool aVerif
nsresult result=kBadURL;
mDTDVerification=aVerifyEnabled;
if(aURL) {
+#ifdef NECKO
+ char* spec;
+#else
const char* spec;
+#endif
nsresult rv = aURL->GetSpec(&spec);
if (rv != NS_OK) return rv;
nsAutoString theName(spec);
+#ifdef NECKO
+ nsCRT::free(spec);
+#endif
CParserContext* pc=new CParserContext(new nsScanner(theName,PR_FALSE, mCharset, mCharsetSource),aKey,aListener);
if(pc) {
@@ -929,6 +947,7 @@ nsITokenizer* nsParser::GetTokenizer(void) {
These methods are used to talk to the netlib system...
*******************************************************************/
+#ifndef NECKO
/**
*
*
@@ -940,6 +959,7 @@ nsresult nsParser::GetBindInfo(nsIURL* aURL, nsStreamBindingInfo* aInfo){
nsresult result=0;
return result;
}
+#endif
/**
*
@@ -949,12 +969,22 @@ nsresult nsParser::GetBindInfo(nsIURL* aURL, nsStreamBindingInfo* aInfo){
* @return error code -- 0 if ok, non-zero if error.
*/
nsresult
+#ifdef NECKO
+nsParser::OnProgress(nsISupports* aContext, PRUint32 aProgress, PRUint32 aProgressMax)
+#else
nsParser::OnProgress(nsIURL* aURL, PRUint32 aProgress, PRUint32 aProgressMax)
+#endif
{
nsresult result=0;
+#ifdef NECKO
+ if (nsnull != mProgressEventSink) {
+ mProgressEventSink->OnProgress(aContext, aProgress, aProgressMax);
+ }
+#else
if (nsnull != mObserver) {
mObserver->OnProgress(aURL, aProgress, aProgressMax);
}
+#endif
return result;
}
@@ -966,12 +996,22 @@ nsParser::OnProgress(nsIURL* aURL, PRUint32 aProgress, PRUint32 aProgressMax)
* @return error code -- 0 if ok, non-zero if error.
*/
nsresult
+#ifdef NECKO
+nsParser::OnStatus(nsISupports* aContext, const PRUnichar* aMsg)
+#else
nsParser::OnStatus(nsIURL* aURL, const PRUnichar* aMsg)
+#endif
{
nsresult result=0;
+#ifdef NECKO
+ if (nsnull != mProgressEventSink) {
+ mProgressEventSink->OnStatus(aContext, aMsg);
+ }
+#else
if (nsnull != mObserver) {
mObserver->OnStatus(aURL, aMsg);
}
+#endif
return result;
}
@@ -986,16 +1026,38 @@ nsParser::OnStatus(nsIURL* aURL, const PRUnichar* aMsg)
* @param
* @return error code -- 0 if ok, non-zero if error.
*/
-nsresult nsParser::OnStartBinding(nsIURL* aURL, const char *aSourceType){
+#ifdef NECKO
+nsresult nsParser::OnStartBinding(nsISupports* aContext)
+#else
+nsresult nsParser::OnStartBinding(nsIURL* aURL, const char *aSourceType)
+#endif
+{
NS_PRECONDITION((eNone==mParserContext->mStreamListenerState),kBadListenerInit);
if (nsnull != mObserver) {
+#ifdef NECKO
+ mObserver->OnStartBinding(aContext);
+#else
mObserver->OnStartBinding(aURL, aSourceType);
+#endif
}
mParserContext->mStreamListenerState=eOnStart;
mParserContext->mAutoDetectStatus=eUnknownDetect;
mParserContext->mDTD=0;
+#ifdef NECKO
+ nsresult rv;
+ nsIChannel* channel;
+ rv = aContext->QueryInterface(nsIChannel::GetIID(), (void**)&channel);
+ if (NS_SUCCEEDED(rv)) {
+ char* contentType;
+ (void)channel->GetContentType(&contentType); // XXX ignore error?
+ mParserContext->mSourceType = contentType;
+ nsCRT::free(contentType);
+ NS_RELEASE(channel);
+ }
+#else
mParserContext->mSourceType=aSourceType;
+#endif
#ifdef rickgdebug
gDumpFile = new fstream("c:/temp/out.file",ios::trunc);
@@ -1004,6 +1066,20 @@ nsresult nsParser::OnStartBinding(nsIURL* aURL, const char *aSourceType){
return NS_OK;
}
+#ifdef NECKO
+NS_IMETHODIMP
+nsParser::OnStartRequest(nsISupports *ctxt)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+NS_IMETHODIMP
+nsParser::OnStopRequest(nsISupports *ctxt, nsresult status, const PRUnichar *errorMsg)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+#endif // NECKO
+
/**
*
*
@@ -1012,7 +1088,12 @@ nsresult nsParser::OnStartBinding(nsIURL* aURL, const char *aSourceType){
* @param length is the number of bytes waiting input
* @return error code (usually 0)
*/
-nsresult nsParser::OnDataAvailable(nsIURL* aURL, nsIInputStream *pIStream, PRUint32 aLength){
+#ifdef NECKO
+nsresult nsParser::OnDataAvailable(nsISupports* aContext, nsIBufferInputStream *pIStream, PRUint32 sourceOffset, PRUint32 aLength)
+#else
+nsresult nsParser::OnDataAvailable(nsIURL* aURL, nsIInputStream *pIStream, PRUint32 aLength)
+#endif
+{
/* if (nsnull != mListener) {
//Rick potts removed this.
//Does it need to be here?
@@ -1080,7 +1161,12 @@ nsresult nsParser::OnDataAvailable(nsIURL* aURL, nsIInputStream *pIStream, PRUin
* @param
* @return
*/
-nsresult nsParser::OnStopBinding(nsIURL* aURL, nsresult status, const PRUnichar* aMsg){
+#ifdef NECKO
+nsresult nsParser::OnStopBinding(nsISupports* aContext, nsresult status, const PRUnichar* aMsg)
+#else
+nsresult nsParser::OnStopBinding(nsIURL* aURL, nsresult status, const PRUnichar* aMsg)
+#endif
+{
mParserContext->mStreamListenerState=eOnStop;
mStreamStatus=status;
@@ -1095,7 +1181,11 @@ nsresult nsParser::OnStopBinding(nsIURL* aURL, nsresult status, const PRUnichar*
// XXX Should we wait to notify our observers as well if the
// parser isn't yet enabled?
if (nsnull != mObserver) {
+#ifdef NECKO
+ mObserver->OnStopBinding(aContext, status, aMsg);
+#else
mObserver->OnStopBinding(aURL, status, aMsg);
+#endif
}
#ifdef rickgdebug
diff --git a/mozilla/htmlparser/src/nsParser.h b/mozilla/htmlparser/src/nsParser.h
index e3688585dd5..efa7eacfd81 100644
--- a/mozilla/htmlparser/src/nsParser.h
+++ b/mozilla/htmlparser/src/nsParser.h
@@ -68,6 +68,9 @@ class IContentSink;
class nsIDTD;
class nsScanner;
class nsIParserFilter;
+#ifdef NECKO
+class nsIProgressEventSink;
+#endif
#include
@@ -236,12 +239,25 @@ friend class CTokenHandler;
// These methods are callback methods used by
// net lib to let us know about our inputstream.
//*********************************************
+#ifdef NECKO
+ // nsIProgressEventSink methods:
+ NS_IMETHOD OnProgress(nsISupports* context, PRUint32 Progress, PRUint32 ProgressMax);
+ NS_IMETHOD OnStatus(nsISupports* context, const PRUnichar* aMmsg);
+ // nsIStreamObserver methods:
+ NS_IMETHOD OnStartBinding(nsISupports *ctxt);
+ NS_IMETHOD OnStopBinding(nsISupports *ctxt, nsresult status, const PRUnichar *errorMsg);
+ NS_IMETHOD OnStartRequest(nsISupports *ctxt);
+ NS_IMETHOD OnStopRequest(nsISupports *ctxt, nsresult status, const PRUnichar *errorMsg);
+ // nsIStreamListener methods:
+ NS_IMETHOD OnDataAvailable(nsISupports *ctxt, nsIBufferInputStream *inStr, PRUint32 sourceOffset, PRUint32 count);
+#else
NS_IMETHOD GetBindInfo(nsIURL* aURL, nsStreamBindingInfo* aInfo);
NS_IMETHOD OnProgress(nsIURL* aURL, PRUint32 Progress, PRUint32 ProgressMax);
NS_IMETHOD OnStatus(nsIURL* aURL, const PRUnichar* aMmsg);
NS_IMETHOD OnStartBinding(nsIURL* aURL, const char *aContentType);
NS_IMETHOD OnDataAvailable(nsIURL* aURL, nsIInputStream *pIStream, PRUint32 length);
NS_IMETHOD OnStopBinding(nsIURL* aURL, nsresult status, const PRUnichar* aMsg);
+#endif
void PushContext(CParserContext& aContext);
CParserContext* PopContext();
@@ -340,6 +356,9 @@ protected:
PRInt32 mMinorIteration;
nsIStreamObserver* mObserver;
+#ifdef NECKO
+ nsIProgressEventSink* mProgressEventSink;
+#endif
nsIContentSink* mSink;
nsIParserFilter* mParserFilter;
PRBool mDTDVerification;
diff --git a/mozilla/parser/htmlparser/src/nsParser.cpp b/mozilla/parser/htmlparser/src/nsParser.cpp
index 50f71ca121f..be031ee32fd 100644
--- a/mozilla/parser/htmlparser/src/nsParser.cpp
+++ b/mozilla/parser/htmlparser/src/nsParser.cpp
@@ -33,6 +33,11 @@
#include "nsViewSourceHTML.h"
#include "nsHTMLContentSinkStream.h" //this is here so we can get a null sink, which really should be gotten from nsICOntentSink.h
#include "nsIStringStream.h"
+#ifdef NECKO
+#include "nsIChannel.h"
+#include "nsIProgressEventSink.h"
+#include "nsIBufferInputStream.h"
+#endif
#undef rickgdebug
#ifdef rickgdebug
@@ -179,6 +184,9 @@ nsParser::nsParser(nsITokenObserver* anObserver) : mCommand(""), mUnusedInput(""
NS_INIT_REFCNT();
mParserFilter = 0;
mObserver = 0;
+#ifdef NECKO
+ mProgressEventSink = nsnull;
+#endif
mSink=0;
mParserContext=0;
mTokenObserver=anObserver;
@@ -198,6 +206,9 @@ nsParser::nsParser(nsITokenObserver* anObserver) : mCommand(""), mUnusedInput(""
*/
nsParser::~nsParser() {
NS_IF_RELEASE(mObserver);
+#ifdef NECKO
+ NS_IF_RELEASE(mProgressEventSink);
+#endif
NS_IF_RELEASE(mSink);
//don't forget to add code here to delete
@@ -619,10 +630,17 @@ nsresult nsParser::Parse(nsIURL* aURL,nsIStreamObserver* aListener,PRBool aVerif
nsresult result=kBadURL;
mDTDVerification=aVerifyEnabled;
if(aURL) {
+#ifdef NECKO
+ char* spec;
+#else
const char* spec;
+#endif
nsresult rv = aURL->GetSpec(&spec);
if (rv != NS_OK) return rv;
nsAutoString theName(spec);
+#ifdef NECKO
+ nsCRT::free(spec);
+#endif
CParserContext* pc=new CParserContext(new nsScanner(theName,PR_FALSE, mCharset, mCharsetSource),aKey,aListener);
if(pc) {
@@ -929,6 +947,7 @@ nsITokenizer* nsParser::GetTokenizer(void) {
These methods are used to talk to the netlib system...
*******************************************************************/
+#ifndef NECKO
/**
*
*
@@ -940,6 +959,7 @@ nsresult nsParser::GetBindInfo(nsIURL* aURL, nsStreamBindingInfo* aInfo){
nsresult result=0;
return result;
}
+#endif
/**
*
@@ -949,12 +969,22 @@ nsresult nsParser::GetBindInfo(nsIURL* aURL, nsStreamBindingInfo* aInfo){
* @return error code -- 0 if ok, non-zero if error.
*/
nsresult
+#ifdef NECKO
+nsParser::OnProgress(nsISupports* aContext, PRUint32 aProgress, PRUint32 aProgressMax)
+#else
nsParser::OnProgress(nsIURL* aURL, PRUint32 aProgress, PRUint32 aProgressMax)
+#endif
{
nsresult result=0;
+#ifdef NECKO
+ if (nsnull != mProgressEventSink) {
+ mProgressEventSink->OnProgress(aContext, aProgress, aProgressMax);
+ }
+#else
if (nsnull != mObserver) {
mObserver->OnProgress(aURL, aProgress, aProgressMax);
}
+#endif
return result;
}
@@ -966,12 +996,22 @@ nsParser::OnProgress(nsIURL* aURL, PRUint32 aProgress, PRUint32 aProgressMax)
* @return error code -- 0 if ok, non-zero if error.
*/
nsresult
+#ifdef NECKO
+nsParser::OnStatus(nsISupports* aContext, const PRUnichar* aMsg)
+#else
nsParser::OnStatus(nsIURL* aURL, const PRUnichar* aMsg)
+#endif
{
nsresult result=0;
+#ifdef NECKO
+ if (nsnull != mProgressEventSink) {
+ mProgressEventSink->OnStatus(aContext, aMsg);
+ }
+#else
if (nsnull != mObserver) {
mObserver->OnStatus(aURL, aMsg);
}
+#endif
return result;
}
@@ -986,16 +1026,38 @@ nsParser::OnStatus(nsIURL* aURL, const PRUnichar* aMsg)
* @param
* @return error code -- 0 if ok, non-zero if error.
*/
-nsresult nsParser::OnStartBinding(nsIURL* aURL, const char *aSourceType){
+#ifdef NECKO
+nsresult nsParser::OnStartBinding(nsISupports* aContext)
+#else
+nsresult nsParser::OnStartBinding(nsIURL* aURL, const char *aSourceType)
+#endif
+{
NS_PRECONDITION((eNone==mParserContext->mStreamListenerState),kBadListenerInit);
if (nsnull != mObserver) {
+#ifdef NECKO
+ mObserver->OnStartBinding(aContext);
+#else
mObserver->OnStartBinding(aURL, aSourceType);
+#endif
}
mParserContext->mStreamListenerState=eOnStart;
mParserContext->mAutoDetectStatus=eUnknownDetect;
mParserContext->mDTD=0;
+#ifdef NECKO
+ nsresult rv;
+ nsIChannel* channel;
+ rv = aContext->QueryInterface(nsIChannel::GetIID(), (void**)&channel);
+ if (NS_SUCCEEDED(rv)) {
+ char* contentType;
+ (void)channel->GetContentType(&contentType); // XXX ignore error?
+ mParserContext->mSourceType = contentType;
+ nsCRT::free(contentType);
+ NS_RELEASE(channel);
+ }
+#else
mParserContext->mSourceType=aSourceType;
+#endif
#ifdef rickgdebug
gDumpFile = new fstream("c:/temp/out.file",ios::trunc);
@@ -1004,6 +1066,20 @@ nsresult nsParser::OnStartBinding(nsIURL* aURL, const char *aSourceType){
return NS_OK;
}
+#ifdef NECKO
+NS_IMETHODIMP
+nsParser::OnStartRequest(nsISupports *ctxt)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+NS_IMETHODIMP
+nsParser::OnStopRequest(nsISupports *ctxt, nsresult status, const PRUnichar *errorMsg)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+#endif // NECKO
+
/**
*
*
@@ -1012,7 +1088,12 @@ nsresult nsParser::OnStartBinding(nsIURL* aURL, const char *aSourceType){
* @param length is the number of bytes waiting input
* @return error code (usually 0)
*/
-nsresult nsParser::OnDataAvailable(nsIURL* aURL, nsIInputStream *pIStream, PRUint32 aLength){
+#ifdef NECKO
+nsresult nsParser::OnDataAvailable(nsISupports* aContext, nsIBufferInputStream *pIStream, PRUint32 sourceOffset, PRUint32 aLength)
+#else
+nsresult nsParser::OnDataAvailable(nsIURL* aURL, nsIInputStream *pIStream, PRUint32 aLength)
+#endif
+{
/* if (nsnull != mListener) {
//Rick potts removed this.
//Does it need to be here?
@@ -1080,7 +1161,12 @@ nsresult nsParser::OnDataAvailable(nsIURL* aURL, nsIInputStream *pIStream, PRUin
* @param
* @return
*/
-nsresult nsParser::OnStopBinding(nsIURL* aURL, nsresult status, const PRUnichar* aMsg){
+#ifdef NECKO
+nsresult nsParser::OnStopBinding(nsISupports* aContext, nsresult status, const PRUnichar* aMsg)
+#else
+nsresult nsParser::OnStopBinding(nsIURL* aURL, nsresult status, const PRUnichar* aMsg)
+#endif
+{
mParserContext->mStreamListenerState=eOnStop;
mStreamStatus=status;
@@ -1095,7 +1181,11 @@ nsresult nsParser::OnStopBinding(nsIURL* aURL, nsresult status, const PRUnichar*
// XXX Should we wait to notify our observers as well if the
// parser isn't yet enabled?
if (nsnull != mObserver) {
+#ifdef NECKO
+ mObserver->OnStopBinding(aContext, status, aMsg);
+#else
mObserver->OnStopBinding(aURL, status, aMsg);
+#endif
}
#ifdef rickgdebug
diff --git a/mozilla/parser/htmlparser/src/nsParser.h b/mozilla/parser/htmlparser/src/nsParser.h
index e3688585dd5..efa7eacfd81 100644
--- a/mozilla/parser/htmlparser/src/nsParser.h
+++ b/mozilla/parser/htmlparser/src/nsParser.h
@@ -68,6 +68,9 @@ class IContentSink;
class nsIDTD;
class nsScanner;
class nsIParserFilter;
+#ifdef NECKO
+class nsIProgressEventSink;
+#endif
#include
@@ -236,12 +239,25 @@ friend class CTokenHandler;
// These methods are callback methods used by
// net lib to let us know about our inputstream.
//*********************************************
+#ifdef NECKO
+ // nsIProgressEventSink methods:
+ NS_IMETHOD OnProgress(nsISupports* context, PRUint32 Progress, PRUint32 ProgressMax);
+ NS_IMETHOD OnStatus(nsISupports* context, const PRUnichar* aMmsg);
+ // nsIStreamObserver methods:
+ NS_IMETHOD OnStartBinding(nsISupports *ctxt);
+ NS_IMETHOD OnStopBinding(nsISupports *ctxt, nsresult status, const PRUnichar *errorMsg);
+ NS_IMETHOD OnStartRequest(nsISupports *ctxt);
+ NS_IMETHOD OnStopRequest(nsISupports *ctxt, nsresult status, const PRUnichar *errorMsg);
+ // nsIStreamListener methods:
+ NS_IMETHOD OnDataAvailable(nsISupports *ctxt, nsIBufferInputStream *inStr, PRUint32 sourceOffset, PRUint32 count);
+#else
NS_IMETHOD GetBindInfo(nsIURL* aURL, nsStreamBindingInfo* aInfo);
NS_IMETHOD OnProgress(nsIURL* aURL, PRUint32 Progress, PRUint32 ProgressMax);
NS_IMETHOD OnStatus(nsIURL* aURL, const PRUnichar* aMmsg);
NS_IMETHOD OnStartBinding(nsIURL* aURL, const char *aContentType);
NS_IMETHOD OnDataAvailable(nsIURL* aURL, nsIInputStream *pIStream, PRUint32 length);
NS_IMETHOD OnStopBinding(nsIURL* aURL, nsresult status, const PRUnichar* aMsg);
+#endif
void PushContext(CParserContext& aContext);
CParserContext* PopContext();
@@ -340,6 +356,9 @@ protected:
PRInt32 mMinorIteration;
nsIStreamObserver* mObserver;
+#ifdef NECKO
+ nsIProgressEventSink* mProgressEventSink;
+#endif
nsIContentSink* mSink;
nsIParserFilter* mParserFilter;
PRBool mDTDVerification;