summaryrefslogtreecommitdiff
path: root/javascript/jsapi/element.c
diff options
context:
space:
mode:
Diffstat (limited to 'javascript/jsapi/element.c')
-rw-r--r--javascript/jsapi/element.c97
1 files changed, 12 insertions, 85 deletions
diff --git a/javascript/jsapi/element.c b/javascript/jsapi/element.c
index 8ea7017d5..cefb95966 100644
--- a/javascript/jsapi/element.c
+++ b/javascript/jsapi/element.c
@@ -16,18 +16,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <dom/dom.h>
-
-#include "utils/config.h"
-#include "utils/log.h"
-#include "render/html_internal.h"
-
-#include "javascript/jsapi.h"
/* IDL http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#interface-element
-CAUTION - innerHTML etc. are not part of the DOM they come from:
-http://html5.org/specs/dom-parsing.html#extensions-to-the-element-interface
interface Element : Node {
readonly attribute DOMString? namespaceURI;
@@ -70,88 +61,24 @@ interface Element : Node {
};
*/
-static void jsfinalize_element(JSContext *cx, JSObject *obj);
-
-struct jsclass_document_priv {
- struct html_content *htmlc;
- dom_element *node;
-};
-
-static JSClass jsclass_element =
-{
- "Element",
- JSCLASS_HAS_PRIVATE,
- JS_PropertyStub,
- JS_PropertyStub,
- JS_PropertyStub,
- JS_StrictPropertyStub,
- JS_EnumerateStub,
- JS_ResolveStub,
- JS_ConvertStub,
- jsfinalize_element,
- JSCLASS_NO_OPTIONAL_MEMBERS
-};
-
-#define JSCLASS_NAME element
+#include "jsclass.h"
#include "node.c"
-static void jsfinalize_element(JSContext *cx, JSObject *obj)
+static JSBool JSAPI_NATIVE(getAttribute, JSContext *cx, uintN argc, jsval *vp)
{
- struct jsclass_document_priv *element;
- element = JS_GetInstancePrivate(cx, obj, &jsclass_element, NULL);
- if (element != NULL) {
- free(element);
- }
-}
-
+ struct JSCLASS_TYPE *priv;
+ priv = JS_GetInstancePrivate(cx, JS_THIS_OBJECT(cx,vp), &JSCLASS_OBJECT, NULL);
+ if (priv == NULL)
+ return JS_FALSE;
-static JSFunctionSpec jsfunctions_element[] = {
- JSAPI_FS_NODE,
- JSAPI_FS_END
-};
+ JSAPI_SET_RVAL(cx, vp, JSVAL_NULL);
-JSObject *
-jsapi_new_element(JSContext *cx,
- JSObject *parent,
- struct html_content *htmlc,
- dom_element *domelement)
-{
- /* create element object and return it */
- JSObject *jselement;
- struct jsclass_document_priv *element;
-
- element = malloc(sizeof(element));
- if (element == NULL) {
- return NULL;
- }
- element->htmlc = htmlc;
- element->node = domelement;
-
- jselement = JS_InitClass(cx,
- parent,
- NULL,
- &jsclass_element,
- NULL,
- 0,
- NULL,
- jsfunctions_element,
- NULL,
- NULL);
- if (jselement == NULL) {
- free(element);
- return NULL;
- }
-
- LOG(("setting private to %p", element));
- /* private pointer to browsing context */
- if (JS_SetPrivate(cx, jselement, element) != JS_TRUE) {
- LOG(("failed to set private"));
- free(element);
- return NULL;
- }
-
- return jselement;
+ return JS_TRUE;
}
+
+#define JSAPI_FS_ELEMENT \
+ JSAPI_FS_NODE, \
+ JSAPI_FS(getAttribute, 0, 0)