Gitweb links:
...log
http://git.netsurf-browser.org/netsurf.git/shortlog/56b521a1258f7b9657c9f...
...commit
http://git.netsurf-browser.org/netsurf.git/commit/56b521a1258f7b9657c9f7d...
...tree
http://git.netsurf-browser.org/netsurf.git/tree/56b521a1258f7b9657c9f7dda...
The branch, master has been updated
via 56b521a1258f7b9657c9f7dda0878b789d39f59b (commit)
from 68f359d1ec2212939f19a25dfb182d08cfa37afd (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff
http://git.netsurf-browser.org/netsurf.git/commitdiff/56b521a1258f7b9657c...
commit 56b521a1258f7b9657c9f7dda0878b789d39f59b
Author: Vincent Sanders <vince(a)netsurf-browser.org>
Commit: Vincent Sanders <vince(a)netsurf-browser.org>
make window load event delivery work
diff --git a/javascript/jsapi.c b/javascript/jsapi.c
index 2aa0f89..bec5653 100644
--- a/javascript/jsapi.c
+++ b/javascript/jsapi.c
@@ -150,6 +150,9 @@ bool js_exec(jscontext *ctx, const char *txt, size_t txtlen)
return false;
}
+dom_exception _dom_event_create(dom_document *doc, dom_event **evt);
+#define dom_event_create(d, e) _dom_event_create((dom_document *)(d), (dom_event **)
(e))
+
bool js_fire_event(jscontext *ctx, const char *type, void *target)
{
JSContext *cx = (JSContext *)ctx;
@@ -173,8 +176,7 @@ bool js_fire_event(jscontext *ctx, const char *type, void *target)
return false;
}
-/* exc = dom_event_create(document, &event);*/
- exc = -1;
+ exc = dom_event_create(-1, &event);
if (exc != DOM_NO_ERR) {
return false;
}
diff --git a/javascript/jsapi/window.bnd b/javascript/jsapi/window.bnd
index 3f89304..610aa71 100644
--- a/javascript/jsapi/window.bnd
+++ b/javascript/jsapi/window.bnd
@@ -28,6 +28,7 @@ preamble %{
#include "javascript/jsapi.h"
#include "javascript/jsapi/binding.h"
+
%}
binding window {
@@ -227,26 +228,31 @@ operation dispatchEvent %{
if (event == JSVAL_VOID) {
jsret = JS_FALSE;
} else {
- dom_event *domevent;
- dom_string *type_dom;
+ struct {
+ dom_event *event;
+ } *event_private;
+ dom_string *type_dom = NULL;
dom_exception exc;
jsval eventval = JSVAL_VOID;
jsval event_argv[1];
jsval event_rval;
- domevent = JS_GetInstancePrivate(cx, event, &JSClass_Event, NULL);
- if (domevent == NULL) {
+ event_private = JS_GetInstancePrivate(cx, event, &JSClass_Event, NULL);
+ if (event_private->event == NULL) {
/** @todo type error? */
jsret = JS_FALSE;
} else {
- exc = dom_event_get_type(domevent, &type_dom);
- if (dom_string_isequal(type_dom, corestring_dom_load)) {
- JS_GetProperty(cx, JSAPI_THIS_OBJECT(cx, vp), "onload", &eventval);
- }
+ exc = dom_event_get_type(event_private->event, &type_dom);
+ if (exc == DOM_NO_ERR) {
+
+ if (dom_string_isequal(type_dom, corestring_dom_load)) {
+ JS_GetProperty(cx, JSAPI_THIS_OBJECT(cx, vp), "onload", &eventval);
+ }
- if (eventval != JSVAL_VOID) {
- event_argv[0] = event;
- jsret = JS_CallFunctionValue(cx, NULL, eventval, 1, event_argv, &event_rval);
+ if (eventval != JSVAL_VOID) {
+ event_argv[0] = eventval;
+ jsret = JS_CallFunctionValue(cx, NULL, eventval, 1, event_argv, &event_rval);
+ }
}
}
}
-----------------------------------------------------------------------
Summary of changes:
javascript/jsapi.c | 6 ++++--
javascript/jsapi/window.bnd | 28 +++++++++++++++++-----------
2 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/javascript/jsapi.c b/javascript/jsapi.c
index 2aa0f89..bec5653 100644
--- a/javascript/jsapi.c
+++ b/javascript/jsapi.c
@@ -150,6 +150,9 @@ bool js_exec(jscontext *ctx, const char *txt, size_t txtlen)
return false;
}
+dom_exception _dom_event_create(dom_document *doc, dom_event **evt);
+#define dom_event_create(d, e) _dom_event_create((dom_document *)(d), (dom_event **)
(e))
+
bool js_fire_event(jscontext *ctx, const char *type, void *target)
{
JSContext *cx = (JSContext *)ctx;
@@ -173,8 +176,7 @@ bool js_fire_event(jscontext *ctx, const char *type, void *target)
return false;
}
-/* exc = dom_event_create(document, &event);*/
- exc = -1;
+ exc = dom_event_create(-1, &event);
if (exc != DOM_NO_ERR) {
return false;
}
diff --git a/javascript/jsapi/window.bnd b/javascript/jsapi/window.bnd
index 3f89304..610aa71 100644
--- a/javascript/jsapi/window.bnd
+++ b/javascript/jsapi/window.bnd
@@ -28,6 +28,7 @@ preamble %{
#include "javascript/jsapi.h"
#include "javascript/jsapi/binding.h"
+
%}
binding window {
@@ -227,26 +228,31 @@ operation dispatchEvent %{
if (event == JSVAL_VOID) {
jsret = JS_FALSE;
} else {
- dom_event *domevent;
- dom_string *type_dom;
+ struct {
+ dom_event *event;
+ } *event_private;
+ dom_string *type_dom = NULL;
dom_exception exc;
jsval eventval = JSVAL_VOID;
jsval event_argv[1];
jsval event_rval;
- domevent = JS_GetInstancePrivate(cx, event, &JSClass_Event, NULL);
- if (domevent == NULL) {
+ event_private = JS_GetInstancePrivate(cx, event, &JSClass_Event, NULL);
+ if (event_private->event == NULL) {
/** @todo type error? */
jsret = JS_FALSE;
} else {
- exc = dom_event_get_type(domevent, &type_dom);
- if (dom_string_isequal(type_dom, corestring_dom_load)) {
- JS_GetProperty(cx, JSAPI_THIS_OBJECT(cx, vp), "onload", &eventval);
- }
+ exc = dom_event_get_type(event_private->event, &type_dom);
+ if (exc == DOM_NO_ERR) {
+
+ if (dom_string_isequal(type_dom, corestring_dom_load)) {
+ JS_GetProperty(cx, JSAPI_THIS_OBJECT(cx, vp), "onload", &eventval);
+ }
- if (eventval != JSVAL_VOID) {
- event_argv[0] = event;
- jsret = JS_CallFunctionValue(cx, NULL, eventval, 1, event_argv, &event_rval);
+ if (eventval != JSVAL_VOID) {
+ event_argv[0] = eventval;
+ jsret = JS_CallFunctionValue(cx, NULL, eventval, 1, event_argv, &event_rval);
+ }
}
}
}
--
NetSurf Browser