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

Side by Side Diff: third_party/WebKit/Source/core/html/track/vtt/VTTParser.cpp

Issue 2682333002: Implement VTTCue.region and sync the VTTRegion interface (Closed)
Patch Set: Add DCHECK Created 3 years, 10 months 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
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 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 m_lineReader.append(textData); 104 m_lineReader.append(textData);
105 parse(); 105 parse();
106 } 106 }
107 107
108 void VTTParser::flush() { 108 void VTTParser::flush() {
109 String textData = m_decoder->flush(); 109 String textData = m_decoder->flush();
110 m_lineReader.append(textData); 110 m_lineReader.append(textData);
111 m_lineReader.setEndOfStream(); 111 m_lineReader.setEndOfStream();
112 parse(); 112 parse();
113 flushPendingCue(); 113 flushPendingCue();
114 m_regionMap.clear();
114 } 115 }
115 116
116 void VTTParser::parse() { 117 void VTTParser::parse() {
117 // WebVTT parser algorithm. (5.1 WebVTT file parsing.) 118 // WebVTT parser algorithm. (5.1 WebVTT file parsing.)
118 // Steps 1 - 3 - Initial setup. 119 // Steps 1 - 3 - Initial setup.
119 120
120 String line; 121 String line;
121 while (m_lineReader.getLine(line)) { 122 while (m_lineReader.getLine(line)) {
122 switch (m_state) { 123 switch (m_state) {
123 case Initial: 124 case Initial:
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 Document& document, 370 Document& document,
370 const String& cueText) { 371 const String& cueText) {
371 VTTTreeBuilder treeBuilder(document); 372 VTTTreeBuilder treeBuilder(document);
372 return treeBuilder.buildFromString(cueText); 373 return treeBuilder.buildFromString(cueText);
373 } 374 }
374 375
375 void VTTParser::createNewCue() { 376 void VTTParser::createNewCue() {
376 VTTCue* cue = VTTCue::create(*m_document, m_currentStartTime, 377 VTTCue* cue = VTTCue::create(*m_document, m_currentStartTime,
377 m_currentEndTime, m_currentContent.toString()); 378 m_currentEndTime, m_currentContent.toString());
378 cue->setId(m_currentId); 379 cue->setId(m_currentId);
379 cue->parseSettings(m_currentSettings); 380 cue->parseSettings(&m_regionMap, m_currentSettings);
380 381
381 m_cueList.push_back(cue); 382 m_cueList.push_back(cue);
382 if (m_client) 383 if (m_client)
383 m_client->newCuesParsed(); 384 m_client->newCuesParsed();
384 } 385 }
385 386
386 void VTTParser::resetCueValues() { 387 void VTTParser::resetCueValues() {
387 m_currentId = emptyAtom; 388 m_currentId = emptyAtom;
388 m_currentSettings = emptyString; 389 m_currentSettings = emptyString;
389 m_currentStartTime = 0; 390 m_currentStartTime = 0;
(...skipping 13 matching lines...) Expand all
403 // with the same region identifier value as region, remove that region. 404 // with the same region identifier value as region, remove that region.
404 for (size_t i = 0; i < m_regionList.size(); ++i) { 405 for (size_t i = 0; i < m_regionList.size(); ++i) {
405 if (m_regionList[i]->id() == region->id()) { 406 if (m_regionList[i]->id() == region->id()) {
406 m_regionList.remove(i); 407 m_regionList.remove(i);
407 break; 408 break;
408 } 409 }
409 } 410 }
410 411
411 // Step 12.5.11 412 // Step 12.5.11
412 m_regionList.push_back(region); 413 m_regionList.push_back(region);
414
415 if (region->id().isEmpty())
416 return;
417 m_regionMap.set(region->id(), region);
413 } 418 }
414 419
415 bool VTTParser::collectTimeStamp(const String& line, double& timeStamp) { 420 bool VTTParser::collectTimeStamp(const String& line, double& timeStamp) {
416 VTTScanner input(line); 421 VTTScanner input(line);
417 return collectTimeStamp(input, timeStamp); 422 return collectTimeStamp(input, timeStamp);
418 } 423 }
419 424
420 bool VTTParser::collectTimeStamp(VTTScanner& input, double& timeStamp) { 425 bool VTTParser::collectTimeStamp(VTTScanner& input, double& timeStamp) {
421 // Collect a WebVTT timestamp (5.3 WebVTT cue timings and settings parsing.) 426 // Collect a WebVTT timestamp (5.3 WebVTT cue timings and settings parsing.)
422 // Steps 1 - 4 - Initial checks, let most significant units be minutes. 427 // Steps 1 - 4 - Initial checks, let most significant units be minutes.
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 } 575 }
571 default: 576 default:
572 break; 577 break;
573 } 578 }
574 } 579 }
575 580
576 DEFINE_TRACE(VTTParser) { 581 DEFINE_TRACE(VTTParser) {
577 visitor->trace(m_document); 582 visitor->trace(m_document);
578 visitor->trace(m_client); 583 visitor->trace(m_client);
579 visitor->trace(m_cueList); 584 visitor->trace(m_cueList);
585 visitor->trace(m_regionMap);
580 visitor->trace(m_regionList); 586 visitor->trace(m_regionList);
581 } 587 }
582 588
583 } // namespace blink 589 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/html/track/vtt/VTTParser.h ('k') | third_party/WebKit/Source/core/html/track/vtt/VTTRegion.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698