OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google, Inc. All Rights Reserved. | 2 * Copyright (C) 2010 Google, Inc. All Rights Reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 10 matching lines...) Expand all Loading... |
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
24 */ | 24 */ |
25 | 25 |
26 #ifndef HTMLInputStream_h | 26 #ifndef HTMLInputStream_h |
27 #define HTMLInputStream_h | 27 #define HTMLInputStream_h |
28 | 28 |
29 #include "core/html/parser/InputStreamPreprocessor.h" | 29 #include "core/html/parser/InputStreamPreprocessor.h" |
30 #include "platform/text/SegmentedString.h" | 30 #include "platform/text/SegmentedString.h" |
| 31 #include "wtf/Allocator.h" |
31 | 32 |
32 namespace blink { | 33 namespace blink { |
33 | 34 |
34 // The InputStream is made up of a sequence of SegmentedStrings: | 35 // The InputStream is made up of a sequence of SegmentedStrings: |
35 // | 36 // |
36 // [--current--][--next--][--next--] ... [--next--] | 37 // [--current--][--next--][--next--] ... [--next--] |
37 // /\ (also called m_last) | 38 // /\ (also called m_last) |
38 // L_ current insertion point | 39 // L_ current insertion point |
39 // | 40 // |
40 // The current segmented string is stored in InputStream. Each of the | 41 // The current segmented string is stored in InputStream. Each of the |
41 // afterInsertionPoint buffers are stored in InsertionPointRecords on the | 42 // afterInsertionPoint buffers are stored in InsertionPointRecords on the |
42 // stack. | 43 // stack. |
43 // | 44 // |
44 // We remove characters from the "current" string in the InputStream. | 45 // We remove characters from the "current" string in the InputStream. |
45 // document.write() will add characters at the current insertion point, | 46 // document.write() will add characters at the current insertion point, |
46 // which appends them to the "current" string. | 47 // which appends them to the "current" string. |
47 // | 48 // |
48 // m_last is a pointer to the last of the afterInsertionPoint strings. | 49 // m_last is a pointer to the last of the afterInsertionPoint strings. |
49 // The network adds data at the end of the InputStream, which appends | 50 // The network adds data at the end of the InputStream, which appends |
50 // them to the "last" string. | 51 // them to the "last" string. |
51 class HTMLInputStream { | 52 class HTMLInputStream { |
| 53 DISALLOW_ALLOCATION(); |
52 WTF_MAKE_NONCOPYABLE(HTMLInputStream); | 54 WTF_MAKE_NONCOPYABLE(HTMLInputStream); |
53 public: | 55 public: |
54 HTMLInputStream() | 56 HTMLInputStream() |
55 : m_last(&m_first) | 57 : m_last(&m_first) |
56 { | 58 { |
57 } | 59 } |
58 | 60 |
59 void appendToEnd(const SegmentedString& string) | 61 void appendToEnd(const SegmentedString& string) |
60 { | 62 { |
61 m_last->append(string); | 63 m_last->append(string); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 m_first.close(); | 119 m_first.close(); |
118 } | 120 } |
119 } | 121 } |
120 | 122 |
121 private: | 123 private: |
122 SegmentedString m_first; | 124 SegmentedString m_first; |
123 SegmentedString* m_last; | 125 SegmentedString* m_last; |
124 }; | 126 }; |
125 | 127 |
126 class InsertionPointRecord { | 128 class InsertionPointRecord { |
| 129 STACK_ALLOCATED(); |
127 WTF_MAKE_NONCOPYABLE(InsertionPointRecord); | 130 WTF_MAKE_NONCOPYABLE(InsertionPointRecord); |
128 public: | 131 public: |
129 explicit InsertionPointRecord(HTMLInputStream& inputStream) | 132 explicit InsertionPointRecord(HTMLInputStream& inputStream) |
130 : m_inputStream(&inputStream) | 133 : m_inputStream(&inputStream) |
131 { | 134 { |
132 m_line = m_inputStream->current().currentLine(); | 135 m_line = m_inputStream->current().currentLine(); |
133 m_column = m_inputStream->current().currentColumn(); | 136 m_column = m_inputStream->current().currentColumn(); |
134 m_inputStream->splitInto(m_next); | 137 m_inputStream->splitInto(m_next); |
135 // We 'fork' current position and use it for the generated script part. | 138 // We 'fork' current position and use it for the generated script part. |
136 // This is a bit weird, because generated part does not have positions w
ithin an HTML document. | 139 // This is a bit weird, because generated part does not have positions w
ithin an HTML document. |
(...skipping 13 matching lines...) Expand all Loading... |
150 private: | 153 private: |
151 HTMLInputStream* m_inputStream; | 154 HTMLInputStream* m_inputStream; |
152 SegmentedString m_next; | 155 SegmentedString m_next; |
153 OrdinalNumber m_line; | 156 OrdinalNumber m_line; |
154 OrdinalNumber m_column; | 157 OrdinalNumber m_column; |
155 }; | 158 }; |
156 | 159 |
157 } | 160 } |
158 | 161 |
159 #endif | 162 #endif |
OLD | NEW |