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 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 int start; | 109 int start; |
110 int end; | 110 int end; |
111 }; | 111 }; |
112 | 112 |
113 AtomicString name() const { return AtomicString(m_name); } | 113 AtomicString name() const { return AtomicString(m_name); } |
114 String nameAttemptStaticStringCreation() const { | 114 String nameAttemptStaticStringCreation() const { |
115 return attemptStaticStringCreation(m_name, Likely8Bit); | 115 return attemptStaticStringCreation(m_name, Likely8Bit); |
116 } | 116 } |
117 const Vector<UChar, 32>& nameAsVector() const { return m_name; } | 117 const Vector<UChar, 32>& nameAsVector() const { return m_name; } |
118 | 118 |
119 void appendToName(UChar c) { m_name.append(c); } | 119 void appendToName(UChar c) { m_name.push_back(c); } |
120 | 120 |
121 PassRefPtr<StringImpl> value8BitIfNecessary() const { | 121 PassRefPtr<StringImpl> value8BitIfNecessary() const { |
122 return StringImpl::create8BitIfPossible(m_value); | 122 return StringImpl::create8BitIfPossible(m_value); |
123 } | 123 } |
124 String value() const { return String(m_value); } | 124 String value() const { return String(m_value); } |
125 | 125 |
126 void appendToValue(UChar c) { m_value.append(c); } | 126 void appendToValue(UChar c) { m_value.push_back(c); } |
127 void appendToValue(const String& value) { value.appendTo(m_value); } | 127 void appendToValue(const String& value) { value.appendTo(m_value); } |
128 void clearValue() { m_value.clear(); } | 128 void clearValue() { m_value.clear(); } |
129 | 129 |
130 const Range& nameRange() const { return m_nameRange; } | 130 const Range& nameRange() const { return m_nameRange; } |
131 const Range& valueRange() const { return m_valueRange; } | 131 const Range& valueRange() const { return m_valueRange; } |
132 Range& mutableNameRange() { return m_nameRange; } | 132 Range& mutableNameRange() { return m_nameRange; } |
133 Range& mutableValueRange() { return m_valueRange; } | 133 Range& mutableValueRange() { return m_valueRange; } |
134 | 134 |
135 private: | 135 private: |
136 Vector<UChar, 32> m_name; | 136 Vector<UChar, 32> m_name; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 bool isAll8BitData() const { return (m_orAllData <= 0xff); } | 188 bool isAll8BitData() const { return (m_orAllData <= 0xff); } |
189 | 189 |
190 const DataVector& name() const { | 190 const DataVector& name() const { |
191 ASSERT(m_type == StartTag || m_type == EndTag || m_type == DOCTYPE); | 191 ASSERT(m_type == StartTag || m_type == EndTag || m_type == DOCTYPE); |
192 return m_data; | 192 return m_data; |
193 } | 193 } |
194 | 194 |
195 void appendToName(UChar character) { | 195 void appendToName(UChar character) { |
196 ASSERT(m_type == StartTag || m_type == EndTag || m_type == DOCTYPE); | 196 ASSERT(m_type == StartTag || m_type == EndTag || m_type == DOCTYPE); |
197 ASSERT(character); | 197 ASSERT(character); |
198 m_data.append(character); | 198 m_data.push_back(character); |
199 m_orAllData |= character; | 199 m_orAllData |= character; |
200 } | 200 } |
201 | 201 |
202 /* DOCTYPE Tokens */ | 202 /* DOCTYPE Tokens */ |
203 | 203 |
204 bool forceQuirks() const { | 204 bool forceQuirks() const { |
205 ASSERT(m_type == DOCTYPE); | 205 ASSERT(m_type == DOCTYPE); |
206 return m_doctypeData->m_forceQuirks; | 206 return m_doctypeData->m_forceQuirks; |
207 } | 207 } |
208 | 208 |
209 void setForceQuirks() { | 209 void setForceQuirks() { |
210 ASSERT(m_type == DOCTYPE); | 210 ASSERT(m_type == DOCTYPE); |
211 m_doctypeData->m_forceQuirks = true; | 211 m_doctypeData->m_forceQuirks = true; |
212 } | 212 } |
213 | 213 |
214 void beginDOCTYPE() { | 214 void beginDOCTYPE() { |
215 ASSERT(m_type == Uninitialized); | 215 ASSERT(m_type == Uninitialized); |
216 m_type = DOCTYPE; | 216 m_type = DOCTYPE; |
217 m_doctypeData = WTF::wrapUnique(new DoctypeData); | 217 m_doctypeData = WTF::wrapUnique(new DoctypeData); |
218 } | 218 } |
219 | 219 |
220 void beginDOCTYPE(UChar character) { | 220 void beginDOCTYPE(UChar character) { |
221 ASSERT(character); | 221 ASSERT(character); |
222 beginDOCTYPE(); | 222 beginDOCTYPE(); |
223 m_data.append(character); | 223 m_data.push_back(character); |
224 m_orAllData |= character; | 224 m_orAllData |= character; |
225 } | 225 } |
226 | 226 |
227 // FIXME: Distinguish between a missing public identifer and an empty one. | 227 // FIXME: Distinguish between a missing public identifer and an empty one. |
228 const WTF::Vector<UChar>& publicIdentifier() const { | 228 const WTF::Vector<UChar>& publicIdentifier() const { |
229 ASSERT(m_type == DOCTYPE); | 229 ASSERT(m_type == DOCTYPE); |
230 return m_doctypeData->m_publicIdentifier; | 230 return m_doctypeData->m_publicIdentifier; |
231 } | 231 } |
232 | 232 |
233 // FIXME: Distinguish between a missing system identifer and an empty one. | 233 // FIXME: Distinguish between a missing system identifer and an empty one. |
(...skipping 11 matching lines...) Expand all Loading... |
245 void setSystemIdentifierToEmptyString() { | 245 void setSystemIdentifierToEmptyString() { |
246 ASSERT(m_type == DOCTYPE); | 246 ASSERT(m_type == DOCTYPE); |
247 m_doctypeData->m_hasSystemIdentifier = true; | 247 m_doctypeData->m_hasSystemIdentifier = true; |
248 m_doctypeData->m_systemIdentifier.clear(); | 248 m_doctypeData->m_systemIdentifier.clear(); |
249 } | 249 } |
250 | 250 |
251 void appendToPublicIdentifier(UChar character) { | 251 void appendToPublicIdentifier(UChar character) { |
252 ASSERT(character); | 252 ASSERT(character); |
253 ASSERT(m_type == DOCTYPE); | 253 ASSERT(m_type == DOCTYPE); |
254 ASSERT(m_doctypeData->m_hasPublicIdentifier); | 254 ASSERT(m_doctypeData->m_hasPublicIdentifier); |
255 m_doctypeData->m_publicIdentifier.append(character); | 255 m_doctypeData->m_publicIdentifier.push_back(character); |
256 } | 256 } |
257 | 257 |
258 void appendToSystemIdentifier(UChar character) { | 258 void appendToSystemIdentifier(UChar character) { |
259 ASSERT(character); | 259 ASSERT(character); |
260 ASSERT(m_type == DOCTYPE); | 260 ASSERT(m_type == DOCTYPE); |
261 ASSERT(m_doctypeData->m_hasSystemIdentifier); | 261 ASSERT(m_doctypeData->m_hasSystemIdentifier); |
262 m_doctypeData->m_systemIdentifier.append(character); | 262 m_doctypeData->m_systemIdentifier.push_back(character); |
263 } | 263 } |
264 | 264 |
265 std::unique_ptr<DoctypeData> releaseDoctypeData() { | 265 std::unique_ptr<DoctypeData> releaseDoctypeData() { |
266 return std::move(m_doctypeData); | 266 return std::move(m_doctypeData); |
267 } | 267 } |
268 | 268 |
269 /* Start/End Tag Tokens */ | 269 /* Start/End Tag Tokens */ |
270 | 270 |
271 bool selfClosing() const { | 271 bool selfClosing() const { |
272 ASSERT(m_type == StartTag || m_type == EndTag); | 272 ASSERT(m_type == StartTag || m_type == EndTag); |
273 return m_selfClosing; | 273 return m_selfClosing; |
274 } | 274 } |
275 | 275 |
276 void setSelfClosing() { | 276 void setSelfClosing() { |
277 ASSERT(m_type == StartTag || m_type == EndTag); | 277 ASSERT(m_type == StartTag || m_type == EndTag); |
278 m_selfClosing = true; | 278 m_selfClosing = true; |
279 } | 279 } |
280 | 280 |
281 void beginStartTag(UChar character) { | 281 void beginStartTag(UChar character) { |
282 ASSERT(character); | 282 ASSERT(character); |
283 ASSERT(m_type == Uninitialized); | 283 ASSERT(m_type == Uninitialized); |
284 m_type = StartTag; | 284 m_type = StartTag; |
285 m_selfClosing = false; | 285 m_selfClosing = false; |
286 m_currentAttribute = 0; | 286 m_currentAttribute = 0; |
287 m_attributes.clear(); | 287 m_attributes.clear(); |
288 | 288 |
289 m_data.append(character); | 289 m_data.push_back(character); |
290 m_orAllData |= character; | 290 m_orAllData |= character; |
291 } | 291 } |
292 | 292 |
293 void beginEndTag(LChar character) { | 293 void beginEndTag(LChar character) { |
294 ASSERT(m_type == Uninitialized); | 294 ASSERT(m_type == Uninitialized); |
295 m_type = EndTag; | 295 m_type = EndTag; |
296 m_selfClosing = false; | 296 m_selfClosing = false; |
297 m_currentAttribute = 0; | 297 m_currentAttribute = 0; |
298 m_attributes.clear(); | 298 m_attributes.clear(); |
299 | 299 |
300 m_data.append(character); | 300 m_data.push_back(character); |
301 } | 301 } |
302 | 302 |
303 void beginEndTag(const Vector<LChar, 32>& characters) { | 303 void beginEndTag(const Vector<LChar, 32>& characters) { |
304 ASSERT(m_type == Uninitialized); | 304 ASSERT(m_type == Uninitialized); |
305 m_type = EndTag; | 305 m_type = EndTag; |
306 m_selfClosing = false; | 306 m_selfClosing = false; |
307 m_currentAttribute = 0; | 307 m_currentAttribute = 0; |
308 m_attributes.clear(); | 308 m_attributes.clear(); |
309 | 309 |
310 m_data.appendVector(characters); | 310 m_data.appendVector(characters); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 m_type = Character; | 390 m_type = Character; |
391 } | 391 } |
392 | 392 |
393 const DataVector& characters() const { | 393 const DataVector& characters() const { |
394 ASSERT(m_type == Character); | 394 ASSERT(m_type == Character); |
395 return m_data; | 395 return m_data; |
396 } | 396 } |
397 | 397 |
398 void appendToCharacter(char character) { | 398 void appendToCharacter(char character) { |
399 ASSERT(m_type == Character); | 399 ASSERT(m_type == Character); |
400 m_data.append(character); | 400 m_data.push_back(character); |
401 } | 401 } |
402 | 402 |
403 void appendToCharacter(UChar character) { | 403 void appendToCharacter(UChar character) { |
404 ASSERT(m_type == Character); | 404 ASSERT(m_type == Character); |
405 m_data.append(character); | 405 m_data.push_back(character); |
406 m_orAllData |= character; | 406 m_orAllData |= character; |
407 } | 407 } |
408 | 408 |
409 void appendToCharacter(const Vector<LChar, 32>& characters) { | 409 void appendToCharacter(const Vector<LChar, 32>& characters) { |
410 ASSERT(m_type == Character); | 410 ASSERT(m_type == Character); |
411 m_data.appendVector(characters); | 411 m_data.appendVector(characters); |
412 } | 412 } |
413 | 413 |
414 /* Comment Tokens */ | 414 /* Comment Tokens */ |
415 | 415 |
416 const DataVector& comment() const { | 416 const DataVector& comment() const { |
417 ASSERT(m_type == Comment); | 417 ASSERT(m_type == Comment); |
418 return m_data; | 418 return m_data; |
419 } | 419 } |
420 | 420 |
421 void beginComment() { | 421 void beginComment() { |
422 ASSERT(m_type == Uninitialized); | 422 ASSERT(m_type == Uninitialized); |
423 m_type = Comment; | 423 m_type = Comment; |
424 } | 424 } |
425 | 425 |
426 void appendToComment(UChar character) { | 426 void appendToComment(UChar character) { |
427 ASSERT(character); | 427 ASSERT(character); |
428 ASSERT(m_type == Comment); | 428 ASSERT(m_type == Comment); |
429 m_data.append(character); | 429 m_data.push_back(character); |
430 m_orAllData |= character; | 430 m_orAllData |= character; |
431 } | 431 } |
432 | 432 |
433 // Only for XSSAuditor | 433 // Only for XSSAuditor |
434 void eraseCharacters() { | 434 void eraseCharacters() { |
435 ASSERT(m_type == Character); | 435 ASSERT(m_type == Character); |
436 m_data.clear(); | 436 m_data.clear(); |
437 m_orAllData = 0; | 437 m_orAllData = 0; |
438 } | 438 } |
439 | 439 |
(...skipping 15 matching lines...) Expand all Loading... |
455 std::unique_ptr<DoctypeData> m_doctypeData; | 455 std::unique_ptr<DoctypeData> m_doctypeData; |
456 }; | 456 }; |
457 | 457 |
458 #ifndef NDEBUG | 458 #ifndef NDEBUG |
459 const char* toString(HTMLToken::TokenType); | 459 const char* toString(HTMLToken::TokenType); |
460 #endif | 460 #endif |
461 | 461 |
462 } // namespace blink | 462 } // namespace blink |
463 | 463 |
464 #endif | 464 #endif |
OLD | NEW |