diff options
Diffstat (limited to 'Source/WebCore/bindings/js/JSElementCustom.cpp')
-rw-r--r-- | Source/WebCore/bindings/js/JSElementCustom.cpp | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/Source/WebCore/bindings/js/JSElementCustom.cpp b/Source/WebCore/bindings/js/JSElementCustom.cpp index 021f0a683..91bb3e0d9 100644 --- a/Source/WebCore/bindings/js/JSElementCustom.cpp +++ b/Source/WebCore/bindings/js/JSElementCustom.cpp @@ -10,7 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * 3. Neither the name of Apple Inc. ("Apple") nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * @@ -38,12 +38,9 @@ #include "JSDOMBinding.h" #include "JSHTMLElementWrapperFactory.h" #include "JSNodeList.h" -#include "NodeList.h" - -#if ENABLE(SVG) #include "JSSVGElementWrapperFactory.h" +#include "NodeList.h" #include "SVGElement.h" -#endif using namespace JSC; @@ -51,24 +48,28 @@ namespace WebCore { using namespace HTMLNames; -JSValue toJSNewlyCreated(ExecState* exec, JSDOMGlobalObject* globalObject, Element* element) +static JSValue createNewElementWrapper(JSDOMGlobalObject* globalObject, Ref<Element>&& element) { - if (!element) - return jsNull(); - - ASSERT(!getCachedWrapper(currentWorld(exec), element)); + if (is<HTMLElement>(element.get())) + return createJSHTMLWrapper(globalObject, static_reference_cast<HTMLElement>(WTFMove(element))); + if (is<SVGElement>(element.get())) + return createJSSVGWrapper(globalObject, static_reference_cast<SVGElement>(WTFMove(element))); + return createWrapper<Element>(globalObject, WTFMove(element)); +} - JSDOMWrapper* wrapper; - if (element->isHTMLElement()) - wrapper = createJSHTMLWrapper(exec, globalObject, toHTMLElement(element)); -#if ENABLE(SVG) - else if (element->isSVGElement()) - wrapper = createJSSVGWrapper(exec, globalObject, toSVGElement(element)); -#endif - else - wrapper = CREATE_DOM_WRAPPER(exec, globalObject, Element, element); +JSValue toJS(ExecState*, JSDOMGlobalObject* globalObject, Element& element) +{ + if (auto* wrapper = getCachedWrapper(globalObject->world(), element)) + return wrapper; + return createNewElementWrapper(globalObject, element); +} - return wrapper; +JSValue toJSNewlyCreated(ExecState*, JSDOMGlobalObject* globalObject, Ref<Element>&& element) +{ + if (element->isDefinedCustomElement()) + return getCachedWrapper(globalObject->world(), element); + ASSERT(!getCachedWrapper(globalObject->world(), element)); + return createNewElementWrapper(globalObject, WTFMove(element)); } } // namespace WebCore |