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 nsHtml5Speculation_h
6 #define nsHtml5Speculation_h
8 #include "nsHtml5OwningUTF16Buffer.h"
9 #include "nsAHtml5TreeBuilderState.h"
10 #include "nsHtml5TreeOperation.h"
11 #include "nsAHtml5TreeOpSink.h"
13 #include "mozilla/Attributes.h"
14 #include "mozilla/UniquePtr.h"
16 class nsHtml5Speculation final
: public nsAHtml5TreeOpSink
{
18 nsHtml5Speculation(nsHtml5OwningUTF16Buffer
* aBuffer
, int32_t aStart
,
19 int32_t aStartLineNumber
,
20 nsAHtml5TreeBuilderState
* aSnapshot
);
22 ~nsHtml5Speculation();
24 nsHtml5OwningUTF16Buffer
* GetBuffer() { return mBuffer
; }
26 int32_t GetStart() { return mStart
; }
28 int32_t GetStartLineNumber() { return mStartLineNumber
; }
30 nsAHtml5TreeBuilderState
* GetSnapshot() { return mSnapshot
.get(); }
33 * Flush the operations from the tree operations from the argument
34 * queue unconditionally.
36 virtual void MoveOpsFrom(nsTArray
<nsHtml5TreeOperation
>& aOpQueue
) override
;
38 void FlushToSink(nsAHtml5TreeOpSink
* aSink
);
42 * The first buffer in the pending UTF-16 buffer queue
44 RefPtr
<nsHtml5OwningUTF16Buffer
> mBuffer
;
47 * The start index of this speculation in the first buffer
52 * The current line number at the start of the speculation
54 int32_t mStartLineNumber
;
56 mozilla::UniquePtr
<nsAHtml5TreeBuilderState
> mSnapshot
;
58 nsTArray
<nsHtml5TreeOperation
> mOpQueue
;
61 #endif // nsHtml5Speculation_h