| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google, Inc. All Rights Reserved. | 2 * Copyright (C) 2013 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 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 | 134 |
| 135 private: | 135 private: |
| 136 Vector<UChar, 32> m_name; | 136 Vector<UChar, 32> m_name; |
| 137 Vector<UChar, 32> m_value; | 137 Vector<UChar, 32> m_value; |
| 138 Range m_nameRange; | 138 Range m_nameRange; |
| 139 Range m_valueRange; | 139 Range m_valueRange; |
| 140 }; | 140 }; |
| 141 | 141 |
| 142 typedef Vector<Attribute, 10> AttributeList; | 142 typedef Vector<Attribute, 10> AttributeList; |
| 143 | 143 |
| 144 // By using an inline capacity of 256, we avoid spilling over into an malloced
buffer | 144 // By using an inline capacity of 256, we avoid spilling over into an malloced |
| 145 // approximately 99% of the time based on a non-scientific browse around a num
ber of | 145 // buffer approximately 99% of the time based on a non-scientific browse |
| 146 // popular web sites on 23 May 2013. | 146 // around a number of popular web sites on 23 May 2013. |
| 147 typedef Vector<UChar, 256> DataVector; | 147 typedef Vector<UChar, 256> DataVector; |
| 148 | 148 |
| 149 HTMLToken() { clear(); } | 149 HTMLToken() { clear(); } |
| 150 | 150 |
| 151 void clear() { | 151 void clear() { |
| 152 m_type = Uninitialized; | 152 m_type = Uninitialized; |
| 153 m_range.clear(); | 153 m_range.clear(); |
| 154 m_range.start = 0; | 154 m_range.start = 0; |
| 155 m_baseOffset = 0; | 155 m_baseOffset = 0; |
| 156 // Don't call Vector::clear() as that would destroy the | 156 // Don't call Vector::clear() as that would destroy the |
| 157 // alloced VectorBuffer. If the innerHTML'd content has | 157 // alloced VectorBuffer. If the innerHTML'd content has |
| 158 // two 257 character text nodes in a row, we'll needlessly | 158 // two 257 character text nodes in a row, we'll needlessly |
| 159 // thrash malloc. When we finally finish the parse the | 159 // thrash malloc. When we finally finish the parse the |
| 160 // HTMLToken will be destroyed and the VectorBuffer released. | 160 // HTMLToken will be destroyed and the VectorBuffer released. |
| 161 m_data.shrink(0); | 161 m_data.shrink(0); |
| 162 m_orAllData = 0; | 162 m_orAllData = 0; |
| 163 } | 163 } |
| 164 | 164 |
| 165 bool isUninitialized() { return m_type == Uninitialized; } | 165 bool isUninitialized() { return m_type == Uninitialized; } |
| 166 TokenType type() const { return m_type; } | 166 TokenType type() const { return m_type; } |
| 167 | 167 |
| 168 void makeEndOfFile() { | 168 void makeEndOfFile() { |
| 169 ASSERT(m_type == Uninitialized); | 169 ASSERT(m_type == Uninitialized); |
| 170 m_type = EndOfFile; | 170 m_type = EndOfFile; |
| 171 } | 171 } |
| 172 | 172 |
| 173 /* Range and offset methods exposed for HTMLSourceTracker and HTMLViewSourcePa
rser */ | 173 // Range and offset methods exposed for HTMLSourceTracker and |
| 174 // HTMLViewSourceParser. |
| 174 int startIndex() const { return m_range.start; } | 175 int startIndex() const { return m_range.start; } |
| 175 int endIndex() const { return m_range.end; } | 176 int endIndex() const { return m_range.end; } |
| 176 | 177 |
| 177 void setBaseOffset(int offset) { m_baseOffset = offset; } | 178 void setBaseOffset(int offset) { m_baseOffset = offset; } |
| 178 | 179 |
| 179 void end(int endOffset) { m_range.end = endOffset - m_baseOffset; } | 180 void end(int endOffset) { m_range.end = endOffset - m_baseOffset; } |
| 180 | 181 |
| 181 const DataVector& data() const { | 182 const DataVector& data() const { |
| 182 ASSERT(m_type == Character || m_type == Comment || m_type == StartTag || | 183 ASSERT(m_type == Character || m_type == Comment || m_type == StartTag || |
| 183 m_type == EndTag); | 184 m_type == EndTag); |
| (...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 std::unique_ptr<DoctypeData> m_doctypeData; | 455 std::unique_ptr<DoctypeData> m_doctypeData; |
| 455 }; | 456 }; |
| 456 | 457 |
| 457 #ifndef NDEBUG | 458 #ifndef NDEBUG |
| 458 const char* toString(HTMLToken::TokenType); | 459 const char* toString(HTMLToken::TokenType); |
| 459 #endif | 460 #endif |
| 460 | 461 |
| 461 } // namespace blink | 462 } // namespace blink |
| 462 | 463 |
| 463 #endif | 464 #endif |
| OLD | NEW |