From 22368db2325bf25d597023f34399b51c59cdfc2e Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Fri, 17 Aug 2012 11:52:59 +0100 Subject: add js property (dom attribute) support to the document/element objects --- javascript/jsapi/document.c | 3 +++ javascript/jsapi/element.c | 15 +++++++++++++++ javascript/jsapi/htmldocument.c | 8 +++++++- javascript/jsapi/htmlelement.c | 10 +++++++++- javascript/jsapi/node.c | 25 +++++++++++++++++++++++-- javascript/jsapi/window.c | 15 ++------------- 6 files changed, 59 insertions(+), 17 deletions(-) (limited to 'javascript/jsapi') diff --git a/javascript/jsapi/document.c b/javascript/jsapi/document.c index e5dfcd523..2d3bde41a 100644 --- a/javascript/jsapi/document.c +++ b/javascript/jsapi/document.c @@ -105,3 +105,6 @@ static JSBool JSAPI_NATIVE(getElementById, JSContext *cx, uintN argc, jsval *vp) JSAPI_FS_NODE, \ JSAPI_FS(getElementById, 1, 0) \ + +#define JSAPI_PS_DOCUMENT \ + JSAPI_PS_NODE diff --git a/javascript/jsapi/element.c b/javascript/jsapi/element.c index cefb95966..d301321d9 100644 --- a/javascript/jsapi/element.c +++ b/javascript/jsapi/element.c @@ -82,3 +82,18 @@ static JSBool JSAPI_NATIVE(getAttribute, JSContext *cx, uintN argc, jsval *vp) #define JSAPI_FS_ELEMENT \ JSAPI_FS_NODE, \ JSAPI_FS(getAttribute, 0, 0) + +static JSBool JSAPI_PROPERTYGET(id, JSContext *cx, JSObject *obj, jsval *vp) +{ + JS_SET_RVAL(cx, vp, JSVAL_NULL); + return JS_TRUE; +} + +static JSBool JSAPI_PROPERTYSET(id, JSContext *cx, JSObject *obj, jsval *vp) +{ + return JS_FALSE; +} + +#define JSAPI_PS_ELEMENT \ + JSAPI_PS_NODE, \ + JSAPI_PS(id, 0, JSPROP_ENUMERATE | JSPROP_SHARED) diff --git a/javascript/jsapi/htmldocument.c b/javascript/jsapi/htmldocument.c index aa9efbcd1..1a58e4e19 100644 --- a/javascript/jsapi/htmldocument.c +++ b/javascript/jsapi/htmldocument.c @@ -209,6 +209,12 @@ static JSFunctionSpec jsfunctions_document[] = { JSAPI_FS_END }; +static JSPropertySpec jsproperties_document[] = +{ + JSAPI_PS_DOCUMENT, + JSAPI_PS_END +}; + static void jsfinalize_document(JSContext *cx, JSObject *obj) { struct jsclass_document_priv *document; @@ -238,7 +244,7 @@ JSObject *jsapi_new_document(JSContext *cx, JSObject *parent, struct html_conten &JSCLASS_OBJECT, NULL, 0, - NULL, + jsproperties_document, jsfunctions_document, NULL, NULL); diff --git a/javascript/jsapi/htmlelement.c b/javascript/jsapi/htmlelement.c index 90cb06aba..a7846bacd 100644 --- a/javascript/jsapi/htmlelement.c +++ b/javascript/jsapi/htmlelement.c @@ -178,6 +178,14 @@ static JSFunctionSpec jsfunctions_element[] = { }; + + +static JSPropertySpec jsproperties_element[] = +{ + JSAPI_PS_ELEMENT, + JSAPI_PS_END +}; + JSObject * jsapi_new_element(JSContext *cx, JSObject *parent, @@ -201,7 +209,7 @@ jsapi_new_element(JSContext *cx, &JSCLASS_OBJECT, NULL, 0, - NULL, + jsproperties_element, jsfunctions_element, NULL, NULL); diff --git a/javascript/jsapi/node.c b/javascript/jsapi/node.c index d6a4f4406..b8c073752 100644 --- a/javascript/jsapi/node.c +++ b/javascript/jsapi/node.c @@ -260,8 +260,7 @@ static JSBool JSAPI_NATIVE(isDefaultNamespace, JSContext *cx, uintN argc, jsval return JS_TRUE; } - -#define JSAPI_FS_NODE \ +#define JSAPI_FS_NODE \ JSAPI_FS_EVENTTARGET, \ JSAPI_FS(hasChildNodes, 0, 0), \ JSAPI_FS(compareDocumentPosition, 0, 0), \ @@ -276,3 +275,25 @@ static JSBool JSAPI_NATIVE(isDefaultNamespace, JSContext *cx, uintN argc, jsval JSAPI_FS(lookupPrefix, 0, 0), \ JSAPI_FS(lookupNamespaceURI, 0, 0), \ JSAPI_FS(isDefaultNamespace, 0, 0) + + +static JSBool JSAPI_PROPERTYGET(nodeType, JSContext *cx, JSObject *obj, jsval *vp) +{ + JS_SET_RVAL(cx, vp, JSVAL_NULL); + return JS_TRUE; +} + +static JSBool JSAPI_PROPERTYGET(textContent, JSContext *cx, JSObject *obj, jsval *vp) +{ + JS_SET_RVAL(cx, vp, JSVAL_NULL); + return JS_TRUE; +} + +static JSBool JSAPI_PROPERTYSET(textContent, JSContext *cx, JSObject *obj, jsval *vp) +{ + return JS_FALSE; +} + +#define JSAPI_PS_NODE \ + JSAPI_PS_RO(nodeType, 0, JSPROP_ENUMERATE | JSPROP_SHARED), \ + JSAPI_PS(textContent, 0, JSPROP_ENUMERATE | JSPROP_SHARED) diff --git a/javascript/jsapi/window.c b/javascript/jsapi/window.c index 4f7e75109..72d3837d9 100644 --- a/javascript/jsapi/window.c +++ b/javascript/jsapi/window.c @@ -248,27 +248,16 @@ static JSBool JSAPI_PROPERTYGET(window, JSContext *cx, JSObject *obj, jsval *vp) return JS_TRUE; } -static JSBool JSAPI_PROPERTYSET(window, JSContext *cx, JSObject *obj, jsval *vp) -{ - return JS_FALSE; -} - static JSBool JSAPI_PROPERTYGET(self, JSContext *cx, JSObject *obj, jsval *vp) { JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(obj)); return JS_TRUE; } -static JSBool JSAPI_PROPERTYSET(self, JSContext *cx, JSObject *obj, jsval *vp) -{ - return JS_FALSE; -} - - static JSPropertySpec jsproperties_window[] = { - JSAPI_PS(window, 0, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_SHARED), - JSAPI_PS(self, 0, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_SHARED), + JSAPI_PS_RO(window, 0, JSPROP_ENUMERATE | JSPROP_SHARED), + JSAPI_PS_RO(self, 0, JSPROP_ENUMERATE | JSPROP_SHARED), JSAPI_PS_END }; -- cgit v1.2.3