static v8::Handle<v8::Value> insertItemBeforeCallback(const v8::Arguments& args) { INC_STATS("DOM.SVGPathSegList.insertItemBefore"); SVGPathSegList* imp = V8SVGPathSegList::toNative(args.Holder()); ExceptionCode ec = 0; { EXCEPTION_BLOCK(SVGPathSeg*, newItem, V8SVGPathSeg::HasInstance(args[0]) ? V8SVGPathSeg::toNative(v8::Handle<v8::Object>::Cast(args[0])) : 0); EXCEPTION_BLOCK(unsigned, index, toUInt32(args[1])); RefPtr<SVGPathSeg> result = imp->insertItemBefore(newItem, index, ec); if (UNLIKELY(ec)) goto fail; SVGElement* context = V8Proxy::svgContext(imp); V8Proxy::setSVGContext(result.get(), context); context->svgAttributeChanged(imp->associatedAttributeName()); return toV8(result.release()); } fail: V8Proxy::setDOMException(ec); return v8::Handle<v8::Value>(); }
JSValue JSSVGPathSegList::insertItemBefore(ExecState* exec, const ArgList& args) { ExceptionCode ec = 0; SVGPathSeg* newItem = toSVGPathSeg(args.at(0)); bool indexOk; unsigned index = args.at(1).toInt32(exec, indexOk); if (!indexOk) { setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined(); } SVGPathSegList* list = impl(); SVGElement* context = JSSVGContextCache::svgContextForDOMObject(this); JSValue result = toJS(exec, globalObject(), WTF::getPtr(list->insertItemBefore(newItem, index, ec)), context); setDOMException(exec, ec); JSSVGContextCache::propagateSVGDOMChange(this, list->associatedAttributeName()); return result; }