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

Side by Side Diff: third_party/WebKit/Source/core/html/parser/HTMLTreeBuilder.h

Issue 2126043003: Refactor HTMLTreeBuilder/HTMLConstructionSite ctor (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase / add comment Created 4 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
1 /* 1 /*
2 * Copyright (C) 2010 Google, Inc. All Rights Reserved. 2 * Copyright (C) 2010 Google, Inc. All Rights Reserved.
3 * Copyright (C) 2011 Apple Inc. All rights reserved. 3 * Copyright (C) 2011 Apple Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 42
43 class AtomicHTMLToken; 43 class AtomicHTMLToken;
44 class DocumentFragment; 44 class DocumentFragment;
45 class Element; 45 class Element;
46 class HTMLDocument; 46 class HTMLDocument;
47 class HTMLDocumentParser; 47 class HTMLDocumentParser;
48 48
49 class HTMLTreeBuilder final : public GarbageCollectedFinalized<HTMLTreeBuilder> { 49 class HTMLTreeBuilder final : public GarbageCollectedFinalized<HTMLTreeBuilder> {
50 WTF_MAKE_NONCOPYABLE(HTMLTreeBuilder); 50 WTF_MAKE_NONCOPYABLE(HTMLTreeBuilder);
51 public: 51 public:
52 static HTMLTreeBuilder* create(HTMLDocumentParser* parser, HTMLDocument* doc ument, ParserContentPolicy parserContentPolicy, const HTMLParserOptions& options ) 52 // HTMLTreeBuilder can be created for non-HTMLDocument (XHTMLDocument) from editing code.
53 // TODO(kouhei): Fix editing code to always invoke HTML parser on HTMLDocume nt.
54 static HTMLTreeBuilder* create(HTMLDocumentParser* parser, Document& documen t, ParserContentPolicy parserContentPolicy, const HTMLParserOptions& options)
53 { 55 {
54 return new HTMLTreeBuilder(parser, document, parserContentPolicy, option s); 56 return new HTMLTreeBuilder(parser, document, parserContentPolicy, option s);
55 } 57 }
56 static HTMLTreeBuilder* create(HTMLDocumentParser* parser, DocumentFragment* fragment, Element* contextElement, ParserContentPolicy parserContentPolicy, con st HTMLParserOptions& options) 58 static HTMLTreeBuilder* create(HTMLDocumentParser* parser, DocumentFragment* fragment, Element* contextElement, ParserContentPolicy parserContentPolicy, con st HTMLParserOptions& options)
57 { 59 {
58 return new HTMLTreeBuilder(parser, fragment, contextElement, parserConte ntPolicy, options); 60 return new HTMLTreeBuilder(parser, fragment, contextElement, parserConte ntPolicy, options);
59 } 61 }
60 ~HTMLTreeBuilder(); 62 ~HTMLTreeBuilder();
61 DECLARE_TRACE(); 63 DECLARE_TRACE();
62 64
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 InCellMode, 108 InCellMode,
107 InSelectMode, 109 InSelectMode,
108 InSelectInTableMode, 110 InSelectInTableMode,
109 AfterBodyMode, 111 AfterBodyMode,
110 InFramesetMode, 112 InFramesetMode,
111 AfterFramesetMode, 113 AfterFramesetMode,
112 AfterAfterBodyMode, 114 AfterAfterBodyMode,
113 AfterAfterFramesetMode, 115 AfterAfterFramesetMode,
114 }; 116 };
115 117
116 HTMLTreeBuilder(HTMLDocumentParser*, HTMLDocument*, ParserContentPolicy, con st HTMLParserOptions&); 118 HTMLTreeBuilder(HTMLDocumentParser*, Document&, ParserContentPolicy, const H TMLParserOptions&);
117 HTMLTreeBuilder(HTMLDocumentParser*, DocumentFragment*, Element* contextElem ent, ParserContentPolicy, const HTMLParserOptions&); 119 HTMLTreeBuilder(HTMLDocumentParser*, DocumentFragment*, Element* contextElem ent, ParserContentPolicy, const HTMLParserOptions&);
118 120
119 void processToken(AtomicHTMLToken*); 121 void processToken(AtomicHTMLToken*);
120 122
121 void processDoctypeToken(AtomicHTMLToken*); 123 void processDoctypeToken(AtomicHTMLToken*);
122 void processStartTag(AtomicHTMLToken*); 124 void processStartTag(AtomicHTMLToken*);
123 void processEndTag(AtomicHTMLToken*); 125 void processEndTag(AtomicHTMLToken*);
124 void processComment(AtomicHTMLToken*); 126 void processComment(AtomicHTMLToken*);
125 void processCharacter(AtomicHTMLToken*); 127 void processCharacter(AtomicHTMLToken*);
126 void processEndOfFile(AtomicHTMLToken*); 128 void processEndOfFile(AtomicHTMLToken*);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 void resetInsertionModeAppropriately(); 186 void resetInsertionModeAppropriately();
185 187
186 void processTemplateStartTag(AtomicHTMLToken*); 188 void processTemplateStartTag(AtomicHTMLToken*);
187 bool processTemplateEndTag(AtomicHTMLToken*); 189 bool processTemplateEndTag(AtomicHTMLToken*);
188 bool processEndOfFileForInTemplateContents(AtomicHTMLToken*); 190 bool processEndOfFileForInTemplateContents(AtomicHTMLToken*);
189 191
190 class FragmentParsingContext { 192 class FragmentParsingContext {
191 WTF_MAKE_NONCOPYABLE(FragmentParsingContext); 193 WTF_MAKE_NONCOPYABLE(FragmentParsingContext);
192 DISALLOW_NEW(); 194 DISALLOW_NEW();
193 public: 195 public:
194 FragmentParsingContext(); 196 FragmentParsingContext() = default;
195 FragmentParsingContext(DocumentFragment*, Element* contextElement); 197 void init(DocumentFragment*, Element* contextElement);
196 ~FragmentParsingContext();
197 198
198 DocumentFragment* fragment() const { return m_fragment; } 199 DocumentFragment* fragment() const { return m_fragment; }
199 Element* contextElement() const { ASSERT(m_fragment); return m_contextEl ementStackItem->element(); } 200 Element* contextElement() const { ASSERT(m_fragment); return m_contextEl ementStackItem->element(); }
200 HTMLStackItem* contextElementStackItem() const { ASSERT(m_fragment); ret urn m_contextElementStackItem.get(); } 201 HTMLStackItem* contextElementStackItem() const { ASSERT(m_fragment); ret urn m_contextElementStackItem.get(); }
201 202
202 DECLARE_TRACE(); 203 DECLARE_TRACE();
203 204
204 private: 205 private:
205 Member<DocumentFragment> m_fragment; 206 Member<DocumentFragment> m_fragment;
206 Member<HTMLStackItem> m_contextElementStackItem; 207 Member<HTMLStackItem> m_contextElementStackItem;
(...skipping 26 matching lines...) Expand all
233 234
234 Member<Element> m_scriptToProcess; // <script> tag which needs processing be fore resuming the parser. 235 Member<Element> m_scriptToProcess; // <script> tag which needs processing be fore resuming the parser.
235 TextPosition m_scriptToProcessStartPosition; // Starting line number of the script tag needing processing. 236 TextPosition m_scriptToProcessStartPosition; // Starting line number of the script tag needing processing.
236 237
237 HTMLParserOptions m_options; 238 HTMLParserOptions m_options;
238 }; 239 };
239 240
240 } // namespace blink 241 } // namespace blink
241 242
242 #endif 243 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698