| Index: Source/core/xml/parser/XMLDocumentParser.h
|
| diff --git a/Source/core/xml/parser/XMLDocumentParser.h b/Source/core/xml/parser/XMLDocumentParser.h
|
| index f50c6f3c4d78e815eeb99c7f02e47e709d623227..917f87f73f8e4744cd68ce351e0864aa4315eea5 100644
|
| --- a/Source/core/xml/parser/XMLDocumentParser.h
|
| +++ b/Source/core/xml/parser/XMLDocumentParser.h
|
| @@ -49,152 +49,151 @@ class Element;
|
| class FrameView;
|
| class Text;
|
|
|
| - class XMLParserContext : public RefCounted<XMLParserContext> {
|
| +class XMLParserContext : public RefCounted<XMLParserContext> {
|
| +public:
|
| + static PassRefPtr<XMLParserContext> createMemoryParser(xmlSAXHandlerPtr, void* userData, const CString& chunk);
|
| + static PassRefPtr<XMLParserContext> createStringParser(xmlSAXHandlerPtr, void* userData);
|
| + ~XMLParserContext();
|
| + xmlParserCtxtPtr context() const { return m_context; }
|
| +
|
| +private:
|
| + XMLParserContext(xmlParserCtxtPtr context)
|
| + : m_context(context)
|
| + {
|
| + }
|
| +
|
| + xmlParserCtxtPtr m_context;
|
| +};
|
| +
|
| +class XMLDocumentParser FINAL : public ScriptableDocumentParser, public ResourceClient {
|
| + WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED;
|
| +public:
|
| + static PassRefPtrWillBeRawPtr<XMLDocumentParser> create(Document& document, FrameView* view)
|
| + {
|
| + return adoptRefWillBeNoop(new XMLDocumentParser(document, view));
|
| + }
|
| + static PassRefPtrWillBeRawPtr<XMLDocumentParser> create(DocumentFragment* fragment, Element* element, ParserContentPolicy parserContentPolicy)
|
| + {
|
| + return adoptRefWillBeNoop(new XMLDocumentParser(fragment, element, parserContentPolicy));
|
| + }
|
| + virtual ~XMLDocumentParser();
|
| + virtual void trace(Visitor*) OVERRIDE;
|
| +
|
| + // Exposed for callbacks:
|
| + void handleError(XMLErrors::ErrorType, const char* message, TextPosition);
|
| +
|
| + void setIsXHTMLDocument(bool isXHTML) { m_isXHTMLDocument = isXHTML; }
|
| + bool isXHTMLDocument() const { return m_isXHTMLDocument; }
|
| +
|
| + bool isCurrentlyParsing8BitChunk() { return m_isCurrentlyParsing8BitChunk; }
|
| +
|
| + static bool parseDocumentFragment(const String&, DocumentFragment*, Element* parent = 0, ParserContentPolicy = AllowScriptingContent);
|
| +
|
| + // Used by the XMLHttpRequest to check if the responseXML was well formed.
|
| + virtual bool wellFormed() const OVERRIDE { return !m_sawError; }
|
| +
|
| + virtual TextPosition textPosition() const OVERRIDE;
|
| +
|
| + static bool supportsXMLVersion(const String&);
|
| +
|
| + class PendingCallback {
|
| public:
|
| - static PassRefPtr<XMLParserContext> createMemoryParser(xmlSAXHandlerPtr, void* userData, const CString& chunk);
|
| - static PassRefPtr<XMLParserContext> createStringParser(xmlSAXHandlerPtr, void* userData);
|
| - ~XMLParserContext();
|
| - xmlParserCtxtPtr context() const { return m_context; }
|
| -
|
| - private:
|
| - XMLParserContext(xmlParserCtxtPtr context)
|
| - : m_context(context)
|
| - {
|
| - }
|
| - xmlParserCtxtPtr m_context;
|
| + virtual ~PendingCallback() { }
|
| + virtual void call(XMLDocumentParser*) = 0;
|
| };
|
|
|
| - class XMLDocumentParser FINAL : public ScriptableDocumentParser, public ResourceClient {
|
| - WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED;
|
| - public:
|
| - static PassRefPtrWillBeRawPtr<XMLDocumentParser> create(Document& document, FrameView* view)
|
| - {
|
| - return adoptRefWillBeNoop(new XMLDocumentParser(document, view));
|
| - }
|
| - static PassRefPtrWillBeRawPtr<XMLDocumentParser> create(DocumentFragment* fragment, Element* element, ParserContentPolicy parserContentPolicy)
|
| - {
|
| - return adoptRefWillBeNoop(new XMLDocumentParser(fragment, element, parserContentPolicy));
|
| - }
|
| +private:
|
| + explicit XMLDocumentParser(Document&, FrameView* = 0);
|
| + XMLDocumentParser(DocumentFragment*, Element*, ParserContentPolicy);
|
|
|
| - virtual ~XMLDocumentParser();
|
| - virtual void trace(Visitor*) OVERRIDE;
|
| + // From DocumentParser
|
| + virtual void insert(const SegmentedString&) OVERRIDE;
|
| + virtual void append(PassRefPtr<StringImpl>) OVERRIDE;
|
| + virtual void finish() OVERRIDE;
|
| + virtual bool isWaitingForScripts() const OVERRIDE;
|
| + virtual void stopParsing() OVERRIDE;
|
| + virtual void detach() OVERRIDE;
|
| + virtual OrdinalNumber lineNumber() const OVERRIDE;
|
| + OrdinalNumber columnNumber() const;
|
|
|
| - // Exposed for callbacks:
|
| - void handleError(XMLErrors::ErrorType, const char* message, TextPosition);
|
| + // from ResourceClient
|
| + virtual void notifyFinished(Resource*) OVERRIDE;
|
|
|
| - void setIsXHTMLDocument(bool isXHTML) { m_isXHTMLDocument = isXHTML; }
|
| - bool isXHTMLDocument() const { return m_isXHTMLDocument; }
|
| + void end();
|
|
|
| - bool isCurrentlyParsing8BitChunk() { return m_isCurrentlyParsing8BitChunk; }
|
| + void pauseParsing();
|
| + void resumeParsing();
|
|
|
| - static bool parseDocumentFragment(const String&, DocumentFragment*, Element* parent = 0, ParserContentPolicy = AllowScriptingContent);
|
| + bool appendFragmentSource(const String&);
|
|
|
| - // Used by the XMLHttpRequest to check if the responseXML was well formed.
|
| - virtual bool wellFormed() const OVERRIDE { return !m_sawError; }
|
| +public:
|
| + // Callbacks from parser SAX
|
| + void error(XMLErrors::ErrorType, const char* message, va_list args) WTF_ATTRIBUTE_PRINTF(3, 0);
|
| + void startElementNs(const AtomicString& localName, const AtomicString& prefix, const AtomicString& uri, int namespaceCount,
|
| + const xmlChar** namespaces, int attributeCount, int defaultedCount, const xmlChar** libxmlAttributes);
|
| + void endElementNs();
|
| + void characters(const xmlChar* chars, int length);
|
| + void processingInstruction(const String& target, const String& data);
|
| + void cdataBlock(const String&);
|
| + void comment(const String&);
|
| + void startDocument(const String& version, const String& encoding, int standalone);
|
| + void internalSubset(const String& name, const String& externalID, const String& systemID);
|
| + void endDocument();
|
|
|
| - virtual TextPosition textPosition() const OVERRIDE;
|
| +private:
|
| + void initializeParserContext(const CString& chunk = CString());
|
|
|
| - static bool supportsXMLVersion(const String&);
|
| + void pushCurrentNode(ContainerNode*);
|
| + void popCurrentNode();
|
| + void clearCurrentNodeStack();
|
|
|
| - class PendingCallback {
|
| - public:
|
| - virtual ~PendingCallback() { }
|
| - virtual void call(XMLDocumentParser*) = 0;
|
| - };
|
| + void insertErrorMessageBlock();
|
|
|
| - private:
|
| - explicit XMLDocumentParser(Document&, FrameView* = 0);
|
| - XMLDocumentParser(DocumentFragment*, Element*, ParserContentPolicy);
|
| + void enterText();
|
| + void exitText();
|
|
|
| - // From DocumentParser
|
| - virtual void insert(const SegmentedString&) OVERRIDE;
|
| - virtual void append(PassRefPtr<StringImpl>) OVERRIDE;
|
| - virtual void finish() OVERRIDE;
|
| - virtual bool isWaitingForScripts() const OVERRIDE;
|
| - virtual void stopParsing() OVERRIDE;
|
| - virtual void detach() OVERRIDE;
|
| - virtual OrdinalNumber lineNumber() const OVERRIDE;
|
| - OrdinalNumber columnNumber() const;
|
| + void doWrite(const String&);
|
| + void doEnd();
|
|
|
| - // from ResourceClient
|
| - virtual void notifyFinished(Resource*) OVERRIDE;
|
| + bool m_hasView;
|
|
|
| - void end();
|
| + SegmentedString m_originalSourceForTransform;
|
|
|
| - void pauseParsing();
|
| - void resumeParsing();
|
| + xmlParserCtxtPtr context() const { return m_context ? m_context->context() : 0; };
|
| + RefPtr<XMLParserContext> m_context;
|
| + Deque<OwnPtr<PendingCallback> > m_pendingCallbacks;
|
| + Vector<xmlChar> m_bufferedText;
|
|
|
| - bool appendFragmentSource(const String&);
|
| + RawPtrWillBeMember<ContainerNode> m_currentNode;
|
| + WillBeHeapVector<RawPtrWillBeMember<ContainerNode> > m_currentNodeStack;
|
|
|
| - public:
|
| - // callbacks from parser SAX
|
| - void error(XMLErrors::ErrorType, const char* message, va_list args) WTF_ATTRIBUTE_PRINTF(3, 0);
|
| - void startElementNs(const AtomicString& localName, const AtomicString& prefix, const AtomicString& uri, int nb_namespaces,
|
| - const xmlChar** namespaces, int nb_attributes, int nb_defaulted, const xmlChar** libxmlAttributes);
|
| - void endElementNs();
|
| - void characters(const xmlChar* chars, int length);
|
| - void processingInstruction(const String& target, const String& data);
|
| - void cdataBlock(const String&);
|
| - void comment(const String&);
|
| - void startDocument(const String& version, const String& encoding, int standalone);
|
| - void internalSubset(const String& name, const String& externalID, const String& systemID);
|
| - void endDocument();
|
| -
|
| - private:
|
| - void initializeParserContext(const CString& chunk = CString());
|
| -
|
| - void pushCurrentNode(ContainerNode*);
|
| - void popCurrentNode();
|
| - void clearCurrentNodeStack();
|
| -
|
| - void insertErrorMessageBlock();
|
| -
|
| - void enterText();
|
| - void exitText();
|
| -
|
| - void doWrite(const String&);
|
| - void doEnd();
|
| -
|
| - bool m_hasView;
|
| -
|
| - SegmentedString m_originalSourceForTransform;
|
| -
|
| - xmlParserCtxtPtr context() const { return m_context ? m_context->context() : 0; };
|
| - RefPtr<XMLParserContext> m_context;
|
| - Deque<OwnPtr<PendingCallback> > m_pendingCallbacks;
|
| - Vector<xmlChar> m_bufferedText;
|
| -
|
| - RawPtrWillBeMember<ContainerNode> m_currentNode;
|
| - WillBeHeapVector<RawPtrWillBeMember<ContainerNode> > m_currentNodeStack;
|
| -
|
| - RefPtrWillBeMember<Text> m_leafTextNode;
|
| -
|
| - bool m_isCurrentlyParsing8BitChunk;
|
| - bool m_sawError;
|
| - bool m_sawCSS;
|
| - bool m_sawXSLTransform;
|
| - bool m_sawFirstElement;
|
| - bool m_isXHTMLDocument;
|
| - bool m_parserPaused;
|
| - bool m_requestingScript;
|
| - bool m_finishCalled;
|
| -
|
| - XMLErrors m_xmlErrors;
|
| -
|
| - ResourcePtr<ScriptResource> m_pendingScript;
|
| - RefPtrWillBeMember<Element> m_scriptElement;
|
| - TextPosition m_scriptStartPosition;
|
| -
|
| - bool m_parsingFragment;
|
| - AtomicString m_defaultNamespaceURI;
|
| -
|
| - typedef HashMap<AtomicString, AtomicString> PrefixForNamespaceMap;
|
| - PrefixForNamespaceMap m_prefixToNamespaceMap;
|
| - SegmentedString m_pendingSrc;
|
| - };
|
| + RefPtrWillBeMember<Text> m_leafTextNode;
|
|
|
| -xmlDocPtr xmlDocPtrForString(ResourceFetcher*, const String& source, const String& url);
|
| + bool m_isCurrentlyParsing8BitChunk;
|
| + bool m_sawError;
|
| + bool m_sawCSS;
|
| + bool m_sawXSLTransform;
|
| + bool m_sawFirstElement;
|
| + bool m_isXHTMLDocument;
|
| + bool m_parserPaused;
|
| + bool m_requestingScript;
|
| + bool m_finishCalled;
|
| +
|
| + XMLErrors m_xmlErrors;
|
|
|
| + ResourcePtr<ScriptResource> m_pendingScript;
|
| + RefPtrWillBeMember<Element> m_scriptElement;
|
| + TextPosition m_scriptStartPosition;
|
| +
|
| + bool m_parsingFragment;
|
| + AtomicString m_defaultNamespaceURI;
|
| +
|
| + typedef HashMap<AtomicString, AtomicString> PrefixForNamespaceMap;
|
| + PrefixForNamespaceMap m_prefixToNamespaceMap;
|
| + SegmentedString m_pendingSrc;
|
| +};
|
| +
|
| +xmlDocPtr xmlDocPtrForString(ResourceFetcher*, const String& source, const String& url);
|
| HashMap<String, String> parseAttributes(const String&, bool& attrsOK);
|
|
|
| } // namespace WebCore
|
|
|