Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(523)

Side by Side Diff: Source/core/html/track/vtt/VTTTokenizer.cpp

Issue 78833002: Remove state-specific appendTo*/begin* methods from VTTToken (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/core/html/track/vtt/VTTTokenizer.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 if (m_token->characters().isEmpty()) { 95 if (m_token->characters().isEmpty()) {
96 WEBVTT_ADVANCE_TO(TagState); 96 WEBVTT_ADVANCE_TO(TagState);
97 } else { 97 } else {
98 // We don't want to advance input or perform a state transit ion - just return a (new) token. 98 // We don't want to advance input or perform a state transit ion - just return a (new) token.
99 // (On the next call to nextToken we will see '<' again, but take the other branch in this if instead.) 99 // (On the next call to nextToken we will see '<' again, but take the other branch in this if instead.)
100 return emitToken(VTTTokenTypes::Character); 100 return emitToken(VTTTokenTypes::Character);
101 } 101 }
102 } else if (cc == kEndOfFileMarker) { 102 } else if (cc == kEndOfFileMarker) {
103 return advanceAndEmitToken(source, VTTTokenTypes::Character); 103 return advanceAndEmitToken(source, VTTTokenTypes::Character);
104 } else { 104 } else {
105 bufferCharacter(cc); 105 m_token->appendToData(cc);
106 WEBVTT_ADVANCE_TO(DataState); 106 WEBVTT_ADVANCE_TO(DataState);
107 } 107 }
108 } 108 }
109 END_STATE() 109 END_STATE()
110 110
111 WEBVTT_BEGIN_STATE(EscapeState) { 111 WEBVTT_BEGIN_STATE(EscapeState) {
112 if (cc == ';') { 112 if (cc == ';') {
113 if (equalLiteral(m_buffer, "&amp")) { 113 if (equalLiteral(m_buffer, "&amp")) {
114 bufferCharacter('&'); 114 m_token->appendToData('&');
115 } else if (equalLiteral(m_buffer, "&lt")) { 115 } else if (equalLiteral(m_buffer, "&lt")) {
116 bufferCharacter('<'); 116 m_token->appendToData('<');
117 } else if (equalLiteral(m_buffer, "&gt")) { 117 } else if (equalLiteral(m_buffer, "&gt")) {
118 bufferCharacter('>'); 118 m_token->appendToData('>');
119 } else if (equalLiteral(m_buffer, "&lrm")) { 119 } else if (equalLiteral(m_buffer, "&lrm")) {
120 bufferCharacter(leftToRightMark); 120 m_token->appendToData(leftToRightMark);
121 } else if (equalLiteral(m_buffer, "&rlm")) { 121 } else if (equalLiteral(m_buffer, "&rlm")) {
122 bufferCharacter(rightToLeftMark); 122 m_token->appendToData(rightToLeftMark);
123 } else if (equalLiteral(m_buffer, "&nbsp")) { 123 } else if (equalLiteral(m_buffer, "&nbsp")) {
124 bufferCharacter(noBreakSpace); 124 m_token->appendToData(noBreakSpace);
125 } else { 125 } else {
126 m_buffer.append(static_cast<LChar>(cc)); 126 m_buffer.append(static_cast<LChar>(cc));
127 m_token->appendToCharacter(m_buffer); 127 m_token->appendToData(m_buffer);
128 } 128 }
129 m_buffer.clear(); 129 m_buffer.clear();
130 WEBVTT_ADVANCE_TO(DataState); 130 WEBVTT_ADVANCE_TO(DataState);
131 } else if (isASCIIAlphanumeric(cc)) { 131 } else if (isASCIIAlphanumeric(cc)) {
132 m_buffer.append(static_cast<LChar>(cc)); 132 m_buffer.append(static_cast<LChar>(cc));
133 WEBVTT_ADVANCE_TO(EscapeState); 133 WEBVTT_ADVANCE_TO(EscapeState);
134 } else if (cc == kEndOfFileMarker) { 134 } else if (cc == kEndOfFileMarker) {
135 m_token->appendToCharacter(m_buffer); 135 m_token->appendToData(m_buffer);
136 return advanceAndEmitToken(source, VTTTokenTypes::Character); 136 return advanceAndEmitToken(source, VTTTokenTypes::Character);
137 } else { 137 } else {
138 if (!equalLiteral(m_buffer, "&")) 138 if (!equalLiteral(m_buffer, "&"))
139 m_token->appendToCharacter(m_buffer); 139 m_token->appendToData(m_buffer);
140 m_buffer.clear(); 140 m_buffer.clear();
141 WEBVTT_ADVANCE_TO(DataState); 141 WEBVTT_ADVANCE_TO(DataState);
142 } 142 }
143 } 143 }
144 END_STATE() 144 END_STATE()
145 145
146 WEBVTT_BEGIN_STATE(TagState) { 146 WEBVTT_BEGIN_STATE(TagState) {
147 if (isTokenizerWhitespace(cc)) { 147 if (isTokenizerWhitespace(cc)) {
148 m_token->beginEmptyStartTag(); 148 ASSERT(m_token->name().isEmpty());
149 WEBVTT_ADVANCE_TO(StartTagAnnotationState); 149 WEBVTT_ADVANCE_TO(StartTagAnnotationState);
150 } else if (cc == '.') { 150 } else if (cc == '.') {
151 m_token->beginEmptyStartTag(); 151 ASSERT(m_token->name().isEmpty());
152 WEBVTT_ADVANCE_TO(StartTagClassState); 152 WEBVTT_ADVANCE_TO(StartTagClassState);
153 } else if (cc == '/') { 153 } else if (cc == '/') {
154 WEBVTT_ADVANCE_TO(EndTagState); 154 WEBVTT_ADVANCE_TO(EndTagState);
155 } else if (WTF::isASCIIDigit(cc)) { 155 } else if (WTF::isASCIIDigit(cc)) {
156 m_token->beginTimestampTag(cc); 156 m_token->appendToData(cc);
157 WEBVTT_ADVANCE_TO(TimestampTagState); 157 WEBVTT_ADVANCE_TO(TimestampTagState);
158 } else if (cc == '>' || cc == kEndOfFileMarker) { 158 } else if (cc == '>' || cc == kEndOfFileMarker) {
159 m_token->beginEmptyStartTag(); 159 ASSERT(m_token->name().isEmpty());
160 return advanceAndEmitToken(source, VTTTokenTypes::StartTag); 160 return advanceAndEmitToken(source, VTTTokenTypes::StartTag);
161 } else { 161 } else {
162 m_token->beginStartTag(cc); 162 m_token->appendToData(cc);
163 WEBVTT_ADVANCE_TO(StartTagState); 163 WEBVTT_ADVANCE_TO(StartTagState);
164 } 164 }
165 } 165 }
166 END_STATE() 166 END_STATE()
167 167
168 WEBVTT_BEGIN_STATE(StartTagState) { 168 WEBVTT_BEGIN_STATE(StartTagState) {
169 if (isTokenizerWhitespace(cc)) { 169 if (isTokenizerWhitespace(cc)) {
170 WEBVTT_ADVANCE_TO(StartTagAnnotationState); 170 WEBVTT_ADVANCE_TO(StartTagAnnotationState);
171 } else if (cc == '.') { 171 } else if (cc == '.') {
172 WEBVTT_ADVANCE_TO(StartTagClassState); 172 WEBVTT_ADVANCE_TO(StartTagClassState);
173 } else if (cc == '>' || cc == kEndOfFileMarker) { 173 } else if (cc == '>' || cc == kEndOfFileMarker) {
174 return advanceAndEmitToken(source, VTTTokenTypes::StartTag); 174 return advanceAndEmitToken(source, VTTTokenTypes::StartTag);
175 } else { 175 } else {
176 m_token->appendToName(cc); 176 m_token->appendToData(cc);
177 WEBVTT_ADVANCE_TO(StartTagState); 177 WEBVTT_ADVANCE_TO(StartTagState);
178 } 178 }
179 } 179 }
180 END_STATE() 180 END_STATE()
181 181
182 WEBVTT_BEGIN_STATE(StartTagClassState) { 182 WEBVTT_BEGIN_STATE(StartTagClassState) {
183 if (isTokenizerWhitespace(cc)) { 183 if (isTokenizerWhitespace(cc)) {
184 m_token->addNewClass(); 184 m_token->addNewClass(m_buffer);
185 m_buffer.clear();
185 WEBVTT_ADVANCE_TO(StartTagAnnotationState); 186 WEBVTT_ADVANCE_TO(StartTagAnnotationState);
186 } else if (cc == '.') { 187 } else if (cc == '.') {
187 m_token->addNewClass(); 188 m_token->addNewClass(m_buffer);
189 m_buffer.clear();
188 WEBVTT_ADVANCE_TO(StartTagClassState); 190 WEBVTT_ADVANCE_TO(StartTagClassState);
189 } else if (cc == '>' || cc == kEndOfFileMarker) { 191 } else if (cc == '>' || cc == kEndOfFileMarker) {
190 m_token->addNewClass(); 192 m_token->addNewClass(m_buffer);
193 m_buffer.clear();
191 return advanceAndEmitToken(source, VTTTokenTypes::StartTag); 194 return advanceAndEmitToken(source, VTTTokenTypes::StartTag);
192 } else { 195 } else {
193 m_token->appendToClass(cc); 196 m_buffer.append(cc);
194 WEBVTT_ADVANCE_TO(StartTagClassState); 197 WEBVTT_ADVANCE_TO(StartTagClassState);
195 } 198 }
196
197 } 199 }
198 END_STATE() 200 END_STATE()
199 201
200 WEBVTT_BEGIN_STATE(StartTagAnnotationState) { 202 WEBVTT_BEGIN_STATE(StartTagAnnotationState) {
201 if (cc == '>' || cc == kEndOfFileMarker) { 203 if (cc == '>' || cc == kEndOfFileMarker) {
202 m_token->addNewAnnotation(); 204 m_token->addNewAnnotation(m_buffer);
205 m_buffer.clear();
203 return advanceAndEmitToken(source, VTTTokenTypes::StartTag); 206 return advanceAndEmitToken(source, VTTTokenTypes::StartTag);
204 } 207 }
205 m_token->appendToAnnotation(cc); 208 m_buffer.append(cc);
206 WEBVTT_ADVANCE_TO(StartTagAnnotationState); 209 WEBVTT_ADVANCE_TO(StartTagAnnotationState);
207 } 210 }
208 END_STATE() 211 END_STATE()
209 212
210 WEBVTT_BEGIN_STATE(EndTagState) { 213 WEBVTT_BEGIN_STATE(EndTagState) {
211 if (cc == '>' || cc == kEndOfFileMarker) 214 if (cc == '>' || cc == kEndOfFileMarker)
212 return advanceAndEmitToken(source, VTTTokenTypes::EndTag); 215 return advanceAndEmitToken(source, VTTTokenTypes::EndTag);
213 m_token->appendToName(cc); 216 m_token->appendToData(cc);
214 WEBVTT_ADVANCE_TO(EndTagState); 217 WEBVTT_ADVANCE_TO(EndTagState);
215 } 218 }
216 END_STATE() 219 END_STATE()
217 220
218 WEBVTT_BEGIN_STATE(TimestampTagState) { 221 WEBVTT_BEGIN_STATE(TimestampTagState) {
219 if (cc == '>' || cc == kEndOfFileMarker) 222 if (cc == '>' || cc == kEndOfFileMarker)
220 return advanceAndEmitToken(source, VTTTokenTypes::TimestampTag); 223 return advanceAndEmitToken(source, VTTTokenTypes::TimestampTag);
221 m_token->appendToTimestamp(cc); 224 m_token->appendToData(cc);
222 WEBVTT_ADVANCE_TO(TimestampTagState); 225 WEBVTT_ADVANCE_TO(TimestampTagState);
223 } 226 }
224 END_STATE() 227 END_STATE()
225 228
226 } 229 }
227 230
228 ASSERT_NOT_REACHED(); 231 ASSERT_NOT_REACHED();
229 return false; 232 return false;
230 } 233 }
231 234
232 } 235 }
233 236
OLDNEW
« no previous file with comments | « Source/core/html/track/vtt/VTTTokenizer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698