1
0
mirror of https://github.com/rkd77/elinks.git synced 2025-02-02 15:09:23 -05:00

[ecmascript] equal numbers of interpreter->changed in various engines

This commit is contained in:
Witold Filipczyk 2024-10-01 15:41:10 +02:00
parent cc52e5a168
commit 61de3cf8e1
8 changed files with 12 additions and 137 deletions

View File

@ -909,6 +909,7 @@ mjs_element_set_property_nodeValue(js_State *J)
#ifdef ECMASCRIPT_DEBUG
fprintf(stderr, "%s:%s\n", __FILE__, __FUNCTION__);
#endif
struct ecmascript_interpreter *interpreter = (struct ecmascript_interpreter *)js_getcontext(J);
dom_node *node = (dom_node *)(mjs_getprivate(J, 0));
if (!node) {
@ -930,6 +931,7 @@ mjs_element_set_property_nodeValue(js_State *J)
}
exc = dom_node_set_node_value(node, value);
dom_string_unref(value);
interpreter->changed = true;
js_pushundefined(J);
}

View File

@ -470,6 +470,7 @@ mjs_fragment_set_property_nodeValue(js_State *J)
#ifdef ECMASCRIPT_DEBUG
fprintf(stderr, "%s:%s\n", __FILE__, __FUNCTION__);
#endif
struct ecmascript_interpreter *interpreter = (struct ecmascript_interpreter *)js_getcontext(J);
dom_node *node = (dom_node *)(mjs_getprivate_fragment(J, 0));
if (!node) {
@ -491,6 +492,7 @@ mjs_fragment_set_property_nodeValue(js_State *J)
}
exc = dom_node_set_node_value(node, value);
dom_string_unref(value);
interpreter->changed = true;
js_pushundefined(J);
}

View File

@ -471,6 +471,7 @@ mjs_text_set_property_nodeValue(js_State *J)
#ifdef ECMASCRIPT_DEBUG
fprintf(stderr, "%s:%s\n", __FILE__, __FUNCTION__);
#endif
struct ecmascript_interpreter *interpreter = (struct ecmascript_interpreter *)js_getcontext(J);
dom_node *node = (dom_node *)(mjs_getprivate_text(J, 0));
if (!node) {
@ -492,6 +493,7 @@ mjs_text_set_property_nodeValue(js_State *J)
}
exc = dom_node_set_node_value(node, value);
dom_string_unref(value);
interpreter->changed = true;
js_pushundefined(J);
}

View File

@ -1048,6 +1048,7 @@ js_element_set_property_nodeValue(JSContext *ctx, JSValueConst this_val, JSValue
#endif
REF_JS(this_val);
struct ecmascript_interpreter *interpreter = (struct ecmascript_interpreter *)JS_GetContextOpaque(ctx);
dom_node *node = (dom_node *)(js_getopaque(this_val, js_element_class_id));
JSValue r;
@ -1072,6 +1073,7 @@ js_element_set_property_nodeValue(JSContext *ctx, JSValueConst this_val, JSValue
exc = dom_node_set_node_value(node, value);
dom_string_unref(value);
//dom_node_unref(el);
interpreter->changed = true;
return JS_UNDEFINED;
}

View File

@ -521,6 +521,7 @@ js_fragment_set_property_nodeValue(JSContext *ctx, JSValueConst this_val, JSValu
#endif
REF_JS(this_val);
struct ecmascript_interpreter *interpreter = (struct ecmascript_interpreter *)JS_GetContextOpaque(ctx);
dom_node *node = (dom_node *)(js_getopaque_fragment(this_val, js_fragment_class_id));
JSValue r;
@ -545,6 +546,7 @@ js_fragment_set_property_nodeValue(JSContext *ctx, JSValueConst this_val, JSValu
exc = dom_node_set_node_value(node, value);
dom_string_unref(value);
//dom_node_unref(el);
interpreter->changed = true;
return JS_UNDEFINED;
}

View File

@ -520,7 +520,7 @@ js_text_set_property_nodeValue(JSContext *ctx, JSValueConst this_val, JSValue va
fprintf(stderr, "%s:%s\n", __FILE__, __FUNCTION__);
#endif
REF_JS(this_val);
struct ecmascript_interpreter *interpreter = (struct ecmascript_interpreter *)JS_GetContextOpaque(ctx);
dom_node *node = (dom_node *)(js_getopaque_text(this_val, js_text_class_id));
JSValue r;
@ -545,6 +545,7 @@ js_text_set_property_nodeValue(JSContext *ctx, JSValueConst this_val, JSValue va
exc = dom_node_set_node_value(node, value);
dom_string_unref(value);
//dom_node_unref(el);
interpreter->changed = true;
return JS_UNDEFINED;
}

View File

@ -1461,74 +1461,6 @@ fragment_set_property_textContent(JSContext *ctx, unsigned int argc, JS::Value *
return true;
}
#if 0
static bool
fragment_set_property_title(JSContext *ctx, unsigned int argc, JS::Value *vp)
{
#ifdef ECMASCRIPT_DEBUG
fprintf(stderr, "%s:%s\n", __FILE__, __FUNCTION__);
#endif
JS::CallArgs args = CallArgsFromVp(argc, vp);
JS::RootedObject hobj(ctx, &args.thisv().toObject());
JS::Realm *comp = js::GetContextRealm(ctx);
if (!comp) {
#ifdef ECMASCRIPT_DEBUG
fprintf(stderr, "%s:%s %d\n", __FILE__, __FUNCTION__, __LINE__);
#endif
return false;
}
struct ecmascript_interpreter *interpreter = (struct ecmascript_interpreter *)JS::GetRealmPrivate(comp);
/* This can be called if @obj if not itself an instance of the
* appropriate class but has one in its prototype chain. Fail
* such calls. */
if (!JS_InstanceOf(ctx, hobj, &fragment_class, NULL)) {
#ifdef ECMASCRIPT_DEBUG
fprintf(stderr, "%s:%s %d\n", __FILE__, __FUNCTION__, __LINE__);
#endif
return false;
}
args.rval().setUndefined();
struct view_state *vs = interpreter->vs;
if (!vs) {
return true;
}
struct document_view *doc_view = vs->doc_view;
struct document *document = doc_view->document;
dom_string *titlestr = NULL;
dom_exception exc;
dom_node *el = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(hobj, 0);
if (!el) {
return true;
}
size_t len;
char *str = jsval_to_string(ctx, args[0]);
if (!str) {
return false;
}
len = strlen(str);
exc = dom_string_create((const uint8_t *)str, len, &titlestr);
if (exc == DOM_NO_ERR && titlestr) {
exc = dom_element_set_attribute(el, corestring_dom_title, titlestr);
interpreter->changed = 1;
dom_string_unref(titlestr);
debug_dump_xhtml(document->dom);
}
mem_free(str);
return true;
}
#endif
static bool fragment_addEventListener(JSContext *ctx, unsigned int argc, JS::Value *rval);
static bool fragment_appendChild(JSContext *ctx, unsigned int argc, JS::Value *rval);
static bool fragment_cloneNode(JSContext *ctx, unsigned int argc, JS::Value *rval);

View File

@ -1461,74 +1461,6 @@ text_set_property_textContent(JSContext *ctx, unsigned int argc, JS::Value *vp)
return true;
}
#if 0
static bool
text_set_property_title(JSContext *ctx, unsigned int argc, JS::Value *vp)
{
#ifdef ECMASCRIPT_DEBUG
fprintf(stderr, "%s:%s\n", __FILE__, __FUNCTION__);
#endif
JS::CallArgs args = CallArgsFromVp(argc, vp);
JS::RootedObject hobj(ctx, &args.thisv().toObject());
JS::Realm *comp = js::GetContextRealm(ctx);
if (!comp) {
#ifdef ECMASCRIPT_DEBUG
fprintf(stderr, "%s:%s %d\n", __FILE__, __FUNCTION__, __LINE__);
#endif
return false;
}
struct ecmascript_interpreter *interpreter = (struct ecmascript_interpreter *)JS::GetRealmPrivate(comp);
/* This can be called if @obj if not itself an instance of the
* appropriate class but has one in its prototype chain. Fail
* such calls. */
if (!JS_InstanceOf(ctx, hobj, &text_class, NULL)) {
#ifdef ECMASCRIPT_DEBUG
fprintf(stderr, "%s:%s %d\n", __FILE__, __FUNCTION__, __LINE__);
#endif
return false;
}
args.rval().setUndefined();
struct view_state *vs = interpreter->vs;
if (!vs) {
return true;
}
struct document_view *doc_view = vs->doc_view;
struct document *document = doc_view->document;
dom_string *titlestr = NULL;
dom_exception exc;
dom_node *el = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(hobj, 0);
if (!el) {
return true;
}
size_t len;
char *str = jsval_to_string(ctx, args[0]);
if (!str) {
return false;
}
len = strlen(str);
exc = dom_string_create((const uint8_t *)str, len, &titlestr);
if (exc == DOM_NO_ERR && titlestr) {
exc = dom_element_set_attribute(el, corestring_dom_title, titlestr);
interpreter->changed = 1;
dom_string_unref(titlestr);
debug_dump_xhtml(document->dom);
}
mem_free(str);
return true;
}
#endif
static bool text_addEventListener(JSContext *ctx, unsigned int argc, JS::Value *rval);
static bool text_appendChild(JSContext *ctx, unsigned int argc, JS::Value *rval);
static bool text_cloneNode(JSContext *ctx, unsigned int argc, JS::Value *rval);