diff --git a/mozilla/parser/htmlparser/public/nsIParser.h b/mozilla/parser/htmlparser/public/nsIParser.h
index 54bc74c24b5..fd0ce6a67a7 100644
--- a/mozilla/parser/htmlparser/public/nsIParser.h
+++ b/mozilla/parser/htmlparser/public/nsIParser.h
@@ -50,7 +50,6 @@
#include "nsISupports.h"
#include "nsIStreamListener.h"
#include "nsIDTD.h"
-#include "nsIInputStream.h"
#include "nsStringGlue.h"
#include "nsVoidArray.h"
@@ -228,10 +227,6 @@ class nsIParser : public nsISupports {
nsIRequestObserver* aListener = nsnull,
void* aKey = 0,
nsDTDMode aMode = eDTDMode_autodetect) = 0;
- NS_IMETHOD Parse(nsIInputStream* aStream,
- const nsACString& aMimeType,
- void* aKey = 0,
- nsDTDMode aMode = eDTDMode_autodetect) = 0;
NS_IMETHOD Parse(const nsAString& aSourceBuffer,
void* aKey,
const nsACString& aMimeType,
diff --git a/mozilla/parser/htmlparser/src/nsExpatDriver.cpp b/mozilla/parser/htmlparser/src/nsExpatDriver.cpp
index 412509a008c..2d615f140e9 100644
--- a/mozilla/parser/htmlparser/src/nsExpatDriver.cpp
+++ b/mozilla/parser/htmlparser/src/nsExpatDriver.cpp
@@ -1177,7 +1177,7 @@ nsExpatDriver::ConsumeToken(nsScanner& aScanner, PRBool& aFlushTokens)
("Remaining in expat's buffer: %i, remaining in scanner: %i.",
mExpatBuffered, Distance(currentExpatPosition, end)));
- return NS_SUCCEEDED(mInternalState) ? aScanner.FillBuffer() : NS_OK;
+ return NS_SUCCEEDED(mInternalState) ? kEOF : NS_OK;
}
NS_IMETHODIMP
diff --git a/mozilla/parser/htmlparser/src/nsParser.cpp b/mozilla/parser/htmlparser/src/nsParser.cpp
index b160f2253b4..d60ac6697e1 100644
--- a/mozilla/parser/htmlparser/src/nsParser.cpp
+++ b/mozilla/parser/htmlparser/src/nsParser.cpp
@@ -1280,43 +1280,6 @@ nsParser::Parse(nsIURI* aURL,
return result;
}
-
-/**
- * Cause parser to parse input from given stream
- */
-NS_IMETHODIMP
-nsParser::Parse(nsIInputStream* aStream,
- const nsACString& aMimeType,
- void* aKey,
- nsDTDMode aMode)
-{
- nsresult result = NS_ERROR_OUT_OF_MEMORY;
-
- // Ok, time to create our tokenizer and begin the process
- nsAutoString theUnknownFilename(NS_LITERAL_STRING("unknown"));
-
- nsScanner* theScanner = new nsScanner(theUnknownFilename, aStream, mCharset,
- mCharsetSource);
-
- CParserContext* pc = new CParserContext(theScanner, aKey, mCommand, 0);
- if (pc && theScanner) {
- PushContext(*pc);
- pc->SetMimeType(aMimeType);
- pc->mStreamListenerState = eOnStart;
- pc->mMultipart = PR_FALSE;
- pc->mContextType = CParserContext::eCTStream;
- pc->mDTDMode = aMode;
- mParserContext->mScanner->FillBuffer();
- result = ResumeParse();
- pc = PopContext();
- delete pc;
- } else {
- result = mInternalState = NS_ERROR_HTMLPARSER_BADCONTEXT;
- }
-
- return result;
-}
-
/**
* Call this method if all you want to do is parse 1 string full of HTML text.
* In particular, this method should be called by the DOM when it has an HTML
diff --git a/mozilla/parser/htmlparser/src/nsParser.h b/mozilla/parser/htmlparser/src/nsParser.h
index f3913fc9f9e..bfd23009e44 100644
--- a/mozilla/parser/htmlparser/src/nsParser.h
+++ b/mozilla/parser/htmlparser/src/nsParser.h
@@ -199,17 +199,6 @@ class nsParser : public nsIParser,
void* aKey = 0,
nsDTDMode aMode = eDTDMode_autodetect);
- /**
- * Cause parser to parse input from given stream
- * @update gess5/11/98
- * @param aStream is the i/o source
- * @return TRUE if all went well -- FALSE otherwise
- */
- NS_IMETHOD Parse(nsIInputStream* aStream,
- const nsACString& aMimeType,
- void* aKey = 0,
- nsDTDMode aMode = eDTDMode_autodetect);
-
/**
* @update gess5/11/98
* @param anHTMLString contains a string-full of real HTML
diff --git a/mozilla/parser/htmlparser/src/nsScanner.cpp b/mozilla/parser/htmlparser/src/nsScanner.cpp
index e2fb44cabed..766005a5864 100644
--- a/mozilla/parser/htmlparser/src/nsScanner.cpp
+++ b/mozilla/parser/htmlparser/src/nsScanner.cpp
@@ -94,7 +94,6 @@ nsScanner::nsScanner(const nsAString& anHTMLString, const nsACString& aCharset,
{
MOZ_COUNT_CTOR(nsScanner);
- mTotalRead = anHTMLString.Length();
mSlidingBuffer = nsnull;
mCountRemaining = 0;
mFirstNonWhitespacePosition = -1;
@@ -121,6 +120,7 @@ nsScanner::nsScanner(nsString& aFilename,PRBool aCreateStream,
: mFilename(aFilename), mParser(nsnull)
{
MOZ_COUNT_CTOR(nsScanner);
+ NS_ASSERTION(!aCreateStream, "This is always true.");
mSlidingBuffer = nsnull;
@@ -136,59 +136,12 @@ nsScanner::nsScanner(nsString& aFilename,PRBool aCreateStream,
mIncremental = PR_TRUE;
mFirstNonWhitespacePosition = -1;
mCountRemaining = 0;
- mTotalRead=0;
- if(aCreateStream) {
- nsCOMPtr file;
- nsCOMPtr fileStream;
-
- NS_NewLocalFile(aFilename, PR_TRUE, getter_AddRefs(file));
- if (file)
- NS_NewLocalFileInputStream(getter_AddRefs(mInputStream), file);
-
- } //if
mUnicodeDecoder = 0;
mCharsetSource = kCharsetUninitialized;
SetDocumentCharset(aCharset, aSource);
}
-/**
- * Use this constructor if you want i/o to be stream based.
- *
- * @update gess 5/12/98
- * @param aStream --
- * @param assumeOwnership --
- * @param aFilename --
- * @return
- */
-nsScanner::nsScanner(const nsAString& aFilename, nsIInputStream* aStream,
- const nsACString& aCharset, PRInt32 aSource)
- : mFilename(aFilename), mParser(nsnull)
-{
- MOZ_COUNT_CTOR(nsScanner);
-
- mSlidingBuffer = nsnull;
-
- // XXX This is a big hack. We need to initialize the iterators to something.
- // What matters is that mCurrentPosition == mEndPosition, so that our methods
- // believe that we are at EOF (see bug 182067). We null out mCurrentPosition
- // so that we have some hope of catching null pointer dereferences associated
- // with this hack. --darin
- memset(&mCurrentPosition, 0, sizeof(mCurrentPosition));
- mMarkPosition = mCurrentPosition;
- mEndPosition = mCurrentPosition;
-
- mIncremental = PR_FALSE;
- mFirstNonWhitespacePosition = -1;
- mCountRemaining = 0;
- mTotalRead=0;
- mInputStream=aStream;
- mUnicodeDecoder = 0;
- mCharsetSource = kCharsetUninitialized;
- SetDocumentCharset(aCharset, aSource);
-}
-
-
nsresult nsScanner::SetDocumentCharset(const nsACString& aCharset , PRInt32 aSource) {
nsresult res = NS_OK;
@@ -251,11 +204,6 @@ nsScanner::~nsScanner() {
MOZ_COUNT_DTOR(nsScanner);
- if(mInputStream) {
- mInputStream->Close();
- mInputStream = 0;
- }
-
NS_IF_RELEASE(mUnicodeDecoder);
}
@@ -313,7 +261,6 @@ PRBool nsScanner::UngetReadable(const nsAString& aBuffer) {
PRUint32 length = aBuffer.Length();
mCountRemaining += length; // Ref. bug 117441
- mTotalRead += length;
return PR_TRUE;
}
@@ -325,7 +272,6 @@ PRBool nsScanner::UngetReadable(const nsAString& aBuffer) {
* @return error code
*/
nsresult nsScanner::Append(const nsAString& aBuffer) {
- mTotalRead += aBuffer.Length();
AppendToBuffer(aBuffer);
return NS_OK;
}
@@ -342,7 +288,7 @@ nsresult nsScanner::Append(const char* aBuffer, PRUint32 aLen,
{
nsresult res=NS_OK;
PRUnichar *unichars, *start;
- if(mUnicodeDecoder) {
+ if (mUnicodeDecoder) {
PRInt32 unicharBufLen = 0;
mUnicodeDecoder->GetMaxLength(aBuffer, aLen, &unicharBufLen);
nsScannerString::Buffer* buffer = nsScannerString::AllocBuffer(unicharBufLen + 1);
@@ -389,7 +335,6 @@ nsresult nsScanner::Append(const char* aBuffer, PRUint32 aLen,
buffer->SetDataLength(totalChars);
AppendToBuffer(buffer, aRequest);
- mTotalRead += totalChars;
// Don't propagate return code of unicode decoder
// since it doesn't reflect on our success or failure
@@ -397,47 +342,13 @@ nsresult nsScanner::Append(const char* aBuffer, PRUint32 aLen,
res = NS_OK;
}
else {
- AppendASCIItoBuffer(aBuffer, aLen, aRequest);
- mTotalRead+=aLen;
+ NS_WARNING("No decoder found.");
+ res = NS_ERROR_FAILURE;
}
return res;
}
-
-/**
- * Grab data from underlying stream.
- *
- * @update gess4/3/98
- * @return error code
- */
-nsresult nsScanner::FillBuffer(void) {
- nsresult result=NS_OK;
-
- if(!mInputStream) {
- result=kEOF;
- }
- else {
- PRUint32 numread=0;
- char buf[kBufsize+1];
- buf[kBufsize]=0;
-
- // XXX use ReadSegments to avoid extra buffer copy? --darin
-
- result = mInputStream->Read(buf, kBufsize, &numread);
- if (0 == numread) {
- return kEOF;
- }
-
- if((0 0) {
+ if (mCountRemaining <= aOffset)
+ return kEOF;
+
+ nsScannerIterator pos = mCurrentPosition;
+ pos.advance(aOffset);
+ aChar=*pos;
+ }
+ else {
+ aChar=*mCurrentPosition;
}
- if(NS_OK == result){
- if (aOffset) {
- while ((NS_OK == result) && (mCountRemaining <= aOffset)) {
- result = FillBuffer();
- }
-
- if (NS_OK == result) {
- nsScannerIterator pos = mCurrentPosition;
- pos.advance(aOffset);
- aChar=*pos;
- }
- }
- else {
- aChar=*mCurrentPosition;
- }
- }
-
- return result;
+ return NS_OK;
}
nsresult nsScanner::Peek(nsAString& aStr, PRInt32 aNumChars, PRInt32 aOffset)
{
- if (!mSlidingBuffer) {
+ if (!mSlidingBuffer || mCurrentPosition == mEndPosition) {
return kEOF;
}
- if (mCurrentPosition == mEndPosition) {
- return FillBuffer();
- }
-
nsScannerIterator start, end;
start = mCurrentPosition;
@@ -591,7 +481,7 @@ nsresult nsScanner::SkipWhitespace(PRInt32& aNewlinesSkipped) {
if (skipped) {
SetPosition(current);
if (current == mEndPosition) {
- result = FillBuffer();
+ result = kEOF;
}
}
@@ -628,68 +518,6 @@ nsresult nsScanner::SkipOver(PRUnichar aSkipChar){
}
-/**
- * Skip over chars as long as they're in aSkipSet
- *
- * @update gess 3/25/98
- * @param aSkipSet is an ordered string.
- * @return error code
- */
-nsresult nsScanner::SkipOver(nsString& aSkipSet){
-
- if (!mSlidingBuffer) {
- return kEOF;
- }
-
- PRUnichar theChar=0;
- nsresult result=NS_OK;
-
- while(NS_OK==result) {
- result=Peek(theChar);
- if(NS_OK == result) {
- PRInt32 pos=aSkipSet.FindChar(theChar);
- if(kNotFound==pos) {
- break;
- }
- GetChar(theChar);
- }
- else break;
- } //while
- return result;
-
-}
-
-
-/**
- * Skip over chars until they're in aValidSet
- *
- * @update gess 3/25/98
- * @param aValid set is an ordered string that
- * contains chars you're looking for
- * @return error code
- */
-nsresult nsScanner::SkipTo(nsString& aValidSet){
- if (!mSlidingBuffer) {
- return kEOF;
- }
-
- PRUnichar ch=0;
- nsresult result=NS_OK;
-
- while(NS_OK==result) {
- result=Peek(ch);
- if(NS_OK == result) {
- PRInt32 pos=aValidSet.FindChar(ch);
- if(kNotFound!=pos) {
- break;
- }
- GetChar(ch);
- }
- else break;
- } //while
- return result;
-}
-
#if 0
void DoErrTest(nsString& aString) {
PRInt32 pos=aString.FindChar(0);
@@ -708,19 +536,6 @@ void DoErrTest(nsCString& aString) {
}
#endif
-/**
- * Skip over chars as long as they're in aValidSet
- *
- * @update gess 3/25/98
- * @param aValidSet is an ordered string containing the
- * characters you want to skip
- * @return error code
- */
-nsresult nsScanner::SkipPast(nsString& aValidSet){
- NS_NOTYETIMPLEMENTED("Error: SkipPast not yet implemented.");
- return NS_OK;
-}
-
/**
* Consume characters until you run into space, a '<', a '>', or a '/'.
*
@@ -780,7 +595,7 @@ nsresult nsScanner::ReadTagIdentifier(nsScannerSharedSubstring& aString) {
SetPosition(current);
if (current == end) {
- result = FillBuffer();
+ result = kEOF;
}
//DoErrTest(aString);
@@ -840,7 +655,7 @@ nsresult nsScanner::ReadEntityIdentifier(nsString& aString) {
SetPosition(current);
if (current == end) {
AppendUnicodeTo(origin, current, aString);
- return FillBuffer();
+ return kEOF;
}
//DoErrTest(aString);
@@ -889,7 +704,7 @@ nsresult nsScanner::ReadNumber(nsString& aString,PRInt32 aBase) {
SetPosition(current);
if (current == end) {
AppendUnicodeTo(origin, current, aString);
- return FillBuffer();
+ return kEOF;
}
//DoErrTest(aString);
@@ -967,7 +782,7 @@ nsresult nsScanner::ReadWhitespace(nsScannerSharedSubstring& aString,
SetPosition(current);
if (current == end) {
AppendUnicodeTo(origin, current, aString);
- result = FillBuffer();
+ result = kEOF;
}
aHaveCR = haveCR;
@@ -1026,69 +841,12 @@ nsresult nsScanner::ReadWhitespace(nsScannerIterator& aStart,
if (current == end) {
aStart = origin;
aEnd = current;
- result = FillBuffer();
+ result = kEOF;
}
return result;
}
-/**
- * Consume chars as long as they are in the
- * given validSet of input chars.
- *
- * @update gess 3/25/98
- * @param aString will contain the result of this method
- * @param aValidSet is an ordered string that contains the
- * valid characters
- * @return error code
- */
-nsresult nsScanner::ReadWhile(nsString& aString,
- nsString& aValidSet,
- PRBool addTerminal){
-
- if (!mSlidingBuffer) {
- return kEOF;
- }
-
- PRUnichar theChar=0;
- nsresult result=Peek(theChar);
- nsScannerIterator origin, current, end;
-
- origin = mCurrentPosition;
- current = origin;
- end = mEndPosition;
-
- while(current != end) {
-
- theChar=*current;
- if (theChar == '\0') {
- ReplaceCharacter(current, sInvalid);
- theChar = sInvalid;
- }
- if(theChar) {
- PRInt32 pos=aValidSet.FindChar(theChar);
- if(kNotFound==pos) {
- if(addTerminal)
- ++current;
- AppendUnicodeTo(origin, current, aString);
- break;
- }
- }
- ++current;
- }
-
- SetPosition(current);
- if (current == end) {
- AppendUnicodeTo(origin, current, aString);
- return FillBuffer();
- }
-
- //DoErrTest(aString);
-
- return result;
-
-}
-
/**
* Consume characters until you encounter one contained in given
* input set.
@@ -1156,7 +914,7 @@ nsresult nsScanner::ReadUntil(nsAString& aString,
// current = mEndPosition
SetPosition(current);
AppendUnicodeTo(origin, current, aString);
- return FillBuffer();
+ return kEOF;
}
nsresult nsScanner::ReadUntil(nsScannerSharedSubstring& aString,
@@ -1216,7 +974,7 @@ nsresult nsScanner::ReadUntil(nsScannerSharedSubstring& aString,
// current = mEndPosition
SetPosition(current);
AppendUnicodeTo(origin, current, aString);
- return FillBuffer();
+ return kEOF;
}
nsresult nsScanner::ReadUntil(nsScannerIterator& aStart,
@@ -1277,7 +1035,7 @@ nsresult nsScanner::ReadUntil(nsScannerIterator& aStart,
SetPosition(current);
aStart = origin;
aEnd = current;
- return FillBuffer();
+ return kEOF;
}
/**
@@ -1328,7 +1086,7 @@ nsresult nsScanner::ReadUntil(nsAString& aString,
// current = mEndPosition
AppendUnicodeTo(origin, current, aString);
SetPosition(current);
- return FillBuffer();
+ return kEOF;
}
@@ -1425,19 +1183,6 @@ void nsScanner::AppendToBuffer(nsScannerString::Buffer* aBuf,
}
}
-void nsScanner::AppendASCIItoBuffer(const char* aData, PRUint32 aLen,
- nsIRequest *aRequest)
-{
- nsScannerString::Buffer* buf = nsScannerString::AllocBuffer(aLen);
- if (buf)
- {
- LossyConvertEncoding converter(buf->DataStart());
- converter.write(aData, aLen);
- converter.write_terminator();
- AppendToBuffer(buf, aRequest);
- }
-}
-
/**
* call this to copy bytes out of the scanner that have not yet been consumed
* by the tokenization process.
diff --git a/mozilla/parser/htmlparser/src/nsScanner.h b/mozilla/parser/htmlparser/src/nsScanner.h
index a4ae637fafe..dcfcdc505a7 100644
--- a/mozilla/parser/htmlparser/src/nsScanner.h
+++ b/mozilla/parser/htmlparser/src/nsScanner.h
@@ -43,8 +43,8 @@
* The scanner is a low-level service class that knows
* how to consume characters out of an (internal) stream.
* This class also offers a series of utility methods
- * that most tokenizers want, such as readUntil(),
- * readWhile() and SkipWhitespace().
+ * that most tokenizers want, such as readUntil()
+ * and SkipWhitespace().
*/
@@ -57,7 +57,6 @@
#include "prtypes.h"
#include "nsIUnicodeDecoder.h"
#include "nsScannerString.h"
-#include "nsIInputStream.h"
class nsParser;
@@ -99,18 +98,6 @@ class nsScanner {
*/
nsScanner(nsString& aFilename,PRBool aCreateStream, const nsACString& aCharset, PRInt32 aSource);
- /**
- * Use this constructor if you want i/o to be stream based.
- *
- * @update ftang 3/02/99
- * @param aCharset charset
- * @param aCharsetSource - where the charset info came from
- * @param aMode represents the parser mode (nav, other)
- * @return
- */
- nsScanner(const nsAString& aFilename, nsIInputStream* aStream, const nsACString& aCharset, PRInt32 aSource);
-
-
~nsScanner();
/**
@@ -134,15 +121,6 @@ class nsScanner {
nsresult Peek(nsAString& aStr, PRInt32 aNumChars, PRInt32 aOffset = 0);
- /**
- * Skip over chars as long as they're in aSkipSet
- *
- * @update gess 3/25/98
- * @param set of chars to be skipped
- * @return error code
- */
- nsresult SkipOver(nsString& SkipChars);
-
/**
* Skip over chars as long as they equal given char
*
@@ -152,24 +130,6 @@ class nsScanner {
*/
nsresult SkipOver(PRUnichar aSkipChar);
- /**
- * Skip over chars until they're in aValidSet
- *
- * @update gess 3/25/98
- * @param aValid set contains chars you're looking for
- * @return error code
- */
- nsresult SkipTo(nsString& aValidSet);
-
- /**
- * Skip over chars as long as they're in aSequence
- *
- * @update gess 3/25/98
- * @param contains sequence to be skipped
- * @return error code
- */
- nsresult SkipPast(nsString& aSequence);
-
/**
* Skip whitespace on scanner input stream
*
@@ -238,18 +198,6 @@ class nsScanner {
const nsReadEndCondition& aEndCondition,
PRBool addTerminal);
-
- /**
- * Consume characters while they're members of anInputSet
- *
- * @update gess 3/25/98
- * @param aString receives new data from stream
- * @param anInputSet contains valid chars
- * @param addTerminal tells us whether to append terminal to aString
- * @return error code
- */
- nsresult ReadWhile(nsString& aString,nsString& anInputSet,PRBool addTerminal);
-
/**
* Records current offset position in input stream. This allows us
* to back up to this point if the need should arise, such as when
@@ -367,28 +315,14 @@ class nsScanner {
mParser = aParser;
}
-
- /**
- * Fill internal buffer with new data, returns an error if
- * no new data is read.
- *
- * @update gess4/3/98
- */
- nsresult FillBuffer(void);
-
protected:
- enum {eBufferSizeThreshold=0x1000}; //4K
-
void AppendToBuffer(nsScannerString::Buffer *, nsIRequest *aRequest);
void AppendToBuffer(const nsAString& aStr)
{
AppendToBuffer(nsScannerString::AllocBufferFromString(aStr), nsnull);
}
- void AppendASCIItoBuffer(const char* aData, PRUint32 aLen,
- nsIRequest *aRequest);
- nsCOMPtr mInputStream;
nsScannerString* mSlidingBuffer;
nsScannerIterator mCurrentPosition; // The position we will next read from in the scanner buffer
nsScannerIterator mMarkPosition; // The position last marked (we may rewind to here)
@@ -396,7 +330,6 @@ class nsScanner {
nsString mFilename;
PRUint32 mCountRemaining; // The number of bytes still to be read
// from the scanner buffer
- PRUint32 mTotalRead;
PRPackedBool mIncremental;
PRInt32 mFirstNonWhitespacePosition;
PRInt32 mCharsetSource;