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