String OptionElement::collectOptionInnerText(const Element* element) { /// M: @{ StringBuilder text; for (Node* node = element->firstChild(); node; ) { if (node->isTextNode() || node->nodeType() == Node::CDATA_SECTION_NODE) text.append(node->nodeValue()); // Text nodes inside script elements are not part of the option text. if (node->isElementNode() && toScriptLoaderIfPossible(toElement(node))) node = NodeTraversal::nextSkippingChildren(*node, element); else node = NodeTraversal::next(*node, element); } return text.toString(); /// @} }
void ScriptRunner::timerFired(Timer<ScriptRunner>* timer) { ASSERT_UNUSED(timer, timer == &m_timer); RefPtr<Document> protect(m_document); Vector<PendingScript> scripts; scripts.swap(m_scriptsToExecuteSoon); size_t numInOrderScriptsToExecute = 0; for (; numInOrderScriptsToExecute < m_scriptsToExecuteInOrder.size() && m_scriptsToExecuteInOrder[numInOrderScriptsToExecute].resource()->isLoaded(); ++numInOrderScriptsToExecute) scripts.append(m_scriptsToExecuteInOrder[numInOrderScriptsToExecute]); if (numInOrderScriptsToExecute) m_scriptsToExecuteInOrder.remove(0, numInOrderScriptsToExecute); size_t size = scripts.size(); for (size_t i = 0; i < size; ++i) { ScriptResource* resource = scripts[i].resource(); RefPtr<Element> element = scripts[i].releaseElementAndClear(); toScriptLoaderIfPossible(element.get())->execute(resource); m_document->decrementLoadEventDelayCount(); } }