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

Side by Side Diff: sky/engine/core/html/parser/HTMLDocumentParser.h

Issue 1215103007: Remove remaining HTML elements (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 5 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
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2010 Google, Inc. All Rights Reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26 #ifndef SKY_ENGINE_CORE_HTML_PARSER_HTMLDOCUMENTPARSER_H_
27 #define SKY_ENGINE_CORE_HTML_PARSER_HTMLDOCUMENTPARSER_H_
28
29 #include "base/callback.h"
30 #include "base/memory/weak_ptr.h"
31 #include "sky/engine/core/dom/DocumentParser.h"
32 #include "sky/engine/core/fetch/ResourceClient.h"
33 #include "sky/engine/core/html/parser/CompactHTMLToken.h"
34 #include "sky/engine/core/html/parser/HTMLInputStream.h"
35 #include "sky/engine/core/html/parser/HTMLScriptRunner.h"
36 #include "sky/engine/core/html/parser/HTMLToken.h"
37 #include "sky/engine/core/html/parser/HTMLTokenizer.h"
38 #include "sky/engine/core/html/parser/TextResourceDecoder.h"
39 #include "sky/engine/platform/text/SegmentedString.h"
40 #include "sky/engine/wtf/Deque.h"
41 #include "sky/engine/wtf/OwnPtr.h"
42 #include "sky/engine/wtf/WeakPtr.h"
43 #include "sky/engine/wtf/text/TextPosition.h"
44
45 namespace blink {
46
47 class BackgroundHTMLParser;
48 class CompactHTMLToken;
49 class Document;
50 class Element;
51 class HTMLParserScheduler;
52 class HTMLTreeBuilder;
53 class ScriptSourceCode;
54
55 class PumpSession;
56
57 class HTMLDocumentParser : public DocumentParser, public HTMLScriptRunnerHost {
58 WTF_MAKE_FAST_ALLOCATED;
59 public:
60 static PassRefPtr<HTMLDocumentParser> create(Document& document, bool report Errors)
61 {
62 return adoptRef(new HTMLDocumentParser(document, reportErrors));
63 }
64 virtual ~HTMLDocumentParser();
65
66 void parse(mojo::ScopedDataPipeConsumerHandle,
67 const base::Closure& completionCallback) override;
68
69 // Exposed for HTMLParserScheduler
70 void resumeParsingAfterYield();
71
72 TextPosition textPosition() const;
73 OrdinalNumber lineNumber() const;
74
75 struct ParsedChunk {
76 OwnPtr<CompactHTMLTokenStream> tokens;
77 };
78 void didReceiveParsedChunkFromBackgroundParser(PassOwnPtr<ParsedChunk>);
79
80 // From DocumentParser:
81 void detach() override final;
82 void prepareToStopParsing() override final;
83 void stopParsing() override final;
84 bool isWaitingForScripts() const override final;
85 bool isExecutingScript() const override final;
86 void resumeAfterWaitingForImports() override final;
87
88 // From HTMLScriptRunnerHost:
89 void scriptExecutionCompleted();
90
91 private:
92 HTMLDocumentParser(Document&, bool reportErrors);
93
94 HTMLTreeBuilder* treeBuilder() const { return m_treeBuilder.get(); }
95
96 bool hasInsertionPoint();
97
98 void stopBackgroundParser();
99 void processParsedChunkFromBackgroundParser(PassOwnPtr<ParsedChunk>);
100 void pumpPendingChunks();
101
102 Document* contextForParsingSession();
103
104 void constructTreeFromHTMLToken(HTMLToken&);
105 void constructTreeFromCompactHTMLToken(const CompactHTMLToken&);
106
107 void runScriptsForPausedTreeBuilder();
108
109 void attemptToEnd();
110 void endIfDelayed();
111 void end();
112
113 bool isParsingFragment() const;
114 bool isScheduledForResume() const;
115 bool inPumpSession() const { return m_pumpSessionNestingLevel > 0; }
116 bool shouldDelayEnd() const { return inPumpSession() || isWaitingForScripts( ) || isScheduledForResume() || isExecutingScript(); }
117
118 OwnPtr<HTMLTreeBuilder> m_treeBuilder;
119 OwnPtr<HTMLParserScheduler> m_parserScheduler;
120 TextPosition m_textPosition;
121
122 OwnPtr<HTMLScriptRunner> m_scriptRunner;
123
124 OwnPtr<ParsedChunk> m_lastChunkBeforeScript;
125 Deque<OwnPtr<ParsedChunk> > m_pendingChunks;
126 base::WeakPtrFactory<HTMLDocumentParser> m_weakFactory;
127 base::WeakPtr<BackgroundHTMLParser> m_backgroundParser;
128
129 base::Closure m_completionCallback;
130
131 bool m_isFragment;
132 bool m_endWasDelayed;
133 bool m_haveBackgroundParser;
134 unsigned m_pumpSessionNestingLevel;
135 };
136
137 }
138
139 #endif // SKY_ENGINE_CORE_HTML_PARSER_HTMLDOCUMENTPARSER_H_
OLDNEW
« no previous file with comments | « sky/engine/core/html/parser/HTMLConstructionSite.cpp ('k') | sky/engine/core/html/parser/HTMLDocumentParser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698