Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(593)

Unified Diff: Source/core/dom/DecodedDataDocumentParser.cpp

Issue 69823002: Move ownership of the TextResourceDecoder to DecodedDataDocumentParser (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/dom/DecodedDataDocumentParser.cpp
diff --git a/Source/core/dom/DecodedDataDocumentParser.cpp b/Source/core/dom/DecodedDataDocumentParser.cpp
index c7345802679b21dac20c0f7e65112e52d94d6bf5..fd49f4f3fbb254240ae011ff497a4433462e4087 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,8 @@ 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);
+ updateDocumentEncoding();
if (decoded.isEmpty())
return 0;
@@ -69,11 +78,11 @@ 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();
+ updateDocumentEncoding();
+
if (remainingData.isEmpty())
return 0;
@@ -83,4 +92,13 @@ size_t DecodedDataDocumentParser::flush()
return consumedChars;
}
+void DecodedDataDocumentParser::updateDocumentEncoding()
+{
+ Document::DocumentEncodingData encodingData;
+ encodingData.encoding = m_decoder->encoding();
+ encodingData.wasDetectedHeuristically = m_decoder->encodingWasDetectedHeuristically();
+ encodingData.sawDecodingError = m_decoder->sawError();
+ document()->setEncodingData(encodingData);
+}
+
};

Powered by Google App Engine
This is Rietveld 408576698