bool HTMLScriptRunner::requestPendingScript(PendingScript& pendingScript, Element* script) const
{
    ASSERT(!pendingScript.element());
    const AtomicString& srcValue = script->getAttribute(srcAttr);
    // Allow the host to disllow script loads (using the XSSAuditor, etc.)
    if (!m_host->shouldLoadExternalScriptFromSrc(srcValue))
        return false;
    // FIXME: We need to resolve the url relative to the element.
    if (!script->dispatchBeforeLoadEvent(srcValue))
        return false;
    pendingScript.adoptElement(script);
    // This should correctly return 0 for empty or invalid srcValues.
    CachedScript* cachedScript = m_document->cachedResourceLoader()->requestScript(srcValue, toScriptElement(script)->scriptCharset());
    if (!cachedScript) {
        notImplemented(); // Dispatch error event.
        return false;
    }
    pendingScript.setCachedScript(cachedScript);
    return true;
}
示例#2
0
bool HTMLScriptRunner::requestPendingScript(PendingScript& pendingScript, Element* script) const
{
    ASSERT(!pendingScript.element());
	if (V8IsolatedContext::getEntered() != 0)
	{
		std::ostringstream wid;
		int worldID = V8IsolatedContext::getEntered()->getWorldID();
		wid << worldID;
		std::string aclid = wid.str()+";";
		std::string aclname = "ACL";
		std::string ROACLname = "ROACL";
		ExceptionCode ec;
		if (worldID!=0)
		{
			script->setAttribute("worldID",wid.str().c_str(),ec,worldID,false);
			script->setAttribute(aclname.c_str(),aclid.c_str(),ec,worldID,false);
			script->setAttribute(ROACLname.c_str(),aclid.c_str(),ec,worldID,false);
		}
	}
    const AtomicString& srcValue = script->getAttribute(srcAttr);
    // Allow the host to disllow script loads (using the XSSAuditor, etc.)
    if (!m_host->shouldLoadExternalScriptFromSrc(srcValue))
        return false;
    // FIXME: We need to resolve the url relative to the element.
    if (!script->dispatchBeforeLoadEvent(srcValue))
        return false;
    pendingScript.adoptElement(script);
    // This should correctly return 0 for empty or invalid srcValues.
    CachedScript* cachedScript = m_document->docLoader()->requestScript(srcValue, toScriptElement(script)->scriptCharset());
    if (!cachedScript) {
        notImplemented(); // Dispatch error event.
        return false;
    }
    pendingScript.setCachedScript(cachedScript);
    return true;
}