summaryrefslogtreecommitdiff
path: root/content/handlers/javascript/duktape
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2019-05-03 13:32:23 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2019-05-03 13:32:23 +0100
commit4f9a373960a7bfdcc586d1b90bc75a8aea282aa7 (patch)
treed6b8de08ff3da166e77590be460eb361f802ceb1 /content/handlers/javascript/duktape
parent2739a47d83c44ae3aac13d11f17ce5fbefc4c5a2 (diff)
downloadnetsurf-4f9a373960a7bfdcc586d1b90bc75a8aea282aa7.tar.gz
netsurf-4f9a373960a7bfdcc586d1b90bc75a8aea282aa7.tar.bz2
Support Document::createEvent()
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
Diffstat (limited to 'content/handlers/javascript/duktape')
-rw-r--r--content/handlers/javascript/duktape/Document.bnd17
-rw-r--r--content/handlers/javascript/duktape/dukky.c2
-rw-r--r--content/handlers/javascript/duktape/dukky.h1
3 files changed, 19 insertions, 1 deletions
diff --git a/content/handlers/javascript/duktape/Document.bnd b/content/handlers/javascript/duktape/Document.bnd
index f94a4e43c..23e0425e2 100644
--- a/content/handlers/javascript/duktape/Document.bnd
+++ b/content/handlers/javascript/duktape/Document.bnd
@@ -320,6 +320,23 @@ getter Document::cookie()
return 0;
%}
+method Document::createEvent ()
+%{
+ /* Create a new event, mark it untrusted since it's new from JS */
+ dom_event *evt = NULL;
+ dom_exception exc;
+
+ exc = dom_event_create(&evt);
+ if (exc != DOM_NO_ERR) return 0;
+ exc = dom_event_set_is_trusted(evt, false);
+ if (exc != DOM_NO_ERR) { dom_event_unref(evt); return 0; }
+
+ dukky_push_event(ctx, evt);
+
+ dom_event_unref(evt);
+ return 1;
+%}
+
getter Document::onabort();
setter Document::onabort();
getter Document::onautocompleteerror();
diff --git a/content/handlers/javascript/duktape/dukky.c b/content/handlers/javascript/duktape/dukky.c
index 750d14b64..5b3c12b95 100644
--- a/content/handlers/javascript/duktape/dukky.c
+++ b/content/handlers/javascript/duktape/dukky.c
@@ -736,7 +736,7 @@ handle_error:
/*** New style event handling ***/
-static void dukky_push_event(duk_context *ctx, dom_event *evt)
+void dukky_push_event(duk_context *ctx, dom_event *evt)
{
/* ... */
duk_get_global_string(ctx, EVENT_MAGIC);
diff --git a/content/handlers/javascript/duktape/dukky.h b/content/handlers/javascript/duktape/dukky.h
index 7e8a7867c..ee9f47409 100644
--- a/content/handlers/javascript/duktape/dukky.h
+++ b/content/handlers/javascript/duktape/dukky.h
@@ -36,6 +36,7 @@ void dukky_register_event_listener_for(duk_context *ctx,
bool dukky_get_current_value_of_event_handler(duk_context *ctx,
dom_string *name,
dom_event_target *et);
+void dukky_push_event(duk_context *ctx, dom_event *evt);
bool dukky_event_target_push_listeners(duk_context *ctx, bool dont_create);
typedef enum {