Line data Source code
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/. */
4 :
5 : #ifndef nsHtml5Speculation_h
6 : #define nsHtml5Speculation_h
7 :
8 : #include "nsHtml5OwningUTF16Buffer.h"
9 : #include "nsAHtml5TreeBuilderState.h"
10 : #include "nsHtml5TreeOperation.h"
11 : #include "nsAHtml5TreeOpSink.h"
12 : #include "nsTArray.h"
13 : #include "nsAutoPtr.h"
14 : #include "mozilla/Attributes.h"
15 :
16 : class nsHtml5Speculation final : public nsAHtml5TreeOpSink
17 : {
18 : public:
19 : nsHtml5Speculation(nsHtml5OwningUTF16Buffer* aBuffer,
20 : int32_t aStart,
21 : int32_t aStartLineNumber,
22 : nsAHtml5TreeBuilderState* aSnapshot);
23 :
24 : ~nsHtml5Speculation();
25 :
26 0 : nsHtml5OwningUTF16Buffer* GetBuffer()
27 : {
28 0 : return mBuffer;
29 : }
30 :
31 0 : int32_t GetStart()
32 : {
33 0 : return mStart;
34 : }
35 :
36 5 : int32_t GetStartLineNumber()
37 : {
38 5 : return mStartLineNumber;
39 : }
40 :
41 10 : nsAHtml5TreeBuilderState* GetSnapshot()
42 : {
43 10 : return mSnapshot;
44 : }
45 :
46 : /**
47 : * Flush the operations from the tree operations from the argument
48 : * queue unconditionally.
49 : */
50 : virtual void MoveOpsFrom(nsTArray<nsHtml5TreeOperation>& aOpQueue);
51 :
52 : void FlushToSink(nsAHtml5TreeOpSink* aSink);
53 :
54 : private:
55 : /**
56 : * The first buffer in the pending UTF-16 buffer queue
57 : */
58 : RefPtr<nsHtml5OwningUTF16Buffer> mBuffer;
59 :
60 : /**
61 : * The start index of this speculation in the first buffer
62 : */
63 : int32_t mStart;
64 :
65 : /**
66 : * The current line number at the start of the speculation
67 : */
68 : int32_t mStartLineNumber;
69 :
70 : nsAutoPtr<nsAHtml5TreeBuilderState> mSnapshot;
71 :
72 : nsTArray<nsHtml5TreeOperation> mOpQueue;
73 : };
74 :
75 : #endif // nsHtml5Speculation_h
|