| Index: Source/core/dom/DecodedDataDocumentParser.cpp
|
| diff --git a/Source/core/dom/DecodedDataDocumentParser.cpp b/Source/core/dom/DecodedDataDocumentParser.cpp
|
| index c7345802679b21dac20c0f7e65112e52d94d6bf5..4150714e369cb3fe8edd8e17f848616c6f0bd377 100644
|
| --- a/Source/core/dom/DecodedDataDocumentParser.cpp
|
| +++ b/Source/core/dom/DecodedDataDocumentParser.cpp
|
| @@ -36,6 +36,15 @@ DecodedDataDocumentParser::DecodedDataDocumentParser(Document* document)
|
| {
|
| }
|
|
|
| +DecodedDataDocumentParser::~DecodedDataDocumentParser()
|
| +{
|
| +}
|
| +
|
| +void DecodedDataDocumentParser::setDecoder(PassRefPtr<TextResourceDecoder> decoder)
|
| +{
|
| + m_decoder = decoder;
|
| +}
|
| +
|
| size_t DecodedDataDocumentParser::appendBytes(const char* data, size_t length)
|
| {
|
| if (!length)
|
| @@ -47,8 +56,12 @@ size_t DecodedDataDocumentParser::appendBytes(const char* data, size_t length)
|
| if (isDetached())
|
| return 0;
|
|
|
| - String decoded = document()->decoder()->decode(data, length);
|
| - document()->setEncoding(document()->decoder()->encoding());
|
| + String decoded = m_decoder->decode(data, length);
|
| + Document::DocumentEncodingData encodingData;
|
| + encodingData.encoding = m_decoder->encoding();
|
| + encodingData.wasDetectedHeuristically = m_decoder->encodingWasDetectedHeuristically();
|
| + encodingData.sawDecodingError = m_decoder->sawError();
|
| + document()->setEncoding(encodingData);
|
|
|
| if (decoded.isEmpty())
|
| return 0;
|
| @@ -69,11 +82,15 @@ size_t DecodedDataDocumentParser::flush()
|
|
|
| // null decoder indicates there is no data received.
|
| // We have nothing to do in that case.
|
| - TextResourceDecoder* decoder = document()->decoder();
|
| - if (!decoder)
|
| + if (!m_decoder)
|
| return 0;
|
| - String remainingData = decoder->flush();
|
| - document()->setEncoding(document()->decoder()->encoding());
|
| + String remainingData = m_decoder->flush();
|
| + Document::DocumentEncodingData encodingData;
|
| + encodingData.encoding = m_decoder->encoding();
|
| + encodingData.wasDetectedHeuristically = m_decoder->encodingWasDetectedHeuristically();
|
| + encodingData.sawDecodingError = m_decoder->sawError();
|
| + document()->setEncoding(encodingData);
|
| +
|
| if (remainingData.isEmpty())
|
| return 0;
|
|
|
|
|