From 8b19aac004d6407afdbaf7f706f1361a6770a611 Mon Sep 17 00:00:00 2001 From: Witold Filipczyk Date: Mon, 11 Jun 2007 12:06:29 +0200 Subject: [PATCH] DOM, ecmascript: In elements that have form property, this property points to the node which contains that form. --- .../dom/ecmascript/spidermonkey/html/HTMLButtonElement.c | 8 +++++--- .../dom/ecmascript/spidermonkey/html/HTMLButtonElement.h | 2 +- .../ecmascript/spidermonkey/html/HTMLFieldSetElement.c | 5 ++++- .../ecmascript/spidermonkey/html/HTMLFieldSetElement.h | 2 +- .../dom/ecmascript/spidermonkey/html/HTMLInputElement.c | 6 ++++-- .../dom/ecmascript/spidermonkey/html/HTMLInputElement.h | 2 +- .../dom/ecmascript/spidermonkey/html/HTMLIsIndexElement.c | 6 ++++-- .../dom/ecmascript/spidermonkey/html/HTMLIsIndexElement.h | 2 +- .../dom/ecmascript/spidermonkey/html/HTMLLabelElement.c | 6 ++++-- .../dom/ecmascript/spidermonkey/html/HTMLLabelElement.h | 2 +- .../dom/ecmascript/spidermonkey/html/HTMLLegendElement.c | 6 ++++-- .../dom/ecmascript/spidermonkey/html/HTMLLegendElement.h | 2 +- .../dom/ecmascript/spidermonkey/html/HTMLObjectElement.c | 6 ++++-- .../dom/ecmascript/spidermonkey/html/HTMLObjectElement.h | 2 +- .../dom/ecmascript/spidermonkey/html/HTMLOptionElement.c | 6 ++++-- .../dom/ecmascript/spidermonkey/html/HTMLOptionElement.h | 2 +- .../dom/ecmascript/spidermonkey/html/HTMLSelectElement.c | 6 ++++-- .../dom/ecmascript/spidermonkey/html/HTMLSelectElement.h | 2 +- .../ecmascript/spidermonkey/html/HTMLTextAreaElement.c | 6 ++++-- .../ecmascript/spidermonkey/html/HTMLTextAreaElement.h | 2 +- 20 files changed, 51 insertions(+), 30 deletions(-) diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.c index 537a555a..e4c6b2fd 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.c @@ -30,8 +30,10 @@ HTMLButtonElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp switch (JSVAL_TO_INT(id)) { case JSP_HTML_BUTTON_ELEMENT_FORM: - string_to_jsval(ctx, vp, html->form); - /* Write me! */ + if (html->form) + object_to_jsval(ctx, vp, html->form->ecmascript_obj); + else + undef_to_jsval(ctx, vp); break; case JSP_HTML_BUTTON_ELEMENT_ACCESS_KEY: string_to_jsval(ctx, vp, html->access_key); @@ -136,7 +138,7 @@ done_BUTTON_object(void *data) { struct BUTTON_struct *d = data; - /* form ? */ + /* form musn't be freed */ mem_free_if(d->access_key); mem_free_if(d->name); mem_free_if(d->type); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.h index 01755ba1..fc87fac8 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.h @@ -10,7 +10,7 @@ extern const JSPropertySpec HTMLButtonElement_props[]; struct BUTTON_struct { struct HTMLElement_struct html; - unsigned char *form; /* TODO: proper type */ + struct dom_node *form; unsigned char *access_key; unsigned char *name; unsigned char *type; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLFieldSetElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLFieldSetElement.c index 37ca60c3..b44b4781 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLFieldSetElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLFieldSetElement.c @@ -31,7 +31,10 @@ HTMLFieldSetElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval * switch (JSVAL_TO_INT(id)) { case JSP_HTML_FIELD_SET_ELEMENT_FORM: - /* Write me! */ + if (html->form) + object_to_jsval(ctx, vp, html->form->ecmascript_obj); + else + undef_to_jsval(ctx, vp); break; default: return HTMLElement_getProperty(ctx, obj, id, vp); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLFieldSetElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLFieldSetElement.h index 77b1cc93..c8fac645 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLFieldSetElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLFieldSetElement.h @@ -9,7 +9,7 @@ extern const JSPropertySpec HTMLFieldSetElement_props[]; struct FIELDSET_struct { struct HTMLElement_struct html; - unsigned char *form; /* FIXME: proper type */ + struct dom_node *form; }; void make_FIELDSET_object(JSContext *ctx, struct dom_node *node); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.c index 4be76e05..5ceaf7b8 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.c @@ -36,8 +36,10 @@ HTMLInputElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) boolean_to_jsval(ctx, vp, html->default_checked); break; case JSP_HTML_INPUT_ELEMENT_FORM: - string_to_jsval(ctx, vp, html->form); - /* Write me! */ + if (html->form) + object_to_jsval(ctx, vp, html->form->ecmascript_obj); + else + undef_to_jsval(ctx, vp); break; case JSP_HTML_INPUT_ELEMENT_ACCEPT: string_to_jsval(ctx, vp, html->accept); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.h index 185f41da..c91cceae 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.h @@ -11,7 +11,7 @@ extern const JSPropertySpec HTMLInputElement_props[]; struct INPUT_struct { struct HTMLElement_struct html; unsigned char *default_value; - unsigned char *form; /* FIXME: proper type */ + struct dom_node *form; unsigned char *accept; unsigned char *access_key; unsigned char *align; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLIsIndexElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLIsIndexElement.c index 1fe6f0cd..ed19b504 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLIsIndexElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLIsIndexElement.c @@ -30,8 +30,10 @@ HTMLIsIndexElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *v switch (JSVAL_TO_INT(id)) { case JSP_HTML_IS_INDEX_ELEMENT_FORM: - string_to_jsval(ctx, vp, html->form); - /* Write me! */ + if (html->form) + object_to_jsval(ctx, vp, html->form->ecmascript_obj); + else + undef_to_jsval(ctx, vp); break; case JSP_HTML_IS_INDEX_ELEMENT_PROMPT: string_to_jsval(ctx, vp, html->prompt); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLIsIndexElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLIsIndexElement.h index 7e30b0e8..7cf87a43 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLIsIndexElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLIsIndexElement.h @@ -10,7 +10,7 @@ extern const JSPropertySpec HTMLIsIndexElement_props[]; struct ISINDEX_struct { struct HTMLElement_struct html; - unsigned char *form; /* FIXME: proper type */ + struct dom_node *form; unsigned char *prompt; }; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLLabelElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLLabelElement.c index 61881f24..7f8c78e4 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLLabelElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLLabelElement.c @@ -30,8 +30,10 @@ HTMLLabelElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) switch (JSVAL_TO_INT(id)) { case JSP_HTML_LABEL_ELEMENT_FORM: - string_to_jsval(ctx, vp, html->form); - /* Write me! */ + if (html->form) + object_to_jsval(ctx, vp, html->form->ecmascript_obj); + else + undef_to_jsval(ctx, vp); break; case JSP_HTML_LABEL_ELEMENT_ACCESS_KEY: string_to_jsval(ctx, vp, html->access_key); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLLabelElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLLabelElement.h index bc1f4066..d8d78edd 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLLabelElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLLabelElement.h @@ -10,7 +10,7 @@ extern const JSPropertySpec HTMLLabelElement_props[]; struct LABEL_struct { struct HTMLElement_struct html; - unsigned char *form; /* FIXME: proper type */ + struct dom_node *form; unsigned char *access_key; unsigned char *html_for; }; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLLegendElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLLegendElement.c index 1c33f196..0f5c0e0a 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLLegendElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLLegendElement.c @@ -30,8 +30,10 @@ HTMLLegendElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp switch (JSVAL_TO_INT(id)) { case JSP_HTML_LEGEND_ELEMENT_FORM: - string_to_jsval(ctx, vp, html->form); - /* Write me! */ + if (html->form) + object_to_jsval(ctx, vp, html->form->ecmascript_obj); + else + undef_to_jsval(ctx, vp); break; case JSP_HTML_LEGEND_ELEMENT_ACCESS_KEY: string_to_jsval(ctx, vp, html->access_key); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLLegendElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLLegendElement.h index 23280aa1..a7d40368 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLLegendElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLLegendElement.h @@ -10,7 +10,7 @@ extern const JSPropertySpec HTMLLegendElement_props[]; struct LEGEND_struct { struct HTMLElement_struct html; - unsigned char *form; /* FIXME: proper type */ + struct dom_node *form; unsigned char *access_key; unsigned char *align; }; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.c index 42bb88df..523d5862 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.c @@ -30,8 +30,10 @@ HTMLObjectElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp switch (JSVAL_TO_INT(id)) { case JSP_HTML_OBJECT_ELEMENT_FORM: - string_to_jsval(ctx, vp, html->form); - /* Write me! */ + if (html->form) + object_to_jsval(ctx, vp, html->form->ecmascript_obj); + else + undef_to_jsval(ctx, vp); break; case JSP_HTML_OBJECT_ELEMENT_CODE: string_to_jsval(ctx, vp, html->code); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.h index a1212436..0605928c 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.h @@ -10,7 +10,7 @@ extern const JSPropertySpec HTMLObjectElement_props[]; struct OBJECT_struct { struct HTMLElement_struct html; - unsigned char *form; /* FIXME: proper type */ + struct dom_node *form; unsigned char *code; unsigned char *align; unsigned char *archive; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.c index f758b75e..f1d630af 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.c @@ -30,8 +30,10 @@ HTMLOptionElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp switch (JSVAL_TO_INT(id)) { case JSP_HTML_OPTION_ELEMENT_FORM: - string_to_jsval(ctx, vp, html->form); - /* Write me! */ + if (html->form) + object_to_jsval(ctx, vp, html->form->ecmascript_obj); + else + undef_to_jsval(ctx, vp); break; case JSP_HTML_OPTION_ELEMENT_DEFAULT_SELECTED: boolean_to_jsval(ctx, vp, html->default_selected); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.h index 578dbd74..d991f397 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.h @@ -10,7 +10,7 @@ extern const JSPropertySpec HTMLOptionElement_props[]; struct OPTION_struct { struct HTMLElement_struct html; - unsigned char *form; /* FIXME: proper type */ + struct dom_node *form; unsigned char *text; unsigned char *label; unsigned char *value; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.c index 47fa1511..c76098ae 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.c @@ -42,8 +42,10 @@ HTMLSelectElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp int_to_jsval(ctx, vp, html->length); break; case JSP_HTML_SELECT_ELEMENT_FORM: - string_to_jsval(ctx, vp, html->form); - /* Write me! */ + if (html->form) + object_to_jsval(ctx, vp, html->form->ecmascript_obj); + else + undef_to_jsval(ctx, vp); break; case JSP_HTML_SELECT_ELEMENT_OPTIONS: string_to_jsval(ctx, vp, html->options); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.h index bbb92668..18b1dc2b 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.h @@ -12,7 +12,7 @@ struct SELECT_struct { struct HTMLElement_struct html; unsigned char *type; unsigned char *value; - unsigned char *form; /* FIXME: proper type */ + struct dom_node *form; unsigned char *options; /* FIXME: proper type */ unsigned char *name; int selected_index; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.c index 86219655..54bc2826 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.c @@ -33,8 +33,10 @@ HTMLTextAreaElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval * string_to_jsval(ctx, vp, html->default_value); break; case JSP_HTML_TEXT_AREA_ELEMENT_FORM: - string_to_jsval(ctx, vp, html->form); - /* Write me! */ + if (html->form) + object_to_jsval(ctx, vp, html->form->ecmascript_obj); + else + undef_to_jsval(ctx, vp); break; case JSP_HTML_TEXT_AREA_ELEMENT_ACCESS_KEY: string_to_jsval(ctx, vp, html->access_key); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.h index a5d917d6..0850cea2 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.h @@ -11,7 +11,7 @@ extern const JSPropertySpec HTMLTextAreaElement_props[]; struct TEXTAREA_struct { struct HTMLElement_struct html; unsigned char *default_value; - unsigned char *form; /* FIXME: proper type */ + struct dom_node *form; unsigned char *access_key; unsigned char *name; unsigned char *type;