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

Side by Side Diff: Source/core/html/track/WebVTTParser.cpp

Issue 65343003: Make metadata state local in the WebVTT parser (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/WebVTTParser.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 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 // 4.1 Extension of WebVTT header parsing (11 - 15) 240 // 4.1 Extension of WebVTT header parsing (11 - 15)
241 DEFINE_STATIC_LOCAL(const AtomicString, regionHeaderName, ("Region", AtomicS tring::ConstructFromLiteral)); 241 DEFINE_STATIC_LOCAL(const AtomicString, regionHeaderName, ("Region", AtomicS tring::ConstructFromLiteral));
242 242
243 // 15.4 If line contains the character ":" (A U+003A COLON), then set metada ta's 243 // 15.4 If line contains the character ":" (A U+003A COLON), then set metada ta's
244 // name to the substring of line before the first ":" character and 244 // name to the substring of line before the first ":" character and
245 // metadata's value to the substring after this character. 245 // metadata's value to the substring after this character.
246 if (!RuntimeEnabledFeatures::webVTTRegionsEnabled() || !line.contains(":")) 246 if (!RuntimeEnabledFeatures::webVTTRegionsEnabled() || !line.contains(":"))
247 return; 247 return;
248 248
249 unsigned colonPosition = line.find(":"); 249 unsigned colonPosition = line.find(":");
250 m_currentHeaderName = line.substring(0, colonPosition); 250 String headerName = line.substring(0, colonPosition);
251 251
252 // 15.5 If metadata's name equals "Region": 252 // 15.5 If metadata's name equals "Region":
253 if (m_currentHeaderName == regionHeaderName) { 253 if (headerName == regionHeaderName) {
254 m_currentHeaderValue = line.substring(colonPosition + 1, line.length() - 1); 254 String headerValue = line.substring(colonPosition + 1);
255 // 15.5.1 - 15.5.8 Region creation: Let region be a new text track regio n [...] 255 // 15.5.1 - 15.5.8 Region creation: Let region be a new text track regio n [...]
256 createNewRegion(); 256 createNewRegion(headerValue);
257 } 257 }
258 } 258 }
259 259
260 WebVTTParser::ParseState WebVTTParser::collectCueId(const String& line) 260 WebVTTParser::ParseState WebVTTParser::collectCueId(const String& line)
261 { 261 {
262 if (line.contains("-->")) 262 if (line.contains("-->"))
263 return collectTimingsAndSettings(line); 263 return collectTimingsAndSettings(line);
264 m_currentId = line; 264 m_currentId = line;
265 return TimingsAndSettings; 265 return TimingsAndSettings;
266 } 266 }
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 386
387 void WebVTTParser::resetCueValues() 387 void WebVTTParser::resetCueValues()
388 { 388 {
389 m_currentId = emptyString(); 389 m_currentId = emptyString();
390 m_currentSettings = emptyString(); 390 m_currentSettings = emptyString();
391 m_currentStartTime = 0; 391 m_currentStartTime = 0;
392 m_currentEndTime = 0; 392 m_currentEndTime = 0;
393 m_currentContent.clear(); 393 m_currentContent.clear();
394 } 394 }
395 395
396 void WebVTTParser::createNewRegion() 396 void WebVTTParser::createNewRegion(const String& headerValue)
397 { 397 {
398 if (!m_currentHeaderValue.length()) 398 if (headerValue.isEmpty())
399 return; 399 return;
400 400
401 RefPtr<VTTRegion> region = VTTRegion::create(); 401 RefPtr<VTTRegion> region = VTTRegion::create();
402 region->setRegionSettings(m_currentHeaderValue); 402 region->setRegionSettings(headerValue);
403 403
404 // 15.5.10 If the text track list of regions regions contains a region 404 // 15.5.10 If the text track list of regions regions contains a region
405 // with the same region identifier value as region, remove that region. 405 // with the same region identifier value as region, remove that region.
406 for (size_t i = 0; i < m_regionList.size(); ++i) 406 for (size_t i = 0; i < m_regionList.size(); ++i)
407 if (m_regionList[i]->id() == region->id()) { 407 if (m_regionList[i]->id() == region->id()) {
408 m_regionList.remove(i); 408 m_regionList.remove(i);
409 break; 409 break;
410 } 410 }
411 411
412 m_regionList.append(region); 412 m_regionList.append(region);
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 } 561 }
562 562
563 void WebVTTParser::skipWhiteSpace(const String& line, unsigned* position) 563 void WebVTTParser::skipWhiteSpace(const String& line, unsigned* position)
564 { 564 {
565 while (*position < line.length() && isASpace(line[*position])) 565 while (*position < line.length() && isASpace(line[*position]))
566 (*position)++; 566 (*position)++;
567 } 567 }
568 568
569 } 569 }
570 570
OLDNEW
« no previous file with comments | « Source/core/html/track/WebVTTParser.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698