void DocumentWriter::end() { ASSERT(m_document); // http://bugs.webkit.org/show_bug.cgi?id=10854 // The frame's last ref may be removed and it can be deleted by checkCompleted(), // so we'll add a protective refcount RefPtr<LocalFrame> protector(m_document->frame()); if (!m_parser) return; if (m_parser->needsDecoder()) { OwnPtr<TextResourceDecoder> decoder = m_decoderBuilder.buildFor(m_document); m_parser->setDecoder(decoder.release()); } // flush() can result replacing DocumentLoader::m_writer. RefPtrWillBeRawPtr<DocumentWriter> protectingThis(this); m_parser->flush(); if (!m_parser) return; m_parser->finish(); m_parser = nullptr; m_document = nullptr; }
void DocumentWriter::end() { ASSERT(m_document); // http://bugs.webkit.org/show_bug.cgi?id=10854 // The frame's last ref may be removed and it can be deleted by checkCompleted(), // so we'll add a protective refcount RefPtr<Frame> protector(m_document->frame()); if (!m_parser) return; if (!m_decoder && m_parser->needsDecoder()) m_decoder = m_decoderBuilder.buildFor(m_document); // flush() can result replacing DocumentLoader::m_writer. RefPtr<DocumentWriter> protectingThis(this); size_t consumedChars = m_parser->flush(); if (consumedChars) reportDataReceived(); if (!m_parser) return; m_parser->finish(); m_parser = 0; m_document = 0; }
void DocumentWriter::addData(const char* bytes, size_t length) { ASSERT(m_parser); if (m_parser->needsDecoder() && 0 < length) { OwnPtr<TextResourceDecoder> decoder = m_decoderBuilder.buildFor(m_document); m_parser->setDecoder(decoder.release()); } // appendBytes() can result replacing DocumentLoader::m_writer. RefPtrWillBeRawPtr<DocumentWriter> protectingThis(this); m_parser->appendBytes(bytes, length); }
void DocumentWriter::addData(const char* bytes, size_t length) { ASSERT(m_parser); if (!m_decoder && m_parser->needsDecoder() && 0 < length) m_decoder = m_decoderBuilder.buildFor(m_document); // appendBytes() can result replacing DocumentLoader::m_writer. RefPtr<DocumentWriter> protectingThis(this); size_t consumedChars = m_parser->appendBytes(bytes, length); if (consumedChars) reportDataReceived(); }