void XMLTokenizer::notifyFinished(CachedResource* finishedObj) { ASSERT(m_pendingScript == finishedObj); ASSERT(m_pendingScript->accessCount() > 0); String cachedScriptUrl = m_pendingScript->url(); String scriptSource = m_pendingScript->script(); bool errorOccurred = m_pendingScript->errorOccurred(); m_pendingScript->removeClient(this); m_pendingScript = 0; RefPtr<Element> e = m_scriptElement; m_scriptElement = 0; if (errorOccurred) EventTargetNodeCast(e.get())->dispatchHTMLEvent(eventNames().errorEvent, true, false); else { m_view->frame()->loader()->executeScript(cachedScriptUrl, 1, scriptSource); EventTargetNodeCast(e.get())->dispatchHTMLEvent(eventNames().loadEvent, false, false); } m_scriptElement = 0; if (!m_requestingScript) resumeParsing(); }
void XMLTokenizer::notifyFinished(CachedResource* unusedResource) { ASSERT_UNUSED(unusedResource, unusedResource == m_pendingScript); ASSERT(m_pendingScript->accessCount() > 0); ScriptSourceCode sourceCode(m_pendingScript.get()); bool errorOccurred = m_pendingScript->errorOccurred(); m_pendingScript->removeClient(this); m_pendingScript = 0; RefPtr<Element> e = m_scriptElement; m_scriptElement = 0; ScriptElement* scriptElement = toScriptElement(e.get()); ASSERT(scriptElement); if (errorOccurred) scriptElement->dispatchErrorEvent(); else { m_view->frame()->loader()->executeScript(sourceCode); scriptElement->dispatchLoadEvent(); } m_scriptElement = 0; if (!m_requestingScript) resumeParsing(); }