SVGScriptElement.cpp [plain text]
#include "config.h"
#if ENABLE(SVG)
#include "PlatformString.h"
#include "Attr.h"
#include "StringImpl.h"
#include "SVGNames.h"
#include "SVGScriptElement.h"
namespace WebCore {
SVGScriptElement::SVGScriptElement(const QualifiedName& tagName, Document* doc)
: SVGElement(tagName, doc)
, SVGURIReference()
, SVGExternalResourcesRequired()
{
}
SVGScriptElement::~SVGScriptElement()
{
}
String SVGScriptElement::type() const
{
return m_type;
}
void SVGScriptElement::setType(const String& type)
{
m_type = type;
}
void SVGScriptElement::parseMappedAttribute(MappedAttribute *attr)
{
if (attr->name() == SVGNames::typeAttr)
setType(attr->value());
else {
if(SVGURIReference::parseMappedAttribute(attr))
return;
if(SVGExternalResourcesRequired::parseMappedAttribute(attr))
return;
SVGElement::parseMappedAttribute(attr);
}
}
void SVGScriptElement::executeScript(Document *document, StringImpl *jsCode)
{
if(!document || !jsCode)
return;
#if 0
Ecma *ecmaEngine = document->ecmaEngine();
if(!ecmaEngine)
return;
KJS::Interpreter::lock();
KJS::Completion comp = ecmaEngine->evaluate(jsCode.deprecatedString(), ecmaEngine->globalObject());
if (comp.complType() == KJS::Throw) {
KJS::ExecState *exec = ecmaEngine->globalExec();
KJS::JSValue *exVal = comp.value();
int lineno = -1;
if (exVal->isObject()) {
KJS::JSValue *lineVal = static_cast<KJS::JSObject *>(exVal)->get(exec, "line");
if(lineVal->type() == KJS::NumberType)
lineno = lineVal->toInt32(exec);
}
SVGDocument *svgDocument = static_cast<SVGDocument *>(document);
if (svgDocument && document->hasListenerType(ERROR_EVENT)) {
RefPtr<Event> event = svgDocument->createEvent("SVGEvents");
event->initEvent(EventNames::errorEvent, false, false);
svgDocument->dispatchRecursiveEvent(event.get(), svgDocument->lastChild());
}
kdDebug() << "[SVGScriptElement] Evaluation error, line " << (lineno != -1 ? DeprecatedString::number(lineno) : DeprecatedString::fromLatin1("N/A")) << " " << exVal->toString(exec).deprecatedString() << endl;
}
else if(comp.complType() == KJS::ReturnValue)
kdDebug() << "[SVGScriptElement] Return value: " << comp.value()->toString(ecmaEngine->globalExec()).deprecatedString() << endl;
else if(comp.complType() == KJS::Normal)
kdDebug() << "[SVGScriptElement] Evaluated ecma script!" << endl;
KJS::Interpreter::unlock();
#else
if (jsCode)
String(jsCode);
#endif
}
}
#endif // ENABLE(SVG)