1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #ifndef nsHtml5StringParser_h
6 #define nsHtml5StringParser_h
8 #include "mozilla/UniquePtr.h"
9 #include "nsHtml5AtomTable.h"
10 #include "nsParserBase.h"
12 class nsHtml5OplessBuilder
;
13 class nsHtml5TreeBuilder
;
14 class nsHtml5Tokenizer
;
20 } // namespace mozilla
22 class nsHtml5StringParser
: public nsParserBase
{
27 * Constructor for use ONLY by nsContentUtils. Others, please call the
28 * nsContentUtils statics that wrap this.
30 nsHtml5StringParser();
33 * Invoke the fragment parsing algorithm (innerHTML).
34 * DO NOT CALL from outside nsContentUtils.cpp.
36 * @param aSourceBuffer the string being set as innerHTML
37 * @param aTargetNode the target container
38 * @param aContextLocalName local name of context node
39 * @param aContextNamespace namespace of context node
40 * @param aQuirks true to make <table> not close <p>
41 * @param aPreventScriptExecution true to prevent scripts from executing;
42 * don't set to false when parsing into a target node that has been bound
44 * @param aAllowDeclarativeShadowRoots allow the creation of declarative
47 nsresult
ParseFragment(const nsAString
& aSourceBuffer
,
48 nsIContent
* aTargetNode
, nsAtom
* aContextLocalName
,
49 int32_t aContextNamespace
, bool aQuirks
,
50 bool aPreventScriptExecution
,
51 bool aAllowDeclarativeShadowRoots
);
54 * Parse an entire HTML document from a source string.
55 * DO NOT CALL from outside nsContentUtils.cpp.
58 nsresult
ParseDocument(const nsAString
& aSourceBuffer
,
59 mozilla::dom::Document
* aTargetDoc
,
60 bool aScriptingEnabledForNoscriptParsing
);
63 virtual ~nsHtml5StringParser();
65 nsresult
Tokenize(const nsAString
& aSourceBuffer
,
66 mozilla::dom::Document
* aDocument
,
67 bool aScriptingEnabledForNoscriptParsing
,
68 bool aDeclarativeShadowRootsAllowed
);
74 * The tree operation executor
76 RefPtr
<nsHtml5OplessBuilder
> mBuilder
;
79 * The HTML5 tree builder
81 const mozilla::UniquePtr
<nsHtml5TreeBuilder
> mTreeBuilder
;
86 const mozilla::UniquePtr
<nsHtml5Tokenizer
> mTokenizer
;
89 * The scoped atom table
91 nsHtml5AtomTable mAtomTable
;
93 class CacheClearer
: public mozilla::Runnable
{
95 explicit CacheClearer(nsHtml5StringParser
* aParser
)
96 : Runnable("CacheClearer"), mParser(aParser
) {}
99 mParser
->ClearCaches();
103 void Disconnect() { mParser
= nullptr; }
106 nsHtml5StringParser
* mParser
;
109 RefPtr
<CacheClearer
> mCacheClearer
;
112 #endif // nsHtml5StringParser_h