// For special android files void WebUrlLoaderClient::didReceiveAndroidFileData(PassOwnPtr<std::vector<char> > vector) { if (!isActive() || !vector->size()) return; // didReceiveData will take a copy of the data m_resourceHandle->client()->didReceiveData(m_resourceHandle.get(), vector->begin(), vector->size(), vector->size()); }
void HTMLDocumentParser::processTokensFromBackgroundParser(PassOwnPtr<CompactHTMLTokenStream> tokens) { ASSERT(shouldUseThreading()); // didReceiveTokensFromBackgroundParser can cause this parser to be detached from the Document, // but we need to ensure it isn't deleted yet. RefPtr<HTMLDocumentParser> protect(this); // FIXME: Add support for InspectorInstrumentation. for (Vector<CompactHTMLToken>::const_iterator it = tokens->begin(); it != tokens->end(); ++it) { ASSERT(!isWaitingForScripts()); // FIXME: Call m_xssAuditor.filterToken(*it). m_textPosition = it->textPosition(); constructTreeFromCompactHTMLToken(*it); if (isStopped()) return; // FIXME: We'll probably need to check document()->frame()->navigationScheduler()->locationChangePending()) // as we do in canTakeNextToken; if (isWaitingForScripts()) { ASSERT(it + 1 == tokens->end()); // The </script> is assumed to be the last token of this bunch. runScriptsForPausedTreeBuilder(); return; } if (it->type() == HTMLTokenTypes::EndOfFile) { ASSERT(it + 1 == tokens->end()); // The EOF is assumed to be the last token of this bunch. prepareToStopParsing(); return; } } }