JSSVGElementInstanceCustom.cpp [plain text]
#include "config.h"
#if ENABLE(SVG)
#include "JSSVGElementInstance.h"
#include "JSDOMWindow.h"
#include "JSEventListener.h"
#include "JSSVGElement.h"
#include "SVGElementInstance.h"
using namespace JSC;
namespace WebCore {
void JSSVGElementInstance::mark()
{
DOMObject::mark();
JSNode* correspondingWrapper = getCachedDOMNodeWrapper(impl()->correspondingElement()->document(), impl()->correspondingElement());
if (correspondingWrapper && !correspondingWrapper->marked())
correspondingWrapper->mark();
}
JSValue JSSVGElementInstance::addEventListener(ExecState* exec, const ArgList& args)
{
JSDOMGlobalObject* globalObject = toJSDOMGlobalObject(impl()->scriptExecutionContext());
if (!globalObject)
return jsUndefined();
if (RefPtr<JSEventListener> listener = globalObject->findOrCreateJSEventListener(args.at(1)))
impl()->addEventListener(args.at(0).toString(exec), listener.release(), args.at(2).toBoolean(exec));
return jsUndefined();
}
JSValue JSSVGElementInstance::removeEventListener(ExecState* exec, const ArgList& args)
{
JSDOMGlobalObject* globalObject = toJSDOMGlobalObject(impl()->scriptExecutionContext());
if (!globalObject)
return jsUndefined();
if (JSEventListener* listener = globalObject->findJSEventListener(args.at(1)))
impl()->removeEventListener(args.at(0).toString(exec), listener, args.at(2).toBoolean(exec));
return jsUndefined();
}
void JSSVGElementInstance::pushEventHandlerScope(ExecState*, ScopeChain&) const
{
}
JSC::JSValue toJS(JSC::ExecState* exec, SVGElementInstance* object)
{
JSValue result = getDOMObjectWrapper<JSSVGElementInstance>(exec, object);
if (object)
toJS(exec, object->correspondingElement());
return result;
}
}
#endif // ENABLE(SVG)