/* * This file is part of the WebKit open source project. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include "config.h" #include "WebKitDOMElement.h" #include #include "DOMObjectCache.h" #include #include #include #include "GObjectEventListener.h" #include #include #include "WebKitDOMAttrPrivate.h" #include "WebKitDOMCSSStyleDeclarationPrivate.h" #include "WebKitDOMDOMTokenListPrivate.h" #include "WebKitDOMElementPrivate.h" #include "WebKitDOMEventPrivate.h" #include "WebKitDOMEventTarget.h" #include "WebKitDOMHTMLCollectionPrivate.h" #include "WebKitDOMNamedNodeMapPrivate.h" #include "WebKitDOMNodeListPrivate.h" #include "WebKitDOMNodePrivate.h" #include "WebKitDOMPrivate.h" #include "ConvertToUTF8String.h" #include "WebKitDOMElementUnstable.h" #include #include namespace WebKit { WebKitDOMElement* kit(WebCore::Element* obj) { return WEBKIT_DOM_ELEMENT(kit(static_cast(obj))); } WebCore::Element* core(WebKitDOMElement* request) { return request ? static_cast(WEBKIT_DOM_OBJECT(request)->coreObject) : 0; } WebKitDOMElement* wrapElement(WebCore::Element* coreObject) { ASSERT(coreObject); return WEBKIT_DOM_ELEMENT(g_object_new(WEBKIT_DOM_TYPE_ELEMENT, "core-object", coreObject, nullptr)); } } // namespace WebKit static gboolean webkit_dom_element_dispatch_event(WebKitDOMEventTarget* target, WebKitDOMEvent* event, GError** error) { WebCore::Event* coreEvent = WebKit::core(event); if (!coreEvent) return false; WebCore::Element* coreTarget = static_cast(WEBKIT_DOM_OBJECT(target)->coreObject); auto result = coreTarget->dispatchEventForBindings(*coreEvent); if (result.hasException()) { WebCore::ExceptionCodeDescription description(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), description.code, description.name); return false; } return result.releaseReturnValue(); } static gboolean webkit_dom_element_add_event_listener(WebKitDOMEventTarget* target, const char* eventName, GClosure* handler, gboolean useCapture) { WebCore::Element* coreTarget = static_cast(WEBKIT_DOM_OBJECT(target)->coreObject); return WebKit::GObjectEventListener::addEventListener(G_OBJECT(target), coreTarget, eventName, handler, useCapture); } static gboolean webkit_dom_element_remove_event_listener(WebKitDOMEventTarget* target, const char* eventName, GClosure* handler, gboolean useCapture) { WebCore::Element* coreTarget = static_cast(WEBKIT_DOM_OBJECT(target)->coreObject); return WebKit::GObjectEventListener::removeEventListener(G_OBJECT(target), coreTarget, eventName, handler, useCapture); } static void webkit_dom_event_target_init(WebKitDOMEventTargetIface* iface) { iface->dispatch_event = webkit_dom_element_dispatch_event; iface->add_event_listener = webkit_dom_element_add_event_listener; iface->remove_event_listener = webkit_dom_element_remove_event_listener; } G_DEFINE_TYPE_WITH_CODE(WebKitDOMElement, webkit_dom_element, WEBKIT_DOM_TYPE_NODE, G_IMPLEMENT_INTERFACE(WEBKIT_DOM_TYPE_EVENT_TARGET, webkit_dom_event_target_init)) enum { PROP_0, PROP_TAG_NAME, PROP_ATTRIBUTES, PROP_STYLE, PROP_ID, PROP_NAMESPACE_URI, PROP_PREFIX, PROP_LOCAL_NAME, PROP_OFFSET_LEFT, PROP_OFFSET_TOP, PROP_OFFSET_WIDTH, PROP_OFFSET_HEIGHT, PROP_CLIENT_LEFT, PROP_CLIENT_TOP, PROP_CLIENT_WIDTH, PROP_CLIENT_HEIGHT, PROP_SCROLL_LEFT, PROP_SCROLL_TOP, PROP_SCROLL_WIDTH, PROP_SCROLL_HEIGHT, PROP_OFFSET_PARENT, PROP_INNER_HTML, PROP_OUTER_HTML, PROP_CLASS_NAME, PROP_CLASS_LIST, PROP_WEBKIT_REGION_OVERSET, PROP_PREVIOUS_ELEMENT_SIBLING, PROP_NEXT_ELEMENT_SIBLING, PROP_CHILDREN, PROP_FIRST_ELEMENT_CHILD, PROP_LAST_ELEMENT_CHILD, PROP_CHILD_ELEMENT_COUNT, }; static void webkit_dom_element_set_property(GObject* object, guint propertyId, const GValue* value, GParamSpec* pspec) { WebKitDOMElement* self = WEBKIT_DOM_ELEMENT(object); switch (propertyId) { case PROP_ID: webkit_dom_element_set_id(self, g_value_get_string(value)); break; case PROP_SCROLL_LEFT: webkit_dom_element_set_scroll_left(self, g_value_get_long(value)); break; case PROP_SCROLL_TOP: webkit_dom_element_set_scroll_top(self, g_value_get_long(value)); break; case PROP_INNER_HTML: webkit_dom_element_set_inner_html(self, g_value_get_string(value), nullptr); break; case PROP_OUTER_HTML: webkit_dom_element_set_outer_html(self, g_value_get_string(value), nullptr); break; case PROP_CLASS_NAME: webkit_dom_element_set_class_name(self, g_value_get_string(value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, pspec); break; } } static void webkit_dom_element_get_property(GObject* object, guint propertyId, GValue* value, GParamSpec* pspec) { WebKitDOMElement* self = WEBKIT_DOM_ELEMENT(object); switch (propertyId) { case PROP_TAG_NAME: g_value_take_string(value, webkit_dom_element_get_tag_name(self)); break; case PROP_ATTRIBUTES: g_value_set_object(value, webkit_dom_element_get_attributes(self)); break; case PROP_STYLE: g_value_set_object(value, webkit_dom_element_get_style(self)); break; case PROP_ID: g_value_take_string(value, webkit_dom_element_get_id(self)); break; case PROP_NAMESPACE_URI: g_value_take_string(value, webkit_dom_element_get_namespace_uri(self)); break; case PROP_PREFIX: g_value_take_string(value, webkit_dom_element_get_prefix(self)); break; case PROP_LOCAL_NAME: g_value_take_string(value, webkit_dom_element_get_local_name(self)); break; case PROP_OFFSET_LEFT: g_value_set_double(value, webkit_dom_element_get_offset_left(self)); break; case PROP_OFFSET_TOP: g_value_set_double(value, webkit_dom_element_get_offset_top(self)); break; case PROP_OFFSET_WIDTH: g_value_set_double(value, webkit_dom_element_get_offset_width(self)); break; case PROP_OFFSET_HEIGHT: g_value_set_double(value, webkit_dom_element_get_offset_height(self)); break; case PROP_CLIENT_LEFT: g_value_set_double(value, webkit_dom_element_get_client_left(self)); break; case PROP_CLIENT_TOP: g_value_set_double(value, webkit_dom_element_get_client_top(self)); break; case PROP_CLIENT_WIDTH: g_value_set_double(value, webkit_dom_element_get_client_width(self)); break; case PROP_CLIENT_HEIGHT: g_value_set_double(value, webkit_dom_element_get_client_height(self)); break; case PROP_SCROLL_LEFT: g_value_set_long(value, webkit_dom_element_get_scroll_left(self)); break; case PROP_SCROLL_TOP: g_value_set_long(value, webkit_dom_element_get_scroll_top(self)); break; case PROP_SCROLL_WIDTH: g_value_set_long(value, webkit_dom_element_get_scroll_width(self)); break; case PROP_SCROLL_HEIGHT: g_value_set_long(value, webkit_dom_element_get_scroll_height(self)); break; case PROP_OFFSET_PARENT: g_value_set_object(value, webkit_dom_element_get_offset_parent(self)); break; case PROP_INNER_HTML: g_value_take_string(value, webkit_dom_element_get_inner_html(self)); break; case PROP_OUTER_HTML: g_value_take_string(value, webkit_dom_element_get_outer_html(self)); break; case PROP_CLASS_NAME: g_value_take_string(value, webkit_dom_element_get_class_name(self)); break; case PROP_CLASS_LIST: g_value_set_object(value, webkit_dom_element_get_class_list(self)); break; case PROP_WEBKIT_REGION_OVERSET: g_value_take_string(value, webkit_dom_element_get_webkit_region_overset(self)); break; case PROP_PREVIOUS_ELEMENT_SIBLING: g_value_set_object(value, webkit_dom_element_get_previous_element_sibling(self)); break; case PROP_NEXT_ELEMENT_SIBLING: g_value_set_object(value, webkit_dom_element_get_next_element_sibling(self)); break; case PROP_CHILDREN: g_value_set_object(value, webkit_dom_element_get_children(self)); break; case PROP_FIRST_ELEMENT_CHILD: g_value_set_object(value, webkit_dom_element_get_first_element_child(self)); break; case PROP_LAST_ELEMENT_CHILD: g_value_set_object(value, webkit_dom_element_get_last_element_child(self)); break; case PROP_CHILD_ELEMENT_COUNT: g_value_set_ulong(value, webkit_dom_element_get_child_element_count(self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, pspec); break; } } static void webkit_dom_element_class_init(WebKitDOMElementClass* requestClass) { GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass); gobjectClass->set_property = webkit_dom_element_set_property; gobjectClass->get_property = webkit_dom_element_get_property; g_object_class_install_property( gobjectClass, PROP_TAG_NAME, g_param_spec_string( "tag-name", "Element:tag-name", "read-only gchar* Element:tag-name", "", WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_ATTRIBUTES, g_param_spec_object( "attributes", "Element:attributes", "read-only WebKitDOMNamedNodeMap* Element:attributes", WEBKIT_DOM_TYPE_NAMED_NODE_MAP, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_STYLE, g_param_spec_object( "style", "Element:style", "read-only WebKitDOMCSSStyleDeclaration* Element:style", WEBKIT_DOM_TYPE_CSS_STYLE_DECLARATION, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_ID, g_param_spec_string( "id", "Element:id", "read-write gchar* Element:id", "", WEBKIT_PARAM_READWRITE)); g_object_class_install_property( gobjectClass, PROP_NAMESPACE_URI, g_param_spec_string( "namespace-uri", "Element:namespace-uri", "read-only gchar* Element:namespace-uri", "", WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_PREFIX, g_param_spec_string( "prefix", "Element:prefix", "read-only gchar* Element:prefix", "", WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_LOCAL_NAME, g_param_spec_string( "local-name", "Element:local-name", "read-only gchar* Element:local-name", "", WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_OFFSET_LEFT, g_param_spec_double( "offset-left", "Element:offset-left", "read-only gdouble Element:offset-left", -G_MAXDOUBLE, G_MAXDOUBLE, 0, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_OFFSET_TOP, g_param_spec_double( "offset-top", "Element:offset-top", "read-only gdouble Element:offset-top", -G_MAXDOUBLE, G_MAXDOUBLE, 0, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_OFFSET_WIDTH, g_param_spec_double( "offset-width", "Element:offset-width", "read-only gdouble Element:offset-width", -G_MAXDOUBLE, G_MAXDOUBLE, 0, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_OFFSET_HEIGHT, g_param_spec_double( "offset-height", "Element:offset-height", "read-only gdouble Element:offset-height", -G_MAXDOUBLE, G_MAXDOUBLE, 0, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_CLIENT_LEFT, g_param_spec_double( "client-left", "Element:client-left", "read-only gdouble Element:client-left", -G_MAXDOUBLE, G_MAXDOUBLE, 0, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_CLIENT_TOP, g_param_spec_double( "client-top", "Element:client-top", "read-only gdouble Element:client-top", -G_MAXDOUBLE, G_MAXDOUBLE, 0, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_CLIENT_WIDTH, g_param_spec_double( "client-width", "Element:client-width", "read-only gdouble Element:client-width", -G_MAXDOUBLE, G_MAXDOUBLE, 0, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_CLIENT_HEIGHT, g_param_spec_double( "client-height", "Element:client-height", "read-only gdouble Element:client-height", -G_MAXDOUBLE, G_MAXDOUBLE, 0, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_SCROLL_LEFT, g_param_spec_long( "scroll-left", "Element:scroll-left", "read-write glong Element:scroll-left", G_MINLONG, G_MAXLONG, 0, WEBKIT_PARAM_READWRITE)); g_object_class_install_property( gobjectClass, PROP_SCROLL_TOP, g_param_spec_long( "scroll-top", "Element:scroll-top", "read-write glong Element:scroll-top", G_MINLONG, G_MAXLONG, 0, WEBKIT_PARAM_READWRITE)); g_object_class_install_property( gobjectClass, PROP_SCROLL_WIDTH, g_param_spec_long( "scroll-width", "Element:scroll-width", "read-only glong Element:scroll-width", G_MINLONG, G_MAXLONG, 0, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_SCROLL_HEIGHT, g_param_spec_long( "scroll-height", "Element:scroll-height", "read-only glong Element:scroll-height", G_MINLONG, G_MAXLONG, 0, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_OFFSET_PARENT, g_param_spec_object( "offset-parent", "Element:offset-parent", "read-only WebKitDOMElement* Element:offset-parent", WEBKIT_DOM_TYPE_ELEMENT, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_INNER_HTML, g_param_spec_string( "inner-html", "Element:inner-html", "read-write gchar* Element:inner-html", "", WEBKIT_PARAM_READWRITE)); g_object_class_install_property( gobjectClass, PROP_OUTER_HTML, g_param_spec_string( "outer-html", "Element:outer-html", "read-write gchar* Element:outer-html", "", WEBKIT_PARAM_READWRITE)); g_object_class_install_property( gobjectClass, PROP_CLASS_NAME, g_param_spec_string( "class-name", "Element:class-name", "read-write gchar* Element:class-name", "", WEBKIT_PARAM_READWRITE)); g_object_class_install_property( gobjectClass, PROP_CLASS_LIST, g_param_spec_object( "class-list", "Element:class-list", "read-only WebKitDOMDOMTokenList* Element:class-list", WEBKIT_DOM_TYPE_DOM_TOKEN_LIST, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_WEBKIT_REGION_OVERSET, g_param_spec_string( "webkit-region-overset", "Element:webkit-region-overset", "read-only gchar* Element:webkit-region-overset", "", WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_PREVIOUS_ELEMENT_SIBLING, g_param_spec_object( "previous-element-sibling", "Element:previous-element-sibling", "read-only WebKitDOMElement* Element:previous-element-sibling", WEBKIT_DOM_TYPE_ELEMENT, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_NEXT_ELEMENT_SIBLING, g_param_spec_object( "next-element-sibling", "Element:next-element-sibling", "read-only WebKitDOMElement* Element:next-element-sibling", WEBKIT_DOM_TYPE_ELEMENT, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_CHILDREN, g_param_spec_object( "children", "Element:children", "read-only WebKitDOMHTMLCollection* Element:children", WEBKIT_DOM_TYPE_HTML_COLLECTION, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_FIRST_ELEMENT_CHILD, g_param_spec_object( "first-element-child", "Element:first-element-child", "read-only WebKitDOMElement* Element:first-element-child", WEBKIT_DOM_TYPE_ELEMENT, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_LAST_ELEMENT_CHILD, g_param_spec_object( "last-element-child", "Element:last-element-child", "read-only WebKitDOMElement* Element:last-element-child", WEBKIT_DOM_TYPE_ELEMENT, WEBKIT_PARAM_READABLE)); g_object_class_install_property( gobjectClass, PROP_CHILD_ELEMENT_COUNT, g_param_spec_ulong( "child-element-count", "Element:child-element-count", "read-only gulong Element:child-element-count", 0, G_MAXULONG, 0, WEBKIT_PARAM_READABLE)); } static void webkit_dom_element_init(WebKitDOMElement* request) { UNUSED_PARAM(request); } gchar* webkit_dom_element_get_attribute(WebKitDOMElement* self, const gchar* name) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); g_return_val_if_fail(name, 0); WebCore::Element* item = WebKit::core(self); WTF::String convertedName = WTF::String::fromUTF8(name); gchar* result = convertToUTF8String(item->getAttribute(convertedName)); return result; } void webkit_dom_element_set_attribute(WebKitDOMElement* self, const gchar* name, const gchar* value, GError** error) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); g_return_if_fail(name); g_return_if_fail(value); g_return_if_fail(!error || !*error); WebCore::Element* item = WebKit::core(self); WTF::String convertedName = WTF::String::fromUTF8(name); WTF::String convertedValue = WTF::String::fromUTF8(value); auto result = item->setAttribute(convertedName, convertedValue); if (result.hasException()) { WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); } } void webkit_dom_element_remove_attribute(WebKitDOMElement* self, const gchar* name) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); g_return_if_fail(name); WebCore::Element* item = WebKit::core(self); WTF::String convertedName = WTF::String::fromUTF8(name); item->removeAttribute(convertedName); } WebKitDOMAttr* webkit_dom_element_get_attribute_node(WebKitDOMElement* self, const gchar* name) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); g_return_val_if_fail(name, 0); WebCore::Element* item = WebKit::core(self); WTF::String convertedName = WTF::String::fromUTF8(name); RefPtr gobjectResult = WTF::getPtr(item->getAttributeNode(convertedName)); return WebKit::kit(gobjectResult.get()); } WebKitDOMAttr* webkit_dom_element_set_attribute_node(WebKitDOMElement* self, WebKitDOMAttr* newAttr, GError** error) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); g_return_val_if_fail(WEBKIT_DOM_IS_ATTR(newAttr), 0); g_return_val_if_fail(!error || !*error, 0); WebCore::Element* item = WebKit::core(self); WebCore::Attr* convertedNewAttr = WebKit::core(newAttr); auto result = item->setAttributeNode(*convertedNewAttr); if (result.hasException()) { WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); return nullptr; } return WebKit::kit(result.releaseReturnValue().get()); } WebKitDOMAttr* webkit_dom_element_remove_attribute_node(WebKitDOMElement* self, WebKitDOMAttr* oldAttr, GError** error) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); g_return_val_if_fail(WEBKIT_DOM_IS_ATTR(oldAttr), 0); g_return_val_if_fail(!error || !*error, 0); WebCore::Element* item = WebKit::core(self); WebCore::Attr* convertedOldAttr = WebKit::core(oldAttr); auto result = item->removeAttributeNode(*convertedOldAttr); if (result.hasException()) { WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); return nullptr; } return WebKit::kit(result.releaseReturnValue().ptr()); } WebKitDOMHTMLCollection* webkit_dom_element_get_elements_by_tag_name_as_html_collection(WebKitDOMElement* self, const gchar* name) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); g_return_val_if_fail(name, 0); WebCore::Element* item = WebKit::core(self); WTF::String convertedName = WTF::String::fromUTF8(name); RefPtr gobjectResult = WTF::getPtr(item->getElementsByTagName(convertedName)); return WebKit::kit(gobjectResult.get()); } gboolean webkit_dom_element_has_attributes(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), FALSE); WebCore::Element* item = WebKit::core(self); gboolean result = item->hasAttributes(); return result; } gchar* webkit_dom_element_get_attribute_ns(WebKitDOMElement* self, const gchar* namespaceURI, const gchar* localName) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); g_return_val_if_fail(namespaceURI, 0); g_return_val_if_fail(localName, 0); WebCore::Element* item = WebKit::core(self); WTF::String convertedNamespaceURI = WTF::String::fromUTF8(namespaceURI); WTF::String convertedLocalName = WTF::String::fromUTF8(localName); gchar* result = convertToUTF8String(item->getAttributeNS(convertedNamespaceURI, convertedLocalName)); return result; } void webkit_dom_element_set_attribute_ns(WebKitDOMElement* self, const gchar* namespaceURI, const gchar* qualifiedName, const gchar* value, GError** error) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); g_return_if_fail(qualifiedName); g_return_if_fail(value); g_return_if_fail(!error || !*error); WebCore::Element* item = WebKit::core(self); WTF::String convertedNamespaceURI = WTF::String::fromUTF8(namespaceURI); WTF::String convertedQualifiedName = WTF::String::fromUTF8(qualifiedName); WTF::String convertedValue = WTF::String::fromUTF8(value); auto result = item->setAttributeNS(convertedNamespaceURI, convertedQualifiedName, convertedValue); if (result.hasException()) { WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); } } void webkit_dom_element_remove_attribute_ns(WebKitDOMElement* self, const gchar* namespaceURI, const gchar* localName) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); g_return_if_fail(namespaceURI); g_return_if_fail(localName); WebCore::Element* item = WebKit::core(self); WTF::String convertedNamespaceURI = WTF::String::fromUTF8(namespaceURI); WTF::String convertedLocalName = WTF::String::fromUTF8(localName); item->removeAttributeNS(convertedNamespaceURI, convertedLocalName); } WebKitDOMHTMLCollection* webkit_dom_element_get_elements_by_tag_name_ns_as_html_collection(WebKitDOMElement* self, const gchar* namespaceURI, const gchar* localName) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); g_return_val_if_fail(namespaceURI, 0); g_return_val_if_fail(localName, 0); WebCore::Element* item = WebKit::core(self); WTF::String convertedNamespaceURI = WTF::String::fromUTF8(namespaceURI); WTF::String convertedLocalName = WTF::String::fromUTF8(localName); RefPtr gobjectResult = WTF::getPtr(item->getElementsByTagNameNS(convertedNamespaceURI, convertedLocalName)); return WebKit::kit(gobjectResult.get()); } WebKitDOMAttr* webkit_dom_element_get_attribute_node_ns(WebKitDOMElement* self, const gchar* namespaceURI, const gchar* localName) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); g_return_val_if_fail(namespaceURI, 0); g_return_val_if_fail(localName, 0); WebCore::Element* item = WebKit::core(self); WTF::String convertedNamespaceURI = WTF::String::fromUTF8(namespaceURI); WTF::String convertedLocalName = WTF::String::fromUTF8(localName); RefPtr gobjectResult = WTF::getPtr(item->getAttributeNodeNS(convertedNamespaceURI, convertedLocalName)); return WebKit::kit(gobjectResult.get()); } WebKitDOMAttr* webkit_dom_element_set_attribute_node_ns(WebKitDOMElement* self, WebKitDOMAttr* newAttr, GError** error) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); g_return_val_if_fail(WEBKIT_DOM_IS_ATTR(newAttr), 0); g_return_val_if_fail(!error || !*error, 0); WebCore::Element* item = WebKit::core(self); WebCore::Attr* convertedNewAttr = WebKit::core(newAttr); auto result = item->setAttributeNodeNS(*convertedNewAttr); if (result.hasException()) { WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); return nullptr; } return WebKit::kit(result.releaseReturnValue().get()); } gboolean webkit_dom_element_has_attribute(WebKitDOMElement* self, const gchar* name) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), FALSE); g_return_val_if_fail(name, FALSE); WebCore::Element* item = WebKit::core(self); WTF::String convertedName = WTF::String::fromUTF8(name); gboolean result = item->hasAttribute(convertedName); return result; } gboolean webkit_dom_element_has_attribute_ns(WebKitDOMElement* self, const gchar* namespaceURI, const gchar* localName) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), FALSE); g_return_val_if_fail(namespaceURI, FALSE); g_return_val_if_fail(localName, FALSE); WebCore::Element* item = WebKit::core(self); WTF::String convertedNamespaceURI = WTF::String::fromUTF8(namespaceURI); WTF::String convertedLocalName = WTF::String::fromUTF8(localName); gboolean result = item->hasAttributeNS(convertedNamespaceURI, convertedLocalName); return result; } void webkit_dom_element_focus(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); WebCore::Element* item = WebKit::core(self); item->focus(); } void webkit_dom_element_blur(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); WebCore::Element* item = WebKit::core(self); item->blur(); } void webkit_dom_element_scroll_into_view(WebKitDOMElement* self, gboolean alignWithTop) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); WebCore::Element* item = WebKit::core(self); item->scrollIntoView(alignWithTop); } void webkit_dom_element_scroll_into_view_if_needed(WebKitDOMElement* self, gboolean centerIfNeeded) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); WebCore::Element* item = WebKit::core(self); item->scrollIntoViewIfNeeded(centerIfNeeded); } void webkit_dom_element_scroll_by_lines(WebKitDOMElement* self, glong lines) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); WebCore::Element* item = WebKit::core(self); item->scrollByLines(lines); } void webkit_dom_element_scroll_by_pages(WebKitDOMElement* self, glong pages) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); WebCore::Element* item = WebKit::core(self); item->scrollByPages(pages); } WebKitDOMHTMLCollection* webkit_dom_element_get_elements_by_class_name_as_html_collection(WebKitDOMElement* self, const gchar* name) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); g_return_val_if_fail(name, 0); WebCore::Element* item = WebKit::core(self); WTF::String convertedName = WTF::String::fromUTF8(name); RefPtr gobjectResult = WTF::getPtr(item->getElementsByClassName(convertedName)); return WebKit::kit(gobjectResult.get()); } gboolean webkit_dom_element_matches(WebKitDOMElement* self, const gchar* selectors, GError** error) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), FALSE); g_return_val_if_fail(selectors, FALSE); g_return_val_if_fail(!error || !*error, FALSE); WebCore::Element* item = WebKit::core(self); WTF::String convertedSelectors = WTF::String::fromUTF8(selectors); auto result = item->matches(convertedSelectors); if (result.hasException()) { WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); return false; } return result.releaseReturnValue(); } WebKitDOMElement* webkit_dom_element_closest(WebKitDOMElement* self, const gchar* selectors, GError** error) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); g_return_val_if_fail(selectors, 0); g_return_val_if_fail(!error || !*error, 0); WebCore::Element* item = WebKit::core(self); WTF::String convertedSelectors = WTF::String::fromUTF8(selectors); auto result = item->closest(convertedSelectors); if (result.hasException()) { WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); return nullptr; } return WebKit::kit(result.releaseReturnValue()); } gboolean webkit_dom_element_webkit_matches_selector(WebKitDOMElement* self, const gchar* selectors, GError** error) { return webkit_dom_element_matches(self, selectors, error); } void webkit_dom_element_webkit_request_fullscreen(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); WebCore::Element* item = WebKit::core(self); item->webkitRequestFullscreen(); } WebKitDOMElement* webkit_dom_element_insert_adjacent_element(WebKitDOMElement* self, const gchar* where, WebKitDOMElement* element, GError** error) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); g_return_val_if_fail(where, 0); g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(element), 0); g_return_val_if_fail(!error || !*error, 0); WebCore::Element* item = WebKit::core(self); WTF::String convertedWhere = WTF::String::fromUTF8(where); WebCore::Element* convertedElement = WebKit::core(element); auto result = item->insertAdjacentElement(convertedWhere, *convertedElement); if (result.hasException()) { WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); return nullptr; } return WebKit::kit(result.releaseReturnValue()); } void webkit_dom_element_insert_adjacent_html(WebKitDOMElement* self, const gchar* where, const gchar* html, GError** error) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); g_return_if_fail(where); g_return_if_fail(html); g_return_if_fail(!error || !*error); WebCore::Element* item = WebKit::core(self); WTF::String convertedWhere = WTF::String::fromUTF8(where); WTF::String convertedHtml = WTF::String::fromUTF8(html); auto result = item->insertAdjacentHTML(convertedWhere, convertedHtml); if (result.hasException()) { WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); } } void webkit_dom_element_insert_adjacent_text(WebKitDOMElement* self, const gchar* where, const gchar* text, GError** error) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); g_return_if_fail(where); g_return_if_fail(text); g_return_if_fail(!error || !*error); WebCore::Element* item = WebKit::core(self); WTF::String convertedWhere = WTF::String::fromUTF8(where); WTF::String convertedText = WTF::String::fromUTF8(text); auto result = item->insertAdjacentText(convertedWhere, convertedText); if (result.hasException()) { WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); } } void webkit_dom_element_request_pointer_lock(WebKitDOMElement* self) { #if ENABLE(POINTER_LOCK) WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); WebCore::Element* item = WebKit::core(self); item->requestPointerLock(); #else UNUSED_PARAM(self); WEBKIT_WARN_FEATURE_NOT_PRESENT("Pointer Lock") #endif /* ENABLE(POINTER_LOCK) */ } void webkit_dom_element_remove(WebKitDOMElement* self, GError** error) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); g_return_if_fail(!error || !*error); WebCore::Element* item = WebKit::core(self); auto result = item->remove(); if (result.hasException()) { WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); } } WebKitDOMElement* webkit_dom_element_query_selector(WebKitDOMElement* self, const gchar* selectors, GError** error) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); g_return_val_if_fail(selectors, 0); g_return_val_if_fail(!error || !*error, 0); WebCore::Element* item = WebKit::core(self); WTF::String convertedSelectors = WTF::String::fromUTF8(selectors); auto result = item->querySelector(convertedSelectors); if (result.hasException()) { WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); return nullptr; } return WebKit::kit(result.releaseReturnValue()); } WebKitDOMNodeList* webkit_dom_element_query_selector_all(WebKitDOMElement* self, const gchar* selectors, GError** error) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); g_return_val_if_fail(selectors, 0); g_return_val_if_fail(!error || !*error, 0); WebCore::Element* item = WebKit::core(self); WTF::String convertedSelectors = WTF::String::fromUTF8(selectors); auto result = item->querySelectorAll(convertedSelectors); if (result.hasException()) { WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); return nullptr; } return WebKit::kit(result.releaseReturnValue().ptr()); } gchar* webkit_dom_element_get_tag_name(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gchar* result = convertToUTF8String(item->tagName()); return result; } WebKitDOMNamedNodeMap* webkit_dom_element_get_attributes(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); RefPtr gobjectResult = WTF::getPtr(item->attributes()); return WebKit::kit(gobjectResult.get()); } WebKitDOMCSSStyleDeclaration* webkit_dom_element_get_style(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); RefPtr gobjectResult = WTF::getPtr(item->cssomStyle()); return WebKit::kit(gobjectResult.get()); } gchar* webkit_dom_element_get_id(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gchar* result = convertToUTF8String(item->getIdAttribute()); return result; } void webkit_dom_element_set_id(WebKitDOMElement* self, const gchar* value) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); g_return_if_fail(value); WebCore::Element* item = WebKit::core(self); WTF::String convertedValue = WTF::String::fromUTF8(value); item->setAttributeWithoutSynchronization(WebCore::HTMLNames::idAttr, convertedValue); } gchar* webkit_dom_element_get_namespace_uri(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gchar* result = convertToUTF8String(item->namespaceURI()); return result; } gchar* webkit_dom_element_get_prefix(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gchar* result = convertToUTF8String(item->prefix()); return result; } gchar* webkit_dom_element_get_local_name(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gchar* result = convertToUTF8String(item->localName()); return result; } gdouble webkit_dom_element_get_offset_left(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gdouble result = item->offsetLeft(); return result; } gdouble webkit_dom_element_get_offset_top(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gdouble result = item->offsetTop(); return result; } gdouble webkit_dom_element_get_offset_width(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gdouble result = item->offsetWidth(); return result; } gdouble webkit_dom_element_get_offset_height(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gdouble result = item->offsetHeight(); return result; } gdouble webkit_dom_element_get_client_left(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gdouble result = item->clientLeft(); return result; } gdouble webkit_dom_element_get_client_top(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gdouble result = item->clientTop(); return result; } gdouble webkit_dom_element_get_client_width(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gdouble result = item->clientWidth(); return result; } gdouble webkit_dom_element_get_client_height(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gdouble result = item->clientHeight(); return result; } glong webkit_dom_element_get_scroll_left(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); glong result = item->scrollLeft(); return result; } void webkit_dom_element_set_scroll_left(WebKitDOMElement* self, glong value) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); WebCore::Element* item = WebKit::core(self); item->setScrollLeft(value); } glong webkit_dom_element_get_scroll_top(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); glong result = item->scrollTop(); return result; } void webkit_dom_element_set_scroll_top(WebKitDOMElement* self, glong value) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); WebCore::Element* item = WebKit::core(self); item->setScrollTop(value); } glong webkit_dom_element_get_scroll_width(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); glong result = item->scrollWidth(); return result; } glong webkit_dom_element_get_scroll_height(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); glong result = item->scrollHeight(); return result; } WebKitDOMElement* webkit_dom_element_get_offset_parent(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); RefPtr gobjectResult = WTF::getPtr(item->bindingsOffsetParent()); return WebKit::kit(gobjectResult.get()); } gchar* webkit_dom_element_get_inner_html(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gchar* result = convertToUTF8String(item->innerHTML()); return result; } void webkit_dom_element_set_inner_html(WebKitDOMElement* self, const gchar* value, GError** error) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); g_return_if_fail(value); g_return_if_fail(!error || !*error); WebCore::Element* item = WebKit::core(self); WTF::String convertedValue = WTF::String::fromUTF8(value); auto result = item->setInnerHTML(convertedValue); if (result.hasException()) { WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); } } gchar* webkit_dom_element_get_outer_html(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gchar* result = convertToUTF8String(item->outerHTML()); return result; } void webkit_dom_element_set_outer_html(WebKitDOMElement* self, const gchar* value, GError** error) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); g_return_if_fail(value); g_return_if_fail(!error || !*error); WebCore::Element* item = WebKit::core(self); WTF::String convertedValue = WTF::String::fromUTF8(value); auto result = item->setOuterHTML(convertedValue); if (result.hasException()) { WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code()); g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), ecdesc.code, ecdesc.name); } } gchar* webkit_dom_element_get_class_name(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gchar* result = convertToUTF8String(item->attributeWithoutSynchronization(WebCore::HTMLNames::classAttr)); return result; } void webkit_dom_element_set_class_name(WebKitDOMElement* self, const gchar* value) { WebCore::JSMainThreadNullState state; g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self)); g_return_if_fail(value); WebCore::Element* item = WebKit::core(self); WTF::String convertedValue = WTF::String::fromUTF8(value); item->setAttributeWithoutSynchronization(WebCore::HTMLNames::classAttr, convertedValue); } WebKitDOMDOMTokenList* webkit_dom_element_get_class_list(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); RefPtr gobjectResult = WTF::getPtr(item->classList()); return WebKit::kit(gobjectResult.get()); } gchar* webkit_dom_element_get_webkit_region_overset(WebKitDOMElement* self) { #if ENABLE(CSS_REGIONS) WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gchar* result = convertToUTF8String(item->webkitRegionOverset()); return result; #else UNUSED_PARAM(self); WEBKIT_WARN_FEATURE_NOT_PRESENT("Css Regions") return 0; #endif /* ENABLE(CSS_REGIONS) */ } WebKitDOMElement* webkit_dom_element_get_previous_element_sibling(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); RefPtr gobjectResult = WTF::getPtr(item->previousElementSibling()); return WebKit::kit(gobjectResult.get()); } WebKitDOMElement* webkit_dom_element_get_next_element_sibling(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); RefPtr gobjectResult = WTF::getPtr(item->nextElementSibling()); return WebKit::kit(gobjectResult.get()); } WebKitDOMHTMLCollection* webkit_dom_element_get_children(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); RefPtr gobjectResult = WTF::getPtr(item->children()); return WebKit::kit(gobjectResult.get()); } WebKitDOMElement* webkit_dom_element_get_first_element_child(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); RefPtr gobjectResult = WTF::getPtr(item->firstElementChild()); return WebKit::kit(gobjectResult.get()); } WebKitDOMElement* webkit_dom_element_get_last_element_child(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); RefPtr gobjectResult = WTF::getPtr(item->lastElementChild()); return WebKit::kit(gobjectResult.get()); } gulong webkit_dom_element_get_child_element_count(WebKitDOMElement* self) { WebCore::JSMainThreadNullState state; g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), 0); WebCore::Element* item = WebKit::core(self); gulong result = item->childElementCount(); return result; }