summaryrefslogtreecommitdiff
path: root/Source/WebCore/bindings/js/JSElementCustom.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/bindings/js/JSElementCustom.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/bindings/js/JSElementCustom.cpp')
-rw-r--r--Source/WebCore/bindings/js/JSElementCustom.cpp41
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