OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google, Inc. All Rights Reserved. | 2 * Copyright (C) 2010 Google, Inc. All Rights Reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 return adoptRefWillBeNoop(new HTMLDocumentParser(fragment, contextElemen
t, parserContentPolicy)); | 130 return adoptRefWillBeNoop(new HTMLDocumentParser(fragment, contextElemen
t, parserContentPolicy)); |
131 } | 131 } |
132 | 132 |
133 // DocumentParser | 133 // DocumentParser |
134 void detach() final; | 134 void detach() final; |
135 bool hasInsertionPoint() final; | 135 bool hasInsertionPoint() final; |
136 bool processingData() const final; | 136 bool processingData() const final; |
137 void prepareToStopParsing() final; | 137 void prepareToStopParsing() final; |
138 void stopParsing() final; | 138 void stopParsing() final; |
139 bool isWaitingForScripts() const final; | 139 bool isWaitingForScripts() const final; |
| 140 bool isWaitingForStyles() const; |
| 141 bool isWaitingForImports() const; |
| 142 bool isWaitingForBlockingResource() const; |
140 bool isExecutingScript() const final; | 143 bool isExecutingScript() const final; |
141 void executeScriptsWaitingForResources() final; | 144 void executeScriptsWaitingForResources() final; |
142 | 145 |
143 // HTMLScriptRunnerHost | 146 // HTMLScriptRunnerHost |
144 void notifyScriptLoaded(Resource*) final; | 147 void notifyScriptLoaded(Resource*) final; |
145 HTMLInputStream& inputStream() final { return m_input; } | 148 HTMLInputStream& inputStream() final { return m_input; } |
146 bool hasPreloadScanner() const final { return m_preloadScanner.get() && !sho
uldUseThreading(); } | 149 bool hasPreloadScanner() const final { return m_preloadScanner.get() && !sho
uldUseThreading(); } |
147 void appendCurrentInputStreamToPreloadScannerAndScan() final; | 150 void appendCurrentInputStreamToPreloadScannerAndScan() final; |
148 | 151 |
149 void startBackgroundParser(); | 152 void startBackgroundParser(); |
150 void stopBackgroundParser(); | 153 void stopBackgroundParser(); |
151 void validateSpeculations(PassOwnPtr<ParsedChunk> lastChunk); | 154 void validateSpeculations(PassOwnPtr<ParsedChunk> lastChunk); |
152 void discardSpeculationsAndResumeFrom(PassOwnPtr<ParsedChunk> lastChunk, Pas
sOwnPtr<HTMLToken>, PassOwnPtr<HTMLTokenizer>); | 155 void discardSpeculationsAndResumeFrom(PassOwnPtr<ParsedChunk> lastChunk, Pas
sOwnPtr<HTMLToken>, PassOwnPtr<HTMLTokenizer>); |
153 size_t processParsedChunkFromBackgroundParser(PassOwnPtr<ParsedChunk>); | 156 size_t processParsedChunkFromBackgroundParser(PassOwnPtr<ParsedChunk>); |
154 void pumpPendingSpeculations(); | 157 void pumpPendingSpeculations(); |
155 | 158 |
156 Document* contextForParsingSession(); | 159 Document* contextForParsingSession(); |
157 | 160 |
158 bool canTakeNextToken(); | 161 bool canTakeNextToken(); |
159 void pumpTokenizer(); | 162 void pumpTokenizer(); |
160 void pumpTokenizerIfPossible(); | 163 void pumpTokenizerIfPossible(); |
161 void constructTreeFromHTMLToken(); | 164 void constructTreeFromHTMLToken(); |
162 void constructTreeFromCompactHTMLToken(const CompactHTMLToken&); | 165 void constructTreeFromCompactHTMLToken(const CompactHTMLToken&); |
163 | 166 |
164 void runScriptsForPausedTreeBuilder(); | 167 void runScriptsForPausedTreeBuilder(); |
165 void resumeParsingAfterScriptExecution(); | 168 void resumeParsingAfterBlock(); |
166 | 169 |
167 void attemptToEnd(); | 170 void attemptToEnd(); |
168 void endIfDelayed(); | 171 void endIfDelayed(); |
169 void attemptToRunDeferredScriptsAndEnd(); | 172 void attemptToRunDeferredScriptsAndEnd(); |
170 void end(); | 173 void end(); |
171 | 174 |
172 bool shouldUseThreading() const { return m_shouldUseThreading; } | 175 bool shouldUseThreading() const { return m_shouldUseThreading; } |
173 | 176 |
174 bool isParsingFragment() const; | 177 bool isParsingFragment() const; |
175 bool isScheduledForResume() const; | 178 bool isScheduledForResume() const; |
(...skipping 11 matching lines...) Expand all Loading... |
187 OwnPtrWillBeMember<HTMLTreeBuilder> m_treeBuilder; | 190 OwnPtrWillBeMember<HTMLTreeBuilder> m_treeBuilder; |
188 OwnPtr<HTMLPreloadScanner> m_preloadScanner; | 191 OwnPtr<HTMLPreloadScanner> m_preloadScanner; |
189 OwnPtr<HTMLPreloadScanner> m_insertionPreloadScanner; | 192 OwnPtr<HTMLPreloadScanner> m_insertionPreloadScanner; |
190 OwnPtr<WebTaskRunner> m_loadingTaskRunner; | 193 OwnPtr<WebTaskRunner> m_loadingTaskRunner; |
191 OwnPtrWillBeMember<HTMLParserScheduler> m_parserScheduler; | 194 OwnPtrWillBeMember<HTMLParserScheduler> m_parserScheduler; |
192 HTMLSourceTracker m_sourceTracker; | 195 HTMLSourceTracker m_sourceTracker; |
193 TextPosition m_textPosition; | 196 TextPosition m_textPosition; |
194 XSSAuditor m_xssAuditor; | 197 XSSAuditor m_xssAuditor; |
195 XSSAuditorDelegate m_xssAuditorDelegate; | 198 XSSAuditorDelegate m_xssAuditorDelegate; |
196 | 199 |
197 // FIXME: m_lastChunkBeforeScript, m_tokenizer, m_token, and m_input should
be combined into a single state object | 200 // FIXME: m_lastChunkBeforeBlockingResource m_tokenizer, m_token, and m_inpu
t should be combined into a single state object |
198 // so they can be set and cleared together and passed between threads togeth
er. | 201 // so they can be set and cleared together and passed between threads togeth
er. |
199 OwnPtr<ParsedChunk> m_lastChunkBeforeScript; | 202 OwnPtr<ParsedChunk> m_lastChunkBeforeBlockingResource; |
200 Deque<OwnPtr<ParsedChunk>> m_speculations; | 203 Deque<OwnPtr<ParsedChunk>> m_speculations; |
201 WeakPtrFactory<HTMLDocumentParser> m_weakFactory; | 204 WeakPtrFactory<HTMLDocumentParser> m_weakFactory; |
202 WeakPtr<BackgroundHTMLParser> m_backgroundParser; | 205 WeakPtr<BackgroundHTMLParser> m_backgroundParser; |
203 OwnPtrWillBeMember<HTMLResourcePreloader> m_preloader; | 206 OwnPtrWillBeMember<HTMLResourcePreloader> m_preloader; |
204 PreloadRequestStream m_queuedPreloads; | 207 PreloadRequestStream m_queuedPreloads; |
205 RefPtr<ParsedChunkQueue> m_parsedChunkQueue; | 208 RefPtr<ParsedChunkQueue> m_parsedChunkQueue; |
206 | 209 |
207 bool m_shouldUseThreading; | 210 bool m_shouldUseThreading; |
208 bool m_endWasDelayed; | 211 bool m_endWasDelayed; |
209 bool m_haveBackgroundParser; | 212 bool m_haveBackgroundParser; |
210 bool m_tasksWereSuspended; | 213 bool m_tasksWereSuspended; |
211 unsigned m_pumpSessionNestingLevel; | 214 unsigned m_pumpSessionNestingLevel; |
212 unsigned m_pumpSpeculationsSessionNestingLevel; | 215 unsigned m_pumpSpeculationsSessionNestingLevel; |
213 bool m_isParsingAtLineNumber; | 216 bool m_isParsingAtLineNumber; |
214 }; | 217 }; |
215 | 218 |
216 } // namespace blink | 219 } // namespace blink |
217 | 220 |
218 #endif | 221 #endif |
OLD | NEW |