| 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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 | 49 class HTMLTreeBuilder final |
| 50 : public GarbageCollectedFinalized<HTMLTreeBuilder> { | 50 : public GarbageCollectedFinalized<HTMLTreeBuilder> { |
| 51 WTF_MAKE_NONCOPYABLE(HTMLTreeBuilder); | 51 WTF_MAKE_NONCOPYABLE(HTMLTreeBuilder); |
| 52 | 52 |
| 53 public: | 53 public: |
| 54 // HTMLTreeBuilder can be created for non-HTMLDocument (XHTMLDocument) from ed
iting code. | 54 // HTMLTreeBuilder can be created for non-HTMLDocument (XHTMLDocument) from |
| 55 // TODO(kouhei): Fix editing code to always invoke HTML parser on HTMLDocument
. | 55 // editing code. |
| 56 // TODO(kouhei): Fix editing code to always invoke HTML parser on |
| 57 // HTMLDocument. |
| 56 static HTMLTreeBuilder* create(HTMLDocumentParser* parser, | 58 static HTMLTreeBuilder* create(HTMLDocumentParser* parser, |
| 57 Document& document, | 59 Document& document, |
| 58 ParserContentPolicy parserContentPolicy, | 60 ParserContentPolicy parserContentPolicy, |
| 59 const HTMLParserOptions& options) { | 61 const HTMLParserOptions& options) { |
| 60 return new HTMLTreeBuilder(parser, document, parserContentPolicy, options); | 62 return new HTMLTreeBuilder(parser, document, parserContentPolicy, options); |
| 61 } | 63 } |
| 62 static HTMLTreeBuilder* create(HTMLDocumentParser* parser, | 64 static HTMLTreeBuilder* create(HTMLDocumentParser* parser, |
| 63 DocumentFragment* fragment, | 65 DocumentFragment* fragment, |
| 64 Element* contextElement, | 66 Element* contextElement, |
| 65 ParserContentPolicy parserContentPolicy, | 67 ParserContentPolicy parserContentPolicy, |
| (...skipping 12 matching lines...) Expand all Loading... |
| 78 } | 80 } |
| 79 bool isParsingFragmentOrTemplateContents() const { | 81 bool isParsingFragmentOrTemplateContents() const { |
| 80 return isParsingFragment() || isParsingTemplateContents(); | 82 return isParsingFragment() || isParsingTemplateContents(); |
| 81 } | 83 } |
| 82 | 84 |
| 83 void detach(); | 85 void detach(); |
| 84 | 86 |
| 85 void constructTree(AtomicHTMLToken*); | 87 void constructTree(AtomicHTMLToken*); |
| 86 | 88 |
| 87 bool hasParserBlockingScript() const { return !!m_scriptToProcess; } | 89 bool hasParserBlockingScript() const { return !!m_scriptToProcess; } |
| 88 // Must be called to take the parser-blocking script before calling the parser
again. | 90 // Must be called to take the parser-blocking script before calling the parser |
| 91 // again. |
| 89 Element* takeScriptToProcess(TextPosition& scriptStartPosition); | 92 Element* takeScriptToProcess(TextPosition& scriptStartPosition); |
| 90 | 93 |
| 91 // Done, close any open tags, etc. | 94 // Done, close any open tags, etc. |
| 92 void finished(); | 95 void finished(); |
| 93 | 96 |
| 94 // Synchronously flush pending text and queued tasks, possibly creating more D
OM nodes. | 97 // Synchronously flush pending text and queued tasks, possibly creating more |
| 95 // Flushing pending text depends on |mode|. | 98 // DOM nodes. Flushing pending text depends on |mode|. |
| 96 void flush(FlushMode mode) { m_tree.flush(mode); } | 99 void flush(FlushMode mode) { m_tree.flush(mode); } |
| 97 | 100 |
| 98 void setShouldSkipLeadingNewline(bool shouldSkip) { | 101 void setShouldSkipLeadingNewline(bool shouldSkip) { |
| 99 m_shouldSkipLeadingNewline = shouldSkip; | 102 m_shouldSkipLeadingNewline = shouldSkip; |
| 100 } | 103 } |
| 101 | 104 |
| 102 private: | 105 private: |
| 103 class CharacterTokenBuffer; | 106 class CharacterTokenBuffer; |
| 104 // Represents HTML5 "insertion mode" | 107 // Represents HTML5 "insertion mode" |
| 105 // http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#in
sertion-mode | 108 // http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#in
sertion-mode |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 // http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#or
iginal-insertion-mode | 257 // http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#or
iginal-insertion-mode |
| 255 InsertionMode m_originalInsertionMode; | 258 InsertionMode m_originalInsertionMode; |
| 256 | 259 |
| 257 Vector<InsertionMode> m_templateInsertionModes; | 260 Vector<InsertionMode> m_templateInsertionModes; |
| 258 | 261 |
| 259 // http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.ht
ml#pending-table-character-tokens | 262 // http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.ht
ml#pending-table-character-tokens |
| 260 StringBuilder m_pendingTableCharacters; | 263 StringBuilder m_pendingTableCharacters; |
| 261 | 264 |
| 262 bool m_shouldSkipLeadingNewline; | 265 bool m_shouldSkipLeadingNewline; |
| 263 | 266 |
| 264 // We access parser because HTML5 spec requires that we be able to change the
state of the tokenizer | 267 // We access parser because HTML5 spec requires that we be able to change the |
| 265 // from within parser actions. We also need it to track the current position. | 268 // state of the tokenizer from within parser actions. We also need it to track |
| 269 // the current position. |
| 266 Member<HTMLDocumentParser> m_parser; | 270 Member<HTMLDocumentParser> m_parser; |
| 267 | 271 |
| 268 Member<Element> | 272 // <script> tag which needs processing before resuming the parser. |
| 269 m_scriptToProcess; // <script> tag which needs processing before resuming
the parser. | 273 Member<Element> m_scriptToProcess; |
| 270 TextPosition | 274 |
| 271 m_scriptToProcessStartPosition; // Starting line number of the script tag
needing processing. | 275 // Starting line number of the script tag needing processing. |
| 276 TextPosition m_scriptToProcessStartPosition; |
| 272 | 277 |
| 273 HTMLParserOptions m_options; | 278 HTMLParserOptions m_options; |
| 274 }; | 279 }; |
| 275 | 280 |
| 276 } // namespace blink | 281 } // namespace blink |
| 277 | 282 |
| 278 #endif | 283 #endif |
| OLD | NEW |