Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 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 are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 41 class VTTTokenizerState { | 41 class VTTTokenizerState { |
| 42 public: | 42 public: |
| 43 enum State { | 43 enum State { |
| 44 DataState, | 44 DataState, |
| 45 EscapeState, | 45 EscapeState, |
| 46 TagState, | 46 TagState, |
| 47 StartTagState, | 47 StartTagState, |
| 48 StartTagClassState, | 48 StartTagClassState, |
| 49 StartTagAnnotationState, | 49 StartTagAnnotationState, |
| 50 EndTagState, | 50 EndTagState, |
| 51 EndTagOpenState, | |
| 52 TimestampTagState, | 51 TimestampTagState, |
| 53 }; | 52 }; |
| 54 }; | 53 }; |
| 55 | 54 |
| 56 class VTTTokenizer { | 55 class VTTTokenizer { |
| 57 WTF_MAKE_NONCOPYABLE(VTTTokenizer); | 56 WTF_MAKE_NONCOPYABLE(VTTTokenizer); |
| 58 WTF_MAKE_FAST_ALLOCATED; | |
| 59 public: | 57 public: |
| 60 static PassOwnPtr<VTTTokenizer> create() { return adoptPtr(new VTTTokenizer) ; } | 58 explicit VTTTokenizer(const String& input); |
| 61 | 59 |
| 62 typedef VTTTokenizerState State; | 60 typedef VTTTokenizerState State; |
| 63 | 61 |
| 64 void reset(); | 62 void reset(); |
| 65 | 63 |
| 66 bool nextToken(SegmentedString&, VTTToken&); | 64 bool nextToken(VTTToken&); |
| 67 | 65 |
| 68 inline bool haveBufferedCharacterToken() | 66 inline bool haveBufferedCharacterToken() { return false; } |
|
jochen (gone - plz use gerrit)
2013/11/20 14:09:37
why not just remove this method?
| |
| 69 { | |
| 70 return m_token->type() == VTTToken::Type::Character; | |
| 71 } | |
| 72 | 67 |
| 73 inline void bufferCharacter(UChar character) | 68 inline void bufferCharacter(UChar character) |
| 74 { | 69 { |
| 75 ASSERT(character != kEndOfFileMarker); | 70 ASSERT(character != kEndOfFileMarker); |
| 76 m_token->ensureIsCharacterToken(); | |
| 77 m_token->appendToCharacter(character); | 71 m_token->appendToCharacter(character); |
| 78 } | 72 } |
| 79 | 73 |
| 80 inline bool advanceAndEmitToken(SegmentedString& source, VTTTokenTypes::Type type) | 74 inline bool advanceAndEmitToken(SegmentedString& source, VTTTokenTypes::Type type) |
| 81 { | 75 { |
| 82 source.advanceAndUpdateLineNumber(); | 76 source.advanceAndUpdateLineNumber(); |
| 83 return emitToken(type); | 77 return emitToken(type); |
| 84 } | 78 } |
| 85 | 79 |
| 86 inline bool emitToken(VTTTokenTypes::Type type) | 80 inline bool emitToken(VTTTokenTypes::Type type) |
| 87 { | 81 { |
| 88 ASSERT(m_token->type() == type); | 82 m_token->setType(type); |
| 89 return true; | 83 return true; |
| 90 } | 84 } |
| 91 | 85 |
| 92 bool shouldSkipNullCharacters() const { return true; } | 86 bool shouldSkipNullCharacters() const { return true; } |
| 93 | 87 |
| 94 private: | 88 private: |
| 95 VTTTokenizer(); | |
| 96 | |
| 97 // m_token is owned by the caller. If nextToken is not on the stack, | 89 // m_token is owned by the caller. If nextToken is not on the stack, |
| 98 // this member might be pointing to unallocated memory. | 90 // this member might be pointing to unallocated memory. |
| 99 VTTToken* m_token; | 91 VTTToken* m_token; |
| 100 | 92 |
| 101 // This member does not really need to be an instance member - it's only use d in nextToken. | 93 // This member does not really need to be an instance member - it's only use d in nextToken. |
| 102 // The reason it's stored here is because of the use of the ADVANCE_TO state helpers. | 94 // The reason it's stored here is because of the use of the ADVANCE_TO state helpers. |
| 103 VTTTokenizerState::State m_state; | 95 VTTTokenizerState::State m_state; |
| 104 | 96 |
| 105 StringBuilder m_buffer; | 97 StringBuilder m_buffer; |
| 98 SegmentedString m_input; | |
| 106 | 99 |
| 107 // ://www.whatwg.org/specs/web-apps/current-work/#preprocessing-the-input-st ream | 100 // ://www.whatwg.org/specs/web-apps/current-work/#preprocessing-the-input-st ream |
| 108 InputStreamPreprocessor<VTTTokenizer> m_inputStreamPreprocessor; | 101 InputStreamPreprocessor<VTTTokenizer> m_inputStreamPreprocessor; |
| 109 }; | 102 }; |
| 110 | 103 |
| 111 } | 104 } |
| 112 | 105 |
| 113 #endif | 106 #endif |
| OLD | NEW |