OLD | NEW |
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 13 matching lines...) Expand all Loading... |
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
25 */ | 25 */ |
26 | 26 |
27 #ifndef HTMLConstructionSite_h | 27 #ifndef HTMLConstructionSite_h |
28 #define HTMLConstructionSite_h | 28 #define HTMLConstructionSite_h |
29 | 29 |
30 #include "core/dom/Document.h" | 30 #include "core/dom/Document.h" |
31 #include "core/dom/ParserContentPolicy.h" | 31 #include "core/dom/ParserContentPolicy.h" |
32 #include "core/html/parser/HTMLElementStack.h" | 32 #include "core/html/parser/HTMLElementStack.h" |
33 #include "core/html/parser/HTMLFormattingElementList.h" | 33 #include "core/html/parser/HTMLFormattingElementList.h" |
| 34 #include "platform/heap/Handle.h" |
34 #include "wtf/Noncopyable.h" | 35 #include "wtf/Noncopyable.h" |
35 #include "wtf/PassRefPtr.h" | 36 #include "wtf/PassRefPtr.h" |
36 #include "wtf/RefPtr.h" | 37 #include "wtf/RefPtr.h" |
37 #include "wtf/Vector.h" | 38 #include "wtf/Vector.h" |
38 #include "wtf/text/StringBuilder.h" | 39 #include "wtf/text/StringBuilder.h" |
39 | 40 |
40 namespace blink { | 41 namespace blink { |
41 | 42 |
42 struct HTMLConstructionSiteTask { | 43 struct HTMLConstructionSiteTask { |
43 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); | 44 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 | 95 |
95 enum FlushMode { | 96 enum FlushMode { |
96 // Flush pending text. Flush queued tasks. | 97 // Flush pending text. Flush queued tasks. |
97 FlushAlways, | 98 FlushAlways, |
98 | 99 |
99 // Flush pending text if node has length limit. Flush queued tasks. | 100 // Flush pending text if node has length limit. Flush queued tasks. |
100 FlushIfAtTextLimit, | 101 FlushIfAtTextLimit, |
101 }; | 102 }; |
102 | 103 |
103 class AtomicHTMLToken; | 104 class AtomicHTMLToken; |
| 105 class CustomElementDefinition; |
104 class Document; | 106 class Document; |
105 class Element; | 107 class Element; |
106 class HTMLFormElement; | 108 class HTMLFormElement; |
| 109 class HTMLParserReentryPermit; |
107 | 110 |
108 class HTMLConstructionSite final { | 111 class HTMLConstructionSite final { |
109 WTF_MAKE_NONCOPYABLE(HTMLConstructionSite); | 112 WTF_MAKE_NONCOPYABLE(HTMLConstructionSite); |
110 DISALLOW_NEW(); | 113 DISALLOW_NEW(); |
111 public: | 114 public: |
112 HTMLConstructionSite(Document&, ParserContentPolicy); | 115 HTMLConstructionSite(HTMLParserReentryPermit*, Document&, ParserContentPolic
y); |
113 ~HTMLConstructionSite(); | 116 ~HTMLConstructionSite(); |
114 DECLARE_TRACE(); | 117 DECLARE_TRACE(); |
115 | 118 |
116 void initFragmentParsing(DocumentFragment*, Element* contextElement); | 119 void initFragmentParsing(DocumentFragment*, Element* contextElement); |
117 | 120 |
118 void detach(); | 121 void detach(); |
119 | 122 |
120 // executeQueuedTasks empties the queue but does not flush pending text. | 123 // executeQueuedTasks empties the queue but does not flush pending text. |
121 // NOTE: Possible reentrancy via JavaScript execution. | 124 // NOTE: Possible reentrancy via JavaScript execution. |
122 void executeQueuedTasks(); | 125 void executeQueuedTasks(); |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 | 239 |
237 CreateElementFlags getCreateElementFlags() const; | 240 CreateElementFlags getCreateElementFlags() const; |
238 HTMLElement* createHTMLElement(AtomicHTMLToken*); | 241 HTMLElement* createHTMLElement(AtomicHTMLToken*); |
239 Element* createElement(AtomicHTMLToken*, const AtomicString& namespaceURI); | 242 Element* createElement(AtomicHTMLToken*, const AtomicString& namespaceURI); |
240 | 243 |
241 void mergeAttributesFromTokenIntoElement(AtomicHTMLToken*, Element*); | 244 void mergeAttributesFromTokenIntoElement(AtomicHTMLToken*, Element*); |
242 | 245 |
243 void executeTask(HTMLConstructionSiteTask&); | 246 void executeTask(HTMLConstructionSiteTask&); |
244 void queueTask(const HTMLConstructionSiteTask&); | 247 void queueTask(const HTMLConstructionSiteTask&); |
245 | 248 |
| 249 CustomElementDefinition* lookUpCustomElementDefinition(Document&, AtomicHTML
Token*); |
| 250 |
| 251 Member<HTMLParserReentryPermit> m_reentryPermit; |
246 Member<Document> m_document; | 252 Member<Document> m_document; |
247 | 253 |
248 // This is the root ContainerNode to which the parser attaches all newly | 254 // This is the root ContainerNode to which the parser attaches all newly |
249 // constructed nodes. It points to a DocumentFragment when parsing fragments | 255 // constructed nodes. It points to a DocumentFragment when parsing fragments |
250 // and a Document in all other cases. | 256 // and a Document in all other cases. |
251 Member<ContainerNode> m_attachmentRoot; | 257 Member<ContainerNode> m_attachmentRoot; |
252 | 258 |
253 // https://html.spec.whatwg.org/multipage/syntax.html#head-element-pointer | 259 // https://html.spec.whatwg.org/multipage/syntax.html#head-element-pointer |
254 Member<HTMLStackItem> m_head; | 260 Member<HTMLStackItem> m_head; |
255 // https://html.spec.whatwg.org/multipage/syntax.html#form-element-pointer | 261 // https://html.spec.whatwg.org/multipage/syntax.html#form-element-pointer |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 // "whenever a node would be inserted into the current node, it must instead | 324 // "whenever a node would be inserted into the current node, it must instead |
319 // be foster parented." This flag tracks whether we're in that state. | 325 // be foster parented." This flag tracks whether we're in that state. |
320 bool m_redirectAttachToFosterParent; | 326 bool m_redirectAttachToFosterParent; |
321 | 327 |
322 bool m_inQuirksMode; | 328 bool m_inQuirksMode; |
323 }; | 329 }; |
324 | 330 |
325 } // namespace blink | 331 } // namespace blink |
326 | 332 |
327 #endif | 333 #endif |
OLD | NEW |