PassRefPtr<DocumentFragment> WebVTTParser::createDocumentFragmentFromCueText(const String& text) { // Cue text processing based on // 4.8.10.13.4 WebVTT cue text parsing rules and // 4.8.10.13.5 WebVTT cue text DOM construction rules. ASSERT(m_scriptExecutionContext->isDocument()); Document* document = toDocument(m_scriptExecutionContext); ASSERT(document); RefPtr<DocumentFragment> fragment = DocumentFragment::create(*document); if (!text.length()) { fragment->parserAppendChild(Text::create(*document, "")); return fragment; } m_currentNode = fragment; m_tokenizer->reset(); m_token.clear(); m_languageStack.clear(); SegmentedString content(text); while (m_tokenizer->nextToken(content, m_token)) constructTreeFromToken(*document); return fragment.release(); }
void WebVTTParser::processCueText() { // 51 - Cue text processing based on // 4.8.10.13.4 WebVTT cue text parsing rules and // 4.8.10.13.5 WebVTT cue text DOM construction rules. if (m_currentContent.length() <= 0) return; ASSERT(m_scriptExecutionContext->isDocument()); Document* document = static_cast<Document*>(m_scriptExecutionContext); m_attachmentRoot = DocumentFragment::create(document); m_currentNode = m_attachmentRoot; m_tokenizer->reset(); m_token.clear(); SegmentedString content(m_currentContent.toString()); while (m_tokenizer->nextToken(content, m_token)) constructTreeFromToken(document); RefPtr<TextTrackCue> cue = TextTrackCue::create(m_scriptExecutionContext, m_currentId, m_currentStartTime, m_currentEndTime, m_currentContent.toString(), m_currentSettings, false); cue->setCueHTML(m_attachmentRoot); m_cuelist.append(cue); m_client->newCuesParsed(); }
PassRefPtr<DocumentFragment> WebVTTTreeBuilder::buildFromString(const String& cueText) { // Cue text processing based on // 5.4 WebVTT cue text parsing rules, and // 5.5 WebVTT cue text DOM construction rules. RefPtr<DocumentFragment> fragment = DocumentFragment::create(m_document); if (cueText.isEmpty()) { fragment->parserAppendChild(Text::create(m_document, emptyString())); return fragment.release(); } m_currentNode = fragment; WebVTTTokenizer tokenizer(cueText); m_languageStack.clear(); while (tokenizer.nextToken(m_token)) constructTreeFromToken(m_document); return fragment.release(); }
PassRefPtr<DocumentFragment> WebVTTParser::createDocumentFragmentFromCueText(const String& text) { // Cue text processing based on // 4.8.10.13.4 WebVTT cue text parsing rules and // 4.8.10.13.5 WebVTT cue text DOM construction rules. if (!text.length()) return 0; ASSERT(m_scriptExecutionContext->isDocument()); Document* document = static_cast<Document*>(m_scriptExecutionContext); RefPtr<DocumentFragment> fragment = DocumentFragment::create(document); m_currentNode = fragment; m_tokenizer->reset(); m_token.clear(); SegmentedString content(text); while (m_tokenizer->nextToken(content, m_token)) constructTreeFromToken(document); return fragment.release(); }