Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Side by Side Diff: WebCore/dom/DocumentParser.h

Issue 3776004: Revert 66670 - 2010-09-01 Tony Gentilcore <tonyg@chromium.org>... (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/517/
Patch Set: Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « WebCore/dom/Document.cpp ('k') | WebCore/dom/DocumentParser.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2000 Peter Kelly (pmk@post.com) 2 * Copyright (C) 2000 Peter Kelly (pmk@post.com)
3 * Copyright (C) 2005, 2006 Apple Computer, Inc. 3 * Copyright (C) 2005, 2006 Apple Computer, Inc.
4 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org) 4 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org)
5 * Copyright (C) 2010 Google, Inc. 5 * Copyright (C) 2010 Google, Inc.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 50
51 // FIXME: append() should be private, but DocumentWriter::replaceDocument 51 // FIXME: append() should be private, but DocumentWriter::replaceDocument
52 // uses it for now. 52 // uses it for now.
53 virtual void append(const SegmentedString&) = 0; 53 virtual void append(const SegmentedString&) = 0;
54 54
55 virtual void finish() = 0; 55 virtual void finish() = 0;
56 virtual bool finishWasCalled() = 0; 56 virtual bool finishWasCalled() = 0;
57 57
58 // FIXME: processingData() is only used by DocumentLoader::isLoadingInAPISen se 58 // FIXME: processingData() is only used by DocumentLoader::isLoadingInAPISen se
59 // and is very unclear as to what it actually means. The LegacyHTMLDocument Parser 59 // and is very unclear as to what it actually means. The LegacyHTMLDocument Parser
60 // used to implement it. 60 // used to implements it.
61 virtual bool processingData() const { return false; } 61 virtual bool processingData() const { return false; }
62 62
63 // document() will return 0 after detach() is called. 63 // document() will return 0 after detach() is called.
64 Document* document() const { ASSERT(m_document); return m_document; } 64 Document* document() const { ASSERT(m_document); return m_document; }
65 65 bool isDetached() const { return !m_document; }
66 bool isParsing() const { return m_state == ParsingState; }
67 bool isStopping() const { return m_state == StoppingState; }
68 bool isStopped() const { return m_state >= StoppedState; }
69 bool isDetached() const { return m_state == DetachedState; }
70
71 // FIXME: Is this necessary? Does XMLDocumentParserLibxml2 really need to se t this?
72 virtual void startParsing();
73
74 // prepareToStop() is used when the EOF token is encountered and parsing is to be
75 // stopped normally.
76 virtual void prepareToStopParsing();
77
78 // stopParsing() is used when a load is canceled/stopped.
79 // stopParsing() is currently different from detach(), but shouldn't be.
80 // It should NOT be ok to call any methods on DocumentParser after either
81 // detach() or stopParsing() but right now only detach() will ASSERT.
82 virtual void stopParsing();
83 66
84 // Document is expected to detach the parser before releasing its ref. 67 // Document is expected to detach the parser before releasing its ref.
85 // After detach, m_document is cleared. The parser will unwind its 68 // After detach, m_document is cleared. The parser will unwind its
86 // callstacks, but not produce any more nodes. 69 // callstacks, but not produce any more nodes.
87 // It is impossible for the parser to touch the rest of WebCore after 70 // It is impossible for the parser to touch the rest of WebCore after
88 // detach is called. 71 // detach is called.
89 virtual void detach(); 72 virtual void detach();
90 73
74 // stopParsing() is used when a load is canceled/stopped.
75 // stopParsing() is currently different from detach(), but shouldn't be.
76 // It should NOT be ok to call any methods on DocumentParser after either
77 // detach() or stopParsing() but right now only detach() will ASSERT.
78 virtual void stopParsing() { m_parserStopped = true; }
79
91 protected: 80 protected:
92 DocumentParser(Document*); 81 DocumentParser(Document*);
93 82
83 // The parser has buffers, so parsing may continue even after
84 // it stops receiving data. We use m_parserStopped to stop the parser
85 // even when it has buffered data.
86 // FIXME: m_document = 0 could be changed to mean "parser stopped".
87 bool m_parserStopped;
88
94 private: 89 private:
95 enum ParserState {
96 ParsingState,
97 StoppingState,
98 StoppedState,
99 DetachedState
100 };
101 ParserState m_state;
102
103 // Every DocumentParser needs a pointer back to the document. 90 // Every DocumentParser needs a pointer back to the document.
104 // m_document will be 0 after the parser is stopped. 91 // m_document will be 0 after the parser is stopped.
105 Document* m_document; 92 Document* m_document;
106 }; 93 };
107 94
108 } // namespace WebCore 95 } // namespace WebCore
109 96
110 #endif // DocumentParser_h 97 #endif // DocumentParser_h
OLDNEW
« no previous file with comments | « WebCore/dom/Document.cpp ('k') | WebCore/dom/DocumentParser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698