summaryrefslogtreecommitdiffstats
path: root/WebCore/dom/DocumentParser.h
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/dom/DocumentParser.h')
-rw-r--r--WebCore/dom/DocumentParser.h133
1 files changed, 77 insertions, 56 deletions
diff --git a/WebCore/dom/DocumentParser.h b/WebCore/dom/DocumentParser.h
index c7eea06..881136c 100644
--- a/WebCore/dom/DocumentParser.h
+++ b/WebCore/dom/DocumentParser.h
@@ -2,6 +2,7 @@
* Copyright (C) 2000 Peter Kelly (pmk@post.com)
* Copyright (C) 2005, 2006 Apple Computer, Inc.
* Copyright (C) 2007 Samuel Weinig (sam@webkit.org)
+ * Copyright (C) 2010 Google, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -23,64 +24,84 @@
#ifndef DocumentParser_h
#define DocumentParser_h
+#include <wtf/Assertions.h>
+
namespace WebCore {
- class LegacyHTMLTreeConstructor;
- class HTMLDocumentParser;
- class SegmentedString;
- class XSSAuditor;
-
- class DocumentParser : public Noncopyable {
- public:
- virtual ~DocumentParser() { }
-
- // Script output must be prepended, while new data
- // received during executing a script must be appended, hence the
- // extra bool to be able to distinguish between both cases.
- // document.write() always uses false, while the loader uses true.
- virtual void write(const SegmentedString&, bool appendData) = 0;
- virtual void finish() = 0;
- virtual bool isWaitingForScripts() const = 0;
- virtual void stopParsing() { m_parserStopped = true; }
- virtual bool processingData() const { return false; }
- virtual int executingScript() const { return 0; }
-
- virtual bool wantsRawData() const { return false; }
- virtual bool writeRawData(const char* /*data*/, int /*length*/) { return false; }
-
- bool inViewSourceMode() const { return m_inViewSourceMode; }
- void setInViewSourceMode(bool mode) { m_inViewSourceMode = mode; }
-
- virtual bool wellFormed() const { return true; }
-
- virtual int lineNumber() const { return -1; }
- virtual int columnNumber() const { return -1; }
-
- virtual void executeScriptsWaitingForStylesheets() {}
-
- virtual LegacyHTMLTreeConstructor* htmlTreeConstructor() const { return 0; }
- virtual HTMLDocumentParser* asHTMLDocumentParser() { return 0; }
-
- XSSAuditor* xssAuditor() const { return m_XSSAuditor; }
- void setXSSAuditor(XSSAuditor* auditor) { m_XSSAuditor = auditor; }
-
- protected:
- DocumentParser(bool viewSourceMode = false)
- : m_parserStopped(false)
- , m_inViewSourceMode(viewSourceMode)
- , m_XSSAuditor(0)
- {
- }
-
- // The parser has buffers, so parsing may continue even after
- // it stops receiving data. We use m_parserStopped to stop the parser
- // even when it has buffered data.
- bool m_parserStopped;
- bool m_inViewSourceMode;
-
- // The XSSAuditor associated with this document parser.
- XSSAuditor* m_XSSAuditor;
- };
+class Document;
+class LegacyHTMLTreeBuilder;
+class LegacyHTMLDocumentParser;
+class SegmentedString;
+class XSSAuditor;
+
+class DocumentParser : public Noncopyable {
+public:
+ virtual ~DocumentParser() { }
+
+ // Script output must be prepended, while new data
+ // received during executing a script must be appended, hence the
+ // extra bool to be able to distinguish between both cases.
+ // document.write() always uses false, while the loader uses true.
+ virtual void write(const SegmentedString&, bool isFromNetwork) = 0;
+ virtual void finish() = 0;
+ virtual bool finishWasCalled() = 0;
+ virtual bool isWaitingForScripts() const = 0;
+ virtual bool isExecutingScript() const { return false; }
+
+ virtual void stopParsing() { m_parserStopped = true; }
+ // FIXME: processingData() is only used by DocumentLoader::isLoadingInAPISense
+ // and is very unclear as to what it actually means. Only LegacyHTMLDocumentParser
+ // actually implements it.
+ virtual bool processingData() const { return false; }
+
+ virtual bool wantsRawData() const { return false; }
+ virtual bool writeRawData(const char* /*data*/, int /*length*/)
+ {
+ ASSERT_NOT_REACHED();
+ return false;
+ }
+
+ virtual bool wellFormed() const { return true; }
+
+ virtual int lineNumber() const { return -1; }
+ virtual int columnNumber() const { return -1; }
+
+ virtual void executeScriptsWaitingForStylesheets() {}
+
+ virtual LegacyHTMLTreeBuilder* htmlTreeBuilder() const { return 0; }
+ virtual LegacyHTMLDocumentParser* asHTMLDocumentParser() { return 0; }
+
+ // FIXME: view source mode is only used by the HTML and Text
+ // DocumentParsers and may not belong on the base-class.
+ bool inViewSourceMode() const { return m_inViewSourceMode; }
+ void setInViewSourceMode(bool mode) { m_inViewSourceMode = mode; }
+
+ Document* document() const { return m_document; }
+
+ XSSAuditor* xssAuditor() const { return m_XSSAuditor; }
+ void setXSSAuditor(XSSAuditor* auditor) { m_XSSAuditor = auditor; }
+
+protected:
+ DocumentParser(Document* document, bool viewSourceMode = false)
+ : m_parserStopped(false)
+ , m_inViewSourceMode(viewSourceMode)
+ , m_document(document)
+ , m_XSSAuditor(0)
+ {
+ ASSERT(document);
+ }
+
+ // The parser has buffers, so parsing may continue even after
+ // it stops receiving data. We use m_parserStopped to stop the parser
+ // even when it has buffered data.
+ bool m_parserStopped;
+ bool m_inViewSourceMode;
+
+ // Every DocumentParser needs a pointer back to the document.
+ Document* m_document;
+ // The XSSAuditor associated with this document parser.
+ XSSAuditor* m_XSSAuditor;
+};
} // namespace WebCore