106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen/* 206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * Copyright (C) 2010 Google, Inc. All Rights Reserved. 306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * 406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * Redistribution and use in source and binary forms, with or without 506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * modification, are permitted provided that the following conditions 606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * are met: 706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * 1. Redistributions of source code must retain the above copyright 806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * notice, this list of conditions and the following disclaimer. 906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * 2. Redistributions in binary form must reproduce the above copyright 1006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * notice, this list of conditions and the following disclaimer in the 1106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * documentation and/or other materials provided with the distribution. 1206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * 1306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 1406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 1606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 1706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 1806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 1906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 2006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 2106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen */ 2506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 2606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#ifndef RawDataDocumentParser_h 2706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#define RawDataDocumentParser_h 2806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 2906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "DocumentParser.h" 3006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 3106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsennamespace WebCore { 3206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 3306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenclass RawDataDocumentParser : public DocumentParser { 34e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockprotected: 3506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen RawDataDocumentParser(Document* document) 3606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen : DocumentParser(document) 3706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen { 3806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen } 3906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 4006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen virtual void finish() 4106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen { 425abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick if (!isStopped()) 43e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block document()->finishedParsing(); 4406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen } 4506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 4606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenprivate: 47ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual void insert(const SegmentedString&) 4806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen { 4906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen // <https://bugs.webkit.org/show_bug.cgi?id=25397>: JS code can always call document.write, we need to handle it. 5006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen ASSERT_NOT_REACHED(); 5106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen } 5206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 53ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual void append(const SegmentedString&) 54ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block { 55ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block ASSERT_NOT_REACHED(); 56ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block } 57ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block 5806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen virtual bool finishWasCalled() 5906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen { 6006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen // finish() always calls document()->finishedParsing() so we will be 6106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen // deleted after finish(). 6206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return false; 6306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen } 6406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}; 6506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 6606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}; 6706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 6806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#endif // RawDataDocumentParser_h 69